easybuilders / easybuild-framework

EasyBuild is a software installation framework in Python that allows you to install software in a structured and robust way.
https://easybuild.io
GNU General Public License v2.0
148 stars 201 forks source link

refactor easyconfig parameters and template constants to use a consistent naming style #4464

Open jfgrimm opened 6 months ago

jfgrimm commented 6 months ago

easyconfig parameters:

type current proposed
mandatory description
docurls doc_urls
homepage
name
software_license
software_license_urls
toolchain
version
toolchain onlytcmod only_toolchain_mod_env (or just deprecate the use of it...)
toolchainopts toolchain_opts
build banned_linked_shared_libs
bin_lib_subdirs
bitbucket_account
buildopts build_opts
checksums
configopts configure_opts
cuda_compute_capabilities cuda_cc_comma_sep
download_instructions
easyblock
easybuild_version
enhance_sanity_check
fix_bash_shebang_for
fix_perl_shebang_for
fix_python_shebang_for
github_account
hidden
installopts install_opts
maxparallel max_parallel
parallel
patches
postinstallcmds post_install_cmds
postinstallmsgs post_install_msgs
postinstallpatches post_install_patches
prebuildopts pre_build_opts
preconfigopts pre_configure_opts
preinstallopts pre_install_opts
pretestopts pre_test_opts
required_linked_shared_libs
runtest run_test
sanity_check_commands sanity_check_cmds
sanity_check_paths
skip
skip_mod_files_sanity_check skip_fortran_mod_files_sanity_check
skipsteps skip_steps
source_urls
sources
stop
testopts test_opts
tests
unpack_options unpack_opts
unwanted_env_vars
versionprefix version_prefix
versionsuffix version_suffix
file-management buildininstalldir build_in_install_dir
cleanupoldbuild clean_up_old_build
cleanupoldinstall clean_up_old_install
dontcreateinstalldir dont_create_install_dir
keeppreviousinstall keep_previous_install
keepsymlinks keep_symlinks
start_dir
dependencies allow_system_deps
builddependencies build_deps
dependencies deps
hiddendependencies hidden_deps
moddependpaths modulepath_prepend_paths
multi_deps
multi_deps_load_default
osdependencies os_deps
license accept_eula
group
key
license_file
license_server
license_port
extensions exts_classmap exts_class_map
exts_default_options exts_default_opts
exts_defaultclass exts_default_class
exts_download_dep_fail
exts_filter
exts_list
modules allow_append_abs_path
allow_prepend_abs_path
citing
docpaths doc_paths
examples
include_modpath_extensions include_modulepath_exts
modaliases env_mod_aliases
modaltsoftname env_mod_alt_soft_name
modextrapaths env_mod_extra_paths
modextrapaths_append env_mod_extra_paths_append
modextravars env_mod_extra_vars
modloadmsg env_mod_load_msg
modluafooter env_mod_lua_footer
modtclfooter env_mod_tcl_footer
module_depends_on env_mod_depends_on
moduleclass env_mod_class
moduleforceunload env_mod_force_unload
moduleloadnoconflict env_mod_load_no_conflict
modunloadmsg env_mod_unload_msg
recursive_module_unload recursive_env_mod_unload
site_contacts
upstream_contacts
usage
whatis
other block
build_info_msg
buildstats build_stats
deprecated
jfgrimm commented 6 months ago

templates:

current proposed
module_name
nameletter name_letter
toolchain_name
toolchain_version toolchain_ver
version_major_minor ver_maj_min
version_major ver_maj
version_minor ver_min
cudamajver cuda_maj_ver
cudashortver cuda_short_ver
cudaver cuda_ver
cudamajver cuda_maj_ver
cudashortver cuda_short_ver
cudaver cuda_ver
javamajver java_maj_ver
javashortver java_short_ver
javaver java_ver
perlmajver perl_maj_ver
perlshortver perl_short_ver
perlver perl_ver
pymajver py_maj_ver
pyshortver py_short_ver
pyver py_ver
rmajver r_maj_ver
rshortver r_short_ver
rver r_ver
bitbucket_account
github_account
name
parallel
version
versionsuffix version_suffix
versionprefix version_prefix
namelower name_lower
nameletterlower name_letter_lower
builddir build_dir
installdir install_dir
start_dir
arch
sysroot
mpi_cmd_prefix
cuda_compute_capabilities cuda_cc_comma_sep
cuda_cc_cmake
cuda_cc_space_sep
cuda_cc_semicolon_sep
cuda_sm_comma_sep
cuda_sm_space_sep
jfgrimm commented 6 months ago

