mirror of
https://github.com/Pmodules/Pmodules.git
synced 2026-08-07 11:52:26 +02:00
version specific modulefiles implemented
This commit is contained in:
+54
-23
@@ -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 \
|
||||||
|
|||||||
Reference in New Issue
Block a user