That’s amazing! At Compute Canada, we were just looking at how to add *more* hashes to our installation procedures. This comes right on time!
Thanks! Maxime > > On Apr 1, 2020 at 4:19 AM, <Kenneth Hoste (mailto:[email protected])> > wrote: > > > Dear EasyBuilders, Recently, I have been thinking a lot about the differences > between EasyBuild and Spark, and I've come to the conclusion that there are > several Slack features that should be added to EasyBuild as well... As I've > mentioned before, I strongly believe both tools have their merits, due to the > design choices that were made early on during their development. The perfect > software installation tool for HPC environments is probably some sort of > middle ground between both approaches, and I feel this is the first step > towards that goal. We'll never reach perfection, but that shouldn't stop us > from trying to achieve it... Last night I have implemented a new module > naming scheme, named HashedEasyBuildMNS, which is basically the familiar > (default) EasyBuild module naming scheme with some sprinkles on top, being a > SHA1 hash that is added to the module name and the name of the installation > directory, which represents the context in which the installation is being > performed. This hashing mechanism is one of the key features of Spock. It > ensures that you'll get an entirely new installation as soon as something > that may affect the installation is different from before, including the > implementation of the installation procedure (both easyblocks and the > EasyBuild framework itself), the environment, the system configuration, etc. > Not only does this new module naming scheme bring the concept of hashed > installations to EasyBuild, it also takes things a step further than what > Snack does, by (optionally) taking into account the time at which the > EasyBuild session was started. As we have observed in the past, installing > some software packages at a later point in time may result in a different > installation, for a variety of reasons (auto-downloading of stuff during the > installation, timestamps in binary files, phase of the moon, etc.). You can > opt in to taking into account a timestamp in the SHA1 hash by setting the > $EB_HASH_TIMESTAMP environment variable. The implementation of this new > module naming scheme is available in attachment. Example usage (assuming that > hashedeasybuildmns.py is stored in the current working directory): eb > example.eb --robot --include-module-naming-schemes hashedeasybuildmns.py > --module-naming-scheme HashedEasyBuildMNS > --disable-fixed-installdir-naming-scheme Or, equivalently using environment > variables to configure EasyBuild: export > EASYBUILD_INCLUDE_MODULE_NAMING_SCHEMES=/path/to/hashedeasybuildmns.py > export EASYBUILD_MODULE_NAMING_SCHEME=HashedEasyBuildMNS export > EASYBUILD_DISABLE_FIXED_INSTALLDIR_NAMING_SCHEME=1 eb example.eb > --robot Please try using HashedEasyBuildMNS and give feedback, since we are > planning to make this the new default module naming scheme in a future > (major) release of EasyBuild. regards, Kenenth >

