mirror of
https://github.com/Pmodules/Pmodules.git
synced 2026-06-28 10:29:37 +02:00
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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user