4.X Is the System Default
Total Page:16
File Type:pdf, Size:1020Kb
EasyBuild Documentation Release 20190816.0 Ghent University Fri, 16 Aug 2019 18:07:17 Contents 1 Introductory topics 3 1.1 What is EasyBuild?...........................................3 1.2 Concepts and terminology........................................4 1.2.1 EasyBuild framework......................................4 1.2.2 Easyblocks...........................................5 1.2.3 Toolchains............................................5 1.2.4 Easyconfig files.........................................6 1.2.5 Extensions............................................6 1.3 Typical workflow example: building and installing WRF........................7 1.3.1 Searching for available easyconfigs files............................7 1.3.2 Getting an overview of planned installations..........................8 1.3.3 Installing a software stack...................................8 2 Getting started 11 2.1 Installing EasyBuild........................................... 11 2.1.1 Requirements.......................................... 12 2.1.2 Bootstrapping EasyBuild.................................... 12 2.1.3 Advanced bootstrapping options................................ 16 2.1.4 Updating an existing EasyBuild installation.......................... 17 2.1.5 Dependencies.......................................... 18 2.1.6 Sources............................................. 20 2.1.7 In case of installation issues. .................................. 21 2.2 Configuring EasyBuild.......................................... 21 2.2.1 Supported configuration types................................. 21 2.2.2 Overview of current configuration (--show-config, --show-full-config).... 26 2.2.3 Available configuration settings................................ 26 3 Basic usage topics 33 3.1 Using the EasyBuild command line................................... 33 3.1.1 Specifying builds........................................ 33 3.1.2 Commonly used command line options............................ 36 3.2 Writing easyconfig files: the basics................................... 45 3.2.1 What is an easyconfig (file)?.................................. 46 3.2.2 Available easyconfig parameters................................ 47 3.2.3 Mandatory easyconfig parameters............................... 47 3.2.4 Common easyconfig parameters................................ 47 3.2.5 Tweaking existing easyconfig files............................... 57 i 3.2.6 Dynamic values for easyconfig parameters........................... 58 3.2.7 Version-specific documentation relevant to easyconfigs.................... 58 3.2.8 Contributing easyconfigs.................................... 59 3.3 Understanding EasyBuild logs...................................... 59 3.3.1 Basic information........................................ 59 3.3.2 Navigating log files....................................... 60 4 Advanced usage topics 63 4.1 Archived easyconfigs........................................... 63 4.1.1 Toolchain deprecation...................................... 63 4.1.2 Using --consider-archived-easyconfigs ..................... 64 4.2 Backing up of existing modules (--backup-modules)....................... 64 4.2.1 Disabling automatic backup of modules............................ 65 4.2.2 Example............................................. 65 4.3 Common toolchains........................................... 66 4.3.1 Definition and motivation.................................... 66 4.3.2 Versioning scheme for common toolchains........................... 68 4.3.3 Update cycle for common toolchains.............................. 68 4.3.4 Overview of common toolchains................................ 68 4.3.5 Customizing common toolchains................................ 69 4.4 Generating container recipes & images................................. 70 4.4.1 Requirements.......................................... 70 4.4.2 Usage.............................................. 71 4.4.3 Configuration.......................................... 79 4.4.4 ‘Stacking’ container images.................................. 81 4.4.5 Seeding in source files for container build process....................... 82 4.5 Contributing............................................... 82 4.5.1 How to contribute........................................ 83 4.5.2 Pull requests........................................... 85 4.5.3 Review process for contributions................................ 90 4.6 Controlling compiler optimization flags................................. 93 4.6.1 Controlling target architecture specific optimizations via --optarch ............ 93 4.7 EasyBuild on Cray............................................ 96 4.7.1 Test systems........................................... 96 4.7.2 EasyBuild toolchains...................................... 96 4.7.3 What works already?...................................... 97 4.7.4 Required EasyBuild configuration............................... 97 4.7.5 Major supported/tested applications.............................. 98 4.8 Detection of loaded modules....................................... 99 4.8.1 Motivation............................................ 99 4.8.2 Detection mechanism...................................... 100 4.8.3 Action to take if loaded modules are detected......................... 100 4.8.4 Allowing particular loaded modules.............................. 102 4.8.5 Checking of $EBROOT* environment variables........................ 102 4.9 Local variables in easyconfig files.................................... 104 4.9.1 Motivation & context...................................... 104 4.9.2 Changes in EasyBuild v4.0 w.r.t. local variables in easyconfig files.............. 105 4.9.3 Recommended naming scheme for local variables in easyconfig files............. 105 4.9.4 Warning for local variables that do not follow the recommended naming scheme....... 105 4.9.5 Specifying what should be done when non-confirming local variables are found via --local-var-naming-check .............................. 106 4.9.6 Renaming local variables to match the recommended naming scheme using eb --fix-deprecated-easyconfigs ........................... 106 4.10 Experimental features.......................................... 107 ii 4.11 Extended dry run............................................. 107 4.11.1 Important notes......................................... 108 4.11.2 Overview of dry run mechanism................................ 109 4.11.3 Guidelines for easyblocks.................................... 116 4.11.4 Example output......................................... 119 4.12 Hooks................................................... 119 4.12.1 What are hooks?........................................ 120 4.12.2 Configuring EasyBuild to use your hook implementations................... 120 4.12.3 Available hooks......................................... 120 4.12.4 Implementing hooks...................................... 122 4.12.5 Caveats............................................. 122 4.12.6 Examples of hook implementations.............................. 124 4.13 Implementing easyblocks........................................ 124 4.13.1 The basics............................................ 125 4.13.2 Easyblocks vs easyconfigs................................... 126 4.13.3 Naming scheme for easyblocks................................. 126 4.13.4 Structure of an easyblock.................................... 128 4.13.5 Deriving from existing (generic) easyblocks.......................... 128 4.13.6 Specific aspects of easyblocks................................. 128 4.13.7 Using new/custom easyblocks................................. 132 4.13.8 Testing easyblocks....................................... 132 4.13.9 Use case: an easyblock for Tensorflow............................. 132 4.14 Including additional Python modules (--include-*)........................ 133 4.14.1 General aspects of --include-* options.......................... 133 4.14.2 Including additional easyblocks (--include-easyblocks)............... 134 4.14.3 Including additional module naming schemes (--include-module-naming-schemes) 134 4.14.4 Including additional toolchains (--include-toolchains)................ 135 4.15 Integration with GitHub......................................... 135 4.15.1 Requirements.......................................... 136 4.15.2 Configuration.......................................... 137 4.15.3 Checking status of GitHub integration (--check-github)................. 138 4.15.4 Using easyconfigs from pull requests (--from-pr)..................... 139 4.15.5 Uploading test reports (--upload-test-report).................... 142 4.15.6 Reviewing easyconfig pull requests (--review-pr).................... 143 4.15.7 Merging easyconfig pull requests (--merge-pr)...................... 144 4.15.8 Submitting new and updating pull requests (--new-pr, --update-pr)......... 145 4.16 Manipulating dependencies....................................... 150 4.16.1 Filtering out dependencies using --filter-deps ..................... 151 4.16.2 Installing dependencies as hidden modules using --hide-deps .............. 152 4.16.3 Using minimal toolchains for dependencies.......................... 153 4.17 Packaging support............................................ 154 4.17.1 Prerequisites.......................................... 154 4.17.2 Configuration options...................................... 155 4.17.3 Usage.............................................. 155 4.17.4 Packaging existing installations................................. 157 4.18 Partial installations...........................................