Fix skipping package build due to failed dependency
Skip package as expected when a dependency failed that was attempted to be built as last package of the previous batch (and building as far as possible is enabled).
This commit is contained in:
parent
3b94ba4479
commit
1e7e604917
|
@ -523,6 +523,7 @@ private:
|
||||||
std::mutex m_mutex;
|
std::mutex m_mutex;
|
||||||
std::vector<std::vector<std::string>>::iterator m_batchBegin, m_batchIterator, m_batchEnd;
|
std::vector<std::vector<std::string>>::iterator m_batchBegin, m_batchIterator, m_batchEnd;
|
||||||
std::vector<std::string>::iterator m_packageIterator, m_packageEnd;
|
std::vector<std::string>::iterator m_packageIterator, m_packageEnd;
|
||||||
|
bool m_firstPackageInBatch;
|
||||||
bool m_skipBatchesAfterFailure;
|
bool m_skipBatchesAfterFailure;
|
||||||
bool m_hasFailuresInPreviousBatches;
|
bool m_hasFailuresInPreviousBatches;
|
||||||
std::atomic_bool m_enableStagingInNextBatch;
|
std::atomic_bool m_enableStagingInNextBatch;
|
||||||
|
|
|
@ -73,6 +73,7 @@ BatchProcessingSession::BatchProcessingSession(const std::unordered_set<string_v
|
||||||
, m_batchEnd(batches.end())
|
, m_batchEnd(batches.end())
|
||||||
, m_packageIterator(m_batchIterator != m_batchEnd ? m_batchIterator->begin() : decltype(m_packageIterator)())
|
, m_packageIterator(m_batchIterator != m_batchEnd ? m_batchIterator->begin() : decltype(m_packageIterator)())
|
||||||
, m_packageEnd(m_batchIterator != m_batchEnd ? m_batchIterator->end() : decltype(m_packageEnd)())
|
, m_packageEnd(m_batchIterator != m_batchEnd ? m_batchIterator->end() : decltype(m_packageEnd)())
|
||||||
|
, m_firstPackageInBatch(true)
|
||||||
, m_skipBatchesAfterFailure(skipBatchesAfterFailure)
|
, m_skipBatchesAfterFailure(skipBatchesAfterFailure)
|
||||||
, m_hasFailuresInPreviousBatches(false)
|
, m_hasFailuresInPreviousBatches(false)
|
||||||
, m_enableStagingInNextBatch(false)
|
, m_enableStagingInNextBatch(false)
|
||||||
|
@ -104,7 +105,7 @@ bool BatchProcessingSession::isStagingEnabled() const
|
||||||
*/
|
*/
|
||||||
bool BatchProcessingSession::hasFailuresInPreviousBatches() const
|
bool BatchProcessingSession::hasFailuresInPreviousBatches() const
|
||||||
{
|
{
|
||||||
return m_hasFailuresInPreviousBatches;
|
return m_hasFailuresInPreviousBatches || (m_firstPackageInBatch && !allResponses().empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -122,6 +123,7 @@ const std::string &BatchProcessingSession::currentPackageName() const
|
||||||
void BatchProcessingSession::selectNextPackage()
|
void BatchProcessingSession::selectNextPackage()
|
||||||
{
|
{
|
||||||
if (++m_packageIterator != m_packageEnd) {
|
if (++m_packageIterator != m_packageEnd) {
|
||||||
|
m_firstPackageInBatch = false;
|
||||||
return; // select the next package within the current batch
|
return; // select the next package within the current batch
|
||||||
}
|
}
|
||||||
if ((m_hasFailuresInPreviousBatches = !allResponses().empty()) && m_skipBatchesAfterFailure) {
|
if ((m_hasFailuresInPreviousBatches = !allResponses().empty()) && m_skipBatchesAfterFailure) {
|
||||||
|
@ -133,6 +135,7 @@ void BatchProcessingSession::selectNextPackage()
|
||||||
// select the first package within the next batch
|
// select the first package within the next batch
|
||||||
m_packageIterator = m_batchIterator->begin();
|
m_packageIterator = m_batchIterator->begin();
|
||||||
m_packageEnd = m_batchIterator->end();
|
m_packageEnd = m_batchIterator->end();
|
||||||
|
m_firstPackageInBatch = true;
|
||||||
m_stagingEnabled = m_stagingEnabled || m_enableStagingInNextBatch;
|
m_stagingEnabled = m_stagingEnabled || m_enableStagingInNextBatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue