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:
2021-03-18 13:44:13 +01:00
15 changed files with 123 additions and 76 deletions
-6
View File
@@ -1,6 +0,0 @@
#!/bin/sh
unset BASH_ENV
bindir=$( cd $(dirname "$0")/../sbin && pwd -P )
"${bindir}/bash" --noprofile --norc "${bindir}/../libexec/modmanage.bash" "$@"
+5
View File
@@ -0,0 +1,5 @@
#!/bin/sh
unset BASH_ENV
"@BASH@" --noprofile --norc "@MODMANAGE@ "$@"
-6
View File
@@ -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
View File
@@ -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 )
+5
View File
@@ -0,0 +1,5 @@
#!/bin/sh
unset BASH_ENV
"@BASH@" --noprofile --norc "@MODULECMD@" "$@"
+10
View File
@@ -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
View File
@@ -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
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+45 -25
View File
@@ -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..."
}
+2 -2
View File
@@ -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