The HSC stack contains code to record the stack provenance, in a similar way as is done with configurations: if the file root/config/eups.versions
exists, it is read in and compared with the current setups and it is an error if there are any differences (which can be overridden with --clobber-config
); if it does not exist, it is created. This kind of functionality is important for production runs, where one wants to guarantee that the entire production was done with a single version of the stack, and the HSC port would not be complete without some functionality like this.
While we have a working implementation from HSC, I don’t think we want to blindly port it HSC because:
- We don’t want the LSST stack to be dependent upon eups.
- We don’t want to be prevented from running something because we
setup
something unrelated. - The provenance clobbering is linked with the configuration clobbering, whereas the two can be orthogonal.
- The provenance checking is subject to the same problem with parent repos that we get with the configuration checking.
The first two points likely drive us to introspecting python modules for their versions, as suggested by @jbosch. Some careful consideration of what command-line switches are necessary can deal with the next point. I don’t know how we deal with the final point.
Some questions:
- Are there objections to adding such a scheme to the
CmdLineTask
? - How would this link in (or not) with other LSST provenance plans?
- Do we want to have some mechanism that will allow minor version changes in the middle of a big production run (because you don’t want to have to reprocess everything when you discover a bug with an obvious fix)? If so, how do we define “minor version changes”?