-
Notifications
You must be signed in to change notification settings - Fork 203
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
[.yeb] add support for easyconfigs in YAML format (ROADMAP) #1407
Comments
@Caylo is going to spend some time on this during her internship @ HPC-UGent |
extra known issue: conditionals inside easyconfigs won't cut it (ref. CUDA and some others) |
@fgeorgatos: all easyconfigs that currently rely on Python code in any way will have to be dealt with differently |
Re: conditionals and supporting multiple versions or optional dependencies: |
+1 for jinja2, since it's becoming de facto standard for macro templating
|
What is the proposed result? e.g. what does a I proposed an idea a while back named !!python/object:easybuild.easyblock.EasyConfig
source: !!python/object:easybuild.easyblock.Retriever.Http
url: - http://github.com/user/project/tag.zip
- http://sourceforge.net/no-malware-thx/software-version.zip
configure; !!python/object:easybuild.easyblock.NoOp
make: !!python/object:easybuild.easyblock.Make.CMake
install: !!python/object:easybuild.easyblock.Install.CopyFiles
files: - cool-exec
- cool-exec-mpi
- cool-exec-mpi-openmp
dest: bin The advantages here are that we don't need to make a new easy block for each small diversion that each piece of software makes. We just swap it out at the Easy Config level. This can also be built up so common things can swap out the top level EasyConfig. e.g.: !!python/object:easybuild.easyblock.ConfigureMakeInstall
source: !!python/object:easybuild.easyblock.Retriever.Http
url: - http://github.com/user/project/tag.zip
- http://sourceforge.net/no-malware-thx/software-version.zip
configure_flags: '--with-openmp=true' It also means we can keep loops and some template variables out of the config files since loops in config is hard/impossible to test and hence a massive bug vector. |
@ehiggs: for now, the idea is to have support for 'fat' easyconfigs with Looking into templating and working towards collapsing easyblocks/easyconfigs like you specify is a way bigger step, but something we can consider in the long run, and we're happy with how |
Maybe we can do something like this for dependencies?
it's a bit longer, but it's clear and more in style with the new |
I like the proposal of @Caylo, readable but not too verbose. |
+1, looks very nice, but how does this get parsed exactly? |
This is still something that should be reconsidered. I'll add this here as well: |
#2181 is a step in right direction for this, opening the door to dumping yebs to (a set of) easyconfigs at runtime and then using existing resolution methods |
import yaml
)feature/yaml
branchKNOWN ISSUES
source_urls = [http://www.bzip2.org/1.0.6]
doesn't parsesource_urls = ['http://www.bzip2.orig/1.0.6']
ROADMAP
STEP I: parsing of easyconfigs in YAML format
add support for
.yeb
easyconfigs, step-by-stepsupport equivalent of current .eb files
[.yeb] initial support for parsing easyconfig files in YAML syntax (REVIEW) #1408][.yeb] easyconfig files in YAML syntax working with dependencies #1429]!majmin
YAML function ([WIP] yeb versionmajor function #1444)alternate format for toolchain, dependencies?
toolchain = intel,2015b
support multiple versions/toolchains/versionsuffixes in a single .yeb file
.yeb
location + ‘specs’ to select (version, toolchain name/version, versionsuffix)\support collapsing information common to a particular version range, toolchain name, etc.
notes:
STEP II: basic cmdline support for using
.yeb
fileseb foo-1.2.3-bar-9.8.7-baz.eb
” to “eb foo.yeb
” + usingversion=1.2.3
,toolchain=bar,9.8.7
,versionsuffix=-baz
eb foo.yeb(1.2.3,bar-9.8.7,-baz)
” (version, toolchain, versionsuffix, use ‘_
’ for "don’t care"?)eb foo-1.2.3-bar-9.8.7-baz
” (no .eb file, but “EasyBuild spec”)eb foo/1.2.3-bar-9.8.7-baz
” (module name to install)eb foo
”, “eb [email protected]
”, “eb foo{bar}@1.2.3
”, "eb [email protected]{[email protected]}-baz
” (Spack like)eb --software=… --toolchain=…
"STEP III: make cmdline feature aware of .yeb: --robot, --dry-run, --try-*
make
--robot
consider.yeb
filesmake
--dry-run
aware of.yeb
filesSTEP IV: reproducing builds done with .yeb easyconfigs
.yeb
+ version/toolchain/suffix specs to archive/install dir.yeb
to include specs (easy to share)?STEP V: provide script to make the transition from
.eb
to.yeb
.eb
format to.yeb
format.eb
easyconfigs (for a single software name) into a single.yeb
easyconfigThe text was updated successfully, but these errors were encountered: