Populate staging area and relocate to release root

This commit is contained in:
Jose Gracia 2024-08-26 10:42:04 -05:00
parent 5bf6349a64
commit 8c890b97e8

View file

@ -31,23 +31,10 @@
# └── ...
#
_VERBOSITY=1
if [[ "$#" -ne 2 ]]; then
echo "Syntax: $0 release_tag base_prefix"
echo "Populates directory <base_prefix>/release/<release_tag> with the release tagged as <release_tag>."
# TODO: exit with error code
fi
echo "TODO: check for $TMPDIR"
arg_tag=$1
arg_prefix=$2
log () {
local msg=$1
if [[ -n $_VERBOSITY ]]; then
echo $msg
echo "### $msg"
fi
}
@ -73,42 +60,88 @@ create_dir () {
}
# process input arguments
HLRS_SOFTWARE_STACK_RELEASE_VERSION__USER=$(canonize_tag $arg_tag)
HLRS_OPT_PREFIX__USER=$(create_dir $arg_prefix)
_VERBOSITY=1
if [[ "$#" -ne 2 ]]; then
echo "Syntax: $0 release_tag base_prefix"
echo "Populates directory <base_prefix>/release/<release_tag> with the release tagged as <release_tag>."
# TODO: exit with error code
fi
echo "TODO: check for \$TMPDIR and execution bit in \$TMPDIR"
# process script arguments
arg_tag=$(canonize_tag $1)
arg_prefix=$2
# Define various repo locations
_HLRS_SPACK_REPO=file://$HOME/spack-test/dummy_repo/spack-v0.21.2.git
_HLRS_SPACK_PLUMBING_REPO=file://$HOME/spack-test/dummy_repo/software-stack-plumbing.git
_HLRS_SPACK_CONFIG_REPO=file://$HOME/spack-test/dummy_repo/software-stack-hlrs-spack.git
_HLRS_SPACK_REPO=file://$HOME/spack-test/dummy_repo/spack.git
_HLRS_SPACK_PLUMBING_REPO=file://$HOME/spack-test/dummy_repo/release_root.git
_HLRS_SPACK_CONFIG_REPO=file://$HOME/spack-test/dummy_repo/hlrs-spack.git
# bootstrap environment variables
# (using [bash process substitution](https://tldp.org/LDP/abs/html/process-sub.html))
log "### bootstrap environment variables"
source <(curl -L $_HLRS_SPACK_PLUMBING_REPO/hlrs-plumbing/envs/00_base_prefix.env)
source <(curl -L $_HLRS_SPACK_PLUMBING_REPO/hlrs-plumbing/envs/01_release_root.env)
source <(curl -L $_HLRS_SPACK_PLUMBING_REPO/hlrs-plumbing/envs/02_hlrs_spack_root.env)
log "### ... done"
# setup plumbing directory
log "### setup plumbing directory"
# bootstrap staging area
log "setup staging area at:"
staging_dir=$(mktemp -d)/staging
log " $staging_dir"
# bootstrap plumbing directory
log "bootstrap plumbing directory ..."
curl -L $_HLRS_SPACK_PLUMBING_REPO/hlrs-plumbing/scripts/xx_checkout_repo.sh | \
bash -s -- $_HLRS_SPACK_PLUMBING_REPO \
$arg_tag $staging_dir .
plumbing_dir=$staging_dir/hlrs-plumbing
log "... done"
# set anchors for environment variables to staging area
HLRS_SOFTWARE_STACK_RELEASE_VERSION__USER=$arg_tag
HLRS_OPT_PREFIX__USER=$(create_dir $staging_dir/prefix)
# bootstrap environment variables
log "bootstrap environment variables ..."
source $plumbing_dir/envs/00_base_prefix.env
source $plumbing_dir/envs/01_release_root.env
source $plumbing_dir/envs/02_hlrs_spack_root.env
log "... done"
# setup plumbing directory
log "setup plumbing directory ..."
$plumbing_dir/scripts/xx_checkout_repo.sh $_HLRS_SPACK_PLUMBING_REPO \
$HLRS_SOFTWARE_STACK_RELEASE_VERSION $HLRS_SOFTWARE_STACK_RELEASE_ROOT .
_HLRS_PLUMBING_DIR=$HLRS_SOFTWARE_STACK_RELEASE_ROOT/hlrs-plumbing
log "### ... done"
log "... done"
# setup hlrs-spack directory
log "### setup hlrs-spack directory"
$_HLRS_PLUMBING_DIR/scripts/xx_checkout_repo.sh $_HLRS_SPACK_CONFIG_REPO \
log "setup hlrs-spack directory ..."
$plumbing_dir/scripts/xx_checkout_repo.sh $_HLRS_SPACK_CONFIG_REPO \
$HLRS_SOFTWARE_STACK_RELEASE_VERSION $HLRS_SOFTWARE_STACK_RELEASE_ROOT hlrs-spack
log "### ... done"
log "... done"
# setup $SPACK_ROOT directory
log "### setup $SPACK_ROOT directory"
$_HLRS_PLUMBING_DIR/scripts/xx_checkout_repo.sh $_HLRS_SPACK_REPO \
log "setup $SPACK_ROOT directory ..."
$plumbing_dir/scripts/xx_checkout_repo.sh $_HLRS_SPACK_REPO \
$HLRS_SOFTWARE_STACK_RELEASE_VERSION $HLRS_SOFTWARE_STACK_HLRS_SPACK_ROOT spack
log "### ... done"
log "... done"
# setup opt-non-spack
# TODO
# TODO
# re-evaluate environment variables
log "bootstrap final environment variables ..."
staging_release_root=$HLRS_SOFTWARE_STACK_RELEASE_ROOT
source $plumbing_dir/envs/xx_unload_env.env
HLRS_OPT_PREFIX__USER=$(create_dir $arg_prefix)
source $plumbing_dir/envs/00_base_prefix.env
source $plumbing_dir/envs/01_release_root.env
log "... done"
# move to final destination
log "move release root to final destination at:"
log " $HLRS_SOFTWARE_STACK_RELEASE_ROOT"
final_release_root=$(create_dir $HLRS_SOFTWARE_STACK_RELEASE_ROOT)
## TODO: check dir above; refuse to overwrite
mv $staging_release_root/{*,.git} $final_release_root
## TODO: remove staging dir