template constants:

current proposed
APACHE_SOURCE APACHE_URL
BITBUCKET_SOURCE BITBUCKET_GET_URL
BITBUCKET_DOWNLOADS BITBUCKET_DOWNLOADS_URL
CRAN_SOURCE CRAN_URL
FTPGNOME_SOURCE FTP_GNOME_URL
GITHUB_SOURCE GITHUB_URL
GITHUB_LOWER_SOURCE GITHUB_URL_LOWER
GITHUB_RELEASE GITHUB_RELEASE_URL
GITHUB_LOWER_RELEASE GITHUB_RELEASE_URL_LOWER
GNU_SAVANNAH_SOURCE GNU_SAVANNAH_URL
GNU_SOURCE GNU_URL
GOOGLECODE_SOURCE GOOGLECODE_URL
LAUNCHPAD_SOURCE LAUNCHPAD_URL
PYPI_SOURCE PYPI_URL
PYPI_LOWER_SOURCE PYPI_URL_LOWER
R_SOURCE R_URL
SOURCEFORGE_SOURCE SOURCEFORGE_URL
XORG_DATA_SOURCE XORG_DATA_URL
XORG_LIB_SOURCE XORG_LIB_URL
XORG_PROTO_SOURCE XORG_PROTO_URL
XORG_UTIL_SOURCE XORG_UTIL_URL
XORG_XCB_SOURCE XORG_XCB_URL
SHLIB_EXT
SOURCE_TAR_GZ
SOURCELOWER_TAR_GZ SOURCE_LOWER_TAR_GZ
SOURCE_TAR_XZ
SOURCELOWER_TAR_XZ SOURCE_LOWER_TAR_XZ
SOURCE_TAR_BZ2
SOURCELOWER_TAR_BZ2 SOURCE_LOWER_TAR_BZ2
SOURCE_TGZ
SOURCELOWER_TGZ SOURCE_LOWER_TGZ
SOURCE_TXZ
SOURCELOWER_TXZ SOURCE_LOWER_TXZ
SOURCE_TBZ2
SOURCELOWER_TBZ2 SOURCE_LOWER_TBZ2
SOURCE_TB2
SOURCELOWER_TB2 SOURCE_LOWER_TB2
SOURCE_GTGZ
SOURCELOWER_GTGZ SOURCE_LOWER_GTGZ
SOURCE_ZIP
SOURCELOWER_ZIP SOURCE_LOWER_ZIP
SOURCE_TAR
SOURCELOWER_TAR SOURCE_LOWER_TAR
SOURCE_XZ
SOURCELOWER_XZ SOURCE_LOWER_XZ
SOURCE_TAR_Z
SOURCELOWER_TAR_Z SOURCE_LOWER_TAR_Z
SOURCE_WHL
SOURCELOWER_WHL SOURCE_LOWER_WHL
SOURCE_PY2_WHL
SOURCELOWER_PY2_WHL SOURCE_LOWER_PY2_WHL
SOURCE_PY3_WHL
SOURCELOWER_PY3_WHL SOURCE_LOWER_PY3_WHL
Micket commented 6 months ago

I filled in the template constants, consistent with URL and LOWER and underscores. I know there is also

    ARCH,
    EXTERNAL_MODULE,
    HOME,
    OS_NAME,
    OS_PKG_IBVERBS_DEV,
    OS_PKG_OPENSSL_BIN,
    OS_PKG_OPENSSL_DEV,
    OS_PKG_OPENSSL_LIB,
    OS_PKG_PAM_DEV,
    OS_TYPE,
    OS_VERSION,
    SYSTEM,
    SYS_PYTHON_VERSION,

but those look fine as they are to me.

jfgrimm commented 6 months ago
List of common abbreviations used: abbreviation full
abs absolute
alt alternat(iv)e
cmd command
config configuration (not configure)
dep dependency
dir directory
doc documentation
env environment
eula end user license agreement
ext extension
max maximum
min minimum
mod module
msg message
opt option
org organization
os operating system
pkg package
pr pull request
stat statistic
subdir sub-directory
symlink symbolic link
sync synchronize
url uniform resource locator
var variable
ver version

