-
Notifications
You must be signed in to change notification settings - Fork 204
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
support for using easystack files #3468
Comments
I would probably find it more useful to group things by toolchain instead of by softwarename, i.e. (leaving out a lot of info here)
etc. |
@akesandgren We discussed that aspect, and eventually we agreed that the first order view on a software stack is the software itself (not the toolchains used to install that software). Compare this (software first, toolchain second): software:
GROMACS:
foss-2020a:
versions: [2019.4]
fosscuda-2019b:
versions: [2019.4]
OpenFOAM:
foss-2020a:
versions: [8]
intel-2020a:
versions: [8] with this (toolchains first, software second): toolchains:
foss-2020a:
GROMACS:
versions: [2019.4]
OpenFOAM:
versions: [8]
intel-2020a:
OpenFOAM:
versions: [8]
fosscuda-2019b:
GROMACS:
versions: [2019.4] The 2nd format makes it harder to see at a glance which versions/variants of a particular software package are installed, which is probably a more common question than "what is installed for toolchain X"? That being said, maybe we don't need to choose at all... We should definitely avoid making this a bike-shedding discussion. :) |
Yeah, doesn't really matter. And if we could make a tool that converts between them... I.e. I'd like to easily list what SW I have in the file for specific toolchain, and of course vice versa |
Btw, I would like to see a tool that can generate that yaml from an existing installation. |
Hello, I'll be trying to make this feature work, you can reach me on EasyBuild slack |
#3512 |
Proposed feature
We would like to be able to create a file that specifies all the software we want to build, and call EasyBuild with that file as argument. EasyBuild should then loop over the software specified in the spec file to build it. This is useful in the context of the EESSI project, but is probably more generally useful to EasyBuild users as well.
We've had a discussion with several EasyBuild and EESSI people on the structure of these files and the corresponding desired EasyBuild behaviour. Notes are here https://github.com/EESSI/software-layer/wiki/Brainstorm-meeting-(Oct-9th-2020).
Below follows a more exact specification and explanation of the intended behaviour.
Example spec file
Spec file format is proposed to be YAML and would look e.g. like this:
Usage
Build everything in the spec file:
Intended behaviour of keywords in the spec file
easybuild_version: optional keyword. If present, EB framework should check if the spec file was intended for the current version of the EB framework. Can be used e.g. when
--from-pr
is used in the spec file to new features in from develop, which at a later stage may already be part of release.software: mandatory keyword that will specify the list of software to build. Framework should through a warning if this keyword isn't found.
Within software, the structure will be
Additional command-line arguments to EasyBuild can be passed at any level by specifying a keyword that matches the long argument name, e.g.
Will be equivalent to running
The deepest nested value will always take priority, i.e.
will be equivalent to running
Labels
Labels are a means to not build everything in the spec file, but only to select certain items that match with the labels specified on the command line.
For example, the spec file could contain
and the command line invocation could be
Then, EasyBuild will nót build
GROMACS-2020.1-foss-2020a.eb
, because the command line contained thefoo
key, and the spec file specified that as a label to exclude (exclude-labels: foo
). Furthermore, EasyBuild will also nót buildGROMACS-2020.3-foss-2020a.eb
, because the spec file specified that it should only be build if the bar label was passed (include-labels: bar
) andbar
wasn't a label on the command line.Labels are not interpreted in any way by EasyBuild: it just matches the labels passed on the command line to the
include-labels
andexclude-labels
keywords. The meaning of those labels is entirely up to the developer of the spec file and we suggest the labels are explained through comments at the top of the YAML file.Practical usage would be
Then, a user who wants to build for a GPU based system can do:
Implementation plan
Probably, we should implement this in steps:
easybuild_version
The text was updated successfully, but these errors were encountered: