On 11/11/16 23:00, Rene Rivera wrote:
On Fri, Nov 11, 2016 at 2:53 PM, Andrey Semashev
wrote: On 11/11/16 22:45, Rene Rivera wrote:
On Fri, Nov 11, 2016 at 2:33 PM, Andrey Semashev < andrey.semashev@gmail.com> wrote:
On 11/11/16 21:26, Rene Rivera wrote:
On Fri, Nov 11, 2016 at 1:18 PM, Peter Dimov
wrote: wgetting a random version rubs me the wrong way. Test results should be
reproducible.
Hmm.. Are you saying that getting an old version of the regression tools that "matches" a particular checkout of the libraries at some point in time should always work and be a measure of reproduction?
I think that's correct. In my work, I have a number of scripts to build various libraries, some of which are downloaded from git or other SCMs. It is essential that whenever those scripts are run, they use exactly the same source to build the package. This is usually achieved by checking out a particular tag or revision.
See my answer to this in the other response.. But essentially.. Think about what happens when the test infrastructure changes.
Not sure what you mean here.
One obvious one.. What would happen when someone checks out and old version and the testing infrastructure has change enough that the old version doesn't work any longer?
Same thing when he does that with libraries - it would probably not work.
Do we ignore that possibility and fail in some unpredictable way? Do we implement some version checking and fail nicely but prevent "users" from running the scripts? Do we want to support backward version testing of testing infrastructure to ensure the version checking works for all possible past versions against future versions?
That is up to you, the maintainers of the testing infrastructure. As far as I'm concerned, it can fail horribly. My point is that there should be a reliable way to checkout any Boost release, at any point in future, and that checkout is synchronized (i.e. all components were tested together and testing results were deemed satisfactory) and the same every time.
I think Boost, as a whole, should support this usage. I realize that
checking out a particular revision of each git submodule will always work, but since we already use superproject as the synchronization means of different submodules, checking out a revision of superproject should work.
Haha.. That's really funny. The super project gives as much synchronization guarantee as a human passing around pieces of physical paper around the world as he makes changes to them ;-)
git checkout boost-1.62.0 git submodule update
Am I not guaranteed to have Boost 1.62 after these commands? If not, something is terribly wrong with the release process.
You are only guaranteed that because *humans* carefully check-pointed that version and verified it with testing. Can't say the same for any other random commit outside of the tagged releases though.
Having that guaranteed by humans is a downside, for sure, but the important part is that this tag is a synchronization point and it is stable (i.e. doesn't change). I did not verify, but I also assume that the official release archives are built from the sources that correspond to the git tag. Regarding other commits to the superproject, if I'm not mistaken, they are also synchronization points because it is those commits that are tested, not the individual commits in submodules. Whenever I look at the test matrix I see that synchronized state of Boost. Whether that synchronization is predictable or not is not that relevant in this discussion (well, at least as it currently works).