Boost logo

Boost :

From: Boris Kolpackov (boris_at_[hidden])
Date: 2024-03-22 14:19:39


Rainer Deyke via Boost <boost_at_[hidden]> writes:

> - Builds should be hermetic. Compiling the same project with the same
> command-line arguments on different computers should result in bit-for-bit
> identical results.

I believe what you are describing is commonly referred to as
"reproducible builds". Hermeticity (broadly) means having a complete
track of everything that contributes into the build and being able to
prevent (or at least detect) uncontrolled changes to any of it.

Hermeticity makes it easier to achieve reproducible builds but is
neither required nor sufficient. True hermeticity is also very
difficult to achieve in C/C++ projects.

> (I currently handle this by compiling in a Docker container.)

Well, that doesn't really qualify as "different computers", does it?
It's always "your (virtualized) computer" ;-).

> - I want to build for multiple target operating systems on one computer,
> from one source directory, with one invocation of the build system.
> - I don't like to edit my build specification files every time I add or
> remove a file, so I use wildcards extensively in specifying which source
> files to build.
> - Some executables need to be built for the target platforms. Some only
> need to be built for the build platform, so that I can run them as part of
> the build process.
> - The set of artifacts produced from one (data) source file is not known
> until the source file is processed. (Example: unzipping a zip file as part
> of the process of building the library contained in the zip file.)

All covered by build2, if you are interested. We also have a notion of
hermetic build configurations (though they are no magic, unfortunately):

https://build2.org/release/0.14.0.xhtml#hermetic


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk