diff --git a/bin/bootstrap b/bin/bootstrap index 97b5121..faf4afb 100755 --- a/bin/bootstrap +++ b/bin/bootstrap @@ -7,6 +7,7 @@ usage() { usage: bootstrap [options] [dest_dir] options: --help Print this message + --experiment expname customize for experiment expname --query-packages Run make_packages_yaml rather than putting in templated packages.yaml --with_padding Set padding in spack config --fermi_spack_tools_release ver fetch the labeled version of fermi_spack_tools @@ -26,7 +27,8 @@ default_fermi_spack_tools_repo=https://github.com/FNALssi/fermi-spack-tools.git parse_args() { with_padding="" - if x=$(getopt --options "" --longoptions with_padding,help,query-packages,fermi_spack_tools_release:,spack_release:,spack_repo:,fermi_spack_tools_repo: -- "$@") + experiment_list="" + if x=$(getopt --options "" --longoptions with_padding,help,query-packages,experiment:,fermi_spack_tools_release:,spack_release:,spack_repo:,fermi_spack_tools_repo: -- "$@") then eval set : $x shift @@ -47,6 +49,7 @@ parse_args() { x--with_padding) with_padding="--with_padding"; shift;; x--spack_release) spack_version=$2; shift; shift ;; x--query-packages) query_packages="--query-packages"; shift ;; + x--experiment) experiment_list="$experiment_list $2"; shift; shift ;; x--spack_repo) spack_repo=$2; shift; shift ;; x--fermi_spack_tools_release) ver=$2; shift; shift ;; x--fermi_spack_tools_repo) fermi_spack_tools_repo=$2; shift; shift ;; @@ -136,7 +139,7 @@ main() { PATH=$fst/bin:$PATH message "Setting up with make_spack" - sh -x $fst/bin/make_spack --verbose $query_packages --spack_release $spack_version --spack_repo $spack_repo $with_padding --minimal -u $dest + sh -x $fst/bin/make_spack --verbose $query_packages --spack_release $spack_version --spack_repo $spack_repo $with_padding --minimal -u --experiment "$experiment_list" $dest message "Setting up new instance" diff --git a/bin/make_spack b/bin/make_spack index 6bc3782..9c26ae9 100755 --- a/bin/make_spack +++ b/bin/make_spack @@ -93,6 +93,20 @@ clone_repos() { } fi fi + # if we added a repository not in repos.yaml, add it + pstr=$(uname -s | tr A-Z a-z) + if [ $repo_type = "recipes" ] + then + repof=$dir/etc/spack/$pstr/repos.yaml + config_ddir=$(echo $ddir | sed -e "s;$dir;\$spack;") + if grep "\\$config_ddir" $repof > /dev/null + then + : + else + echo "adding $ddir to repos.yaml" + echo "- $config_ddir" >> $repof + fi + fi done <&2 get_from_bootstrap() { grep "^$1=" $spackbindir/bootstrap | sed -e 's/.*=//' } +get_experiment_repos() { + experiment_repos="" + for exp in $experiment_list + do + case $exp in + mu2e) + experiment_repos="$experiment_repos + $dir/var/spack/repos/mu2e-spack main https://github.com/Mu2e/mu2e-spack.git" + ;; + larsoft) + experiment_repos="$experiment_repos + $dir/var/spack/repos/nusofthep-spack-recipes main https://github.com/NuSoftHEP/nusofthep-spack-recipes.git + $dir/var/spack/repos/larsoft-spack-recipes main https://github.com/LArSoft/larsoft-spack-recipes.git" + ;; + dune) + experiment_repos="$experiment_repos + $dir/var/spack/repos/nusofthep-spack-recipes main https://github.com/NuSoftHEP/nusofthep-spack-recipes.git + $dir/var/spack/repos/larsoft-spack-recipes main https://github.com/LArSoft/larsoft-spack-recipes.git + $dir/var/spack/repos/dune_spack main https://github.com/DUNE/dune_spack" + ;; + nova) + ;; + esac + done +} + parse_args() { spack_repo=$(get_from_bootstrap default_spack_repo) spack_release=$(get_from_bootstrap default_spack_version) @@ -230,9 +271,10 @@ parse_args() { verbose=false depth=1 no_recipes=false + experiment_list="" origargs="$*" - if x=$(getopt --longoptions help,depth,with_padding,upgrade,upgrade-etc,upgrade-extensions,upgrade-recipes,upgrade-spack,spack_release:,minimal,no-recipe-repos,no_buildcache,repover,spack_repo:,query-packages,verbose --options mptuv -- "$@") + if x=$(getopt --longoptions help,depth,with_padding,experiment:,upgrade,upgrade-etc,upgrade-extensions,upgrade-recipes,upgrade-spack,spack_release:,minimal,no-recipe-repos,no_buildcache,repover,spack_repo:,query-packages,verbose --options mptuv -- "$@") then eval set : $x shift @@ -243,11 +285,13 @@ parse_args() { while echo x$1 | grep x- > /dev/null do case "x$1" in + x--help) usage; exit 0;; x--depth) depth=$2; shift;; x--with_padding) padding=true; shift ;; x--upgrade) echo "Deprecated option --upgrade ignored: use --upgrade-{etc,extensions,recipes,spack} "; shift;; x--upgrade-*) eval upgrade_${1##*-}=1; shift;; x--spack_release) spack_release=$2; shift; shift ;; + x--experiment) experiment_list="$experiment_list $2"; shift; shift ;; x--spack_repo) spack_repo=$2; shift; shift;; x--minimal) minimal=true; shift ;; x--query-packages) query_packages=true; shift ;; @@ -302,16 +346,30 @@ do_keys() { spack buildcache keys --install --force --trust } +do_experiment_mirrors() { + for exp in $experiment_list + do + mf="$dir/etc/spack/linux/mirrors.yaml" + case $exp in + mu2e) + echo " mu2e: https://spack-cache-1.fnal.gov/binaries/mu2e" >> $mf + ;; + esac + done +} + main() { : starting: $* find_ourselves parse_args "$@" + get_experiment_repos clone_repos add_fermi_setups add_fermi_patches do_padding + do_experiment_mirrors do_spack_bootstrap do_keys query_packages