diff options
author | Jonathon Anderson <17242663+blue42u@users.noreply.github.com> | 2022-08-02 13:45:50 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-02 11:45:50 -0700 |
commit | 8c50ea9dc0715617405a5f6688babbe9e317b32c (patch) | |
tree | 2ad7afb9dfd2a179c75094ebb9a904acbd447bb2 /lib | |
parent | 6e0b7959a46ae2ff92af78524a50943179a12f0e (diff) | |
download | spack-8c50ea9dc0715617405a5f6688babbe9e317b32c.tar.gz spack-8c50ea9dc0715617405a5f6688babbe9e317b32c.tar.bz2 spack-8c50ea9dc0715617405a5f6688babbe9e317b32c.tar.xz spack-8c50ea9dc0715617405a5f6688babbe9e317b32c.zip |
spack ci rebuild: Don't install in a login shell (#31771)
On some systems the shell in login mode wipes important parts of the
environment, such as PATH. This causes the build to fail since it can't
find `spack`.
For better robustness, don't use a login shell.
In a full CI job the final spack install is run in an environment formed by scripts running in this order:
export AWS_SECRET=... # 1. Load environment from GitLab project variables
source spack/share/spack/setup-env.sh # 2. Load Spack into the environment (PATH)
spack env activate -V concrete_env # 3. Activate the concrete environment
source /etc/profile # 4. Bash login shell (from -l)
spack install ...
Whereas when a user launches their own container with (docker|podman) run -it, they end up running spack install in an environment formed in this order:
source /etc/bash.bashrc # (not 4). Bash interactive shell (default with TTY)
export AWS_SECRET=... #~1. Manually load environment from GitLab project variables
source spack/share/spack/setup-env.sh # 2. Load Spack into the environment (PATH)
spack env activate -V concrete_env # 3. Activate the concrete environment
spack install ...
The big problem being that (4) has a completely different position and content (on Leap 15 and possibly other containers).
So in context, this PR removes (4) from the CI job case, leaving us with the simpler:
export AWS_SECRET=... # 1. Load environment from GitLab project variables
source spack/share/spack/setup-env.sh # 2. Load Spack into the environment (PATH)
spack env activate -V concrete_env # 3. Activate the concrete environment
spack install ...
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/spack/cmd/ci.py | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/spack/spack/cmd/ci.py b/lib/spack/spack/cmd/ci.py index 4944f61b2a..3087a7881e 100644 --- a/lib/spack/spack/cmd/ci.py +++ b/lib/spack/spack/cmd/ci.py @@ -521,10 +521,9 @@ def ci_rebuild(args): install_copy_path = os.path.join(repro_dir, "install.sh") shutil.copyfile("install.sh", install_copy_path) - # Run the generated install.sh shell script as if it were being run in - # a login shell. + # Run the generated install.sh shell script try: - install_process = subprocess.Popen(["bash", "-l", "./install.sh"]) + install_process = subprocess.Popen(["bash", "./install.sh"]) install_process.wait() install_exit_code = install_process.returncode except (ValueError, subprocess.CalledProcessError, OSError) as inst: |