From cd1788704d0dc195442ced887bfee24105fcd82a Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Mon, 4 Jul 2022 19:07:24 +0200 Subject: [PATCH] modbuild: issue with cleaning up modulefiles in overlays fixed --- Pmodules/libpbuild.bash | 29 +++++++++++++++++++++++++++++ Pmodules/modbuild.in | 7 +++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/Pmodules/libpbuild.bash b/Pmodules/libpbuild.bash index f104874..bdaed40 100644 --- a/Pmodules/libpbuild.bash +++ b/Pmodules/libpbuild.bash @@ -967,6 +967,7 @@ pbuild::make_all() { fi install_modulefile install_release_file + cleanup_modulefiles cleanup_build cleanup_src std::info \ @@ -999,6 +1000,33 @@ pbuild::make_all() { install -m 0644 "${src}" "${modulefile_name}" } + cleanup_modulefiles(){ + local ol='' + for ol in "${Overlays[@]}"; do + local i + for ((i=0; i<${#mod_overlays}; i++ )); do + [[ "${ol}" == "{mod_overlays[i]}" ]] && continue 2 + done + [[ "${ol}" == "${ol_name}" ]] && continue + local mod_root="${OverlayInfo[${ol}:mod_root]}" + local dir="${modulefile_dir/${ol_mod_root}/${mod_root}}" + local fname="${dir}/${module_version}" + if [[ -e "${fname}" ]]; then + std::info "%s "\ + "${module_name}/${module_version}:" \ + "removing modulefile from overlay '${ol}' ..." + rm "${fname}" + fi + fname="${dir}/.release-${module_version}" + if [[ -e "${fname}" ]]; then + std::info \ + "%s " \ + "${module_name}/${module_version}:" \ + "removing release file from overlay '${ol}' ..." + rm "${fname}" + fi + done + } install_release_file() { local -r release_file="${modulefile_dir}/.release-${module_version}" @@ -1208,6 +1236,7 @@ pbuild::make_all() { install_modulefile fi install_release_file + cleanup_modulefiles return $? fi if [[ "${module_release}" == 'deprecated' ]]; then diff --git a/Pmodules/modbuild.in b/Pmodules/modbuild.in index 819b521..98570c9 100755 --- a/Pmodules/modbuild.in +++ b/Pmodules/modbuild.in @@ -578,10 +578,14 @@ build_modules_yaml(){ else ol_name="${opt_overlay}" fi - mod_overlays[${ol_name}]=1 if [[ ! -v OverlayInfo[${ol_name}:inst_root] ]]; then std::die 3 "Overlay is not defined -- ${ol_name}" fi + mod_overlays[$i]="${ol_name}" + done + + for (( i=0; i