### Configure build and install options Source: https://docs.easybuild.io/writing-easyconfig-files Example of tuning configure, build, and install commands using specific option parameters. ```python easyblock = 'ConfigureMake' ... # configure with: ./autogen.sh && ./configure CC="$CC" CFLAGS="$CFLAGS" preconfigopts = "./autogen.sh && " buildopts = 'CC="$CC" CFLAGS="$CFLAGS"' # install with: make install PREFIX= installopts = 'PREFIX=%(installdir)s' ``` -------------------------------- ### Basic EasyBuild Configuration File Example Source: https://docs.easybuild.io/configuration An example of an EasyBuild configuration file demonstrating section definitions and key-value pairs for settings like logging and module tools. Supports comments starting with '#'. ```ini [basic] # always enable logging to stdout logtostdout = true [config] # use Lmod as modules tool modules-tool: Lmod # use different default installation path prefix=/home/you/work/easybuild/ ``` -------------------------------- ### Install EasyBuild from downloaded source using setup.py Source: https://docs.easybuild.io/installation-alternative Install EasyBuild from a downloaded source tarball directly using the setup.py script, specifying a prefix for installation without admin rights. ```python python setup.py --prefix $HOME/EasyBuild install ``` -------------------------------- ### Set Up EasyBuild Development Version with Script Source: https://docs.easybuild.io/installation-alternative This script automates the cloning and setup of a development version of EasyBuild from GitHub repositories. It requires your GitHub username and a specified installation prefix. After execution, update your module path and load the EasyBuild module. ```bash # pick an installation prefix (adjust as you like) INSTALL_PREFIX=$(mktemp -d $HOME/EasyBuild-XXXXXX) # download script curl -O https://raw.githubusercontent.com/easybuilders/easybuild-framework/main/easybuild/scripts/install-EasyBuild-develop.sh # run downloaded script, specifying *your* GitHub username and the installation prefix bash install-EasyBuild-develop.sh GITHUB_USERNAME $INSTALL_PREFIX # update $MODULEPATH via 'module use', and load the module module use $INSTALL_PREFIX/modules module load EasyBuild-develop eb --version ## This should ensure you have a reasonable instance of EasyBuild ``` -------------------------------- ### Install EasyBuild in user directory Source: https://docs.easybuild.io/installation Install EasyBuild into your personal home directory using the `--user` flag. This avoids the need for administrator privileges and installs to `$HOME/.local/`. ```bash pip install --user easybuild ``` -------------------------------- ### Configure Build Path, Install Path, and Disable Debugging via Command Line Source: https://docs.easybuild.io/configuration Example of using multiple command-line arguments to specify build path, temporary installation path, and disable debug logging. Shows overriding configuration file and environment variable settings. ```bash eb --buildpath=/dev/shm --installpath=/tmp/$USER --disable-debug ... ``` -------------------------------- ### Example easyconfig for Binary easyblock Source: https://docs.easybuild.io/version-specific/generic-easyblocks This is an example easyconfig file for the Binary easyblock, used for installing software distributed in binary form. It specifies package details, source URLs, checksums, and sanity check paths. ```easyconfig easyblock = 'Binary' name = 'Platanus' version = '1.2.1' versionsuffix = '-linux-x86_64' homepage = 'http://platanus.bio.titech.ac.jp/' description = """PLATform for Assembling NUcleotide Sequences""" toolchain = SYSTEM source_urls = ['http://platanus.bio.titech.ac.jp/Platanus_release/20130901010201'] sources = ['platanus'] checksums = ['02cf92847ec704d010a54df293b9c60a'] sanity_check_paths = { 'files': ['platanus'], 'dirs': [], } moduleclass = 'bio' ``` -------------------------------- ### Example Easyconfig for ConfigureMake Source: https://docs.easybuild.io/version-specific/generic-easyblocks An example easyconfig file demonstrating the usage of the `ConfigureMake` easyblock for the zsync software. ```APIDOC ## Example easyconfig for `ConfigureMake` easyblock ``` easyblock = 'ConfigureMake' name = 'zsync' version = '0.6.2' homepage = 'http://zsync.moria.org.uk/' description = """zsync-0.6.2: Optimising file distribution program, a 1-to-many rsync""" toolchain = {'name': 'ictce', 'version': '5.3.0'} sources = [SOURCE_TAR_BZ2] source_urls = ['http://zsync.moria.org.uk/download/'] sanity_check_paths = { 'files': ['bin/zsync'], 'dirs': [] } moduleclass = 'tools' ``` ``` -------------------------------- ### Bundle Easyconfig Example Source: https://docs.easybuild.io/version-specific/generic-easyblocks Example configuration for a Bundle easyblock, demonstrating how to group multiple dependencies into a single module. ```python easyblock = 'Bundle' name = 'Autotools' version = '20150119' # date of the most recent change homepage = 'http://autotools.io' description = """This bundle collect the standard GNU build tools: Autoconf, Automake and libtool""" toolchain = {'name': 'GCC', 'version': '4.9.2'} dependencies = [ ('Autoconf', '2.69'), # 20120424 ('Automake', '1.15'), # 20150105 ('libtool', '2.4.5'), # 20150119 ] moduleclass = 'devel' ``` -------------------------------- ### Install EasyBuild from downloaded source using pip Source: https://docs.easybuild.io/installation-alternative Install EasyBuild from a downloaded source tarball using pip. Ensure the installation order respects dependencies: framework, easyblocks, easyconfigs. ```bash tar xfvz easybuild-framework-1.0.tar.gz cd easybuild-framework-1.0 pip install --install-option "--prefix=$HOME/EasyBuild" . ``` -------------------------------- ### ConfigureMakePythonPackage Easyconfig Example Source: https://docs.easybuild.io/version-specific/generic-easyblocks Example configuration for the ConfigureMakePythonPackage easyblock, demonstrating how to define dependencies and custom configuration options. ```python easyblock = 'ConfigureMakePythonPackage' name = 'PyQt' version = '4.11.3' versionsuffix = '-Python-%(pyver)s' homepage = 'http://www.riverbankcomputing.co.uk/software/pyqt' description = """PyQt is a set of Python v2 and v3 bindings for Digia's Qt application framework.""" toolchain = {'name': 'goolf', 'version': '1.5.14'} sources = ['%(name)s-x11-gpl-%(version)s.tar.gz'] source_urls = ['http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-%(version)s'] dependencies = [ ('Python', '2.7.9'), ('SIP', '4.16.4', versionsuffix), ('Qt', '4.8.6'), ] configopts = "configure-ng.py --confirm-license" configopts += " --destdir=%%(installdir)s/lib/python%(pyshortver)s/site-packages " configopts += " --no-sip-files" options = {'modulename': 'PyQt4'} modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'} moduleclass = 'vis' ``` -------------------------------- ### Install EasyBuild using easy_install Source: https://docs.easybuild.io/installation-alternative Use this command to install the latest version of EasyBuild using the old 'easy_install' tool. Specify a prefix to install without admin rights. ```bash easy_install --prefix $HOME/EasyBuild easybuild ``` -------------------------------- ### Trace EasyBuild installation progress Source: https://docs.easybuild.io/tracing-progress Use the --trace flag to output detailed installation steps and command logs to the terminal. ```bash $ eb HPL-2.3-foss-2023a.eb --trace --force == Temporary log file in case of crash /tmp/eb-od8biuwd/easybuild-v4oniskt.log == processing EasyBuild easyconfig /home/example/easybuild-easyconfigs/easybuild/easyconfigs/h/HPL/HPL-2.3-foss-2023a.eb == building and installing HPL/2.3-foss-2023a... >> installation prefix: /software/HPL/2.3-foss-2023a == fetching files... >> sources: >> /home/example/sources/h/HPL/hpl-2.3.tar.gz [SHA256: 32c5c17d22330e6f2337b681aded51637fb6008d3f0eb7c277b163fadd612830] >> patches: >> /home/example/easybuild-easyconfigs/easybuild/easyconfigs/h/HPL/HPL_parallel-make.patch [SHA256: 2a5bf9c4f328049828ddecec7ba3f05a9e25d236f4212747c53bd22fea80c5e6] == ... (took < 1 sec) == creating build dir, resetting environment... >> build dir: /tmp/easybuild_build/HPL/2.3/foss-2023a == ... (took < 1 sec) == unpacking... >> running command: [started at: 2023-10-11 09:41:33] [working dir: /tmp/easybuild_build/HPL/2.3/foss-2023a] [output logged in /tmp/eb-od8biuwd/easybuild-run_cmd-lzkft2en.log] tar xzf /home/example/sources/h/HPL/hpl-2.3.tar.gz >> command completed: exit 0, ran in < 1s == ... (took < 1 sec) == patching... >> applying patch HPL_parallel-make.patch == ... (took < 1 sec) == preparing... >> loading toolchain module: foss/2023a >> defining build environment for foss/2023a toolchain == Running post-prepare hook... == ... (took 7 secs) == configuring... == Running pre-configure hook... >> running command: [started at: 2023-10-11 09:41:41] [working dir: /tmp/easybuild_build/HPL/2.3/foss-2023a/hpl-2.3/setup] [output logged in /tmp/eb-od8biuwd/easybuild-run_cmd-ngu5ym7y.log] /bin/bash make_generic >> command completed: exit 0, ran in < 1s == ... (took < 1 sec) == building... >> running command: [started at: 2023-10-11 09:41:41] [working dir: /tmp/easybuild_build/HPL/2.3/foss-2023a/hpl-2.3] [output logged in /tmp/eb-od8biuwd/easybuild-run_cmd-81p_xm51.log] make -j 8 TOPdir="/tmp/easybuild_build/HPL/2.3/foss-2023a/hpl-2.3/" CC="mpicc" MPICC="mpicc" LINKER="mpicc" LAlib="-lflexiblas -lgfortran" HPL_OPTS="-I/software/FFTW.MPI/3.3.10-gompi-2023a/include -I/software/FlexiBLAS/3.3.1-GCC-12.3.0/include -I/software/FlexiBLAS/3.3.1-GCC-12.3.0/include/flexiblas " LINKFLAGS="-O2 -ftree-vectorize -march=native -fno-math-errno -L/software/FFTW.MPI/3.3.10-gompi-2023a/lib64 -L/software/FFTW.MPI/3.3.10-gompi-2023a/lib -L/software/ScaLAPACK/2.2.0-gompi-2023a-fb/lib64 -L/software/ScaLAPACK/2.2.0-gompi-2023a-fb/lib -L/software/FlexiBLAS/3.3.1-GCC-12.3.0/lib64 -L/software/FlexiBLAS/3.3.1-GCC-12.3.0/lib -L/software/GCCcore/12.3.0/lib64 -L/software/GCCcore/12.3.0/lib -lm -lpthread" CCFLAGS='$(HPL_DEFS) -O2 -ftree-vectorize -march=native -fno-math-errno' >> command completed: exit 0, ran in 00h00m08s == ... (took 8 secs) == testing... == ... (took < 1 sec) == installing... == ... (took < 1 sec) == taking care of extensions... == Running pre-extensions hook... == ... (took < 1 sec) == restore after iterating... == ... (took < 1 sec) == postprocessing... == ... (took < 1 sec) == sanity checking... == Running pre-sanitycheck hook... >> file 'bin/xhpl' found: OK >> loading modules: HPL/2.3-foss-2023a... == ... (took 9 secs) == cleaning up... == ... (took < 1 sec) == creating module... >> generating module file @ /home/example/modules/all/HPL/2.3-foss-2023a.lua == ... (took 7 secs) == permissions... == ... (took < 1 sec) == packaging... == ... (took < 1 sec) == COMPLETED: Installation ended successfully (took 34 secs) == Results of the build can be found in the log file(s) /home/example/software/HPL/2.3-foss-2023a/easybuild/easybuild-HPL-2.3-20231011.094207.log == Build succeeded for 1 out of 1 == Temporary log file(s) /tmp/eb-od8biuwd/easybuild-v4oniskt.log* have been removed. == Temporary directory /tmp/eb-od8biuwd has been removed. ``` -------------------------------- ### Install WRF and Dependencies with EasyBuild Source: https://docs.easybuild.io/typical-workflow-example Use this command to install WRF and all its dependencies automatically by enabling dependency resolution with the --robot flag. The output shows the progress of building and installing each dependency. ```bash $ eb WRF-4.4.1-foss-2022b-dmpar.eb --robot == temporary log file in case of crash /tmp/eb-LfQa8b/easybuild-TBXLTy.log == resolving dependencies ... == processing EasyBuild easyconfig /home/example/.local/easybuild/software/EasyBuild/4.8.0/easybuild/easyconfigs/w/WRF/WRF-4.4.1-foss-2022b-dmpar.eb == building and installing ncurses/6.3-GCCcore-12.2.0... [...] == building and installing tcsh/6.20.00-GCCcore-12.2.0... [...] == building and installing CMake/3.24.3-GCCcore-12.2.0... [...] == building and installing JasPer/4.0.0-GCCcore-12.2.0... [...] == building and installing pkg-config/0.29.2-GCCcore-12.2.0... [...] == building and installing Doxygen/1.9.5-GCCcore-12.2.0... [...] == building and installing cURL/7.86.0-GCCcore-12.2.0... [...] == building and installing Szip/2.1.1-GCCcore-12.2.0... [...] == building and installing HDF5/1.14.0-gompi-2022b... [...] == building and installing netCDF/4.9.0-foss-2022b... [...] == building and installing netCDF-Fortran/4.6.0-foss-2022b... [...] == building and installing WRF/4.4.1-foss-2022b-dmpar... [...] == Build succeeded for 12 out of 12 == Temporary log file(s) /tmp/eb-LfQa8b/easybuild-TBXLTy.log* have been removed. == Temporary directory /tmp/eb-LfQa8b has been removed. ``` -------------------------------- ### Configure and Install Step Parameters for CMakeMake Source: https://docs.easybuild.io/version-specific/generic-easyblocks Parameters for customizing the configure and install steps in the CMakeMake easyblock. ```text :param srcdir: custom source directory to use (if None, use 'srcdir' easyconfig parameter, or start dir) :param builddir: custom build directory to use (if None, 'easybuild_obj' in build directory will be used) :param fail_on_error: raise error if cmake command failed with non-zero exit code (enabled by default) :param return_full_cmd_result: return full result of running cmake command (not just the output) ``` ```text :param srcdir: custom source directory to use (if None, use 'srcdir' easyconfig parameter, or start dir) :param builddir: custom build directory to use (if None, 'easybuild_obj' in build directory will be used) :param fail_on_error: raise error if cmake command failed with non-zero exit code (enabled by default) :param return_full_cmd_result: return full result of running cmake command (not just the output) ``` -------------------------------- ### Load an installed module Source: https://docs.easybuild.io/using-easybuild Verify the installation by loading the generated module and checking the binary path. ```bash $ module load HPL/2.3-foss-2021b $ which xhpl /home/example/.local/easybuild/software/HPL/2.3-foss-2021b/bin/xhpl ``` -------------------------------- ### Install software using an easyconfig file Source: https://docs.easybuild.io/using-easybuild Build and install a specific software package by providing its easyconfig filename to the eb command. ```bash $ eb HPL-2.3-foss-2021b.eb --robot [...] == building and installing GCC/11.2.0... [...] == building and installing foss/2021b... [...] == building and installing HPL/2.3-foss-2021b... == fetching files... == creating build dir, resetting environment... == unpacking... == patching... == preparing... == configuring... == building... == testing... == installing... == taking care of extensions... == packaging... == postprocessing... == sanity checking... == cleaning up... == creating module... == COMPLETED: Installation ended successfully == Results of the build can be found in the log file /home/example/.local/easybuild/software/HPL/2.3-foss-2021b/easybuild/easybuild-HPL-2.3-20221027.223237.log == Build succeeded for 9 out of 9 ``` -------------------------------- ### Install EasyBuild into a Temporary Directory with Pip Source: https://docs.easybuild.io/installation Install EasyBuild into a temporary location using pip, which is a prerequisite for installing EasyBuild with EasyBuild itself. This example installs into /tmp/$USER/eb_tmp. ```bash # pick installation prefix, and install EasyBuild into it export EB_TMPDIR=/tmp/$USER/eb_tmp python3 -m pip install --ignore-installed --prefix $EB_TMPDIR easybuild # update environment to use this temporary EasyBuild installation export PATH=$EB_TMPDIR/bin:$PATH export PYTHONPATH=$(/bin/ls -rtd -1 $EB_TMPDIR/lib*/python*/site-packages | tail -1):$PYTHONPATH export EB_PYTHON=python3 ``` -------------------------------- ### POST /setup_repo Source: https://docs.easybuild.io/api/easybuild/tools/repository/filerepo Initializes the repository directory. ```APIDOC ## POST /setup_repo ### Description For file based repos this will create the repo directory if it doesn't exist. If a subdir is specified also create the subdir. ``` -------------------------------- ### Example PYTHONPATH Update for Python 3.6 Source: https://docs.easybuild.io/installation An example of updating the PYTHONPATH for EasyBuild installed in a specific prefix with Python 3.6. ```bash # update $PYTHONPATH if EasyBuild was installed in $HOME/tools with Python 3.6 export PYTHONPATH=$HOME/tools/lib/python3.6/site-packages:$PYTHONPATH ``` -------------------------------- ### POST /setup_repo Source: https://docs.easybuild.io/api/easybuild/tools/github Sets up a repository by checking out a specified branch. ```APIDOC ## POST /setup_repo ### Description Set up repository by checking out specified branch for specified GitHub account/repository. ### Parameters #### Request Body - **git_repo** (object) - Required - git.Repo instance - **target_account** (string) - Required - Name of GitHub account that owns GitHub repository - **target_repo** (string) - Required - Name of GitHub repository - **branch_name** (string) - Required - Name of branch to check out - **silent** (boolean) - Optional - Keep quiet (Default: False) - **git_only** (boolean) - Optional - Only use git@github.com repo URL (Default: False) ``` -------------------------------- ### GET Request for Subscribed Issues Source: https://docs.easybuild.io/api/easybuild/base/rest Perform a GET request to retrieve a list of subscribed issues. This example demonstrates using the RequestBuilder to access nested resources. ```python status, data = g.issues.get(filter='subscribed') ``` -------------------------------- ### prepare_main Source: https://docs.easybuild.io/api/easybuild/main Prepares the EasyBuild configuration environment. ```APIDOC ## prepare_main ### Description Prepare for calling main function by setting up the EasyBuild configuration. ### Parameters - **args** (list) - Optional - command line arguments to take into account. DEFAULT: None - **logfile** (string) - Optional - log file to use. DEFAULT: None - **testing** (boolean) - Optional - enable testing mode. DEFAULT: None ### Response - **tuple** (tuple) - 3-tuple with initial session state data, EasyBuildOptions instance, and tuple with configuration settings ``` -------------------------------- ### EasyBuild step markers in logs Source: https://docs.easybuild.io/log-files Log entries indicating the start of specific build steps, useful for navigating through the installation process. ```text == 2023-05-31 16:11:44,977 build_log.py:267 INFO configuring... == 2023-05-31 16:11:44,981 easyblock.py:3926 INFO Starting configure step [...] == 2023-05-31 16:11:44,982 easyblock.py:3934 INFO Running method configure_step part of step configure ``` -------------------------------- ### Configure multi-cycle installation options Source: https://docs.easybuild.io/writing-easyconfig-files Use a list of strings to execute the configure-build-install cycle multiple times with different options. ```python configopts = [ "--common-opt --one --one-more", "--common-opt --two", "--common-opt --three", ] ``` ```python easyblock = 'ConfigureMake' configopts = ['--one', '--two', '--three'] buildopts = 'lib' preinstallopts = ['TYPE=one', 'TYPE=two', 'TYPE=three'] ``` -------------------------------- ### ConfigureMake Easyblock Example Source: https://docs.easybuild.io/version-specific/generic-easyblocks This is an example easyconfig file for the ConfigureMake easyblock, demonstrating how to define package metadata, toolchain, sources, and sanity check paths. ```python easyblock = 'ConfigureMake' name = 'zsync' version = '0.6.2' homepage = 'http://zsync.moria.org.uk/' description = """zsync-0.6.2: Optimising file distribution program, a 1-to-many rsync""" toolchain = {'name': 'ictce', 'version': '5.3.0'} sources = [SOURCE_TAR_BZ2] source_urls = ['http://zsync.moria.org.uk/download/'] sanity_check_paths = { 'files': ['bin/zsync'], 'dirs': [] } moduleclass = 'tools' ``` -------------------------------- ### Install software using command line options Source: https://docs.easybuild.io/using-easybuild Specify software name and toolchain directly via command line flags instead of using an easyconfig file. ```bash $ eb --software-name=HPL --toolchain=foss,2021b [...] == building and installing HPL/2.3-foss-2021b... [...] == COMPLETED: Installation ended successfully [...] ``` -------------------------------- ### Custom Sanity Check Example Source: https://docs.easybuild.io/implementing-easyblocks Redefine `sanity_check_step` to include custom paths and commands for verifying installation success. This method is called by the parent class to perform the actual checks. ```python from easybuild.framework.easyblock import EasyBlock class EB_Example(EasyBlock): """Custom easyblock for Example""" def sanity_check_step(self): """Custom sanity check for Example.""" custom_paths = { 'files': ['bin/example'], 'dirs': [], } custom_commands = ['example --version'] # call out to parent to do the actual sanity checking, pass through custom paths and commands super(EB_Example, self).sanity_check_step(custom_paths=custom_paths, custom_commands=custom_commands) ``` -------------------------------- ### Install EasyBuild v5.0beta2 using easyconfig Source: https://docs.easybuild.io/easybuild-v5/release-candidates Use this command to install the beta release of EasyBuild v5.0.0beta2 using a provided easyconfig file. ```bash eb --from-pr 22385 ``` -------------------------------- ### Get an overview of missing installations Source: https://docs.easybuild.io/using-easybuild Use the `--missing-modules` or `-M` flag to list easyconfigs for which no corresponding environment module file is available. Dependency resolution is automatically enabled. ```bash $ eb TensorFlow-1.13.1-foss-2019a-Python-3.7.2.eb --missing-modules == temporary log file in case of crash /tmp/eb-bjCz9b/easybuild-CSAvhK.log 2 out of 54 required modules missing: * Bazel/0.20.0-GCCcore-8.2.0 (Bazel-0.20.0-GCCcore-8.2.0.eb) * TensorFlow/1.13.1-foss-2019a-Python-3.7.2 (TensorFlow-1.13.1-foss-2019a-Python-3.7.2.eb) ``` -------------------------------- ### Submit Installations to TORQUE via PbsPython Source: https://docs.easybuild.io/submitting-jobs Use the `PbsPython` job backend to submit jobs directly to TORQUE. EasyBuild exits once all jobs are submitted. This example shows the submission process and the initial job status. ```bash $ eb GCC-4.6.0.eb OpenMPI-1.8.4-GCC-4.9.2.eb --robot --job == temporary log file in case of crash /tmp/eb-OMNQAV/easybuild-9fTuJA.log == resolving dependencies ... == List of submitted jobs (9): GCC-4.6.0 (GCC/4.6.0): 508023.example.pbs; GCC-4.9.2 (GCC/4.9.2): 508024.example.pbs; libtool-2.4.2-GCC-4.9.2 (libtool/2.4.2-GCC-4.9.2): 508025.example.pbs; M4-1.4.17-GCC-4.9.2 (M4/1.4.17-GCC-4.9.2): 50 8026.example.pbs; Autoconf-2.69-GCC-4.9.2 (Autoconf/2.69-GCC-4.9.2): 508027.example.pbs; Automake-1.15-GCC-4.9.2 (Au tomake/1.15-GCC-4.9.2): 508028.example.pbs; numactl-2.0.10-GCC-4.9.2 (numactl/2.0.10-GCC-4.9.2): 508029.example.pbs; hwloc-1.10.0-GCC-4.9.2 (hwloc/1.10.0-GCC-4.9.2): 508030.example.pbs; OpenMPI-1.8.4-GCC-4.9.2 (OpenMPI/1.8.4-GCC-4. 9.2): 508031.example.pbs == Submitted parallel build jobs, exiting now == temporary log file(s) /tmp/eb-OMNQAV/easybuild-9fTuJA.log* have been removed. == temporary directory /tmp/eb-OMNQAV has been removed. ``` ```bash $ qstat -a example.pbs: Req'd Req'd Elap Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time ------------------- ----------- -------- ---------------- ------ ----- ------ ------ --------- - --------- 508023.example.pbs easybuild batch GCC-4.6.0 -- 1 16 -- 24:00:00 R 00:02:16 508024.example.pbs easybuild batch GCC-4.9.2 -- 1 16 -- 24:00:00 Q -- 508025.example.pbs easybuild batch libtool-2.4.2-GC -- 1 16 -- 24:00:00 H -- 508026.example.pbs easybuild batch M4-1.4.17-GCC-4. -- 1 16 -- 24:00:00 H -- 508027.example.pbs easybuild batch Autoconf-2.69-GC -- 1 16 -- 24:00:00 H -- 508028.example.pbs easybuild batch Automake-1.15-GC -- 1 16 -- 24:00:00 H -- 508029.example.pbs easybuild batch numactl-2.0.10-G -- 1 16 -- 24:00:00 H -- 508030.example.pbs easybuild batch hwloc-1.10.0-GCC -- 1 16 -- 24:00:00 H -- 508031.example.pbs easybuild batch OpenMPI-1.8.4-GC -- 1 16 -- 24:00:00 H -- ``` -------------------------------- ### Install and Load a Dataset Module Source: https://docs.easybuild.io/datasets Install a dataset using the `eb` command with the dataset's easyconfig file, then load the generated module using `module load`. ```bash # installed example dataset easyconfig $ eb RFdiffusion-models-1.1.0.eb ... $ module load RFdiffusion-models/1.1.0 ``` -------------------------------- ### Install EasyBuild in a specific directory Source: https://docs.easybuild.io/installation Install EasyBuild to a custom location using the `--prefix` option. Replace `_PREFIX_` with your desired installation path. ```bash pip install --prefix _PREFIX_ easybuild ``` -------------------------------- ### Install EasyBuild in a Virtual Environment Source: https://docs.easybuild.io/easybuild-v5/5.0.0beta1 Set up a dedicated Python virtual environment and install the framework, easyblocks, and easyconfigs packages from the specified beta tag. ```bash venv_name='venv-eb-5.0.0beta1' python3 -m venv ${venv_name} unset PYTHONPATH source ${venv_name}/bin/activate tag='5.0.0beta1' pip install https://github.com/easybuilders/easybuild-framework/archive/easybuild-framework-v${tag}.tar.gz pip install https://github.com/easybuilders/easybuild-easyblocks/archive/easybuild-easyblocks-v${tag}.tar.gz pip install https://github.com/easybuilders/easybuild-easyconfigs/archive/easybuild-easyconfigs-v${tag}.tar.gz # optional dependencies for EasyBuild pip install archspec rich ``` -------------------------------- ### Install EasyBuild using pip Source: https://docs.easybuild.io/installation-alternative Use this command to install the latest version of EasyBuild using 'pip'. Specify a prefix to install without admin rights. ```bash pip install --install-option "--prefix=$HOME/EasyBuild" easybuild ``` -------------------------------- ### Configure Software and Modules Install Paths Source: https://docs.easybuild.io/configuration Configure where software and modules are installed using `--installpath-software`, `--installpath-modules`, or the parent `--installpath` option. Defaults are typically under `$HOME/.local/easybuild/`. ```bash eb --installpath-software= ``` ```bash eb --installpath-modules= ``` ```bash eb --installpath= ``` -------------------------------- ### Verify Lmod installation Source: https://docs.easybuild.io/installing-lmod-without-root-permissions Checks the installed version of Lmod. ```bash $ lmod --version Modules based on Lua: Version 8.4 2020-07-31 12:25 -05:00 by Robert McLay mclay@tacc.utexas.edu ``` -------------------------------- ### Extension Installation Source: https://docs.easybuild.io/api/easybuild/framework/easyblock Methods for managing the installation of software extensions. ```APIDOC ## install_all_extensions ### Description Install extensions. ### Parameters #### Arguments - **install** (boolean) - Optional - Actually install extensions, don't just prepare environment (Default: True) ## install_extensions_parallel ### Description Install extensions in parallel. ### Parameters #### Arguments - **install** (boolean) - Optional - Actually install extensions, don't just prepare environment (Default: True) ``` -------------------------------- ### Example Easyconfig for CMakeMake Source: https://docs.easybuild.io/version-specific/generic-easyblocks A sample easyconfig file demonstrating the use of the CMakeMake easyblock. ```python easyblock = 'CMakeMake' name = 'ANTs' version = '2.1.0rc3' homepage = 'http://stnava.github.io/ANTs/' description = """ANTs extracts information from complex datasets that include imaging. ANTs is useful for managing, interpreting and visualizing multidimensional data.""" toolchain = {'name': 'goolf', 'version': '1.5.14'} toolchainopts = {'pic': True} source_urls = ['https://github.com/stnava/ANTs/archive/'] sources = ['v%(version)s.tar.gz'] builddependencies = [('CMake', '3.0.2')] skipsteps = ['install'] buildopts = ' && mkdir -p %(installdir)s && cp -r * %(installdir)s/' parallel = 1 separate_build_dir = True sanity_check_paths = { 'files': ['bin/ANTS'], 'dirs': ['lib'], } moduleclass = 'data' ``` -------------------------------- ### Install Latest Stable EasyBuild from GitHub Source: https://docs.easybuild.io/installation-alternative Use this command to install the most recent stable release of EasyBuild directly from its GitHub repository. Ensure pip is installed and configured. ```bash pip install --install-option "--prefix=$HOME/EasyBuild" https://github.com/easybuilders/easybuild-framework/archive/main.tar.gz ``` -------------------------------- ### build_and_install_one Source: https://docs.easybuild.io/api/easybuild/framework/easyblock Build the software. ```APIDOC ## build_and_install_one ### Description Build the software. ### Parameters #### Query Parameters - **ecdict** (dict) - Required - dictionary contaning parsed easyconfig + metadata - **init_env** (dict) - Required - original environment (used to reset environment) ``` -------------------------------- ### Install EasyBuild packages separately Source: https://docs.easybuild.io/installation-alternative Install the EasyBuild framework, easyblocks, and easyconfigs packages individually using pip, specifying a prefix for installation without admin rights. ```bash pip install --install-option "--prefix=$HOME/EasyBuild" easybuild-framework pip install --install-option "--prefix=$HOME/EasyBuild" easybuild-easyblocks pip install --install-option "--prefix=$HOME/EasyBuild" easybuild-easyconfigs ``` -------------------------------- ### EasyBuild Make Install Command Source: https://docs.easybuild.io/extended-dry-run Command executed by EasyBuild to install the 'make' software after compilation. This step copies the compiled binaries and related files to their final installation directory. ```bash running command " make install " (in /home/example/eb/build/make/3.82/GCC-4.8.2/make-3.82) ``` -------------------------------- ### prepare_step Source: https://docs.easybuild.io/api/easybuild/framework/easyblock Pre-configure step to set up the build directory. ```APIDOC ## prepare_step ### Description Pre-configure step. Set's up the builddir just before starting configure. ### Parameters #### Query Parameters - **start_dir** (bool) - Optional - guess start directory based on unpacked sources. DEFAULT: True - **load_tc_deps_modules** (bool) - Optional - load modules for toolchain and dependencies in build environment. DEFAULT: True ``` -------------------------------- ### ConfigObj Initialization and Basic Methods Source: https://docs.easybuild.io/api/easybuild/tools/configobj Details on initializing a ConfigObj instance and fundamental methods like representation and item setting. ```APIDOC ## `__init__(parent, depth, main, indict=None, name=None)` ### Description Initializes a ConfigObj section. ### Parameters * **parent**: The parent section. * **depth**: The depth level of this section. * **main**: The main ConfigObj instance. * **indict**: A dictionary to initialize the section with (optional). * **name**: The name of the section (optional). ### Method Constructor ### Endpoint N/A (Class constructor) ## `__repr__()` ### Description Returns a string representation of the ConfigObj object. ### Method `__repr__` ### Endpoint N/A ## `__setitem__(key, value, unrepr=False)` ### Description Correctly sets a value in the ConfigObj. It handles making dictionary values into Section instances. Keys must be strings. Values need only be strings (or lists of strings) if `main.stringify` is set. `unrepr` must be set when setting a value to a dictionary without creating a new sub-section. ### Parameters * **key** (string) - Required - The key to set. * **value**: The value to set. Can be a string, list of strings, or a dictionary. * **unrepr** (boolean) - Optional - If True, prevents creating a new sub-section when setting a dictionary value. ### Method `__setitem__` ```