@@ -965,52 +965,56 @@ def post_postproc_cuda(self, *args, **kwargs):
965
965
Remove files from CUDA installation that we are not allowed to ship,
966
966
and replace them with a symlink to a corresponding installation under host_injections.
967
967
"""
968
+ if self .name == 'CUDA' :
969
+ # This hook only acts on an installation under repositories that _we_ ship (*.eessi.io/versions)
970
+ eessi_installation = bool (re .search (EESSI_INSTALLATION_REGEX , self .installdir ))
971
+
972
+ if eessi_installation :
973
+ print_msg ("Replacing files in CUDA installation that we can not ship with symlinks to host_injections..." )
974
+
975
+ # read CUDA EULA, construct allowlist based on section 2.6 that specifies list of files that can be shipped
976
+ eula_path = os .path .join (self .installdir , 'EULA.txt' )
977
+ relevant_eula_lines = []
978
+ with open (eula_path ) as infile :
979
+ copy = False
980
+ for line in infile :
981
+ if line .strip () == "2.6. Attachment A" :
982
+ copy = True
983
+ continue
984
+ elif line .strip () == "2.7. Attachment B" :
985
+ copy = False
986
+ continue
987
+ elif copy :
988
+ relevant_eula_lines .append (line )
989
+
990
+ # create list without file extensions, they're not really needed and they only complicate things
991
+ allowlist = ['EULA' , 'README' ]
992
+ file_extensions = ['.so' , '.a' , '.h' , '.bc' ]
993
+ for line in relevant_eula_lines :
994
+ for word in line .split ():
995
+ if any (ext in word for ext in file_extensions ):
996
+ allowlist .append (os .path .splitext (word )[0 ])
997
+ # The EULA of CUDA 12.4 introduced a typo (confirmed by NVIDIA):
998
+ # libnvrtx-builtins_static.so should be libnvrtc-builtins_static.so
999
+ if 'libnvrtx-builtins_static' in allowlist :
1000
+ allowlist .remove ('libnvrtx-builtins_static' )
1001
+ allowlist .append ('libnvrtc-builtins_static' )
1002
+ allowlist = sorted (set (allowlist ))
1003
+ self .log .info (
1004
+ "Allowlist for files in CUDA installation that can be redistributed: " + ', ' .join (allowlist )
1005
+ )
968
1006
969
- # We need to check if we are doing an EESSI-distributed installation
970
- eessi_installation = bool (re .search (EESSI_INSTALLATION_REGEX , self .installdir ))
971
-
972
- if self .name == 'CUDA' and eessi_installation :
973
- print_msg ("Replacing files in CUDA installation that we can not ship with symlinks to host_injections..." )
974
-
975
- # read CUDA EULA, construct allowlist based on section 2.6 that specifies list of files that can be shipped
976
- eula_path = os .path .join (self .installdir , 'EULA.txt' )
977
- relevant_eula_lines = []
978
- with open (eula_path ) as infile :
979
- copy = False
980
- for line in infile :
981
- if line .strip () == "2.6. Attachment A" :
982
- copy = True
983
- continue
984
- elif line .strip () == "2.7. Attachment B" :
985
- copy = False
986
- continue
987
- elif copy :
988
- relevant_eula_lines .append (line )
989
-
990
- # create list without file extensions, they're not really needed and they only complicate things
991
- allowlist = ['EULA' , 'README' ]
992
- file_extensions = ['.so' , '.a' , '.h' , '.bc' ]
993
- for line in relevant_eula_lines :
994
- for word in line .split ():
995
- if any (ext in word for ext in file_extensions ):
996
- allowlist .append (os .path .splitext (word )[0 ])
997
- # The EULA of CUDA 12.4 introduced a typo (confirmed by NVIDIA):
998
- # libnvrtx-builtins_static.so should be libnvrtc-builtins_static.so
999
- if 'libnvrtx-builtins_static' in allowlist :
1000
- allowlist .remove ('libnvrtx-builtins_static' )
1001
- allowlist .append ('libnvrtc-builtins_static' )
1002
- allowlist = sorted (set (allowlist ))
1003
- self .log .info ("Allowlist for files in CUDA installation that can be redistributed: " + ', ' .join (allowlist ))
1004
-
1005
- # Do some quick sanity checks for things we should or shouldn't have in the list
1006
- if 'nvcc' in allowlist :
1007
- raise EasyBuildError ("Found 'nvcc' in allowlist: %s" % allowlist )
1008
- if 'libcudart' not in allowlist :
1009
- raise EasyBuildError ("Did not find 'libcudart' in allowlist: %s" % allowlist )
1007
+ # Do some quick sanity checks for things we should or shouldn't have in the list
1008
+ if 'nvcc' in allowlist :
1009
+ raise EasyBuildError ("Found 'nvcc' in allowlist: %s" % allowlist )
1010
+ if 'libcudart' not in allowlist :
1011
+ raise EasyBuildError ("Did not find 'libcudart' in allowlist: %s" % allowlist )
1010
1012
1011
- # replace files that are not distributable with symlinks into
1012
- # host_injections
1013
- replace_non_distributable_files_with_symlinks (self .log , self .installdir , self .name , allowlist )
1013
+ # replace files that are not distributable with symlinks into
1014
+ # host_injections
1015
+ replace_non_distributable_files_with_symlinks (self .log , self .installdir , self .name , allowlist )
1016
+ else :
1017
+ print_msg (f"EESSI hook to respect CUDA license not triggered for installation path { self .installdir } " )
1014
1018
else :
1015
1019
raise EasyBuildError ("CUDA-specific hook triggered for non-CUDA easyconfig?!" )
1016
1020
0 commit comments