Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
S
src
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
9
Issues
9
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Code Review
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Pmodules
src
Commits
5183f477
Commit
5183f477
authored
Oct 30, 2020
by
gsell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
more changes to build script
parent
c45982a6
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
119 additions
and
101 deletions
+119
-101
build
build
+119
-101
No files found.
build
View file @
5183f477
#!/bin/bash
#!/usr/bin/env bash
#
if
[
"${BASH_VERSINFO[0]}"
-
lt
4
];
then
echo
"BASH version >= 4 is required and must be available in PATH!"
1
>&
2
exit
1
fi
declare
BOOTSTRAP_DIR
=
$
(
dirname
"$0"
)
source
"${BOOTSTRAP_DIR}/Pmodules/libstd.bash"
||
{
echo
"Oops!"
1
>&
2
;
exit
42
;
}
...
...
@@ -6,21 +11,20 @@ source "${BOOTSTRAP_DIR}/Pmodules/libstd.bash" || { echo "Oops!" 1>&2; exit 42;
declare
-
r
BOOTSTRAP_DIR
=
$
(
std
::
get_abspath
"${BOOTSTRAP_DIR}"
)
declare
-
r
SRC_DIR
=
"${BOOTSTRAP_DIR}/Pmodules"
# not used here
unset
PMODULES_ROOT
# these variables are re-declared and set in the configuration file
unset
PMODULES_HOME
unset
PMODULES_DISTFILESDIR
# these variables need to be defined but must be initialized with an empty string
declare
-
x
PMODULES_ROOT
=
''
PMODULES_HOME
=
''
declare
-
x
PMODULES_DISTFILESDIR
=
''
declare
-
x
PMODULES_TMPDIR
=
''
declare
-
rx
CONFIG_DIR
=
'config'
declare
-
rx
CONFIG_FILE
=
'modbuild.conf'
# defaults
declare
-
rx
DEFAULT_PMODULES_ROOT
=
'/opt/psi'
declare
-
rx
DEFAULT_
PMODULES_DISTFILESDIR
=
"${DEFAULT_PMODULES_ROOT}/
var/distfiles"
declare
-
rx
DEFAULT_
DISTFILES_DIR
=
"
var/distfiles"
declare
-
rx
DEFAULT_VERSIONS_CONFIG
=
"${CONFIG_DIR}/versions.conf"
declare
-
rx
DEFAULT_
PMODULES_TMPDIR
=
'/
var/tmp/${USER}'
declare
-
rx
DEFAULT_
TMPDIR
=
'
var/tmp/${USER}'
#-----------------------------------------------------------------------------
#
...
...
@@ -41,12 +45,55 @@ build [OPTIONS] configure|compile|install
std
::
die
1
""
}
#-----------------------------------------------------------------------------
#
read_config_file
()
{
local
var
=
"$1"
local
fname
=
"${!var}"
if
[[
-
n
"${fname}"
]]
&&
[[
-
n
"${PMODULES_ROOT}"
]];
then
std
::
die
1
"You cannot use the options '--config' and '--pmodules-root at the same time!"
fi
if
[[
-
n
"${PMODULES_ROOT}"
]];
then
fname
=
"${PMODULES_ROOT}/${CONFIG_DIR}/${CONFIG_FILE}"
elif
[[
-
n
"${fname}"
]];
then
:
else
fname
=
"${BOOTSTRAP_DIR}/${CONFIG_DIR}/${CONFIG_FILE}"
fi
if
[[
!
-
r
"${fname}"
]];
then
std
::
die
1
"Configuration file '${fname}' does not exist or is not readable!"
fi
source
"${fname}"
||
std
::
die
1
"Cannot read configuration file '${fname}'"
# we have to make these variables global, otherwise they are not set
# in the calling function
declare
-
g
PMODULES_ROOT
=
"${PMODULES_ROOT}"
declare
-
g
PMODULES_HOME
=
"${PMODULES_HOME}"
declare
-
g
PMODULES_DISTFILESDIR
=
"${PMODULES_DISTFILESDIR}"
declare
-
g
PMODULES_TMPDIR
=
"${PMODULES_TMPDIR}"
if
[[
-
z
"${PMODULES_ROOT}"
]];
then
std
::
die
1
"Error in configuration file '${fname}': PMODULE_ROOT not defined!"
fi
if
[[
-
z
"${PMODULES_VERSION}"
]];
then
std
::
die
1
"Error in configuration file '${fname}': PMODULE_VERSION not defined!"
fi
if
[[
-
z
"${PMODULES_DISTFILESDIR}"
]];
then
std
::
die
1
"Error in configuration file '${fname}': PMODULES_DISTFILESDIR not defined!"
fi
if
[[
-
z
"${PMODULES_TMPDIR}"
]];
then
std
::
die
1
"Error in configuration file '${fname}': PMODULE_TMPDIR not defined!"
fi
std
::
upvar
"${var}"
"${fname}"
}
#-----------------------------------------------------------------------------
#
pmodules
::
configure
()
{
local
pmodules_root
=
"${DEFAULT_PMODULES_ROOT}"
local
distfilesdir
=
"${DEFAULT_PMODULES_DISTFILESDIR}"
local
tmpdir
=
"${DEFAULT_PMODULES_TMPDIR}"
local
distfilesdir
=
''
local
tmpdir
=
''
local
config_file
=
''
local
opt_force
=
'no'
...
...
@@ -92,9 +139,9 @@ pmodules::configure() {
esac
shift
1
done
if
[[
-
n
"${config_file}"
]];
then
config_file
=
$
(
std
::
abspath
"${config_file}"
)
if
[[
$
(
dirname
"${config_file}"
!=
"${BOOTSTRAP_DIR}/${CONFIG_DIR}"
]];
then
if
[[
-
n
"${config_file}"
]];
then
config_file
=
$
(
std
::
get_
abspath
"${config_file}"
)
if
[[
$
(
dirname
"${config_file}"
)
!=
"${BOOTSTRAP_DIR}/${CONFIG_DIR}"
]];
then
echo
"Invalid directory for The configuration file."
1
>&
2
std
::
die
1
"The configuration file must be in '${BOOTSTRAP_DIR}/${CONFIG_DIR}'!"
fi
...
...
@@ -114,13 +161,17 @@ pmodules::configure() {
std
::
die
1
"Aborting..."
if
[[
"${opt_force}"
==
'yes'
]];
then
rm
-
f
"${
BOOTSTRAP_DIR}/${CONFIG_DIR}/${
config_file}"
rm
-
f
"${config_file}"
fi
if
[[
-
L
$
{
BOOTSTRAP_DIR
}
/
$
{
CONFIG_DIR
}
/
$
{
config_file
}
]];
then
if
[[
-
L
"${config_file}"
]];
then
std
::
die
1
"The Pmodules environment has already been configured!
Use the option --force to override.
\n
Aborting..."
fi
[[
-
z
"${distfilesdir}"
]]
&&
distfilesdir
=
"${pmodules_root}/${DEFAULT_DISTFILES_DIR}"
[[
-
z
"${tmpdir}"
]]
&&
tmpdir
=
"${pmodules_root}/${DEFAULT_TMPDIR}"
sed_cmd
=
"s:@PMODULES_ROOT@:${pmodules_root}:g;"
sed_cmd
+=
"s:@PMODULES_DISTFILESDIR@:${distfilesdir}:g;"
sed_cmd
+=
"s:@PMODULES_TMPDIR@:${tmpdir}:g;"
...
...
@@ -130,14 +181,22 @@ Use the option --force to override.\nAborting..."
>
"${pmodules_root}/${CONFIG_DIR}/${CONFIG_FILE}"
||
\
std
::
die
1
"Cannot create configuration file in Pmodules root
\n
Aborting..."
ln
-
s
"${pmodules_root}/${CONFIG_DIR}/${CONFIG_FILE}"
\
"${BOOTSTRAP_DIR}/${CONFIG_DIR}/${config_file}"
"${config_file}"
||
\
std
::
die
1
"Aborting..."
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: ${pmodules_root}"
echo
" Pmodule prefix: ${PMODULES_HOME}"
echo
" tmp directory: ${tmpdir}"
echo
" store for downloaded files: ${distfilesdir}"
echo
"Done..."
}
#-----------------------------------------------------------------------------
...
...
@@ -157,7 +216,7 @@ pmodules::compile() {
std
::
die
3
"Compiling '${name}' failed!"
}
local
force
=
'no'
local
opt_
force
=
'no'
local
config_file
=
''
while
((
$
# > 0 )); do
...
...
@@ -183,7 +242,7 @@ pmodules::compile() {
PMODULES_ROOT
=
"${1#*=}"
;;
-
f
|
--
force
)
force
=
'yes'
opt_
force
=
'yes'
;;
-*
)
std
::
die
1
"$1: illegal option"
...
...
@@ -195,50 +254,33 @@ pmodules::compile() {
shift
1
done
if
[[
-
n
"${config_file}"
]]
&&
[[
-
n
"${PMODULES_ROOT}"
]];
then
std
::
die
1
"You cannot use the options '--config' and '--pmodules-root at the same time!"
fi
if
[[
-
n
"${PMODULES_ROOT}"
]];
then
config_file
=
"${PMODULES_ROOT}/${CONFIG_DIR}/${CONFIG_FILE}"
elif
[[
-
z
"${config_file}"
]];
then
config_file
=
"${BOOTSTRAP_DIR}/${CONFIG_DIR}/$(basename ${config_file})"
fi
if
[[
!
-
r
"${config_file}"
]];
then
std
::
die
1
"Configuration file '${config_file}' does not exist or is not readable!"
fi
source
"${config_file}"
||
std
::
die
1
"Cannot read configuration file '${config_file}'"
echo
"Configuration:"
echo
" root of Pmodules environment: ${pmodules_root}"
echo
" Pmodule prefix: ${PMODULES_HOME}"
if
[[
-
z
"${PMODULES_ROOT}"
]];
then
std
::
die
1
"Error in configuration file '${config_file}': PMODULE_ROOT not defined!"
fi
if
[[
-
z
"${PMODULES_DISTFILESDIR}"
]];
then
std
::
die
1
"Error in configuration file '${config_file}': PMODULES_DISTFILESDIR not defined!"
fi
if
[[
-
z
"${PMODULES_TMPDIR}"
]];
then
std
::
die
1
"Error in configuration file '${config_file}': PMODULE_TMPDIR not defined!"
fi
read_config_file
config_file
if
[[
!
-
f
"${PMODULES_HOME}/sbin/base64"
]]
||
[[
$
{
force
}
==
'yes'
]];
then
if
[[
!
-
f
"${PMODULES_HOME}/sbin/base64"
]]
||
[[
$
{
opt_
force
}
==
'yes'
]];
then
build
coreutils
fi
if
[[
!
-
f
"${PMODULES_HOME}/sbin/xgettext"
]]
||
[[
$
{
force
}
==
'yes'
]];
then
if
[[
!
-
f
"${PMODULES_HOME}/sbin/xgettext"
]]
||
[[
$
{
opt_
force
}
==
'yes'
]];
then
build
gettext
fi
if
[[
!
-
f
"${PMODULES_HOME}/sbin/getopt"
]]
||
[[
$
{
force
}
==
'yes'
]];
then
if
[[
!
-
f
"${PMODULES_HOME}/sbin/getopt"
]]
||
[[
$
{
opt_
force
}
==
'yes'
]];
then
build
getopt
fi
if
[[
!
-
f
"${PMODULES_HOME}/sbin/bash"
]]
||
[[
$
{
force
}
==
'yes'
]];
then
if
[[
!
-
f
"${PMODULES_HOME}/sbin/bash"
]]
||
[[
$
{
opt_
force
}
==
'yes'
]];
then
build
bash
fi
if
[[
!
-
e
"${PMODULES_HOME}/sbin/tclsh"
]]
||
[[
$
{
force
}
==
'yes'
]];
then
if
[[
!
-
e
"${PMODULES_HOME}/sbin/tclsh"
]]
||
[[
$
{
opt_
force
}
==
'yes'
]];
then
build
Tcl
fi
if
[[
!
-
e
"${PMODULES_HOME}/libexec/modulecmd.bin"
]]
||
[[
$
{
force
}
==
'yes'
]];
then
if
[[
!
-
e
"${PMODULES_HOME}/libexec/modulecmd.bin"
]]
||
[[
$
{
opt_
force
}
==
'yes'
]];
then
build
modules
fi
echo
"Done..."
...
...
@@ -247,8 +289,8 @@ pmodules::compile() {
#-----------------------------------------------------------------------------
#
pmodules
::
install
()
{
local
config_file
=
''
local
opt_force
=
'no'
local
config_file
=
"${BOOTSTRAP_DIR}/${DEFAULT_MODBUILD_CONFIG}"
while
((
$
# > 0 )); do
case
$
1
in
...
...
@@ -285,26 +327,15 @@ pmodules::install() {
shift
1
done
source
"${config_file}"
if
[[
!
-
d
"${PMODULES_ROOT}"
]];
then
read
-
p
"The requested root directory does not exist. Create it? [y|N] "
-
n
1
ans
case
$
{
ans
}
in
y
|
Y
)
mkdir
-
p
"${PMODULES_ROOT}"
;;
*
)
echo
"Aborting ..."
1
>&
2
exit
2
;;
esac
fi
read_config_file
'config_file'
###
#
# begin installation
#
echo
"Installing to ${PMODULES_HOME} ..."
echo
"Configuration:"
echo
" root of Pmodules environment: ${PMODULES_ROOT}"
echo
" Pmodule prefix: ${PMODULES_HOME}"
sed_cmd
=
"s:@PMODULES_HOME@:${PMODULES_HOME}:g;"
sed_cmd
+=
"s:@PMODULES_VERSION@:${PMODULES_VERSION}:g;"
sed_cmd
+=
"s:@MODULES_VERSION@:${MODULES_VERSION}:g;"
...
...
@@ -319,50 +350,31 @@ pmodules::install() {
sed_cmd
+=
"s:@initdir@:${PMODULES_HOME}/init:g;"
sed_cmd
+=
"s:@MODULES_RELEASE@:${PMODULES_VERSION}:g;"
sed
"${sed_cmd}"
"${SRC_DIR}/modulecmd.bash.in"
>
"${SRC_DIR}/modulecmd.bash"
sed
"${sed_cmd}"
"${SRC_DIR}/modulecmd.tcl.in"
>
"${SRC_DIR}/modulecmd.tcl"
sed
"${sed_cmd}"
"${SRC_DIR}/modbuild.in"
>
"${SRC_DIR}/modbuild"
chmod
0755
"${SRC_DIR}/modbuild"
sed
"${sed_cmd}"
"${SRC_DIR}/modmanage.bash.in"
>
"${SRC_DIR}/modmanage.bash"
sed
"${sed_cmd}"
"${SRC_DIR}/profile.bash.in"
>
"${SRC_DIR}/profile.bash"
sed
"${sed_cmd}"
"${SRC_DIR}/profile.csh.in"
>
"${SRC_DIR}/profile.csh"
sed
"${sed_cmd}"
"${SRC_DIR}/profile.zsh.in"
>
"${SRC_DIR}/profile.zsh"
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"
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}"
sed
"${sed_cmd}"
"${SRC_DIR}/profile.zsh.in"
>
"${PMODULES_ROOT}/${CONFIG_DIR}/profile.zsh-${PMODULES_VERSION}"
chmod
0644
"${PMODULES_ROOT}/${CONFIG_DIR}"
/*-
$
{
PMODULES_VERSION
}
install
-
m
0755
"${SRC_DIR}/modulecmd"
"${PMODULES_HOME}/bin"
install
-
m
0755
"${SRC_DIR}/modulecmd.bash"
"${PMODULES_HOME}/libexec"
install
-
m
0755
"${SRC_DIR}/modulecmd.tcl"
"${PMODULES_HOME}/libexec"
install
-
m
0755
"${SRC_DIR}/modmanage"
"${PMODULES_HOME}/bin"
install
-
m
0755
"${SRC_DIR}/modmanage.bash"
"${PMODULES_HOME}/libexec"
install
-
m
0755
"${SRC_DIR}/modbuild"
"${PMODULES_HOME}/bin"
test
-
e
"${PMODULES_ROOT}/${CONFIG_DIR}/profile.bash"
||
\
install
-
m
0644
"$_-${PMODULES_VERSION}"
"$_"
install
-
m
0755
"${SRC_DIR}/profile.bash"
"${PMODULES_HOME}/config/profile.bash.sample"
install
-
m
0755
"${SRC_DIR}/profile.csh"
"${PMODULES_HOME}/config/profile.csh.sample"
install
-
m
0755
"${SRC_DIR}/profile.zsh"
"${PMODULES_HOME}/config/profile.zsh.sample"
test
-
e
"${PMODULES_ROOT}/${CONFIG_DIR}/profile.csh"
||
\
install
-
m
0644
"$_-${PMODULES_VERSION}"
"$_"
test
-
e
"${PMODULES_ROOT}/${PMODULES_CONFIG_DIR}"
||
mkdir
-
p
"$_"
test
-
e
"${PMODULES_ROOT}/${CONFIG_DIR}/profile.zsh"
||
\
install
-
m
0644
"$_-${PMODULES_VERSION}"
"$_"
test
-
e
"${PMODULES_ROOT}/${PMODULES_CONFIG_DIR}/profile.bash"
||
\
install
-
m
0755
"${SRC_DIR}/profile.bash"
"$_"
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.bash.in"
>
"${PMODULES_HOME}/libexec/modmanage.bash"
chmod
0755
"${PMODULES_HOME}/libexec/modmanage.bash"
test
-
e
"${PMODULES_ROOT}/${PMODULES_CONFIG_DIR}/profile.csh"
||
\
install
-
m
0755
"${SRC_DIR}/profile.csh"
"$_"
test
-
e
"${PMODULES_ROOT}/${PMODULES_CONFIG_DIR}/profile.zsh"
||
\
install
-
m
0755
"${SRC_DIR}/profile.zsh"
"$_"
test
-
e
"${PMODULES_ROOT}/${PMODULES_CONFIG_DIR}/modbuild.conf"
||
\
install
-
m
0755
"${config_file}"
"$_"
mkdir
-
p
"${PMODULES_ROOT}/Tools/modulefiles"
mkdir
-
p
"${PMODULES_ROOT}/Libraries/modulefiles"
test
-
e
"${PMODULES_DISTFILESDIR}"
||
mkdir
-
p
"$_"
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"
...
...
@@ -377,9 +389,15 @@ pmodules::install() {
install
-
m
0644
"${SRC_DIR}/libmodules.tcl"
"${PMODULES_HOME}/lib/Pmodules"
{
PATH
=
"${PMODULES_HOME}/sbin:${PATH}"
cd
"${PMODULES_HOME}/lib/Pmodules"
"${BOOTSTRAP_DIR}/mkindex.tcl"
}
mkdir
-
p
"${PMODULES_ROOT}/Tools/modulefiles"
mkdir
-
p
"${PMODULES_ROOT}/Libraries/modulefiles"
echo
"Done..."
}
#=============================================================================
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment