Support #25126

Help to get mrbslp working when software packages have inconsistent versions

Added by Vito Di Benedetto about 1 month ago. Updated 9 days ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:


Occasionally the CI get cases where software packages that need to be tested have inconsistent versions, this usually happens when an experiment software stack is not fully updated.
An example is with CI build sbnd_ci/5626
that was building following packages

package revision version
sbncode d2730fd2 v09_08_00
sbnobj ff032711 v09_08_00
sbndcode fb1dc307 v09_07_00
sbndutil 25079a04 v09_07_00

where sbncode and sbnobj where updated by the SBN release manager to version v09_08_00, but sbndcode and sbndutil where set to version v09_07_00 'cause at that time the SBND release manager didn't had a chance to update their package release.

The dependency tree of these packages is like this:

|  |__sbnobj

The CI was able to build those packages, mrbsetenv didn't complain when the development environment was setup.
However when the CI tried to setup the local built products with mrbslp it complained with

5: local product directory is /scratch/workspace/sbnd_ci/label_exp/SLF7/label_exp2/swarm/SBND/localProducts_SBND_SBND_lar_ci_e19_prof
6: ----------- this block should be empty ------------------
7: Error encountered when setting up product: sbndcode
8: ERROR: Version conflict -- dependency tree requires versions conflicting with current setup of product sbncode: version v09_07_00 vs v09_08_00
9: ---------------------------------------------------------

local products weren't setup and so regression test failed.
Unfortunately I couldn't use the mrbslp exit status to detect the version mismatch, 'cause mrbslp seems to always return exit status 1.

As the CI tests experiment codes as they are at the time the CI build is triggered, considering those packages are maintained by different release manages, it is not guaranteed that those packages will have consistent versions all the time.

Is there a way I can use in the CI to automatically detect version mismatch like this and eventually override that to build the code stack with consistent versions?


#1 Updated by Lynn Garren 30 days ago

I would like to point out that, by design, the mrb build will not complain. This is needed to allow development.

#2 Updated by Kyle Knoepfel 23 days ago

  • Assignee set to Vito Di Benedetto
  • Status changed from New to Work in progress

Tentative way forward is to parse the contents of the should-be-empty block of printout.

#3 Updated by Kyle Knoepfel 16 days ago

  • Status changed from Work in progress to Assigned

#4 Updated by Vito Di Benedetto 9 days ago

  • % Done changed from 0 to 100
  • Status changed from Assigned to Resolved

In the CI I have implemented a function that accesses mrbslp output through a pipe and parses it to check for errors, if any error is found, the function returns 1, while it returns 0 otherwise.
this CI build
shows how this function worked as expected.
In the particular use of this function in the SBND CI workflow I also dump the output of ups active to provide info of currently UPS products set up in the environment.

#5 Updated by Kyle Knoepfel 9 days ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF