EESSI / compatibility-layer

Compatibility layer of the EESSI project
https://eessi.github.io/docs/compatibility_layer
GNU General Public License v2.0
11 stars 21 forks source link

Updates for EESSI compat layer 2022.11 #160

Closed trz42 closed 1 year ago

trz42 commented 1 year ago

This includes a number of updates to the current version (2021.12):

File bootscript-prefix.sh:

File ansible/playbooks/roles/compatibility_layer/defaults/main.yml:

File ansible/playbooks/roles/compatibility_layer/tasks/install_packages.yml:

amadio commented 1 year ago

The default gcc version has been increased to 10.4.0 (see prefix_default_gcc: 10.4.0). (Requirement in upstream bootstrap-prefix.sh script.)

You know you don't need to stick to that after installing, right? You can and should update to a newer version of GCC if you want. Only the bootstrap process is a bit finicky, but once you bootstrap, you are usually free from the constraints. You can also install multiple versions of GCC (i.e. GCC 12 for CPU, GCC 11 for CUDA), which you can use later as gcc-$version on the command line even if they are not the default.

trz42 commented 1 year ago

The default gcc version has been increased to 10.4.0 (see prefix_default_gcc: 10.4.0). (Requirement in upstream bootstrap-prefix.sh script.)

You know you don't need to stick to that after installing, right? You can and should update to a newer version of GCC if you want. Only the bootstrap process is a bit finicky, but once you bootstrap, you are usually free from the constraints. You can also install multiple versions of GCC (i.e. GCC 12 for CPU, GCC 11 for CUDA), which you can use later as gcc-$version on the command line even if they are not the default.

Good to know. I think for EESSI we only need one version that is then used to build up tools chains (incl compilers) in the software layer. In the past we ran into issues with too recent versions of GCC in that step. Hence, we'd rather like to restrict ourselves to the oldest version of GCC in the compat layer. Might change in the future when we move to more recent tool chains in the software layer.

amadio commented 1 year ago

I see. I suggest to try using the toolchain from the compat layer to build the software layer, to avoid having to add ld wrappers, etc, since the toolchain is already configured to work well with the non-standard glibc and linker. It will also let you control binutils with eselect-binutils, etc. I read the diffs and the reason to use <GCC-11 is because GCC-11 needs C++11 support to build, which may not be available on old OSs like CentOS 7, etc. Other than that, you should be able to remove the restriction, as I believe other compilation problems have been solved.

trz42 commented 1 year ago

I'd rather reconfigure the ansible-lint check to ignore the Jinja template issue. The script has run fine a dozen of times. The "ERROR" only states that templates should be at the end, so it doesn't matter. Also curious why we need to fix this here. Maybe it is better to do a code quality hackathon than imposing unrelated code improvements to PRs.

trz42 commented 1 year ago

Probably interesting finds on building the compat layer:

trz42 commented 1 year ago

This PR has become obsolete with new developments in early 2023.