mirror of
https://github.com/Pmodules/Pmodules.git
synced 2026-06-29 02:39:39 +02:00
Merge branch '440-modulecmd-keeping-track-of-used-overlays-is-broken' into 'master'
Resolve "modulecmd: keeping track of used overlays is broken" Closes #440 See merge request Pmodules/src!472
This commit is contained in:
@@ -51,12 +51,13 @@ proc _pmodules_parse_pmodules_env { } {
|
||||
array set ::OverlayInfo $tmp_olinfo
|
||||
}
|
||||
UsedOverlays {
|
||||
array set tmp [regsub -all {[]=[]} $value " "]
|
||||
set ::UsedOverlays {}
|
||||
set l [lsort [array names tmp]]
|
||||
foreach k $l {
|
||||
lappend ::UsedOverlays $tmp($k)
|
||||
}
|
||||
# convert a string like
|
||||
# [0]="Alps_A100" [1]="PSI" [2]="Alps" [3]="merlin" [4]="base"
|
||||
# to
|
||||
# Alps_A100 PSI Alps merlin base
|
||||
set tmpstr [regsub -all {\[[0-9]+\]=} $value ""]
|
||||
set tmpstr [regsub -all {\"} $tmpstr ""]
|
||||
set ::UsedOverlays [split $tmpstr]
|
||||
}
|
||||
UsedGroups {
|
||||
set ::UsedGroups $value
|
||||
@@ -93,8 +94,9 @@ proc module-addgroup { group } {
|
||||
break
|
||||
}
|
||||
}
|
||||
foreach overlay [lreverse_n $overlays_to_add 1] {
|
||||
foreach overlay [lreverse $overlays_to_add] {
|
||||
debug "overlay=$overlay"
|
||||
debug "modulefiles_root=$::OverlayInfo($overlay:modulefiles_root)"
|
||||
debug "group=$group"
|
||||
debug "::variant=$::variant"
|
||||
set dir [file join \
|
||||
@@ -102,7 +104,6 @@ proc module-addgroup { group } {
|
||||
$group \
|
||||
$::MODULEFILES_DIR \
|
||||
{*}$::variant]
|
||||
debug "dir=$dir"
|
||||
if { [file isdirectory $dir] } {
|
||||
debug "prepend $dir to MODULEPATH "
|
||||
prepend-path MODULEPATH $dir
|
||||
|
||||
@@ -2481,9 +2481,7 @@ subcommand_purge() {
|
||||
# - used groups
|
||||
local -- saved_groups="${UsedGroups}"
|
||||
# - used overlays
|
||||
local -- saved_overlays=''
|
||||
printf -v saved_overlays "%s:" "${UsedOverlays[@]}"
|
||||
saved_overlays="${saved_overlays%:}"
|
||||
local -a saved_overlays=( "${UsedOverlays[@]}" )
|
||||
# - additional directories in MODULEPATH
|
||||
local -- item=''
|
||||
local -- group=''
|
||||
@@ -2499,12 +2497,14 @@ subcommand_purge() {
|
||||
pmodules_setup init
|
||||
|
||||
# - restore
|
||||
# release stages
|
||||
IFS=':' read -r -a items <<<"${saved_relstages}"
|
||||
for item in "${items[@]}"; do
|
||||
subcommand_use "${item}"
|
||||
done
|
||||
IFS=':' read -r -a items <<<"${saved_overlays}"
|
||||
for item in "${items[@]}"; do
|
||||
# overlays
|
||||
for (( i=${#saved_overlays[@]}-1; i>=0; i-- )); do
|
||||
item="${saved_overlays[i]}"
|
||||
[[ -v OverlayInfo[${item}:used] ]] || continue
|
||||
subcommand_use "${item}"
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user