mirror of
https://github.com/Pmodules/Pmodules.git
synced 2026-06-30 03:09:40 +02:00
Merge branch '107-install-additional-binaries-in-pmodules_home-libexec-bin' into 'master'
Resolve "install additional binaries in $PMODULES_HOME/libexec/bin" Closes #107 See merge request Pmodules/src!75
This commit is contained in:
@@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
unset BASH_ENV
|
||||
|
||||
bindir=$( cd $(dirname "$0")/../sbin && pwd -P )
|
||||
"${bindir}/bash" --noprofile --norc "${bindir}/../libexec/modmanage.bash" "$@"
|
||||
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
unset BASH_ENV
|
||||
|
||||
"@BASH@" --noprofile --norc "@MODMANAGE@ "$@"
|
||||
@@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
unset BASH_ENV
|
||||
|
||||
bindir=$( cd $(dirname "$0")/../sbin && pwd -P )
|
||||
"${bindir}/bash" --noprofile --norc "${bindir}/../libexec/modulecmd.bash" "$@"
|
||||
+22
-12
@@ -1,4 +1,4 @@
|
||||
#!@PMODULES_HOME@/sbin/bash --noprofile
|
||||
#!@BASH@ --noprofile
|
||||
#
|
||||
|
||||
#set -o nounset
|
||||
@@ -10,18 +10,28 @@ declare -r CMD='module'
|
||||
|
||||
declare -r mydir=$(cd $(dirname "$0") && pwd)
|
||||
declare prefix=$(dirname "${mydir}")
|
||||
declare -r sbindir="${prefix}/sbin"
|
||||
declare -r libdir="${prefix}/lib"
|
||||
declare -r libexecdir="${prefix}/libexec"
|
||||
|
||||
declare -r base64="${sbindir}/base64"
|
||||
declare -r mktemp="${sbindir}/mktemp"
|
||||
declare -r sort="${sbindir}/sort"
|
||||
declare -r getopt="${sbindir}/getopt"
|
||||
declare -r find="${sbindir}/find"
|
||||
base64=$(PATH=/bin:/usr/bin /usr/bin/which base64)
|
||||
declare -r base64
|
||||
mktemp=$(PATH=/bin:/usr/bin /usr/bin/which mktemp)
|
||||
declare -r mktemp
|
||||
sort=$(PATH=/bin:/usr/bin /usr/bin/which sort)
|
||||
declare -r sort
|
||||
awk=$(PATH=/bin:/usr/bin /usr/bin/which awk)
|
||||
declare -r awk
|
||||
if [[ $(uname -s) == 'Darwin' ]]; then
|
||||
declare -r getopt="${libexecdir}/getopt"
|
||||
declare -r find="${libexecdir}/find"
|
||||
else
|
||||
getopt=$(PATH=/bin:/usr/bin /usr/bin/which getopt)
|
||||
declare -r getopt
|
||||
find=$(PATH=/bin:/usr/bin /usr/bin/which find)
|
||||
declare -r find
|
||||
fi
|
||||
|
||||
source "${libdir}/libstd.bash"
|
||||
source "${libdir}/libpmodules.bash"
|
||||
|
||||
: ${PMODULES_DEFINED_RELEASES:=':unstable:stable:deprecated:'}
|
||||
|
||||
@@ -318,7 +328,7 @@ subcommand_load() {
|
||||
# can be used.
|
||||
#
|
||||
mapfile -t array < <("${modulecmd}" 'bash' show "$m" 2>&1 | \
|
||||
awk 'NR == 2 {print substr($0, 1, length($0)-1)}; /_PREFIX |_HOME / {print $3; exit}')
|
||||
${awk} 'NR == 2 {print substr($0, 1, length($0)-1)}; /_PREFIX |_HOME / {print $3; exit}')
|
||||
current_modulefile="${array[0]}"
|
||||
prefix="${array[1]}"
|
||||
test -n "${current_modulefile}" || return 1
|
||||
@@ -1663,14 +1673,14 @@ subcommand_search() {
|
||||
while read -a toks; do
|
||||
${func_print_line} "${toks[@]}"
|
||||
done < <("${sort}" -k 1,1 -k 4,4 -k 5,5 "${tmpfile}" | \
|
||||
awk "${with_modules}")
|
||||
${awk} "${with_modules}")
|
||||
}
|
||||
|
||||
get_module_prefix() {
|
||||
local "$1"
|
||||
local modulefile="$2"
|
||||
local -r _prefix=$("${modulecmd}" bash show "${modulefile}" 2>&1 | \
|
||||
awk '/_PREFIX |_HOME / {print $3; exit}')
|
||||
${awk} '/_PREFIX |_HOME / {print $3; exit}')
|
||||
std::upvar $1 "${_prefix}"
|
||||
}
|
||||
|
||||
@@ -1804,8 +1814,8 @@ subcommand_search() {
|
||||
opt_use_releases="${PMODULES_DEFINED_RELEASES}"
|
||||
;;
|
||||
--src )
|
||||
# :FIXME: do we have to add some sanity checks here?
|
||||
src_prefix=$2
|
||||
pmodules::check_directories "${src_prefix}"
|
||||
shift
|
||||
;;
|
||||
-v | --verbose )
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
unset BASH_ENV
|
||||
|
||||
"@BASH@" --noprofile --norc "@MODULECMD@" "$@"
|
||||
@@ -0,0 +1,10 @@
|
||||
#%Module1.0
|
||||
|
||||
module-whatis "Pmodules environment"
|
||||
module-url "https://gitlab.psi.ch/Pmodules/src"
|
||||
module-license "GNU GPL v2"
|
||||
module-maintainer "Achim Gsell <achim.gsell@psi.ch>"
|
||||
|
||||
module-help "
|
||||
Pmodules are a hierarchical module environment based on Environment Modules.
|
||||
"
|
||||
+2
-2
@@ -14,12 +14,12 @@ pbuild::configure() {
|
||||
esac
|
||||
"${srcdir}"/configure \
|
||||
--prefix="${PREFIX}" \
|
||||
--bindir="${PREFIX}/sbin" \
|
||||
--bindir="${PREFIX}/${UTILBIN_DIR}" \
|
||||
--enable-shared=no \
|
||||
|| exit 1
|
||||
}
|
||||
|
||||
pbuild::post_install() {
|
||||
{ cd "${PREFIX}"/sbin && rm -f tclsh && ln -fs tclsh${V%.*} tclsh; };
|
||||
{ cd "${PREFIX}/${UTILBIN_DIR}" && rm -f tclsh && ln -fs tclsh${V%.*} tclsh; };
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env modbuild
|
||||
|
||||
pbuild::set_download_url "https://ftp.gnu.org/gnu/$P/$P-$V.tar.gz"
|
||||
pbuild::add_configure_args "--bindir=${PREFIX}/sbin"
|
||||
pbuild::add_configure_args "--bindir=${PREFIX}/${UTILBIN_DIR}"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env modbuild
|
||||
|
||||
pbuild::set_download_url "http://ftp.gnu.org/gnu/coreutils/$P-$V.tar.xz"
|
||||
pbuild::add_configure_args "--bindir=${PREFIX}/sbin"
|
||||
pbuild::add_configure_args "--bindir=${PREFIX}/${UTILBIN_DIR}"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env modbuild
|
||||
|
||||
pbuild::set_download_url "https://ftp.gnu.org/pub/gnu/$P/$P-$V.tar.xz"
|
||||
pbuild::add_configure_args "--bindir=${PREFIX}/sbin"
|
||||
pbuild::add_configure_args "--bindir=${PREFIX}/${UTILBIN_DIR}"
|
||||
|
||||
+15
-7
@@ -17,22 +17,30 @@ pbuild::compile() {
|
||||
declare -x LIBRARY_PATH="${PREFIX}/lib"
|
||||
case ${OS} in
|
||||
Linux )
|
||||
declare -x C_INCLUDE_PATH="${PREFIX}/include"
|
||||
declare -x LIBRARY_PATH="${PREFIX}/lib"
|
||||
declare -x LDFLAGS="-lintl -L${PREFIX}/lib"
|
||||
;;
|
||||
Darwin )
|
||||
declare -x LDFLAGS="-lintl -liconv -framework CoreFoundation"
|
||||
if [[ ! -d '/opt/local/bin' ]] || [[ ! -x '/opt/local/bin/msgfmt' ]]; then
|
||||
std::die 1 "gettext port from Macports is required to build 'getopt'!"
|
||||
fi
|
||||
PATH+=':/opt/local/bin'
|
||||
declare -x C_INCLUDE_PATH='/opt/local/include'
|
||||
declare -x LDFLAGS="/opt/local/lib/libintl.a /opt/local/lib/libiconv.a -framework CoreFoundation"
|
||||
;;
|
||||
esac
|
||||
|
||||
make -e all
|
||||
make -e all || exit 1
|
||||
declare -x DESTDIR="${PREFIX}"
|
||||
declare -x prefix='' || exit 1
|
||||
PATH="${PREFIX}/${UTILBIN_DIR}:${PATH}"
|
||||
make -e install
|
||||
mv "${PREFIX}/bin/getopt" "${PREFIX}/${UTILBIN_DIR}"
|
||||
}
|
||||
|
||||
pbuild::install() {
|
||||
declare -x DESTDIR="${PREFIX}"
|
||||
declare -x prefix=''
|
||||
make -e install
|
||||
mkdir -p "${PREFIX}/sbin"
|
||||
mv "${PREFIX}/bin/getopt" "${PREFIX}/sbin"
|
||||
:
|
||||
}
|
||||
|
||||
pbuild::cleanup_build() {
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
pbuild::set_download_url "https://ftp.gnu.org/pub/gnu/$P/$P-$V.tar.gz"
|
||||
|
||||
pbuild::add_configure_args "--prefix=${PREFIX}"
|
||||
pbuild::add_configure_args "--bindir=${PREFIX}/sbin"
|
||||
pbuild::add_configure_args "--bindir=${PREFIX}/${UTILBIN_DIR}"
|
||||
pbuild::add_configure_args "--disable-java"
|
||||
pbuild::add_configure_args "--disable-threads"
|
||||
pbuild::add_configure_args "--disable-shared"
|
||||
|
||||
+13
-12
@@ -29,18 +29,19 @@ pbuild::configure() {
|
||||
}
|
||||
|
||||
pbuild::post_install() {
|
||||
rm -v ${PREFIX}/Modules/bin/add.modules
|
||||
rm -v ${PREFIX}/Modules/bin/mkroot
|
||||
rm -rfv ${PREFIX}/Modules/modulefiles
|
||||
mv -v ${PREFIX}/Modules/share/man/man1/module.1 ${PREFIX}/share/man/man1
|
||||
mv -v ${PREFIX}/Modules/share/man/man4/modulefile.4 ${PREFIX}/share/man/man4
|
||||
rmdir ${PREFIX}/Modules/bin
|
||||
rmdir ${PREFIX}/Modules/share/man/man1
|
||||
rmdir ${PREFIX}/Modules/share/man/man4
|
||||
rmdir ${PREFIX}/Modules/share/man
|
||||
rmdir ${PREFIX}/Modules/share
|
||||
rmdir ${PREFIX}/Modules
|
||||
cp -v "${BUILD_DIR}/modulecmd" "${PREFIX}/libexec/modulecmd.bin" || exit 1
|
||||
rm -v "${PREFIX}/Modules/bin/add.modules"
|
||||
rm -v "${PREFIX}/Modules/bin/mkroot"
|
||||
rm -rfv "${PREFIX}/Modules/modulefiles"
|
||||
mv -v "${PREFIX}/Modules/share/man/man1/module.1 ${PREFIX}/share/man/man1"
|
||||
mv -v "${PREFIX}/Modules/share/man/man4/modulefile.4 ${PREFIX}/share/man/man4"
|
||||
rmdir "${PREFIX}/Modules/bin"
|
||||
rmdir "${PREFIX}/Modules/share/man/man1"
|
||||
rmdir "${PREFIX}/Modules/share/man/man4"
|
||||
rmdir "${PREFIX}/Modules/share/man"
|
||||
rmdir "${PREFIX}/Modules/share"
|
||||
rmdir "${PREFIX}/Modules"
|
||||
rm -f "${PREIX}/init/{ksh,perl.pm,python.py,ruby.rb,cmake,.modulespath}"
|
||||
cp -v "${BUILD_DIR}/modulecmd" "${PREFIX}/libexec/modulecmd.bin" || exit 1
|
||||
}
|
||||
|
||||
# fake module command
|
||||
|
||||
@@ -5,6 +5,8 @@ if [ "${BASH_VERSINFO[0]}" -lt 4 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
declare -r OS=$(uname -s)
|
||||
|
||||
declare BOOTSTRAP_DIR=$(dirname "$0")
|
||||
source "${BOOTSTRAP_DIR}/Pmodules/libstd.bash" || { echo "Oops!" 1>&2; exit 42; }
|
||||
|
||||
@@ -25,6 +27,9 @@ declare -rx DEFAULT_DISTFILES_DIR="var/distfiles"
|
||||
declare -rx DEFAULT_VERSIONS_CONFIG="${CONFIG_DIR}/versions.conf"
|
||||
declare -rx DEFAULT_TMPDIR='var/tmp/${USER}'
|
||||
|
||||
# directory where the required tools will be installed (like bash, tclsh, etc)
|
||||
declare -rx UTILBIN_DIR='libexec'
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
get_version() {
|
||||
@@ -224,11 +229,9 @@ Use the option --force to override.\nAborting..."
|
||||
|
||||
read_config_file 'config_file'
|
||||
install -d -m 0755 "${PMODULES_HOME}/bin"
|
||||
install -d -m 0755 "${PMODULES_HOME}/config"
|
||||
install -d -m 0755 "${PMODULES_HOME}/init"
|
||||
install -d -m 0755 "${PMODULES_HOME}/lib"
|
||||
install -d -m 0755 "${PMODULES_HOME}/libexec"
|
||||
install -d -m 0755 "${PMODULES_HOME}/sbin"
|
||||
echo "Configuration:"
|
||||
echo " root of Pmodules environment: ${prefix}"
|
||||
echo " Pmodule prefix: ${PMODULES_HOME}"
|
||||
@@ -324,38 +327,48 @@ pmodules::compile() {
|
||||
|
||||
local config_file="${prefix}/${CONFIG_DIR}/${CONFIG_FILE}"
|
||||
read_config_file config_file
|
||||
install -d -m 0755 "${PMODULES_HOME}/bin"
|
||||
install -d -m 0755 "${PMODULES_HOME}/init"
|
||||
install -d -m 0755 "${PMODULES_HOME}/lib"
|
||||
install -d -m 0755 "${PMODULES_HOME}/libexec"
|
||||
|
||||
echo "Configuration:"
|
||||
echo " root of Pmodules environment: ${prefix}"
|
||||
echo " Pmodule prefix: ${PMODULES_HOME}"
|
||||
|
||||
if [[ ! -f "${PMODULES_HOME}/sbin/base64" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
build coreutils
|
||||
#if [[ ! -f "${PMODULES_HOME}/${UTILBIN_DIR}/base64" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
# build coreutils
|
||||
#fi
|
||||
|
||||
if [[ "${OS}" == 'Darwin' ]]; then
|
||||
if [[ ! -f "${PMODULES_HOME}/${UTILBIN_DIR}/getopt" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
build getopt
|
||||
fi
|
||||
|
||||
if [[ ! -f "${PMODULES_HOME}/${UTILBIN_DIR}/find" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
build findutils
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ! -f "${PMODULES_HOME}/sbin/xgettext" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
build gettext
|
||||
fi
|
||||
|
||||
if [[ ! -f "${PMODULES_HOME}/sbin/getopt" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
build getopt
|
||||
fi
|
||||
|
||||
if [[ ! -f "${PMODULES_HOME}/sbin/bash" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
if [[ ! -f "${PMODULES_HOME}/${UTILBIN_DIR}/bash" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
build bash
|
||||
fi
|
||||
|
||||
if [[ ! -f "${PMODULES_HOME}/sbin/find" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
build findutils
|
||||
fi
|
||||
|
||||
if [[ ! -e "${PMODULES_HOME}/sbin/tclsh" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
if [[ ! -e "${PMODULES_HOME}/${UTILBIN_DIR}/tclsh" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
build Tcl
|
||||
fi
|
||||
|
||||
if [[ ! -e "${PMODULES_HOME}/libexec/modulecmd.bin" ]] || [[ ${opt_force} == 'yes' ]]; then
|
||||
build modules
|
||||
fi
|
||||
rm -rf "${PMODULES_HOME}/include"
|
||||
rm -rf "${PMODULES_HOME}/lib/"*.a
|
||||
rm -rf "${PMODULES_HOME}/lib/"*.la
|
||||
rm -rf "${PMODULES_HOME}/lib/bash"
|
||||
rm -rf "${PMODULES_HOME}/lib/pkginfo"
|
||||
rm -rf "${PMODULES_HOME}/man"
|
||||
rm -rf "${PMODULES_HOME}/share"
|
||||
|
||||
echo "Done..."
|
||||
}
|
||||
|
||||
@@ -439,7 +452,7 @@ pmodules::install() {
|
||||
sed_cmd+="s:@MODULES_VERSION@:${MODULES_VERSION}:g;"
|
||||
sed_cmd+="s:@PMODULES_DISTFILESDIR@:${PMODULES_DISTFILESDIR}:g;"
|
||||
sed_cmd+="s:@PMODULES_TMPDIR@:${PMODULES_TMPDIR}:g;"
|
||||
sed_cmd+="s:@TCLSHDIR@:${PMODULES_HOME}/sbin:g;"
|
||||
sed_cmd+="s:@TCLSHDIR@:${PMODULES_HOME}/${UTILBIN_DIR}:g;"
|
||||
sed_cmd+="s:@pager@::g;"
|
||||
sed_cmd+="s:@pageropts@::g;"
|
||||
sed_cmd+="s:@etcdir@:${PMODULES_ROOT}/${CONFIG_DIR}:g;"
|
||||
@@ -447,6 +460,9 @@ pmodules::install() {
|
||||
sed_cmd+="s:@prefix@:${PMODULES_HOME}:g;"
|
||||
sed_cmd+="s:@initdir@:${PMODULES_HOME}/init:g;"
|
||||
sed_cmd+="s:@MODULES_RELEASE@:${PMODULES_VERSION}:g;"
|
||||
sed_cmd+="s:@BASH@:${PMODULES_HOME}/${UTILBIN_DIR}/bash:g;"
|
||||
sed_cmd+="s:@MODULECMD@:${PMODULES_HOME}/${UTILBIN_DIR}/modulecmd.bash:g;"
|
||||
sed_cmd+="s:@MODMANAGE@:${PMODULES_HOME}/${UTILBIN_DIR}/modmanage.bash:g;"
|
||||
|
||||
sed "${sed_cmd}" "${SRC_DIR}/profile.bash.in" > "${PMODULES_ROOT}/${CONFIG_DIR}/profile.bash-${PMODULES_VERSION}"
|
||||
sed "${sed_cmd}" "${SRC_DIR}/profile.csh.in" > "${PMODULES_ROOT}/${CONFIG_DIR}/profile.csh-${PMODULES_VERSION}"
|
||||
@@ -462,18 +478,21 @@ pmodules::install() {
|
||||
test -e "${PMODULES_ROOT}/${CONFIG_DIR}/profile.zsh" || \
|
||||
install -m 0644 "$_-${PMODULES_VERSION}" "$_"
|
||||
|
||||
sed "${sed_cmd}" "${SRC_DIR}/modulecmd.in" > "${PMODULES_HOME}/bin/modulecmd"
|
||||
chmod 0755 "${PMODULES_HOME}/bin/modulecmd"
|
||||
sed "${sed_cmd}" "${SRC_DIR}/modulecmd.bash.in" > "${PMODULES_HOME}/libexec/modulecmd.bash"
|
||||
chmod 0755 "${PMODULES_HOME}/libexec/modulecmd.bash"
|
||||
sed "${sed_cmd}" "${SRC_DIR}/modulecmd.tcl.in" > "${PMODULES_HOME}/libexec/modulecmd.tcl"
|
||||
chmod 0755 "${PMODULES_HOME}/libexec/modulecmd.tcl"
|
||||
|
||||
sed "${sed_cmd}" "${SRC_DIR}/modbuild.in" > "${PMODULES_HOME}/bin/modbuild"
|
||||
chmod 0755 "${PMODULES_HOME}/bin/modbuild"
|
||||
|
||||
sed "${sed_cmd}" "${SRC_DIR}/modmanage.in" > "${PMODULES_HOME}/bin/modmanage"
|
||||
chmod 0755 "${PMODULES_HOME}/bin/modmanage"
|
||||
sed "${sed_cmd}" "${SRC_DIR}/modmanage.bash.in" > "${PMODULES_HOME}/libexec/modmanage.bash"
|
||||
chmod 0755 "${PMODULES_HOME}/libexec/modmanage.bash"
|
||||
|
||||
install -m 0755 "${SRC_DIR}/modulecmd" "${PMODULES_HOME}/bin"
|
||||
install -m 0755 "${SRC_DIR}/modmanage" "${PMODULES_HOME}/bin"
|
||||
|
||||
install -m 0644 "${SRC_DIR}/bash" "${PMODULES_HOME}/init"
|
||||
install -m 0644 "${SRC_DIR}/bash_completion" "${PMODULES_HOME}/init"
|
||||
install -m 0644 "${SRC_DIR}/csh" "${PMODULES_HOME}/init"
|
||||
@@ -487,14 +506,15 @@ pmodules::install() {
|
||||
install -m 0644 "${SRC_DIR}/libmodules.tcl" "${PMODULES_HOME}/lib/Pmodules"
|
||||
|
||||
{
|
||||
PATH="${PMODULES_HOME}/sbin:${PATH}"
|
||||
PATH="${PMODULES_HOME}/${UTILBIN_DIR}:${PATH}"
|
||||
cd "${PMODULES_HOME}/lib/Pmodules"
|
||||
"${BOOTSTRAP_DIR}/mkindex.tcl"
|
||||
}
|
||||
|
||||
mkdir -p "${PMODULES_ROOT}/Tools/modulefiles"
|
||||
install -m 0755 -d "${PMODULES_ROOT}/Tools/modulefiles/Pmodules"
|
||||
install -m 0644 "${SRC_DIR}/modulefile" "${PMODULES_ROOT}/Tools/modulefiles/Pmodules/${PMODULES_VERSION}"
|
||||
mkdir -p "${PMODULES_ROOT}/Libraries/modulefiles"
|
||||
|
||||
|
||||
echo "Done..."
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
bash 5.1-rc3
|
||||
bash 5.1
|
||||
coreutils 8.31
|
||||
findutils 4.7.0
|
||||
getopt 1.1.6
|
||||
gettext 0.21
|
||||
modules 3.2.10.1
|
||||
Pmodules 1.0.0rc7
|
||||
Pmodules 1.0.0rc8
|
||||
Tcl 8.6.10
|
||||
|
||||
Reference in New Issue
Block a user