Merge branch '178-port-cherry-pick-changes-from-version-1-0-0-to-master' into 'master'

Resolve "port/cherry-pick changes from version 1.0.0 to master"

Closes #178

See merge request Pmodules/src!151
This commit is contained in:
2022-12-05 16:24:34 +00:00
5 changed files with 68 additions and 102 deletions
+42 -87
View File
@@ -172,104 +172,59 @@ proc _pmodules_setenv { PREFIX name version } {
debug "this is a legacy module..."
return
}
set NAME [string toupper $name]
regsub -- "-" ${NAME} "_" NAME
if { ![file isdirectory "$PREFIX"] } {
debug "$PREFIX is not a directory"
return
}
if { ! [info exist ::dont-setenv] } {
set ::dont-setenv {}
}
if { ${version} != "" } {
if { [lsearch ${::dont-setenv} "${NAME}_VERSION"] == -1 } {
setenv ${NAME}_VERSION $version
}
}
set NAME [string toupper $name]
regsub -- "-" ${NAME} "_" NAME
if { [file isdirectory "$PREFIX"] } {
if { [lsearch ${::dont-setenv} "${NAME}_PREFIX"] == -1 } {
setenv ${NAME}_PREFIX $PREFIX
}
if { [lsearch ${::dont-setenv} "${NAME}_DIR"] == -1 } {
setenv ${NAME}_DIR $PREFIX
}
if { [lsearch ${::dont-setenv} "${NAME}_HOME"] == -1 } {
setenv ${NAME}_HOME $PREFIX
}
if { [lsearch ${::dont-setenv} "${NAME}_ROOT"] == -1 } {
setenv ${NAME}_ROOT $PREFIX
}
} else {
debug "$PREFIX is not a directory"
}
set prefix_evars [dict create \
"${NAME}_VERSION" "${version}" \
"${NAME}_PREFIX" "${PREFIX}" \
"${NAME}_DIR" "${PREFIX}" \
"${NAME}_HOME" "${PREFIX}" \
]
set setenv_dirs [dict create \
"${PREFIX}/include" "${NAME}_INCLUDE_DIR" \
"${PREFIX}/lib" "${NAME}_LIBRARY_DIR" \
"${PREFIX}/lib64" "${NAME}_LIBRARY_DIR" \
]
set prepend_dirs [dict create \
"${PREFIX}/bin" { "PATH" } \
"${PREFIX}/sbin" { "PATH" } \
"${PREFIX}/share/man" { "MANPATH" } \
"${PREFIX}/include" { "C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH" } \
"${PREFIX}/lib" { "LIBRARY_PATH" "LD_LIBRARY_PATH"} \
"${PREFIX}/lib/pkgconfig" { "PKG_CONFIG_PATH" } \
"${PREFIX}/share/pkgconfig" { "PKG_CONFIG_PATH" } \
"${PREFIX}/lib/cmake" { "CMAKE_MODULE_PATH" } \
"${PREFIX}/share/cmake" { "CMAKE_MODULE_PATH" } \
"${PREFIX}/share/${name}/cmake" { "CMAKE_MODULE_PATH" } \
]
if { [file isdirectory "$PREFIX/bin"] } {
if { [lsearch ${::dont-setenv} "PATH"] == -1 } {
prepend-path PATH $PREFIX/bin
dict for {key value} $prefix_evars {
if { [lsearch ${::dont-setenv} $key] >= 0 } {
continue
}
setenv $key $value
}
if { [file isdirectory "$PREFIX/sbin"] } {
if { [lsearch ${::dont-setenv} "PATH"] == -1 } {
prepend-path PATH $PREFIX/sbin
dict for {key value} $setenv_dirs {
if { [lsearch ${::dont-setenv} $key] >= 0 || ![file isdirectory $key] } {
continue
}
setenv $value $key
}
if { [file isdirectory "$PREFIX/share/man"] } {
if { [lsearch ${::dont-setenv} "MANPATH"] == -1 } {
prepend-path MANPATH $PREFIX/share/man
dict for {key value} $prepend_dirs {
if { [lsearch ${::dont-setenv} $key] >= 0 || ![file isdirectory $key] } {
continue
}
}
# set various environment variables - as long as they are not blacklisted
debug "prepend to include paths"
if { [file isdirectory "$PREFIX/include"] } {
if { [lsearch ${::dont-setenv} "C_INCLUDE_PATH"] == -1 } {
prepend-path C_INCLUDE_PATH $PREFIX/include
}
if { [lsearch ${::dont-setenv} "CPLUS_INCLUDE_PATH"] == -1 } {
prepend-path CPLUS_INCLUDE_PATH $PREFIX/include
}
if { [lsearch ${::dont-setenv} "${NAME}_INCLUDE_DIR"] == -1 } {
setenv ${NAME}_INCLUDE_DIR $PREFIX/include
}
}
debug "prepend to library paths"
if { [file isdirectory "$PREFIX/lib"] } {
if { [lsearch ${::dont-setenv} "LIBRARY_PATH"] == -1 } {
prepend-path LIBRARY_PATH $PREFIX/lib
}
if { [lsearch ${::dont-setenv} "LD_LIBRARY_PATH"] == -1 } {
prepend-path LD_LIBRARY_PATH $PREFIX/lib
}
if { [lsearch ${::dont-setenv} "${NAME}_LIBRARY_DIR"] == -1 } {
setenv ${NAME}_LIBRARY_DIR $PREFIX/lib
}
}
if { [file isdirectory "$PREFIX/lib/pkgconfig"] } {
if { [lsearch ${::dont-setenv} "PKG_CONFIG_PATH"] == -1 } {
prepend-path PKG_CONFIG_PATH $PREFIX/lib/pkgconfig
}
}
if { [file isdirectory "$PREFIX/lib/cmake"] } {
if { [lsearch ${::dont-setenv} "CMAKE_MODULE_PATH"] == -1 } {
prepend-path CMAKE_MODULE_PATH $PREFIX/lib/cmake
}
}
debug "prepend to library paths (64bit)"
if { [file isdirectory "$PREFIX/lib64"] } {
if { [lsearch ${::dont-setenv} "LIBRARY_PATH"] == -1 } {
prepend-path LIBRARY_PATH $PREFIX/lib64
}
if { [lsearch ${::dont-setenv} "LD_LIBRARY_PATH"] == -1 } {
prepend-path LD_LIBRARY_PATH $PREFIX/lib64
}
if { [lsearch ${::dont-setenv} "${NAME}_LIBRARY_DIR"] == -1 } {
setenv ${NAME}_LIBRARY_DIR $PREFIX/lib64
foreach var $value {
prepend-path $var $key
}
}
}
+7
View File
@@ -367,6 +367,9 @@ bash_expand(){
build_modules_legacy() {
find_variants_files(){
shopt -q nullglob || :
local -i nullglob_set=$?
local files=( "${BUILDBLOCK_DIR}"/*/"${BNAME_VARIANTS}"\.${opt_system} )
files+=( "${BUILDBLOCK_DIR}"/*/"${BNAME_VARIANTS}.$(uname -s)" )
local f
@@ -375,6 +378,10 @@ build_modules_legacy() {
|| [[ -e "${f}.$(uname -s)" ]] \
|| files+=( "$f" )
done
if (( ${#files[@]} == 0 )); then
std::die 2 "No suitable variants file found!"
fi
(( nullglob_set == 1 )) && shopt -u nullglob
std::upvar "$1" "${files[@]}"
}
+16 -11
View File
@@ -32,11 +32,10 @@ std::def_cmds "${path}" \
'awk' 'base64' 'find' 'getopt' 'logger' 'mktemp' \
'rm' 'sed' 'sort' 'yq'
if [[ -n ${TCLLIBPATH} ]]; then
declare -x TCLLIBPATH="${PMODULES_HOME}/lib/Pmodules:${TCLLIBPATH}"
else
declare -x TCLLIBPATH="${PMODULES_HOME}/lib/Pmodules"
fi
declare -rx TCL_LIBRARY="${PMODULES_HOME}/lib/tcl@TCL_VERSION@"
declare -x TCLLIBPATH
std::prepend_path TCLLIBPATH "${PMODULES_HOME}/lib/Pmodules"
declare -r modulecmd="${libexecdir}/modulecmd.bin"
declare -- verbosity_lvl=${PMODULES_VERBOSITY:-'verbose'}
@@ -699,15 +698,20 @@ subcommand_load() {
if [[ -n "${error}" ]]; then
echo "${error}" 1>&2
fi
local msg=$(printf "%s %s: %s -- %s" \
"${CMD}" 'load' \
"${rel_stage} module has been loaded" \
"${m}")
local msg=''
if [[ ${verbosity_lvl} != silent ]] && \
[[ ${rel_stage} != stable ]]; then
[[ ${rel_stage} != stable ]]; then
msg=$(printf "%s %s: %s -- %s" \
"${CMD}" 'load' \
"${rel_stage} module has been loaded" \
"${m}")
std::info "%s" "${msg}"
fi
msg=$(printf "%s: %s %s %s" \
'load' \
"modulefile=${current_modulefile}" \
"rel-stage=${rel_stage}" \
"user=${USER}")
${logger} -t Pmodules "${msg}"
done
# fix LOADEDMODULES
@@ -2878,6 +2882,7 @@ done
if [[ -z "${subcommand}" ]]; then
std::die 1 "${CMD}: no sub-command specified."
fi
declare -rx TCL_LIBRARY="${PMODULES_HOME}/lib/tcl@TCL_VERSION@"
if [[ -z "${Subcommands[${subcommand}]}" ]]; then
std::die 1 "${CMD}: unknown sub-command -- ${subcommand}"
+1 -1
View File
@@ -2,4 +2,4 @@
unset BASH_ENV
"@BASH@" --noprofile --norc "@MODULECMD@" "$@"
"${PMODULES_HOME}/libexec/bash" --noprofile --norc "${PMODULES_HOME}/libexec/modulecmd.bash" "$@"
+2 -3
View File
@@ -7,6 +7,7 @@ if (( "${BASH_VERSINFO[0]}" < 5 )); then
echo "BASH version 5.0 or newer is required and must be available in PATH!" 1>&2
exit 1
fi
declare TCL_VERSION='8.6'
set -o nounset
set -o pipefail
@@ -432,6 +433,7 @@ build::install() {
sed_cmd+="s:@VERSIONING@:#:g;"
sed_cmd+="s:@BASH@:${PREFIX}/${UTILBIN_DIR}/bash:g;"
sed_cmd+="s:@MODULECMD@:${PREFIX}/${UTILBIN_DIR}/modulecmd.bash:g;"
sed_cmd+="s:@TCL_VERSION@:${TCL_VERSION}:g;"
sed "${sed_cmd}" "${SRC_DIR}/profile.bash.in" \
> "${INSTALL_ROOT}/${CONFIG_DIR}/profile.bash-${VERSION}"
@@ -456,9 +458,6 @@ build::install() {
sed "${sed_cmd}" "${SRC_DIR}/modulecmd.bash.in" \
> "${PREFIX}/libexec/modulecmd.bash"
chmod 0755 "${PREFIX}/libexec/modulecmd.bash"
sed "${sed_cmd}" "${SRC_DIR}/modulecmd.tcl.in" \
> "${PREFIX}/libexec/modulecmd.tcl"
chmod 0755 "${PREFIX}/libexec/modulecmd.tcl"
sed "${sed_cmd}" "${SRC_DIR}/libpmodules.bash.in" \
> "${PREFIX}/lib/libpmodules.bash"