terms that have a specific meaning have been excluded, e.g. sysroot, tmpdir, stdout

jfgrimm commented 6 months ago

EB configuration parameters:

current proposed
-a
--accept-eula
--accept-eula-for
--add-dummy-to-minimal-toolchains
--add-pr-labels
--add-system-to-minimal-toolchains
--aggregate-regtest
--allow-loaded-modules --allow-loaded-env-mods
--allow-modules-tool-mismatch --allow-env-mod-tool-mismatch
--allow-use-as-root-and-accept-consequences
--amend
--avail-cfgfile-constants --avail-config-file-constants
--avail-easyconfig-constants
--avail-easyconfig-licenses
--avail-easyconfig-params
--avail-easyconfig-templates
--avail-hooks
--avail-module-naming-schemes
--avail-modules-tools --avail-env-mod-tools
--avail-repositories
--avail-toolchain-opts
-b
--backup-modules --backup-env-mods
--backup-patched-files
--banned-linked-shared-libs
--buildpath --build-path
-C
--check-conflicts
--check-contrib
--check-eb-deps
--check-ebroot-env-vars
--check-github
--check-style
--checksum-priority
--cleanup-builddir --clean-up-build-dir
--cleanup-easyconfigs --clean-up-easyconfigs
--cleanup-tmpdir --clean-up-tmpdir
--close-pr
--close-pr-msg
--close-pr-reasons
--color
--configfiles --config-files
--confighelp --config-help
--consider-archived-easyconfigs
--container-build-image
--container-config
--container-image-format
--container-image-name
--containerize
--containerpath --container-path
--container-template-recipe
--container-tmpdir
--container-type
--copy-ec
--create-index
--cuda-cache-dir
--cuda-cache-maxsize
--cuda-compute-capabilities
-d
-D
--debug
--debug-lmod
--default-opt-level
--dep-graph
--deprecated
--detect-loaded-modules --detect-loaded-env-mods
--devel
--disable-cleanup-builddir --disable-clean-up-build-dir
--disable-cleanup-easyconfigs --disable-clean-up-easyconfigs
--disable-cleanup-tmpdir --disable-clean-up-tmpdir
--disable-extended-dry-run-ignore-errors
--disable-fixed-installdir-naming-scheme --disable-fixed-install-dir-naming-scheme
--disable-generate-devel-module --disable-generate-devel-env-mod
--disable-lib64-fallback-sanity-check
--disable-lib64-lib-symlink
--disable-lib-lib64-symlink
--disable-map-toolchains
--disable-modules-tool-version-check --disable-env-mod-tool-version-check
--disable-mpi-tests
--disable-pre-create-installdir --disable-pre-create-install-dir
--disable-show-progress-bar
--download-timeout
--dry-run
--dry-run-short
--dump-autopep8
--dump-env-script
--dump-test-report
-e
--easyblock
--easystack
--enforce-checksums
--env-for-shebang
--envvars-user-modules ???
--experimental
--extended-dry-run
--extended-dry-run-ignore-errors
--external-modules-metadata --external-env-mods-metadata
--extra-modules
-f
--fetch
--filter-deps
--filter-ecs --filter-easyconfigs
--filter-env-vars
--filter-rpath-sanity-libs
--fix-deprecated-easyconfigs
--fixed-installdir-naming-scheme --fixed-install-dir-naming-scheme
--force
--force-download
--from-pr
--generate-devel-module --generate-devel-env-mod
--github-org
--github-user
--git-working-dirs-path
--group
--group-writable-installdir --group-writable-install-dir
-h
-H
--help
--hidden
--hide-deps
--hide-toolchains
--hooks
--http-header-fields-urlpat
--ignore-checksums
--ignoreconfigfiles --ignore-config-files
--ignore-dirs
--ignore-index
--ignore-locks
--ignore-osdeps --ignore-os-deps
--ignore-test-failure
--include-easyblocks
--include-easyblocks-from-pr
--include-module-naming-schemes
--include-toolchains
--index-max-age
--info
--inject-checksums
--inject-checksums-to-json
--insecure-download
--install-github-token
--install-latest-eb-release
--installpath --install-path
--installpath-modules --install-path-modules
--installpath-software --install-path-software
--job
--job-backend
--job-backend-config
--job-cores
--job-deps-type
--job-eb-cmd
--job-max-jobs
--job-max-walltime
--job-output-dir
--job-polling-interval
--job-target-resource
-k
-l
--last-log
--lib64-fallback-sanity-check
--lib64-lib-symlink
--lib-lib64-symlink
--list-easyblocks
--list-installed-software
--list-prs
--list-software
--list-toolchains
--local-var-naming-check
--locks-dir
--logfile-format
--logtostdout --log-to-stdout
-M
--map-toolchains
--max-fail-ratio-adjust-permissions
--merge-pr
--minimal-build-env
--minimal-toolchains
--missing-modules --missing-env-mods
--module-cache-suffix --env-mod-cache-suffix
--moduleclasses --env-mod-classes
--module-depends-on --env-mod-depends-on
--module-extensions --env-mod-extensions
--module-naming-scheme
--module-only --env-mod-only
--modules-footer --env-mod-footer
--modules-header --env-mod-header
--modules-tool --env-mod-tool
--modules-tool-version-check --env-mod-tool-version-check
--module-syntax --env-mod-syntax
--mpi-cmd-template
--mpi-tests
--new-branch-github
--new-pr
--new-pr-from-branch
--only-blocks
--optarch
--output-format
--output-style
-p
--package
--package-naming-scheme
--packagepath --package-path
--package-release
--package-tool
--package-tool-options
--package-type
--parallel
--parallel-extensions-install
--pr-branch-name
--pr-commit-msg
--pr-descr
--pre-create-installdir --pre-create-install-dir
--prefix
--pretend
--preview-pr
--pr-target-account
--pr-target-branch
--pr-target-repo
--pr-title
--quiet
-r
--read-only-installdir --read-only-install-dir
--rebuild
--recursive-module-unload --recursive-env-mod-unload
--regtest
--regtest-output-dir
--remove-ghost-install-dirs
--repository
--repositorypath --repository-path
--required-linked-shared-libs
--review-pr
--review-pr-filter
--review-pr-max
--robot
--robot-paths
--rpath
--rpath-filter
--rpath-override-dirs
-s
-S
--sanity-check-only
--search
--search-filename
--search-paths
--search-short
--sequential
--set-default-module --set-default-env-mod
--set-gid-bit
--shorthelp --short-help
--show-config
--show-default-configfiles --show-default-config-files
--show-default-moduleclasses --show-default-env-mod-classes
--show-ec --show-easyconfig
--show-full-config
--show-progress-bar
--show-system-info
--silence-deprecation-warnings
--silence-hook-trigger
--skip
--skip-extensions
--skip-test-cases
--skip-test-step
--software
--software-name
--software-version
--sourcepath --source-path
--sticky-bit
--stop
--strict
--subdir-modules --subdir-env-mods
--subdir-software
--subdir-user-modules --subdir-user-env-mods
--suffix-modules-path --suffix-env-mods-path
--sync-branch-with-develop
--sync-pr-with-develop
--sysroot
-t
-T
--terse
--testoutput --test-output
--test-report-env-filter
--tmpdir
--tmp-logdir
--toolchain
--toolchain-name
--toolchain-version
--trace
--try-amend
--try-ignore-versionsuffixes --try-ignore-version-suffixes
--try-software
--try-software-name
--try-software-version
--try-toolchain
--try-toolchain-name
--try-toolchain-version
--try-update-deps
--try-X
-u
--umask
--unittest-file --unit-test-file
--unit-testing-mode
--update-branch-github
--update-modules-tool-cache
--update-pr
--upload-test-report
--use-ccache
--use-existing-modules --use-existing-env-mods
--use-f90cache
--verify-easyconfig-filenames
--version
--wait-on-lock
--wait-on-lock-interval
--wait-on-lock-limit
-x
--zip-logs
boegel commented 3 months ago

DEFAULT_REPOSITORYPATH (constant that can be used in EasyBuild configuration files) should be renamed to DEFAULT_REPOSITORY_PATH

boegel commented 3 months ago

EXTERNAL_MODULE should be renamed to EXTERNAL_ENV_MOD

boegel commented 3 months ago

We should also check naming of toolchain options

boegel commented 3 months ago

eb -a should also mention alternative names, something like:

configopts                    Extra options passed to configure (default already has --prefix) [default: ""] {alternative name: config_opts}

likewise for eb --avail-easyconfig-templates