code cleanup

there is one important change:
The keys in Dir2OverlayMap are now the modulefiles root + group name.
Example: New '/opt/psi/Tools', old '/opt/psi/Tools/modulefiles'
This commit is contained in:
2022-06-13 11:06:37 +02:00
parent ae56b59ef5
commit 8c247f673a
3 changed files with 20 additions and 105 deletions
+2 -2
View File
@@ -56,7 +56,7 @@ compute_group_depth () {
# (Re-)Scan available groups in given overlays and compute group depth's
#
# Args:
# $1: array of overlays
# $@: overlay names
#
scan_groups () {
local ol
@@ -65,7 +65,7 @@ scan_groups () {
local dir
for dir in ${mod_root}/*/${PMODULES_MODULEFILES_DIR}; do
compute_group_depth "${dir}"
Dir2OverlayMap[${dir}]="${ol}"
Dir2OverlayMap[${dir%/${PMODULES_MODULEFILES_DIR}*}]="${ol}"
done
done
}
+2 -4
View File
@@ -498,9 +498,9 @@ build_modules_yaml(){
local idx="$4"
_result=$(yq -Ne e ".\"${version}\"[${idx}].overlay" \
"${fname}" 2>/dev/null)
(( $? == 0 )) && return || :
(( $? == 0 )) && return
_result=$(yq -Ne e ".overlay" "${fname}" 2>/dev/null)
(( $? == 0 )) && return || :
(( $? == 0 )) && return
_result='base'
}
@@ -542,7 +542,6 @@ build_modules_yaml(){
local -a versions
yaml_get_versions versions "${fname}" "${name}/${version}"
echo versions=${versions[@]}
echo ${#versions[@]}
for v in "${versions[@]}"; do
echo version=$v
local -i n_variants
@@ -581,7 +580,6 @@ build_modules_yaml(){
}
echo "build_modules_yaml()"
build_modules() {
local variants_file="${BUILDBLOCK_DIR}/files/${BNAME_VARIANTS}"
if [[ -n "${variants_file}*.yaml" ]]; then
+16 -99
View File
@@ -143,29 +143,6 @@ _exit() {
trap '_exit' EXIT
#
# map a moduledir to an overlay
#
# Args:
# $1 upvar for overlay
# $2 moduledir
#
map_moduledir2ol_name() {
local "$1"
local moduledir="${2//+(\/)/\/}" # replace multpile '/' with one
moduledir="${moduledir/%\/}" # remove trailing slash if exist
if [[ ! -v Dir2OverlayMap[${moduledir}] ]]; then
local ol
for ol in "${UsedOverlays[@]}" 'other'; do
local mod_root="${OverlayInfo[${ol}:mod_root]}"
[[ ${moduledir} == ${mod_root}/* ]] && break
done
Dir2OverlayMap[${moduledir}]="${ol}"
fi
std::upvar $1 "${Dir2OverlayMap[${moduledir}]}"
}
#
# get release stage of module
# Note:
@@ -180,13 +157,10 @@ map_moduledir2ol_name() {
#
get_release_stage() {
local "$1"
local -r moduledir=$2
local -r modulefile="$2/$3"
local -r dir="$2"
local -r modulefile="${dir}/$3"
local ol_name
map_moduledir2ol_name ol_name "${moduledir}"
if [[ "${ol_name}" == 'other' ]]; then
if [[ ! -v Dir2OverlayMap[${dir%/${PMODULES_MODULEFILES_DIR}*}] ]]; then
std::upvar $1 'stable'
return
fi
@@ -223,15 +197,14 @@ find_overlay () {
local "$2"
local path="${3//+(\/)/\/}" # replace multpile '/' with one
path="${path/%\/}" # remove trailing slash if exist
path="${path%/${PMODULES_MODULEFILES_DIR}*}"
[[ -v Dir2OverlayMap[${path}] ]] || return 1
local ol="${Dir2OverlayMap[${path}]}"
map_moduledir2ol_name ol "${path}"
std::upvar $1 "${ol}"
[[ "${ol}" == 'other' ]] && return 1
local group="${path#${OverlayInfo[${ol}:mod_root]}/}"
group=${group%%/*}
std::upvar $2 "${group}"
return 0
}
@@ -608,12 +581,10 @@ subcommand_load() {
"${CMD}" "${subcommand}" \
"illegal group name" \
"${group}"
#MODULEPATH=""
modulepath=()
group+="/${PMODULES_MODULEFILES_DIR}"
for overlay in "${UsedOverlays[@]}"; do
local mod_root="${OverlayInfo[${overlay}:mod_root]}"
#MODULEPATH="${mod_root}/${group}:${MODULEPATH}"
modulepath=( "${mod_root}/${group}" "${modulepath[@]}" )
done
fi
@@ -720,7 +691,6 @@ subcommand_load() {
[[ -z ${dir} ]] && continue
[[ "${dir: -1}" == "/" ]] || dir+="/"
LOADEDMODULES="${LOADEDMODULES//${dir}}"
map_moduledir2ol_name overlay "${dir}"
done <<< "${MODULEPATH//:/$'\n'}"
g_env_must_be_saved='yes'
export_env 'LOADEDMODULES'
@@ -935,8 +905,8 @@ get_available_modules() {
# - after loading the parent of a hierarchical group
# - if we do a search
# - if we create a new hierarchical group
local ol
local group
local ol=''
local group=''
find_overlay ol group "${dir}"
# if no modules are installed in ${dir}, '*' expands to
@@ -1482,13 +1452,12 @@ subcommand_use() {
std::remove_path MODULEPATH "${dirs[@]}"
done
fi
scan_groups "${ol_name}"
for group in ${UsedGroups//:/ }; do
local dir="${OverlayInfo[${ol_name}:mod_root]}/"
dir+="${group}/${PMODULES_MODULEFILES_DIR}"
if [[ -d "${dir}" ]]; then
std::prepend_path MODULEPATH "${dir}"
Dir2OverlayMap[${dir}]="${ol_name}"
fi
done
@@ -1515,7 +1484,6 @@ subcommand_use() {
[[ -d "${dir}" ]] || continue
std::prepend_path MODULEPATH "${dir}"
Dir2OverlayMap[${dir}]=${ol_name}
[[ "${OverlayInfo[${ol_name}:type]}" == "${ol_replacing}" ]] && break
done
}
@@ -1812,7 +1780,6 @@ init_modulepath() {
local dir="${OverlayInfo[${ol}:mod_root]}/${group}/${PMODULES_MODULEFILES_DIR}"
if [[ -d "${dir}" ]]; then
std::prepend_path MODULEPATH "${dir}"
Dir2OverlayMap[${dir}]="${ol}"
fi
done
done
@@ -1853,6 +1820,10 @@ pmodules_init() {
done
g_env_must_be_saved='yes'
}
init_overlay_vars() {
declare -ag UsedOverlays=( 'base' )
OverlayInfo['base:used']='yes'
}
pm::read_config
@@ -1964,10 +1935,11 @@ subcommand_purge() {
# we may get output like
# 'unstable module has been loaded'
subcommand_load "${pmodule}" 2> /dev/null
# export_env PMODULES_HOME
fi
init_modulepath
export_env MODULEPATH PMODULES_HOME
export_env MODULEPATH
}
##############################################################################
@@ -2057,7 +2029,6 @@ subcommand_clear() {
"no arguments allowed"
fi
pmodules_init
export_env LOADEDMODULES MODULEPATH _LMFILES_
}
##############################################################################
@@ -2762,21 +2733,6 @@ if [[ -z "${Subcommands[${subcommand}]}" ]]; then
std::die 1 "${CMD}: unknown sub-command -- ${subcommand}"
fi
init_overlay_vars() {
declare -ag UsedOverlays=( 'base' )
OverlayInfo['base:used']='yes'
#declare -Ag Dir2OverlayMap=()
for ol in "${UsedOverlays[@]}"; do
local group
for group in ${UsedGroups//:/ }; do
local dir="${OverlayInfo[${ol}:mod_root]}/${group}/${PMODULES_MODULEFILES_DIR}"
if [[ -d "${dir}" ]]; then
Dir2OverlayMap[${dir}]=${ol}
fi
done
done
}
case ${subcommand} in
add )
subcommand='load'
@@ -2800,48 +2756,9 @@ if [[ -n ${PMODULES_ENV} ]]; then
fi
if [[ -z ${Version} ]] || [[ ${Version} != ${PMODULES_VERSION} ]]; then
pmodules_init
g_env_must_be_saved='yes'
#g_env_must_be_saved='yes'
fi
#if [[ -n ${PMODULES_ENV} ]]; then
# eval "$("${base64}" -d <<< "${PMODULES_ENV}" 2>/dev/null)"
# if [[ -z ${Version} ]] || [[ ${Version} != ${PMODULES_VERSION} ]]; then
# # the Pmodules version changed!
# declare -g Version="${PMODULES_VERSION}"
# pm::read_config
# init_overlay_vars
# # renamed in version 1.0.0rc10 and type changed from
# # associative array to normal array
# if [[ -v UseFlags ]]; then
# declare -a UsedFlags=( "${!UseFlags[@]}" )
# unset UseFlags
# fi
# if [[ ! -v UsedFlags ]]; then
# declare -a UsedFlags=()
# fi
# if [[ -v UsedReleases ]]; then
# declare -- UsedReleaseStages="${UsedReleases}"
# unset UsedReleases
# fi
# if [[ -v PMODULES_DEFAULT_GROUPS ]]; then
# declare -- DefaultGroups="${PMODULES_DEFAULT_GROUPS}"
# unset PMODULES_DEFAULT_GROUPS
# fi
# if [[ -v PMODULES_DEFINED_RELEASES ]]; then
# declare -- ReleaseStages="${PMODULES_DEFINED_RELEASES}"
# unset PMODULES_DEFINED_RELEASES
# fi
# if [[ -v PMODULES_DEFAULT_RELEASES ]]; then
# declare -- DefaultReleaseStages="${PMODULES_DEFAULT_RELEASES}"
# unset PMODULES_DEFAULT_RELEASES
# fi
# g_env_must_be_saved='yes'
# fi
#else
# pmodules_init
# g_env_must_be_saved='yes'
#fi
if (( ${#GroupDepths[@]} == 0 )); then
scan_groups "${UsedOverlays[@]}"
g_env_must_be_saved='yes'