@@ -415,12 +415,13 @@ def set_alias(self, key, value):
415415 """
416416 raise NotImplementedError
417417
418- def set_as_default (self , module_folder_path , module_version ):
418+ def set_as_default (self , module_folder_path , module_version , mod_symlink_paths = [], fake = False ):
419419 """
420420 Set generated module as default module
421421
422422 :param module_folder_path: module folder path, e.g. $HOME/easybuild/modules/all/Bison
423423 :param module_version: module version, e.g. 3.0.4
424+ :param mod_symlink_paths: list of paths in which symlinks to module files must be created
424425 """
425426 raise NotImplementedError
426427
@@ -872,18 +873,34 @@ def set_alias(self, key, value):
872873 # quotes are needed, to ensure smooth working of EBDEVEL* modulefiles
873874 return 'set-alias\t %s\t \t %s\n ' % (key , quote_str (value , tcl = True ))
874875
875- def set_as_default (self , module_folder_path , module_version ):
876+ def set_as_default (self , module_folder_path , module_version , mod_symlink_paths = [], fake = False ):
876877 """
877878 Create a .version file inside the package module folder in order to set the default version for TMod
878879
879880 :param module_folder_path: module folder path, e.g. $HOME/easybuild/modules/all/Bison
880881 :param module_version: module version, e.g. 3.0.4
882+ :param mod_symlink_paths: list of paths in which symlinks to module files must be created
881883 """
882884 txt = self .MODULE_SHEBANG + '\n '
883885 txt += 'set ModulesVersion %s\n ' % module_version
884886
885887 # write the file no matter what
886- write_file (os .path .join (module_folder_path , '.version' ), txt )
888+ dot_version_path = os .path .join (module_folder_path , '.version' )
889+ write_file (dot_version_path , txt )
890+
891+ # create symlink to .version file in class module folders
892+ if not fake :
893+ for mod_symlink_path in mod_symlink_paths :
894+ module_name = os .path .basename (module_folder_path )
895+ class_module_folder = os .path .join (install_path ('mod' ), mod_symlink_path , module_name )
896+ dot_version_link_path = os .path .join (class_module_folder , '.version' )
897+ if os .path .islink (dot_version_link_path ):
898+ link_target = resolve_path (dot_version_link_path )
899+ remove_file (dot_version_link_path )
900+ self .log .info ("Removed default version marking from %s." , link_target )
901+ elif os .path .exists (dot_version_link_path ):
902+ raise EasyBuildError ('Found an unexpected file named .version in dir %s' % class_module_folder )
903+ symlink (dot_version_path , dot_version_link_path , use_abspath_source = True )
887904
888905 def set_environment (self , key , value , relpath = False ):
889906 """
@@ -1277,24 +1294,35 @@ def set_alias(self, key, value):
12771294 # quotes are needed, to ensure smooth working of EBDEVEL* modulefiles
12781295 return 'set_alias("%s", %s)\n ' % (key , quote_str (value ))
12791296
1280- def set_as_default (self , module_folder_path , module_version ):
1297+ def set_as_default (self , module_folder_path , module_version , mod_symlink_paths = [], fake = False ):
12811298 """
12821299 Create a symlink named 'default' inside the package's module folder in order to set the default module version
12831300
12841301 :param module_folder_path: module folder path, e.g. $HOME/easybuild/modules/all/Bison
12851302 :param module_version: module version, e.g. 3.0.4
1303+ :param mod_symlink_paths: list of paths in which symlinks to module files must be created
12861304 """
1287- default_filepath = os .path .join (module_folder_path , 'default' )
1305+ def create_default_symlink (module_folder_path ):
1306+ default_filepath = os .path .join (module_folder_path , 'default' )
12881307
1289- if os .path .islink (default_filepath ):
1290- link_target = resolve_path (default_filepath )
1291- remove_file (default_filepath )
1292- self .log .info ("Removed default version marking from %s." , link_target )
1293- elif os .path .exists (default_filepath ):
1294- raise EasyBuildError ('Found an unexpected file named default in dir %s' % module_folder_path )
1308+ if os .path .islink (default_filepath ):
1309+ link_target = resolve_path (default_filepath )
1310+ remove_file (default_filepath )
1311+ self .log .info ("Removed default version marking from %s." , link_target )
1312+ elif os .path .exists (default_filepath ):
1313+ raise EasyBuildError ('Found an unexpected file named default in dir %s' % module_folder_path )
12951314
1296- symlink (module_version + self .MODULE_FILE_EXTENSION , default_filepath , use_abspath_source = False )
1297- self .log .info ("Module default version file written to point to %s" , default_filepath )
1315+ symlink (module_version + self .MODULE_FILE_EXTENSION , default_filepath , use_abspath_source = False )
1316+ self .log .info ("Module default version file written to point to %s" , default_filepath )
1317+
1318+ create_default_symlink (module_folder_path )
1319+
1320+ # also create symlinks in class module folders
1321+ if not fake :
1322+ for mod_symlink_path in mod_symlink_paths :
1323+ module_name = os .path .basename (module_folder_path )
1324+ module_folder_path = os .path .join (install_path ('mod' ), mod_symlink_path , module_name )
1325+ create_default_symlink (module_folder_path )
12981326
12991327 def set_environment (self , key , value , relpath = False ):
13001328 """
0 commit comments