SW:EasyBuild:Building Your Own Software:Another Example - LLVM
This example will cover building a very recent version of LLVM using the CLang compiler. Users may first want to visit HPRC's EasyBuild page and a previous example of modifying an existing easyconfig. At some point in the process, users might want to also review the official EasyBuild documentation.
- 1 Motivation
- 2 Converting an existing LLVM EasyBuild "easyconfig" using GCC to a much newer LLVM built using the CLang
- 3 Important note on using terra
- 4 Building the new easyconfig
- 5 Notes
A user wants to build a modified version of the LLVM module that includes:
- a recent source from the LLVM Github repository
- adds support for CLang
LLVM is a rather long build (several hours using a single-processor). Additionally, the currently installed versions do not include CLang support. They are also rather dated (v9.01 released December 20, 2019). Newer releases include v10.0.1, released August 6, 2020. An even newer release candidate includes v11.0.0-rc5 released September 30, 2020 but as of this writing on October 3, 2020, there are already 7681 commits to master since this release. So, for this example we will use a recent (10/3/2020) .zip file of the master repo. Notes for using a bleeding edge (as of this moment) clone of the master repo are included below and are left as an exercise to the reader.
Converting an existing LLVM EasyBuild "easyconfig" using GCC to a much newer LLVM built using the CLang
Important note on using terra
The instructions below are for building on any ada (and previously curie) login node. At present, on terra, the needed directories are only mounted on terra2/login2, so if you want to build for terra you will need to build there. Some things to consider:
- If ada2 is currently, or was recently, down (e.g. for system maintenance), the needed directories may not be available on terra2. Additionally, if terra2 was recently rebooted they may not be available. If ada2 is up and available for users and these directories are not yet available on terra2, please email email@example.com to request they be mounted
- If the build requires a GPU at compile (build) time instead of just run time, you will need to use terra3/login3 (the only terra login node with a GPU). If you find your programs has this compile-time requirement, please email firstname.lastname@example.org and someone should be able to mount the needed directories there. However, for most builds, users should use terra2/login2.