version specific modulefiles implemented

This commit is contained in:
Achim Gsell
2020-11-30 16:50:53 +01:00
parent c354e6d534
commit 8d3ef8264f
+54 -23
View File
@@ -719,9 +719,32 @@ pbuild::make_all() {
"Not available for ${COMPILER}." "Not available for ${COMPILER}."
} }
#......................................................................
find_modulefile() {
local "$1"
local fnames=()
fnames+=( "modulefile-${V_MAJOR}" )
fnames+=( "modulefile-${V_MAJOR}.${V_MINOR}" )
fnames+=( "modulefile-${V_MAJOR}.${V_MINOR}.${V_PATCHLVL}" )
fnames+=( "modulefile" )
local fname=''
local modulefile=''
for fname in "${fnames[@]}"; do
if [[ -r "${BUILDBLOCK_DIR}/${fname}" ]]; then
modulefile="${BUILDBLOCK_DIR}/${fname}"
break;
fi
done
std::upvar $1 "${modulefile}"
[[ -n "${modulefile}" ]]
}
#...................................................................... #......................................................................
# non-redefinable post-install # non-redefinable post-install
post_install() { post_install() {
#..............................................................
# install the doc-files specified in the build-script
#
install_doc() { install_doc() {
test -n "${MODULE_DOCFILES}" || return 0 test -n "${MODULE_DOCFILES}" || return 0
local -r docdir="${PREFIX}/${_DOCDIR}/${module_name}" local -r docdir="${PREFIX}/${_DOCDIR}/${module_name}"
@@ -739,20 +762,27 @@ pbuild::make_all() {
} }
#.............................................................. #..............................................................
# install build-block # install build-block files
# - modulefile
# - build-script
# - build dependencies
#
# Skip installation if modulefile does not exist. # Skip installation if modulefile does not exist.
#
install_pmodules_files() { install_pmodules_files() {
test -r "${BUILDBLOCK_DIR}/modulefile" || return 0 local modulefile=''
find_modulefile modulefile || return 0
local -r target_dir="${PREFIX}/share/$GROUP/${module_name}" local -r target_dir="${PREFIX}/share/$GROUP/${module_name}"
install -m 0756 \ mkdir -p "${target_dir}"
-d "${target_dir}/files"
install -m0444 \ install -m0444 \
"${BUILD_SCRIPT}" \ "${BUILD_SCRIPT}" \
"${target_dir}" "${target_dir}"
install -m0444 \ install -m0444 \
"${BUILDBLOCK_DIR}/modulefile" \ "${modulefile}" \
"${target_dir}" "${target_dir}"
#install -m 0755 \
# -d "${target_dir}/files"
#install -m0444 \ #install -m0444 \
# "${variants_file}" \ # "${variants_file}" \
# "${target_dir}/files" # "${target_dir}/files"
@@ -785,20 +815,20 @@ pbuild::make_all() {
done done
} }
#..............................................................
# sometimes we need an system depended post-install # for Linux we need a special post-install to solve the
# multilib problem with LIBRARY_PATH on 64-bit systems
post_install_linux() { post_install_linux() {
std::info \ std::info \
"%s %s\n" \ "%s %s\n" \
"${module_name}/${module_version}:" \ "${module_name}/${module_version}:" \
"running post-installation for ${OS} ..." "running post-installation for ${OS} ..."
cd "${PREFIX}" cd "${PREFIX}"
# solve multilib problem with LIBRARY_PATH
# on 64bit Linux
[[ -d "lib" ]] && [[ ! -d "lib64" ]] && ln -s lib lib64 [[ -d "lib" ]] && [[ ! -d "lib64" ]] && ln -s lib lib64
return 0 return 0
} }
#..............................................................
cd "${BUILD_DIR}" cd "${BUILD_DIR}"
[[ "${OS}" == "Linux" ]] && post_install_linux [[ "${OS}" == "Linux" ]] && post_install_linux
install_doc install_doc
@@ -813,14 +843,26 @@ pbuild::make_all() {
"${PREFIX}/${FNAME_IDEPS}" \ "${PREFIX}/${FNAME_IDEPS}" \
"${install_dependencies[@]}" "${install_dependencies[@]}"
fi fi
if [[ "${bootstrap}" == 'no' ]]; then
install_modulefile
install_release_file
fi
cleanup_build
cleanup_src
std::info \
"%s %s\n" \
"${module_name}/${module_version}:" \
"Done ..."
return 0 return 0
} }
#...................................................................... #......................................................................
# Install modulefile # Install modulefile
install_modulefile() { install_modulefile() {
local -r src="${BUILDBLOCK_DIR}/modulefile"
if [[ ! -r "${src}" ]]; then local src=''
find_modulefile src
if (( $? != 0 )); then
std::info \ std::info \
"%s %s\n" \ "%s %s\n" \
"${module_name}/${module_version}:" \ "${module_name}/${module_version}:" \
@@ -989,19 +1031,8 @@ pbuild::make_all() {
mkdir -p "${PREFIX}" mkdir -p "${PREFIX}"
build_target "${BUILD_DIR}" install build_target "${BUILD_DIR}" install
post_install post_install
[[ "${build_target}" == "install" ]] && return 0
install_modulefile
install_release_file
cleanup_build
cleanup_src
std::info \
"%s %s\n" \
"${module_name}/${module_version}:" \
"Done ..."
return 0
} }
remove_module() { remove_module() {
if [[ -d "${PREFIX}" ]]; then if [[ -d "${PREFIX}" ]]; then
std::info \ std::info \