M8. Each package must provide a runtime API, for example a function call, to return the current version number of the software and indicate what configure/CMAKE and compiler options were used to build the package. For development versions of the software, each package must provide the current commit ID in the repository. With this information users should be able to rebuild the package in the same state. We do not currently require that version information for all dependent packages be provided, so it may not be possible to rebuild the entire software stack in the same state.
8 For example, some projects import source for some routines from BLAS and LAPACK. The Trilinos Teuchos package imported an early version of the boost::any class. Also, Trilinos has its own copy of an older version of SparseSuite. In the latter two cases, new file names and namespaces were created for the imported software to allow coexistence with the (updated) external versions.