pantsbuild / scie-pants

Protects your Pants from the elements.
https://www.pantsbuild.org/docs/installation
Apache License 2.0
19 stars 19 forks source link

Exit code 137 with scie-pants 0.8.2 #205

Closed erjac77 closed 1 year ago

erjac77 commented 1 year ago

Hi,

Since upgrading to scie-pants 0.8.2, we are getting exit code 137 in our CI (Concourse) for all pipelines using Pants to build docker images.

------
 > [ci 4/4] RUN ./get-pants.sh     && pants --version:
#12 0.369 Downloading and installing the pants launcher ...
#12 1.031 Installed the pants launcher from https://github.com/pantsbuild/scie-pants/releases/latest/download/scie-pants-linux-x86_64 to /root/bin/pants
#12 1.031 
#12 1.031 Running `pants` in a Pants-enabled repo will use the version of Pants configured for that repo.
#12 1.031 In a repo not yet Pants-enabled, it will prompt you to set up Pants for that repo.
main' panicked at 'Failed to write data to output: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }', src/main.rs:68:14
#12 1.473 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
#12 1.474 /bin/bash: line 1:    27 Killed                  pants --version
------
...
error: failed to solve: process "/bin/bash -o pipefail -c ./get-pants.sh     && pants --version" did not complete successfully: exit code: 137

If we downgrade to 0.8.1 using the following command in our Dockerfile, it works again :

RUN ./get-pants.sh -V 0.8.1 \
    && pants --version

Seems related to the environment variables and the fix to handle non-utf8 vars. Take note that we can build the image locally without error.

Thank you.

jsirois commented 1 year ago

@erjac77 Can you provide the Pants version and run with RUST_BACKTRACE=1 as suggested above and report back?

jsirois commented 1 year ago

Looking at the 4 possible src/main.rs it could be:

1. [`scie-jump` | `ptex`]
2.   -> `scie-pants`
3.     (-> `pants native client`)

It looks like it can only be from phase 1, the scie-jump launch which uses ptex which fails here: https://github.com/a-scie/ptex/blob/v0.7.0/src/main.rs#L64-L68

The ptex binary is embedded in scie-pants, extracted under ~/.nce and then used to fetch the Python Build Standalone CPython 3.9 distribution from GitHub Releases.

The BrokenPipe + Killed + exit code: 137 (128 + 9 = 137) => -9 => SIGKILL And a process getting SIGKILLed on Linux when you weren't firing off kill -9's willy-nilly means the OS did it (OOMKiller); so this is almost certainly the box / vm / container / what have you running out of memory. I am not seeing how the scie-jump change would lead to memory exhaustion, it actually does a very tiny bit less work now! (only decodes particular env vars instead of all of them). Is there any other variable you can think of @erjac77? In particular, upgrading scie-pants means any cache you have is blown away and PBS CPython 3.9 is re-downloaded, which is what is going on here. If the ~/.nce/ was / is cached, scie-pants 0.8.1 will pull from that cache but 0.8.2 will not (it will need to populate new cache entries. The failure is doing exactly that.

jsirois commented 1 year ago

@erjac77 I'm going to tentatively label this question, since I think I've read enough tea leaves here to give good odds this is not actually the 0.8.1 -> 0.8.2 upgrade but something else that's been hidden bu the 0.8.1 cache hits. You could test that - if you dare - by blowing away the ~/.nce cache and seeing if 0.8.1 fails in the same way. I'm betting it will.

jsirois commented 1 year ago

Looking at that version of scie-pants I find:

$ SCIE=inspect pants | jq '{scie_pants_version: .science.git_state, scie_jump_version: .scie.jump.version, files:.scie.lift.files[] | select(.key ==
 "cpython39") | {name:.name, size:.size}}'
{
  "scie_pants_version": "v0.8.2-0-g3fdd677",
  "scie_jump_version": "0.11.1",
  "files": {
    "name": "cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz",
    "size": 25738357
  }
}

So that's scie-pants v0.8.2 using scie-jump 0.11.1 (the one with the utf8 env var fix) and the file it's trying to fetch for you is ~26MB.

erjac77 commented 1 year ago

Hi @jsirois , we don't use remote caching for now in Concourse, so it starts with a fresh install for each run. We use pants version 2.16.0rc4.

I ran the pipeline with RUST_BACKTRACE=full, but I don't see any useful messages.

#18 [build-stage 7/7] RUN ./get-pants.sh     && pants --version
#18 0.605 Downloading and installing the pants launcher ...
#18 1.587 Installed the pants launcher from https://github.com/pantsbuild/scie-pants/releases/latest/download/scie-pants-linux-x86_64 to /root/bin/pants
#18 1.587 
#18 1.587 Running `pants` in a Pants-enabled repo will use the version of Pants configured for that repo.
#18 1.587 In a repo not yet Pants-enabled, it will prompt you to set up Pants for that repo.
#18 2.199 thread 'main' panicked at 'Failed to write data to output: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }', src/main.rs:68:14
#18 2.199 stack backtrace:
#18 2.199    0:     0x7f2b0973b39c - <unknown>
#18 2.199    1:     0x7f2b096f620e - <unknown>
#18 2.199    2:     0x7f2b0971b4a4 - <unknown>
#18 2.199    3:     0x7f2b0973c877 - <unknown>
#18 2.199    4:     0x7f2b0973c5c5 - <unknown>
#18 2.199    5:     0x7f2b0973cbea - <unknown>
#18 2.199    6:     0x7f2b0973ca14 - <unknown>
#18 2.199    7:     0x7f2b0973c976 - <unknown>
#18 2.199    8:     0x7f2b0973c961 - <unknown>
#18 2.199    9:     0x7f2b096dfdd2 - <unknown>
#18 2.199   10:     0x7f2b096e0132 - <unknown>
#18 2.199   11:     0x7f2b096e6915 - <unknown>
#18 2.199   12:     0x7f2b0974ce62 - <unknown>
#18 2.199   13:     0x7f2b09753788 - <unknown>
#18 2.199   14:     0x7f2b0974af93 - <unknown>
#18 2.199   15:     0x7f2b0974b4b8 - <unknown>
#18 2.199   16:     0x7f2b0974403d - <unknown>
#18 2.199   17:     0x7f2b096e5cf5 - <unknown>
#18 2.199   18:     0x7f2b096eab7e - <unknown>
#18 2.199   19:     0x7f2b096ee009 - <unknown>
#18 2.199   20:     0x7f2b096e4373 - <unknown>
#18 2.199   21:     0x7f2b096efcc5 - <unknown>
#18 2.203 Killed
#18 ERROR: process "/bin/sh -c ./get-pants.sh     && pants --version" did not complete successfully: exit code: 137
jsirois commented 1 year ago

@erjac77 I don't mean remote caching, I mean local caching. I.E. saving the ~/.cache/nce dir.

Thanks for the rust backtrace. If you read through my spewing above, I pretty quickly figured out where this had to be and dug down through to the OOMKiller being at play here. As I mentioned, there is nothing about 0.8.1 -> 0.8.2 that should be using more memory, but it seems like you're now confirming that your CI runs always start clean-slate - no saving / restoring of the ~/.cache/nce directory - and simply toggling back and forth between scie-pants 0.8.1 <-> 0.8.2 toggles this OOMKiller. Is that correct? If so, what exactly are the specs of the host, vm or container the jobs run in? Presumably they have plenty more memory than needed by scie-pants to support Pants, which needs alot more.

Maybe you could get CI to run something like this in its bash script instead and share the results?:

 $ bash -c '
set -euo pipefail
SCIE_BASE=$(mktemp -d) pants -V &
pid="$!"
while true; do
  grep -E "^VmRSS" /proc/${pid}/status
  sleep 1
done
'
VmRSS:       256 kB
Downloading https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.9.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz...
Downloading https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.9.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz...
VmRSS:      6796 kB
VmRSS:      6796 kB
VmRSS:      6796 kB
Bootstrapping Pants 2.15.0 using cpython 3.9.16
Installing pantsbuild.pants==2.15.0 into a virtual environment at /tmp/tmp.SrJyadjrv2/c55ee58a557d20bd4b109870e5a01b264c0d501ce817cce29502b2552903834d/bindings/venvs/2.15.0
VmRSS:      6796 kB
VmRSS:      6796 kB
VmRSS:      6796 kB
VmRSS:      6796 kB
VmRSS:      6796 kB
VmRSS:      6796 kB
VmRSS:      6796 kB
VmRSS:      6796 kB
VmRSS:      6796 kB
VmRSS:      6796 kB
VmRSS:      6796 kB
VmRSS:      6796 kB
New virtual environment successfully created at /tmp/tmp.SrJyadjrv2/c55ee58a557d20bd4b109870e5a01b264c0d501ce817cce29502b2552903834d/bindings/venvs/2.15.0.
VmRSS:     32008 kB
2.15.0
grep: /proc/582168/status: No such file or directory

N.B.: I used a mktemp -d there to force a fresh nce cache and thus force a PBS download. In this example you can see that during the down ~no memory is used and then it spikes up after Pants is installed and launches in order to print our its version.

jsirois commented 1 year ago

A bit more thorough example. I include VmPeak as well and start with 0.8.1 then switch to 0.8.2:

0.8.1

$ SCIE_BOOT=update pants 0.8.1
Successfully installed scie-pants 0.8.1 to /home/jsirois/bin/pants
$ bash -c '
set -euo pipefail
SCIE_BASE=$(mktemp -d) pants -V &
pid="$!"
while true; do
  grep -E "^Vm(RSS|Peak)" /proc/${pid}/status >&2
  sleep 1
done
'
VmPeak:     9972 kB
VmRSS:       260 kB
Downloading https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.9.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz...
[00:00:00] [####>-------------------------] 4.06 MiB/24.55 MiB (eta: 1.6s)      VmPeak:     9524 kB
Downloading https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.9.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz...
[00:00:01] [######################>-------] 18.09 MiB/24.55 MiB (eta: 0.5s)     VmPeak:     9524 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
Downloading https://binaries.pantsbuild.org/tags/pantsbuild.pants/release_2.15.0...
[00:00:00] [##############################] 0B/0B (eta: 0.0s)                   VmPeak:     9604 kB
Downloading https://binaries.pantsbuild.org?prefix=wheels/3rdparty/214abc14303f11f70b1588cc828ec4b409315d0d...
[00:00:00] [##############################] 16.69 KiB/0B (eta: 0.0s)            VmPeak:     9604 kB
Bootstrapping Pants 2.15.0 using cpython 3.9.16
Installing pantsbuild.pants==2.15.0 into a virtual environment at /tmp/tmp.eTX9jFOyuk/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings/venvs/2.15.0
VmPeak:     9604 kB
VmRSS:      6832 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
VmPeak:     9604 kB
VmRSS:      6832 kB
New virtual environment successfully created at /tmp/tmp.eTX9jFOyuk/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings/venvs/2.15.0.
2.15.0
grep: /proc/584092/status: No such file or directory

0.8.2

$ SCIE_BOOT=update pants 0.8.2
Successfully installed scie-pants 0.8.2 to /home/jsirois/bin/pants
$ bash -c '
set -euo pipefail
SCIE_BASE=$(mktemp -d) pants -V &
pid="$!"
while true; do
  grep -E "^Vm(RSS|Peak)" /proc/${pid}/status >&2
  sleep 1
done
'
VmPeak:     9972 kB
VmRSS:       256 kB
Downloading https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.9.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz...
[00:00:00] [#####>------------------------] 4.82 MiB/24.55 MiB (eta: 1.6s)      VmPeak:     9604 kB
Downloading https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.9.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz...
[00:00:01] [#######################>------] 19.05 MiB/24.55 MiB (eta: 0.4s)     VmPeak:     9604 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
Downloading https://binaries.pantsbuild.org/tags/pantsbuild.pants/release_2.15.0...
[00:00:00] [##############################] 0B/0B (eta: 0.0s)                   VmPeak:     9684 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
Bootstrapping Pants 2.15.0 using cpython 3.9.16
Installing pantsbuild.pants==2.15.0 into a virtual environment at /tmp/tmp.RTOovocBrj/c55ee58a557d20bd4b109870e5a01b264c0d501ce817cce29502b2552903834d/bindings/venvs/2.15.0
VmPeak:     9684 kB
VmRSS:      6852 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
VmPeak:     9684 kB
VmRSS:      6852 kB
New virtual environment successfully created at /tmp/tmp.RTOovocBrj/c55ee58a557d20bd4b109870e5a01b264c0d501ce817cce29502b2552903834d/bindings/venvs/2.15.0.
2.15.0
grep: /proc/584333/status: No such file or directory
erjac77 commented 1 year ago

@jsirois I confirm that our CI runs always start with a clean state and using the latest version of scie-pants triggers the OOMKiller. We don't have the problem when we force back to 0.8.1.

I don't think the problem is due to a memory exhaustion, since we have plenty of ressources, and I even crank up the limits to the maximum under the Concourse task:

container_limits:
  cpu: 384
  memory: 20gb

Here the output with VmRSS/PEAK:

vmrss.sh

#!/usr/bin/env bash

set -euo pipefail

SCIE_BASE=$(mktemp -d) pants -V &
pid="$!"
while true; do
  grep -E "^Vm(RSS|Peak)" /proc/${pid}/status >&2
  sleep 1
done
#18 [build-stage 7/7] RUN chmod +x vmrss.sh     && ./get-pants.sh     && ./vmrss.sh     && pants --version
#18 0.381 Downloading and installing the pants launcher ...
#18 0.996 Installed the pants launcher from https://github.com/pantsbuild/scie-pants/releases/latest/download/scie-pants-linux-x86_64 to /root/bin/pants
#18 0.997 
#18 0.997 Running `pants` in a Pants-enabled repo will use the version of Pants configured for that repo.
#18 0.997 In a repo not yet Pants-enabled, it will prompt you to set up Pants for that repo.
#18 1.010 VmPeak:       5784 kB
#18 1.010 VmRSS:        2168 kB
#18 1.372 thread 'main' panicked at 'Failed to write data to output: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }', src/main.rs:68:14
#18 1.372 stack backtrace:
#18 1.372    0:     0x7faa2170639c - <unknown>
#18 1.372    1:     0x7faa216c120e - <unknown>
#18 1.372    2:     0x7faa216e64a4 - <unknown>
#18 1.372    3:     0x7faa21707877 - <unknown>
#18 1.372    4:     0x7faa217075c5 - <unknown>
#18 1.372    5:     0x7faa21707bea - <unknown>
#18 1.373    6:     0x7faa21707a14 - <unknown>
#18 1.373    7:     0x7faa21707976 - <unknown>
#18 1.373    8:     0x7faa21707961 - <unknown>
#18 1.373    9:     0x7faa216aadd2 - <unknown>
#18 1.373   10:     0x7faa216ab132 - <unknown>
#18 1.373   11:     0x7faa216b1915 - <unknown>
#18 1.373   12:     0x7faa21717e62 - <unknown>
#18 1.373   13:     0x7faa2171e788 - <unknown>
#18 1.373   14:     0x7faa21715f93 - <unknown>
#18 1.373   15:     0x7faa217164b8 - <unknown>
#18 1.373   16:     0x7faa2170f03d - <unknown>
#18 1.373   17:     0x7faa216b0cf5 - <unknown>
#18 1.373   18:     0x7faa216b5b7e - <unknown>
#18 1.373   19:     0x7faa216b9009 - <unknown>
#18 1.373   20:     0x7faa216af373 - <unknown>
#18 1.373   21:     0x7faa216bacc5 - <unknown>
#18 2.016 ./vmrss.sh: line 10:    28 Killed                  SCIE_BASE=$(mktemp -d) pants -V
#18 2.020 grep: /proc/28/status: No such file or directory
#18 ERROR: process "/bin/sh -c chmod +x vmrss.sh     && ./get-pants.sh     && ./vmrss.sh     && pants --version" did not complete successfully: exit code: 2
jsirois commented 1 year ago

Alrighty, thanks @erjac77 that is pretty crisp. You can remove the vmrss.sh experiment from the debug stack.

If you can re-run though through CI with RUST_LOG=trace in the environment and provide that output, I'd be grateful.

erjac77 commented 1 year ago

0.8.2

#18 [build-stage 7/7] RUN ./get-pants.sh     && pants --version
#18 0.472 Downloading and installing the pants launcher ...
#18 1.297 Installed the pants launcher from https://github.com/pantsbuild/scie-pants/releases/latest/download/scie-pants-linux-x86_64 to /root/bin/pants
#18 1.297 
#18 1.297 Running `pants` in a Pants-enabled repo will use the version of Pants configured for that repo.
#18 1.297 In a repo not yet Pants-enabled, it will prompt you to set up Pants for that repo.
#18 1.352 [DEBUG TimerFinished] lift::assemble(), Elapsed=5.7µs
#18 1.352 [DEBUG TimerFinished] fingerprint::digest(), Elapsed=51.5µs
#18 1.352 [DEBUG TimerFinished] lift::load_scie(), Elapsed=269.202µs
#18 1.352 [TRACE jump] Loaded lift manifest from /root/bin/pants:
#18 1.352     Lift {
#18 1.352         name: "scie-pants",
#18 1.352         description: Some(
#18 1.352             "Isolates your Pants from the elements.",
#18 1.352         ),
#18 1.352         base: None,
#18 1.352         load_dotenv: true,
#18 1.352         size: 5862,
#18 1.352         hash: "c55ee58a557d20bd4b109870e5a01b264c0d501ce817cce29502b2552903834d",
#18 1.352         boot: Boot {
#18 1.352             commands: {
#18 1.352                 "": Cmd {
#18 1.352                     exe: "{scie-pants.bin}",
#18 1.352                     args: [],
#18 1.352                     env: {},
#18 1.352                     description: None,
#18 1.352                 },
#18 1.352                 "bootstrap-tools": Cmd {
#18 1.352                     exe: "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.352                     args: [
#18 1.352                         "{tools.pex}",
#18 1.352                         "bootstrap-tools",
#18 1.352                         "--python-distribution-hash",
#18 1.352                         "{scie.files:hash.{scie.bindings.configure:PYTHON}}",
#18 1.352                         "--pants-version",
#18 1.352                         "{scie.bindings.configure:PANTS_VERSION}",
#18 1.352                     ],
#18 1.352                     env: {
#18 1.352                         Replace(
#18 1.352                             "PEX_PYTHON_PATH",
#18 1.352                         ): Some(
#18 1.352                             "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.352                         ),
#18 1.352                         Replace(
#18 1.352                             "PEX_ROOT",
#18 1.352                         ): Some(
#18 1.352                             "{scie.bindings}/pex_root",
#18 1.352                         ),
#18 1.352                         Replace(
#18 1.352                             "_SCIENCE_IG_cpython_python_cpython38",
#18 1.352                         ): Some(
#18 1.352                             "python/bin/python3.8",
#18 1.352                         ),
#18 1.352                         Replace(
#18 1.352                             "_SCIENCE_IG_cpython_python_cpython39",
#18 1.352                         ): Some(
#18 1.352                             "python/bin/python3.9",
#18 1.352                         ),
#18 1.352                         Default(
#18 1.352                             "PEX_.*",
#18 1.352                         ): None,
#18 1.352                     },
#18 1.352                     description: None,
#18 1.352                 },
#18 1.352                 "pants": Cmd {
#18 1.352                     exe: "{scie.bindings.install:PANTS_CLIENT_EXE}",
#18 1.352                     args: [
#18 1.352                         "{scie.bindings.configure:PANTS_SHA_FIND_LINKS}",
#18 1.352                     ],
#18 1.352                     env: {
#18 1.352                         Replace(
#18 1.352                             "PANTS_VERSION",
#18 1.352                         ): Some(
#18 1.352                             "{scie.bindings.configure:PANTS_VERSION}",
#18 1.352                         ),
#18 1.352                         Replace(
#18 1.352                             "_PANTS_SERVER_EXE",
#18 1.352                         ): Some(
#18 1.352                             "{scie.bindings.install:PANTS_SERVER_EXE}",
#18 1.352                         ),
#18 1.352                         Default(
#18 1.352                             "PANTS_BUILDROOT_OVERRIDE",
#18 1.352                         ): Some(
#18 1.352                             "{scie.bindings.configure:PANTS_BUILDROOT_OVERRIDE}",
#18 1.352                         ),
#18 1.352                     },
#18 1.352                     description: None,
#18 1.352                 },
#18 1.352                 "pants-debug": Cmd {
#18 1.352                     exe: "{scie.bindings.install:VIRTUAL_ENV}/bin/pants",
#18 1.352                     args: [
#18 1.352                         "-c",
#18 1.352                         "sys = __import__(\"sys\")\nsys.path.pop(0)\nprint(\n    \"Launching debugpy server at '127.0.0.1:5678' and waiting for client connection.\",\n    file=sys.stderr\n)\ndel sys\n__import__(\"debugpy.server.cli\").server.cli.main()\n",
#18 1.352                         "--listen",
#18 1.352                         "127.0.0.1:5678",
#18 1.352                         "--wait-for-client",
#18 1.352                         "{scie.bindings.install:VIRTUAL_ENV}/bin/pants",
#18 1.352                         "{scie.bindings.configure:PANTS_SHA_FIND_LINKS}",
#18 1.352                     ],
#18 1.352                     env: {
#18 1.352                         Replace(
#18 1.352                             "PANTS_VERSION",
#18 1.352                         ): Some(
#18 1.352                             "{scie.bindings.configure:PANTS_VERSION}",
#18 1.352                         ),
#18 1.352                         Default(
#18 1.352                             "PANTS_BUILDROOT_OVERRIDE",
#18 1.352                         ): Some(
#18 1.352                             "{scie.bindings.configure:PANTS_BUILDROOT_OVERRIDE}",
#18 1.352                         ),
#18 1.352                     },
#18 1.352                     description: None,
#18 1.352                 },
#18 1.352                 "update": Cmd {
#18 1.352                     exe: "{cpython39}/python/bin/python3.9",
#18 1.352                     args: [
#18 1.352                         "{tools.pex}",
#18 1.352                         "update-scie-pants",
#18 1.352                         "--ptex-path",
#18 1.352                         "{ptex}",
#18 1.352                         "--platform",
#18 1.352                         "{scie.platform}",
#18 1.352                         "--base-dir",
#18 1.352                         "{scie.bindings}",
#18 1.352                         "--scie",
#18 1.352                         "{scie}",
#18 1.352                         "--current-version",
#18 1.352                         "{scie.bindings.scie-pants-info:VERSION}",
#18 1.352                         "--github-api-bearer-token",
#18 1.352                         "{scie.env.PANTS_BOOTSTRAP_GITHUB_API_BEARER_TOKEN}",
#18 1.352                     ],
#18 1.352                     env: {
#18 1.352                         Replace(
#18 1.352                             "PEX_PYTHON_PATH",
#18 1.352                         ): Some(
#18 1.352                             "{cpython39}/python/bin/python3.9",
#18 1.352                         ),
#18 1.352                         Replace(
#18 1.352                             "PEX_ROOT",
#18 1.352                         ): Some(
#18 1.352                             "{scie.bindings}/pex_root",
#18 1.352                         ),
#18 1.352                         Default(
#18 1.352                             "PEX_.*",
#18 1.352                         ): None,
#18 1.352                     },
#18 1.352                     description: None,
#18 1.352                 },
#18 1.352             },
#18 1.352             bindings: {
#18 1.352                 "configure": Cmd {
#18 1.352                     exe: "{cpython39}/python/bin/python3.9",
#18 1.352                     args: [
#18 1.352                         "{tools.pex}",
#18 1.352                         "configure-pants",
#18 1.352                         "--ptex-path",
#18 1.352                         "{ptex}",
#18 1.352                         "--pants-version",
#18 1.352                         "{scie.env.PANTS_VERSION}",
#18 1.352                         "--pants-sha",
#18 1.352                         "{scie.env.PANTS_SHA}",
#18 1.352                         "--pants-config",
#18 1.352                         "{scie.env.PANTS_TOML}",
#18 1.352                         "--github-api-bearer-token",
#18 1.352                         "{scie.env.PANTS_BOOTSTRAP_GITHUB_API_BEARER_TOKEN}",
#18 1.352                         "{scie.bindings}",
#18 1.352                     ],
#18 1.352                     env: {
#18 1.352                         Replace(
#18 1.352                             "PEX_PYTHON_PATH",
#18 1.352                         ): Some(
#18 1.352                             "{cpython39}/python/bin/python3.9",
#18 1.352                         ),
#18 1.352                         Replace(
#18 1.352                             "PEX_ROOT",
#18 1.352                         ): Some(
#18 1.352                             "{scie.bindings}/pex_root",
#18 1.352                         ),
#18 1.352                         Default(
#18 1.352                             "PANTS_VERSION_PROMPT_SALT",
#18 1.352                         ): Some(
#18 1.352                             "{scie.env.PANTS_VERSION_PROMPT_SALT}",
#18 1.352                         ),
#18 1.352                         Default(
#18 1.352                             "PEX_.*",
#18 1.352                         ): None,
#18 1.352                     },
#18 1.352                     description: None,
#18 1.352                 },
#18 1.352                 "fetch": Cmd {
#18 1.352                     exe: "{ptex}",
#18 1.352                     args: [
#18 1.352                         "{scie.env.PANTS_BOOTSTRAP_URLS={scie.lift}}",
#18 1.352                     ],
#18 1.352                     env: {},
#18 1.352                     description: None,
#18 1.352                 },
#18 1.352                 "install": Cmd {
#18 1.352                     exe: "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.352                     args: [
#18 1.352                         "{tools.pex}",
#18 1.352                         "install-pants",
#18 1.352                         "--pants-version",
#18 1.352                         "{scie.bindings.configure:PANTS_VERSION}",
#18 1.352                         "--find-links",
#18 1.352                         "{scie.bindings.configure:FIND_LINKS}",
#18 1.352                         "--debug",
#18 1.352                         "{scie.env.PANTS_DEBUG}",
#18 1.352                         "--debugpy-requirement",
#18 1.352                         "{scie.env.PANTS_DEBUGPY_VERSION}",
#18 1.352                         "{scie.bindings}",
#18 1.352                     ],
#18 1.352                     env: {
#18 1.352                         Replace(
#18 1.352                             "PEX_PYTHON_PATH",
#18 1.352                         ): Some(
#18 1.352                             "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.352                         ),
#18 1.352                         Replace(
#18 1.352                             "PEX_ROOT",
#18 1.352                         ): Some(
#18 1.352                             "{scie.bindings}/pex_root",
#18 1.352                         ),
#18 1.352                         Replace(
#18 1.352                             "_SCIENCE_IG_cpython_python_cpython38",
#18 1.352                         ): Some(
#18 1.352                             "python/bin/python3.8",
#18 1.352                         ),
#18 1.352                         Replace(
#18 1.352                             "_SCIENCE_IG_cpython_python_cpython39",
#18 1.352                         ): Some(
#18 1.352                             "python/bin/python3.9",
#18 1.352                         ),
#18 1.352                         Default(
#18 1.352                             "PEX_.*",
#18 1.352                         ): None,
#18 1.352                     },
#18 1.352                     description: None,
#18 1.352                 },
#18 1.352                 "scie-pants-info": Cmd {
#18 1.352                     exe: "{cpython39}/python/bin/python3.9",
#18 1.352                     args: [
#18 1.352                         "{tools.pex}",
#18 1.352                         "record-scie-pants-info",
#18 1.352                         "--base-dir",
#18 1.352                         "{scie.bindings}",
#18 1.352                         "--scie",
#18 1.352                         "{scie}",
#18 1.352                     ],
#18 1.352                     env: {
#18 1.352                         Replace(
#18 1.352                             "PEX_PYTHON_PATH",
#18 1.352                         ): Some(
#18 1.352                             "{cpython39}/python/bin/python3.9",
#18 1.352                         ),
#18 1.352                         Replace(
#18 1.352                             "PEX_ROOT",
#18 1.352                         ): Some(
#18 1.352                             "{scie.bindings}/pex_root",
#18 1.352                         ),
#18 1.352                         Default(
#18 1.352                             "PEX_.*",
#18 1.352                         ): None,
#18 1.352                     },
#18 1.352                     description: None,
#18 1.352                 },
#18 1.352             },
#18 1.352         },
#18 1.352         files: [
#18 1.352             File {
#18 1.352                 name: "ptex-linux-x86_64",
#18 1.352                 key: Some(
#18 1.352                     "ptex",
#18 1.352                 ),
#18 1.352                 size: 3904904,
#18 1.352                 hash: "22652cf60b12e7a187ea0cf21d7bc9d8234bbb630fa94ca6f9c28655bd6a81fb",
#18 1.352                 file_type: Blob,
#18 1.352                 executable: Some(
#18 1.352                     true,
#18 1.352                 ),
#18 1.352                 eager_extract: false,
#18 1.352                 source: Scie,
#18 1.352             },
#18 1.352             File {
#18 1.352                 name: "cpython-3.8.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz",
#18 1.352                 key: Some(
#18 1.352                     "cpython38",
#18 1.352                 ),
#18 1.352                 size: 25953194,
#18 1.352                 hash: "8522b181c018e798ecb7dc54b5eedf7686cb258e6e33b3f7f0488ceb912a341e",
#18 1.352                 file_type: Archive(
#18 1.352                     CompressedTar(
#18 1.352                         Gzip,
#18 1.352                     ),
#18 1.352                 ),
#18 1.352                 executable: None,
#18 1.352                 eager_extract: false,
#18 1.352                 source: LoadBinding(
#18 1.352                     "fetch",
#18 1.352                 ),
#18 1.352             },
#18 1.352             File {
#18 1.352                 name: "cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz",
#18 1.352                 key: Some(
#18 1.352                     "cpython39",
#18 1.352                 ),
#18 1.352                 size: 25738357,
#18 1.352                 hash: "2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b",
#18 1.352                 file_type: Archive(
#18 1.352                     CompressedTar(
#18 1.352                         Gzip,
#18 1.352                     ),
#18 1.352                 ),
#18 1.352                 executable: None,
#18 1.352                 eager_extract: false,
#18 1.352                 source: LoadBinding(
#18 1.352                     "fetch",
#18 1.352                 ),
#18 1.352             },
#18 1.352             File {
#18 1.352                 name: "scie-pants.bin",
#18 1.352                 key: None,
#18 1.352                 size: 759960,
#18 1.352                 hash: "5a50ec9774acbbcb281fa6e51f5162a777d759e96ec375b8b9df120091c447eb",
#18 1.352                 file_type: Blob,
#18 1.352                 executable: Some(
#18 1.352                     true,
#18 1.352                 ),
#18 1.352                 eager_extract: false,
#18 1.352                 source: Scie,
#18 1.352             },
#18 1.352             File {
#18 1.352                 name: "tools.pex",
#18 1.352                 key: None,
#18 1.352                 size: 1285047,
#18 1.352                 hash: "5b7e43d9b857d76bdfaa946b6b58c47c04d02fb5b087532e0f7f403bffe5eddb",
#18 1.352                 file_type: Blob,
#18 1.352                 executable: Some(
#18 1.352                     true,
#18 1.352                 ),
#18 1.352                 eager_extract: false,
#18 1.352                 source: Scie,
#18 1.352             },
#18 1.352         ],
#18 1.352         other: Some(
#18 1.352             Other {
#18 1.352                 other: {
#18 1.352                     "ptex": Object {
#18 1.352                         "cpython-3.8.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz": String("https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.8.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz"),
#18 1.352                         "cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz": String("https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.9.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz"),
#18 1.352                     },
#18 1.352                     "science": Object {
#18 1.352                         "app_info": Object {
#18 1.352                             "repo": String("https://github.com/pantsbuild/scie-pants"),
#18 1.352                         },
#18 1.352                         "binary": Object {
#18 1.352                             "hash": String("8e308fc8ee839d9bba6da1f7271c1b8b7c895fab97b8c57b0f837314fcc5a295"),
#18 1.352                             "size": Number(6465489),
#18 1.352                             "url": String("https://github.com/a-scie/lift/releases/download/v0.1.2/science-linux-x86_64"),
#18 1.352                             "version": String("0.1.2"),
#18 1.352                         },
#18 1.352                         "git_state": String("v0.8.2-0-g3fdd677"),
#18 1.352                         "manifest": Object {
#18 1.352                             "hash": String("4a275dd4822a4da1455993d22c41e05eb7164ba7e07c69e6c7143dfaf3181b4a"),
#18 1.352                             "size": Number(5300),
#18 1.352                             "source": String("package/scie-pants.toml"),
#18 1.352                         },
#18 1.352                         "notes": Array [
#18 1.352                             String("This scie lift JSON manifest was generated from a source lift toml manifest using the science binary."),
#18 1.352                             String("Find out more here: https://github.com/a-scie/lift/blob/v0.1.2/README.md"),
#18 1.352                         ],
#18 1.352                     },
#18 1.352                 },
#18 1.352             },
#18 1.352         ),
#18 1.352     }
#18 1.352 [DEBUG jump] Loaded env file from /app/.env
#18 1.352 [DEBUG TimerFinished] jump::load_dotenv, Elapsed=72.101µs
#18 1.352 [DEBUG TimerFinished] Context::new(), Elapsed=24.8µs
#18 1.358 [DEBUG TimerFinished] fingerprint::digest_reader(), Elapsed=5.244453ms
#18 1.358 [DEBUG jump::installer] The blob destination /root/.cache/nce/5a50ec9774acbbcb281fa6e51f5162a777d759e96ec375b8b9df120091c447eb/scie-pants.bin of size 759960 had expected hash
#18 1.364 [DEBUG TimerFinished] installer::unpack_blob(), Elapsed=11.474917ms
#18 1.364 [DEBUG TimerFinished] Installer::install(), Elapsed=11.494917ms
#18 1.364 [TRACE jump] Prepared Process {
#18 1.364         env: EnvVars {
#18 1.364             vars: [],
#18 1.364         },
#18 1.364         exe: "/root/.cache/nce/5a50ec9774acbbcb281fa6e51f5162a777d759e96ec375b8b9df120091c447eb/scie-pants.bin",
#18 1.364         args: [],
#18 1.364     }
#18 1.364 [DEBUG TimerFinished] jump::prepare_boot(), Elapsed=12.545728ms
#18 1.370 [DEBUG TimerFinished] BuildRoot::find(), Elapsed=17.3µs
#18 1.371 [DEBUG TimerFinished] PantsConfig::parse(), Elapsed=217.702µs
#18 1.371 [INFO  scie_pants] Found Pants build root at Some("/app")
#18 1.371 [INFO  scie_pants] The required Pants version is Some("2.16.0rc4")
#18 1.371 [DEBUG TimerFinished] scie-pants::get_pants_process(), Elapsed=299.103µs
#18 1.371 [TRACE scie_pants] Launching: Process {
#18 1.371         exe: "/root/bin/pants",
#18 1.371         args: [],
#18 1.371         env: [
#18 1.371             (
#18 1.371                 "SCIE_BOOT",
#18 1.371                 "pants",
#18 1.371             ),
#18 1.371             (
#18 1.371                 "PANTS_BIN_NAME",
#18 1.371                 "pants",
#18 1.371             ),
#18 1.371             (
#18 1.371                 "PANTS_DEBUG",
#18 1.371                 "",
#18 1.371             ),
#18 1.371             (
#18 1.371                 "PANTS_BUILDROOT_OVERRIDE",
#18 1.371                 "/app",
#18 1.371             ),
#18 1.371             (
#18 1.371                 "PANTS_VERSION",
#18 1.371                 "2.16.0rc4",
#18 1.371             ),
#18 1.371         ],
#18 1.371     }
#18 1.372 [DEBUG TimerFinished] lift::assemble(), Elapsed=3µs
#18 1.372 [DEBUG TimerFinished] fingerprint::digest(), Elapsed=42.001µs
#18 1.372 [DEBUG TimerFinished] lift::load_scie(), Elapsed=209.902µs
#18 1.373 [TRACE jump] Loaded lift manifest from /root/bin/pants:
#18 1.373     Lift {
#18 1.373         name: "scie-pants",
#18 1.373         description: Some(
#18 1.373             "Isolates your Pants from the elements.",
#18 1.373         ),
#18 1.373         base: None,
#18 1.373         load_dotenv: true,
#18 1.373         size: 5862,
#18 1.373         hash: "c55ee58a557d20bd4b109870e5a01b264c0d501ce817cce29502b2552903834d",
#18 1.373         boot: Boot {
#18 1.373             commands: {
#18 1.373                 "": Cmd {
#18 1.373                     exe: "{scie-pants.bin}",
#18 1.373                     args: [],
#18 1.373                     env: {},
#18 1.373                     description: None,
#18 1.373                 },
#18 1.373                 "bootstrap-tools": Cmd {
#18 1.373                     exe: "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.373                     args: [
#18 1.373                         "{tools.pex}",
#18 1.373                         "bootstrap-tools",
#18 1.373                         "--python-distribution-hash",
#18 1.373                         "{scie.files:hash.{scie.bindings.configure:PYTHON}}",
#18 1.373                         "--pants-version",
#18 1.373                         "{scie.bindings.configure:PANTS_VERSION}",
#18 1.373                     ],
#18 1.373                     env: {
#18 1.373                         Replace(
#18 1.373                             "PEX_PYTHON_PATH",
#18 1.373                         ): Some(
#18 1.373                             "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.373                         ),
#18 1.373                         Replace(
#18 1.373                             "PEX_ROOT",
#18 1.373                         ): Some(
#18 1.373                             "{scie.bindings}/pex_root",
#18 1.373                         ),
#18 1.373                         Replace(
#18 1.373                             "_SCIENCE_IG_cpython_python_cpython38",
#18 1.373                         ): Some(
#18 1.373                             "python/bin/python3.8",
#18 1.373                         ),
#18 1.373                         Replace(
#18 1.373                             "_SCIENCE_IG_cpython_python_cpython39",
#18 1.373                         ): Some(
#18 1.373                             "python/bin/python3.9",
#18 1.373                         ),
#18 1.373                         Default(
#18 1.373                             "PEX_.*",
#18 1.373                         ): None,
#18 1.373                     },
#18 1.373                     description: None,
#18 1.373                 },
#18 1.373                 "pants": Cmd {
#18 1.373                     exe: "{scie.bindings.install:PANTS_CLIENT_EXE}",
#18 1.373                     args: [
#18 1.373                         "{scie.bindings.configure:PANTS_SHA_FIND_LINKS}",
#18 1.373                     ],
#18 1.373                     env: {
#18 1.373                         Replace(
#18 1.373                             "PANTS_VERSION",
#18 1.373                         ): Some(
#18 1.373                             "{scie.bindings.configure:PANTS_VERSION}",
#18 1.373                         ),
#18 1.373                         Replace(
#18 1.373                             "_PANTS_SERVER_EXE",
#18 1.373                         ): Some(
#18 1.373                             "{scie.bindings.install:PANTS_SERVER_EXE}",
#18 1.373                         ),
#18 1.373                         Default(
#18 1.373                             "PANTS_BUILDROOT_OVERRIDE",
#18 1.373                         ): Some(
#18 1.373                             "{scie.bindings.configure:PANTS_BUILDROOT_OVERRIDE}",
#18 1.373                         ),
#18 1.373                     },
#18 1.373                     description: None,
#18 1.373                 },
#18 1.373                 "pants-debug": Cmd {
#18 1.373                     exe: "{scie.bindings.install:VIRTUAL_ENV}/bin/pants",
#18 1.373                     args: [
#18 1.373                         "-c",
#18 1.373                         "sys = __import__(\"sys\")\nsys.path.pop(0)\nprint(\n    \"Launching debugpy server at '127.0.0.1:5678' and waiting for client connection.\",\n    file=sys.stderr\n)\ndel sys\n__import__(\"debugpy.server.cli\").server.cli.main()\n",
#18 1.373                         "--listen",
#18 1.373                         "127.0.0.1:5678",
#18 1.373                         "--wait-for-client",
#18 1.373                         "{scie.bindings.install:VIRTUAL_ENV}/bin/pants",
#18 1.373                         "{scie.bindings.configure:PANTS_SHA_FIND_LINKS}",
#18 1.373                     ],
#18 1.373                     env: {
#18 1.373                         Replace(
#18 1.373                             "PANTS_VERSION",
#18 1.373                         ): Some(
#18 1.373                             "{scie.bindings.configure:PANTS_VERSION}",
#18 1.373                         ),
#18 1.373                         Default(
#18 1.373                             "PANTS_BUILDROOT_OVERRIDE",
#18 1.373                         ): Some(
#18 1.373                             "{scie.bindings.configure:PANTS_BUILDROOT_OVERRIDE}",
#18 1.373                         ),
#18 1.373                     },
#18 1.373                     description: None,
#18 1.373                 },
#18 1.373                 "update": Cmd {
#18 1.373                     exe: "{cpython39}/python/bin/python3.9",
#18 1.373                     args: [
#18 1.373                         "{tools.pex}",
#18 1.373                         "update-scie-pants",
#18 1.373                         "--ptex-path",
#18 1.373                         "{ptex}",
#18 1.373                         "--platform",
#18 1.373                         "{scie.platform}",
#18 1.373                         "--base-dir",
#18 1.373                         "{scie.bindings}",
#18 1.373                         "--scie",
#18 1.373                         "{scie}",
#18 1.373                         "--current-version",
#18 1.373                         "{scie.bindings.scie-pants-info:VERSION}",
#18 1.373                         "--github-api-bearer-token",
#18 1.373                         "{scie.env.PANTS_BOOTSTRAP_GITHUB_API_BEARER_TOKEN}",
#18 1.373                     ],
#18 1.373                     env: {
#18 1.373                         Replace(
#18 1.373                             "PEX_PYTHON_PATH",
#18 1.373                         ): Some(
#18 1.373                             "{cpython39}/python/bin/python3.9",
#18 1.373                         ),
#18 1.373                         Replace(
#18 1.373                             "PEX_ROOT",
#18 1.373                         ): Some(
#18 1.373                             "{scie.bindings}/pex_root",
#18 1.373                         ),
#18 1.373                         Default(
#18 1.373                             "PEX_.*",
#18 1.373                         ): None,
#18 1.373                     },
#18 1.373                     description: None,
#18 1.373                 },
#18 1.373             },
#18 1.373             bindings: {
#18 1.373                 "configure": Cmd {
#18 1.373                     exe: "{cpython39}/python/bin/python3.9",
#18 1.373                     args: [
#18 1.373                         "{tools.pex}",
#18 1.373                         "configure-pants",
#18 1.373                         "--ptex-path",
#18 1.373                         "{ptex}",
#18 1.373                         "--pants-version",
#18 1.373                         "{scie.env.PANTS_VERSION}",
#18 1.373                         "--pants-sha",
#18 1.373                         "{scie.env.PANTS_SHA}",
#18 1.373                         "--pants-config",
#18 1.373                         "{scie.env.PANTS_TOML}",
#18 1.373                         "--github-api-bearer-token",
#18 1.373                         "{scie.env.PANTS_BOOTSTRAP_GITHUB_API_BEARER_TOKEN}",
#18 1.373                         "{scie.bindings}",
#18 1.373                     ],
#18 1.373                     env: {
#18 1.373                         Replace(
#18 1.373                             "PEX_PYTHON_PATH",
#18 1.373                         ): Some(
#18 1.373                             "{cpython39}/python/bin/python3.9",
#18 1.373                         ),
#18 1.373                         Replace(
#18 1.373                             "PEX_ROOT",
#18 1.373                         ): Some(
#18 1.373                             "{scie.bindings}/pex_root",
#18 1.373                         ),
#18 1.373                         Default(
#18 1.373                             "PANTS_VERSION_PROMPT_SALT",
#18 1.373                         ): Some(
#18 1.373                             "{scie.env.PANTS_VERSION_PROMPT_SALT}",
#18 1.373                         ),
#18 1.373                         Default(
#18 1.373                             "PEX_.*",
#18 1.373                         ): None,
#18 1.373                     },
#18 1.373                     description: None,
#18 1.373                 },
#18 1.373                 "fetch": Cmd {
#18 1.373                     exe: "{ptex}",
#18 1.373                     args: [
#18 1.373                         "{scie.env.PANTS_BOOTSTRAP_URLS={scie.lift}}",
#18 1.373                     ],
#18 1.373                     env: {},
#18 1.373                     description: None,
#18 1.373                 },
#18 1.373                 "install": Cmd {
#18 1.373                     exe: "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.373                     args: [
#18 1.373                         "{tools.pex}",
#18 1.373                         "install-pants",
#18 1.373                         "--pants-version",
#18 1.373                         "{scie.bindings.configure:PANTS_VERSION}",
#18 1.373                         "--find-links",
#18 1.373                         "{scie.bindings.configure:FIND_LINKS}",
#18 1.373                         "--debug",
#18 1.373                         "{scie.env.PANTS_DEBUG}",
#18 1.373                         "--debugpy-requirement",
#18 1.373                         "{scie.env.PANTS_DEBUGPY_VERSION}",
#18 1.373                         "{scie.bindings}",
#18 1.373                     ],
#18 1.373                     env: {
#18 1.373                         Replace(
#18 1.373                             "PEX_PYTHON_PATH",
#18 1.373                         ): Some(
#18 1.373                             "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.373                         ),
#18 1.373                         Replace(
#18 1.373                             "PEX_ROOT",
#18 1.373                         ): Some(
#18 1.373                             "{scie.bindings}/pex_root",
#18 1.373                         ),
#18 1.373                         Replace(
#18 1.373                             "_SCIENCE_IG_cpython_python_cpython38",
#18 1.373                         ): Some(
#18 1.373                             "python/bin/python3.8",
#18 1.373                         ),
#18 1.373                         Replace(
#18 1.373                             "_SCIENCE_IG_cpython_python_cpython39",
#18 1.373                         ): Some(
#18 1.373                             "python/bin/python3.9",
#18 1.373                         ),
#18 1.373                         Default(
#18 1.373                             "PEX_.*",
#18 1.373                         ): None,
#18 1.373                     },
#18 1.373                     description: None,
#18 1.373                 },
#18 1.373                 "scie-pants-info": Cmd {
#18 1.373                     exe: "{cpython39}/python/bin/python3.9",
#18 1.373                     args: [
#18 1.373                         "{tools.pex}",
#18 1.373                         "record-scie-pants-info",
#18 1.373                         "--base-dir",
#18 1.373                         "{scie.bindings}",
#18 1.373                         "--scie",
#18 1.373                         "{scie}",
#18 1.373                     ],
#18 1.373                     env: {
#18 1.373                         Replace(
#18 1.373                             "PEX_PYTHON_PATH",
#18 1.373                         ): Some(
#18 1.373                             "{cpython39}/python/bin/python3.9",
#18 1.373                         ),
#18 1.373                         Replace(
#18 1.373                             "PEX_ROOT",
#18 1.373                         ): Some(
#18 1.373                             "{scie.bindings}/pex_root",
#18 1.373                         ),
#18 1.373                         Default(
#18 1.373                             "PEX_.*",
#18 1.373                         ): None,
#18 1.373                     },
#18 1.373                     description: None,
#18 1.373                 },
#18 1.373             },
#18 1.373         },
#18 1.373         files: [
#18 1.373             File {
#18 1.373                 name: "ptex-linux-x86_64",
#18 1.373                 key: Some(
#18 1.373                     "ptex",
#18 1.373                 ),
#18 1.373                 size: 3904904,
#18 1.373                 hash: "22652cf60b12e7a187ea0cf21d7bc9d8234bbb630fa94ca6f9c28655bd6a81fb",
#18 1.373                 file_type: Blob,
#18 1.373                 executable: Some(
#18 1.373                     true,
#18 1.373                 ),
#18 1.373                 eager_extract: false,
#18 1.373                 source: Scie,
#18 1.373             },
#18 1.373             File {
#18 1.373                 name: "cpython-3.8.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz",
#18 1.373                 key: Some(
#18 1.373                     "cpython38",
#18 1.373                 ),
#18 1.373                 size: 25953194,
#18 1.373                 hash: "8522b181c018e798ecb7dc54b5eedf7686cb258e6e33b3f7f0488ceb912a341e",
#18 1.373                 file_type: Archive(
#18 1.373                     CompressedTar(
#18 1.373                         Gzip,
#18 1.373                     ),
#18 1.373                 ),
#18 1.373                 executable: None,
#18 1.373                 eager_extract: false,
#18 1.373                 source: LoadBinding(
#18 1.373                     "fetch",
#18 1.373                 ),
#18 1.373             },
#18 1.373             File {
#18 1.373                 name: "cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz",
#18 1.373                 key: Some(
#18 1.373                     "cpython39",
#18 1.373                 ),
#18 1.373                 size: 25738357,
#18 1.373                 hash: "2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b",
#18 1.373                 file_type: Archive(
#18 1.373                     CompressedTar(
#18 1.373                         Gzip,
#18 1.373                     ),
#18 1.373                 ),
#18 1.373                 executable: None,
#18 1.373                 eager_extract: false,
#18 1.373                 source: LoadBinding(
#18 1.373                     "fetch",
#18 1.373                 ),
#18 1.373             },
#18 1.373             File {
#18 1.373                 name: "scie-pants.bin",
#18 1.373                 key: None,
#18 1.373                 size: 759960,
#18 1.373                 hash: "5a50ec9774acbbcb281fa6e51f5162a777d759e96ec375b8b9df120091c447eb",
#18 1.373                 file_type: Blob,
#18 1.373                 executable: Some(
#18 1.373                     true,
#18 1.373                 ),
#18 1.373                 eager_extract: false,
#18 1.373                 source: Scie,
#18 1.373             },
#18 1.373             File {
#18 1.373                 name: "tools.pex",
#18 1.373                 key: None,
#18 1.373                 size: 1285047,
#18 1.373                 hash: "5b7e43d9b857d76bdfaa946b6b58c47c04d02fb5b087532e0f7f403bffe5eddb",
#18 1.373                 file_type: Blob,
#18 1.373                 executable: Some(
#18 1.373                     true,
#18 1.373                 ),
#18 1.373                 eager_extract: false,
#18 1.373                 source: Scie,
#18 1.373             },
#18 1.373         ],
#18 1.373         other: Some(
#18 1.373             Other {
#18 1.373                 other: {
#18 1.373                     "ptex": Object {
#18 1.373                         "cpython-3.8.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz": String("https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.8.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz"),
#18 1.373                         "cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz": String("https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.9.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz"),
#18 1.373                     },
#18 1.373                     "science": Object {
#18 1.373                         "app_info": Object {
#18 1.373                             "repo": String("https://github.com/pantsbuild/scie-pants"),
#18 1.373                         },
#18 1.373                         "binary": Object {
#18 1.373                             "hash": String("8e308fc8ee839d9bba6da1f7271c1b8b7c895fab97b8c57b0f837314fcc5a295"),
#18 1.373                             "size": Number(6465489),
#18 1.373                             "url": String("https://github.com/a-scie/lift/releases/download/v0.1.2/science-linux-x86_64"),
#18 1.373                             "version": String("0.1.2"),
#18 1.373                         },
#18 1.373                         "git_state": String("v0.8.2-0-g3fdd677"),
#18 1.373                         "manifest": Object {
#18 1.373                             "hash": String("4a275dd4822a4da1455993d22c41e05eb7164ba7e07c69e6c7143dfaf3181b4a"),
#18 1.373                             "size": Number(5300),
#18 1.373                             "source": String("package/scie-pants.toml"),
#18 1.373                         },
#18 1.373                         "notes": Array [
#18 1.373                             String("This scie lift JSON manifest was generated from a source lift toml manifest using the science binary."),
#18 1.373                             String("Find out more here: https://github.com/a-scie/lift/blob/v0.1.2/README.md"),
#18 1.373                         ],
#18 1.373                     },
#18 1.373                 },
#18 1.373             },
#18 1.373         ),
#18 1.373     }
#18 1.373 [DEBUG jump] Loaded env file from /app/.env
#18 1.373 [DEBUG TimerFinished] jump::load_dotenv, Elapsed=53.5µs
#18 1.373 [DEBUG TimerFinished] Context::new(), Elapsed=19.501µs
#18 1.373 [DEBUG TimerFinished] Process::fingerprint(), Elapsed=41.4µs
#18 1.373 [TRACE jump::context] Installing boot binding Binding {
#18 1.373         target: "/root/.cache/nce/c55ee58a557d20bd4b109870e5a01b264c0d501ce817cce29502b2552903834d/locks/configure-42befcfeb3c1560e96996adee76b9f8fa4dc3ab3bdb785d27b72071352eed6eb",
#18 1.373         process: Process {
#18 1.373             env: EnvVars {
#18 1.373                 vars: [
#18 1.373                     Replace(
#18 1.373                         (
#18 1.373                             "PEX_PYTHON_PATH",
#18 1.373                             "/root/.cache/nce/2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b/cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz/python/bin/python3.9",
#18 1.373                         ),
#18 1.373                     ),
#18 1.373                     Replace(
#18 1.373                         (
#18 1.373                             "PEX_ROOT",
#18 1.373                             "/root/.cache/nce/c55ee58a557d20bd4b109870e5a01b264c0d501ce817cce29502b2552903834d/bindings/pex_root",
#18 1.373                         ),
#18 1.373                     ),
#18 1.373                     Default(
#18 1.373                         (
#18 1.373                             "PANTS_VERSION_PROMPT_SALT",
#18 1.373                             "",
#18 1.373                         ),
#18 1.373                     ),
#18 1.373                     RemoveMatching(
#18 1.373                         ComparableRegex(
#18 1.373                             PEX_.*,
#18 1.373                         ),
#18 1.373                     ),
#18 1.373                 ],
#18 1.373             },
#18 1.373             exe: "/root/.cache/nce/2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b/cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz/python/bin/python3.9",
#18 1.373             args: [
#18 1.373                 "/root/.cache/nce/5b7e43d9b857d76bdfaa946b6b58c47c04d02fb5b087532e0f7f403bffe5eddb/tools.pex",
#18 1.373                 "configure-pants",
#18 1.373                 "--ptex-path",
#18 1.373                 "/root/.cache/nce/22652cf60b12e7a187ea0cf21d7bc9d8234bbb630fa94ca6f9c28655bd6a81fb/ptex-linux-x86_64",
#18 1.373                 "--pants-version",
#18 1.373                 "2.16.0rc4",
#18 1.373                 "--pants-sha",
#18 1.373                 "",
#18 1.373                 "--pants-config",
#18 1.373                 "",
#18 1.373                 "--github-api-bearer-token",
#18 1.373                 "",
#18 1.373                 "/root/.cache/nce/c55ee58a557d20bd4b109870e5a01b264c0d501ce817cce29502b2552903834d/bindings",
#18 1.373             ],
#18 1.373         },
#18 1.373     }
#18 1.403 [DEBUG TimerFinished] fingerprint::digest_reader(), Elapsed=29.498ms
#18 1.403 [DEBUG jump::installer] The blob destination /root/.cache/nce/22652cf60b12e7a187ea0cf21d7bc9d8234bbb630fa94ca6f9c28655bd6a81fb/ptex-linux-x86_64 of size 3904904 had expected hash
#18 1.435 [DEBUG TimerFinished] installer::unpack_blob(), Elapsed=61.191723ms
#18 1.444 [DEBUG TimerFinished] fingerprint::digest_reader(), Elapsed=8.770089ms
#18 1.444 [DEBUG jump::installer] The blob destination /root/.cache/nce/5b7e43d9b857d76bdfaa946b6b58c47c04d02fb5b087532e0f7f403bffe5eddb/tools.pex of size 1285047 had expected hash
#18 1.453 [DEBUG TimerFinished] installer::unpack_blob(), Elapsed=18.819192ms
#18 1.454 [INFO  jump::installer] Loading cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz via "/root/.cache/nce/22652cf60b12e7a187ea0cf21d7bc9d8234bbb630fa94ca6f9c28655bd6a81fb/ptex-linux-x86_64"...
#18 1.745 thread 'main' panicked at 'Failed to write data to output: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }', src/main.rs:68:14
#18 1.745 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
#18 1.747 Killed
#18 ERROR: process "/bin/sh -c ./get-pants.sh     && pants --version" did not complete successfully: exit code: 137
jsirois commented 1 year ago

Thanks. Unfortunately that only says what is already known. The last debug knob I can think of is adding PTEX_DUMP_HEADERS=1 to the environment.

erjac77 commented 1 year ago

0.8.1

#18 [build-stage 7/7] RUN ./get-pants.sh -V 0.8.1     && pants --version
#18 0.428 Downloading and installing the pants launcher ...
#18 1.319 Installed the pants launcher from https://github.com/pantsbuild/scie-pants/releases/download/v0.8.1/scie-pants-linux-x86_64 to /root/bin/pants
#18 1.319 
#18 1.319 Running `pants` in a Pants-enabled repo will use the version of Pants configured for that repo.
#18 1.319 In a repo not yet Pants-enabled, it will prompt you to set up Pants for that repo.
#18 1.376 [DEBUG TimerFinished] lift::assemble(), Elapsed=4.101µs
#18 1.376 [DEBUG TimerFinished] fingerprint::digest(), Elapsed=46.301µs
#18 1.376 [DEBUG TimerFinished] lift::load_scie(), Elapsed=252.804µs
#18 1.376 [TRACE jump] Loaded lift manifest from /root/bin/pants:
#18 1.376     Lift {
#18 1.376         name: "scie-pants",
#18 1.376         description: Some(
#18 1.376             "Isolates your Pants from the elements.",
#18 1.376         ),
#18 1.376         base: None,
#18 1.376         load_dotenv: true,
#18 1.376         size: 5862,
#18 1.376         hash: "11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed",
#18 1.376         boot: Boot {
#18 1.376             commands: {
#18 1.376                 "": Cmd {
#18 1.376                     exe: "{scie-pants.bin}",
#18 1.376                     args: [],
#18 1.376                     env: {},
#18 1.376                     description: None,
#18 1.376                 },
#18 1.376                 "bootstrap-tools": Cmd {
#18 1.376                     exe: "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.376                     args: [
#18 1.376                         "{tools.pex}",
#18 1.376                         "bootstrap-tools",
#18 1.376                         "--python-distribution-hash",
#18 1.376                         "{scie.files:hash.{scie.bindings.configure:PYTHON}}",
#18 1.376                         "--pants-version",
#18 1.376                         "{scie.bindings.configure:PANTS_VERSION}",
#18 1.376                     ],
#18 1.376                     env: {
#18 1.376                         Replace(
#18 1.376                             "PEX_PYTHON_PATH",
#18 1.376                         ): Some(
#18 1.376                             "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.376                         ),
#18 1.376                         Replace(
#18 1.376                             "PEX_ROOT",
#18 1.376                         ): Some(
#18 1.376                             "{scie.bindings}/pex_root",
#18 1.376                         ),
#18 1.376                         Replace(
#18 1.376                             "_SCIENCE_IG_cpython_python_cpython38",
#18 1.376                         ): Some(
#18 1.376                             "python/bin/python3.8",
#18 1.376                         ),
#18 1.376                         Replace(
#18 1.376                             "_SCIENCE_IG_cpython_python_cpython39",
#18 1.376                         ): Some(
#18 1.376                             "python/bin/python3.9",
#18 1.376                         ),
#18 1.376                         Default(
#18 1.376                             "PEX_.*",
#18 1.376                         ): None,
#18 1.376                     },
#18 1.376                     description: None,
#18 1.376                 },
#18 1.376                 "pants": Cmd {
#18 1.376                     exe: "{scie.bindings.install:PANTS_CLIENT_EXE}",
#18 1.376                     args: [
#18 1.376                         "{scie.bindings.configure:PANTS_SHA_FIND_LINKS}",
#18 1.376                     ],
#18 1.376                     env: {
#18 1.376                         Replace(
#18 1.376                             "PANTS_VERSION",
#18 1.376                         ): Some(
#18 1.376                             "{scie.bindings.configure:PANTS_VERSION}",
#18 1.376                         ),
#18 1.376                         Replace(
#18 1.376                             "_PANTS_SERVER_EXE",
#18 1.376                         ): Some(
#18 1.376                             "{scie.bindings.install:PANTS_SERVER_EXE}",
#18 1.376                         ),
#18 1.376                         Default(
#18 1.376                             "PANTS_BUILDROOT_OVERRIDE",
#18 1.376                         ): Some(
#18 1.376                             "{scie.bindings.configure:PANTS_BUILDROOT_OVERRIDE}",
#18 1.376                         ),
#18 1.376                     },
#18 1.376                     description: None,
#18 1.376                 },
#18 1.376                 "pants-debug": Cmd {
#18 1.376                     exe: "{scie.bindings.install:VIRTUAL_ENV}/bin/pants",
#18 1.376                     args: [
#18 1.376                         "-c",
#18 1.376                         "sys = __import__(\"sys\")\nsys.path.pop(0)\nprint(\n    \"Launching debugpy server at '127.0.0.1:5678' and waiting for client connection.\",\n    file=sys.stderr\n)\ndel sys\n__import__(\"debugpy.server.cli\").server.cli.main()\n",
#18 1.376                         "--listen",
#18 1.376                         "127.0.0.1:5678",
#18 1.376                         "--wait-for-client",
#18 1.376                         "{scie.bindings.install:VIRTUAL_ENV}/bin/pants",
#18 1.376                         "{scie.bindings.configure:PANTS_SHA_FIND_LINKS}",
#18 1.376                     ],
#18 1.376                     env: {
#18 1.376                         Replace(
#18 1.376                             "PANTS_VERSION",
#18 1.376                         ): Some(
#18 1.376                             "{scie.bindings.configure:PANTS_VERSION}",
#18 1.376                         ),
#18 1.376                         Default(
#18 1.376                             "PANTS_BUILDROOT_OVERRIDE",
#18 1.376                         ): Some(
#18 1.376                             "{scie.bindings.configure:PANTS_BUILDROOT_OVERRIDE}",
#18 1.376                         ),
#18 1.376                     },
#18 1.376                     description: None,
#18 1.376                 },
#18 1.376                 "update": Cmd {
#18 1.376                     exe: "{cpython39}/python/bin/python3.9",
#18 1.376                     args: [
#18 1.376                         "{tools.pex}",
#18 1.376                         "update-scie-pants",
#18 1.376                         "--ptex-path",
#18 1.376                         "{ptex}",
#18 1.376                         "--platform",
#18 1.376                         "{scie.platform}",
#18 1.376                         "--base-dir",
#18 1.376                         "{scie.bindings}",
#18 1.376                         "--scie",
#18 1.376                         "{scie}",
#18 1.376                         "--current-version",
#18 1.376                         "{scie.bindings.scie-pants-info:VERSION}",
#18 1.376                         "--github-api-bearer-token",
#18 1.376                         "{scie.env.PANTS_BOOTSTRAP_GITHUB_API_BEARER_TOKEN}",
#18 1.376                     ],
#18 1.376                     env: {
#18 1.376                         Replace(
#18 1.376                             "PEX_PYTHON_PATH",
#18 1.376                         ): Some(
#18 1.376                             "{cpython39}/python/bin/python3.9",
#18 1.376                         ),
#18 1.376                         Replace(
#18 1.376                             "PEX_ROOT",
#18 1.376                         ): Some(
#18 1.376                             "{scie.bindings}/pex_root",
#18 1.376                         ),
#18 1.376                         Default(
#18 1.376                             "PEX_.*",
#18 1.376                         ): None,
#18 1.376                     },
#18 1.376                     description: None,
#18 1.376                 },
#18 1.376             },
#18 1.376             bindings: {
#18 1.376                 "configure": Cmd {
#18 1.376                     exe: "{cpython39}/python/bin/python3.9",
#18 1.376                     args: [
#18 1.376                         "{tools.pex}",
#18 1.376                         "configure-pants",
#18 1.376                         "--ptex-path",
#18 1.376                         "{ptex}",
#18 1.376                         "--pants-version",
#18 1.376                         "{scie.env.PANTS_VERSION}",
#18 1.376                         "--pants-sha",
#18 1.376                         "{scie.env.PANTS_SHA}",
#18 1.376                         "--pants-config",
#18 1.376                         "{scie.env.PANTS_TOML}",
#18 1.376                         "--github-api-bearer-token",
#18 1.376                         "{scie.env.PANTS_BOOTSTRAP_GITHUB_API_BEARER_TOKEN}",
#18 1.376                         "{scie.bindings}",
#18 1.376                     ],
#18 1.376                     env: {
#18 1.376                         Replace(
#18 1.376                             "PEX_PYTHON_PATH",
#18 1.376                         ): Some(
#18 1.376                             "{cpython39}/python/bin/python3.9",
#18 1.376                         ),
#18 1.376                         Replace(
#18 1.376                             "PEX_ROOT",
#18 1.376                         ): Some(
#18 1.376                             "{scie.bindings}/pex_root",
#18 1.376                         ),
#18 1.376                         Default(
#18 1.376                             "PANTS_VERSION_PROMPT_SALT",
#18 1.376                         ): Some(
#18 1.376                             "{scie.env.PANTS_VERSION_PROMPT_SALT}",
#18 1.376                         ),
#18 1.376                         Default(
#18 1.376                             "PEX_.*",
#18 1.376                         ): None,
#18 1.376                     },
#18 1.376                     description: None,
#18 1.376                 },
#18 1.376                 "fetch": Cmd {
#18 1.376                     exe: "{ptex}",
#18 1.376                     args: [
#18 1.376                         "{scie.env.PANTS_BOOTSTRAP_URLS={scie.lift}}",
#18 1.376                     ],
#18 1.376                     env: {},
#18 1.376                     description: None,
#18 1.376                 },
#18 1.376                 "install": Cmd {
#18 1.376                     exe: "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.376                     args: [
#18 1.376                         "{tools.pex}",
#18 1.376                         "install-pants",
#18 1.376                         "--pants-version",
#18 1.376                         "{scie.bindings.configure:PANTS_VERSION}",
#18 1.376                         "--find-links",
#18 1.376                         "{scie.bindings.configure:FIND_LINKS}",
#18 1.376                         "--debug",
#18 1.376                         "{scie.env.PANTS_DEBUG}",
#18 1.376                         "--debugpy-requirement",
#18 1.376                         "{scie.env.PANTS_DEBUGPY_VERSION}",
#18 1.376                         "{scie.bindings}",
#18 1.376                     ],
#18 1.376                     env: {
#18 1.376                         Replace(
#18 1.376                             "PEX_PYTHON_PATH",
#18 1.376                         ): Some(
#18 1.376                             "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.376                         ),
#18 1.376                         Replace(
#18 1.376                             "PEX_ROOT",
#18 1.376                         ): Some(
#18 1.376                             "{scie.bindings}/pex_root",
#18 1.376                         ),
#18 1.376                         Replace(
#18 1.376                             "_SCIENCE_IG_cpython_python_cpython38",
#18 1.376                         ): Some(
#18 1.376                             "python/bin/python3.8",
#18 1.376                         ),
#18 1.376                         Replace(
#18 1.376                             "_SCIENCE_IG_cpython_python_cpython39",
#18 1.376                         ): Some(
#18 1.376                             "python/bin/python3.9",
#18 1.376                         ),
#18 1.376                         Default(
#18 1.376                             "PEX_.*",
#18 1.376                         ): None,
#18 1.376                     },
#18 1.376                     description: None,
#18 1.376                 },
#18 1.376                 "scie-pants-info": Cmd {
#18 1.376                     exe: "{cpython39}/python/bin/python3.9",
#18 1.376                     args: [
#18 1.376                         "{tools.pex}",
#18 1.376                         "record-scie-pants-info",
#18 1.376                         "--base-dir",
#18 1.376                         "{scie.bindings}",
#18 1.376                         "--scie",
#18 1.376                         "{scie}",
#18 1.376                     ],
#18 1.376                     env: {
#18 1.376                         Replace(
#18 1.376                             "PEX_PYTHON_PATH",
#18 1.376                         ): Some(
#18 1.376                             "{cpython39}/python/bin/python3.9",
#18 1.376                         ),
#18 1.376                         Replace(
#18 1.376                             "PEX_ROOT",
#18 1.376                         ): Some(
#18 1.376                             "{scie.bindings}/pex_root",
#18 1.376                         ),
#18 1.376                         Default(
#18 1.376                             "PEX_.*",
#18 1.376                         ): None,
#18 1.376                     },
#18 1.376                     description: None,
#18 1.376                 },
#18 1.376             },
#18 1.376         },
#18 1.376         files: [
#18 1.376             File {
#18 1.376                 name: "ptex-linux-x86_64",
#18 1.376                 key: Some(
#18 1.376                     "ptex",
#18 1.376                 ),
#18 1.376                 size: 3904904,
#18 1.376                 hash: "22652cf60b12e7a187ea0cf21d7bc9d8234bbb630fa94ca6f9c28655bd6a81fb",
#18 1.376                 file_type: Blob,
#18 1.376                 executable: Some(
#18 1.376                     true,
#18 1.376                 ),
#18 1.376                 eager_extract: false,
#18 1.376                 source: Scie,
#18 1.376             },
#18 1.376             File {
#18 1.376                 name: "cpython-3.8.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz",
#18 1.376                 key: Some(
#18 1.376                     "cpython38",
#18 1.376                 ),
#18 1.376                 size: 25953194,
#18 1.376                 hash: "8522b181c018e798ecb7dc54b5eedf7686cb258e6e33b3f7f0488ceb912a341e",
#18 1.376                 file_type: Archive(
#18 1.376                     CompressedTar(
#18 1.376                         Gzip,
#18 1.376                     ),
#18 1.376                 ),
#18 1.376                 executable: None,
#18 1.376                 eager_extract: false,
#18 1.376                 source: LoadBinding(
#18 1.376                     "fetch",
#18 1.376                 ),
#18 1.376             },
#18 1.376             File {
#18 1.376                 name: "cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz",
#18 1.376                 key: Some(
#18 1.376                     "cpython39",
#18 1.376                 ),
#18 1.376                 size: 25738357,
#18 1.376                 hash: "2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b",
#18 1.376                 file_type: Archive(
#18 1.376                     CompressedTar(
#18 1.376                         Gzip,
#18 1.376                     ),
#18 1.376                 ),
#18 1.376                 executable: None,
#18 1.376                 eager_extract: false,
#18 1.376                 source: LoadBinding(
#18 1.376                     "fetch",
#18 1.376                 ),
#18 1.376             },
#18 1.376             File {
#18 1.376                 name: "scie-pants.bin",
#18 1.376                 key: None,
#18 1.376                 size: 759960,
#18 1.376                 hash: "3e38bf89774a7108031fc6dd7fad2e7c1e4c833a69e2f906356a410b3d90efab",
#18 1.376                 file_type: Blob,
#18 1.376                 executable: Some(
#18 1.376                     true,
#18 1.376                 ),
#18 1.376                 eager_extract: false,
#18 1.376                 source: Scie,
#18 1.376             },
#18 1.376             File {
#18 1.376                 name: "tools.pex",
#18 1.376                 key: None,
#18 1.376                 size: 1285047,
#18 1.376                 hash: "5b7e43d9b857d76bdfaa946b6b58c47c04d02fb5b087532e0f7f403bffe5eddb",
#18 1.376                 file_type: Blob,
#18 1.376                 executable: Some(
#18 1.376                     true,
#18 1.376                 ),
#18 1.376                 eager_extract: false,
#18 1.376                 source: Scie,
#18 1.376             },
#18 1.376         ],
#18 1.376         other: Some(
#18 1.376             Other {
#18 1.376                 other: {
#18 1.376                     "ptex": Object {
#18 1.376                         "cpython-3.8.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz": String("https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.8.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz"),
#18 1.376                         "cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz": String("https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.9.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz"),
#18 1.376                     },
#18 1.376                     "science": Object {
#18 1.376                         "app_info": Object {
#18 1.376                             "repo": String("https://github.com/pantsbuild/scie-pants"),
#18 1.376                         },
#18 1.376                         "binary": Object {
#18 1.376                             "hash": String("8e308fc8ee839d9bba6da1f7271c1b8b7c895fab97b8c57b0f837314fcc5a295"),
#18 1.376                             "size": Number(6465489),
#18 1.376                             "url": String("https://github.com/a-scie/lift/releases/download/v0.1.2/science-linux-x86_64"),
#18 1.376                             "version": String("0.1.2"),
#18 1.376                         },
#18 1.376                         "git_state": String("v0.8.1-0-g0b8204e"),
#18 1.376                         "manifest": Object {
#18 1.376                             "hash": String("5b79b2d2055380116e8cbf684f230f3af1f816894d16765a8b5bde8ddd19b379"),
#18 1.376                             "size": Number(5300),
#18 1.376                             "source": String("package/scie-pants.toml"),
#18 1.376                         },
#18 1.376                         "notes": Array [
#18 1.376                             String("This scie lift JSON manifest was generated from a source lift toml manifest using the science binary."),
#18 1.376                             String("Find out more here: https://github.com/a-scie/lift/blob/v0.1.2/README.md"),
#18 1.376                         ],
#18 1.376                     },
#18 1.376                 },
#18 1.376             },
#18 1.376         ),
#18 1.376     }
#18 1.376 [DEBUG jump] Loaded env file from /app/.env
#18 1.376 [DEBUG TimerFinished] jump::load_dotenv, Elapsed=68.701µs
#18 1.376 [DEBUG TimerFinished] Context::new(), Elapsed=26.101µs
#18 1.382 [DEBUG TimerFinished] fingerprint::digest_reader(), Elapsed=5.198593ms
#18 1.382 [DEBUG jump::installer] The blob destination /root/.cache/nce/3e38bf89774a7108031fc6dd7fad2e7c1e4c833a69e2f906356a410b3d90efab/scie-pants.bin of size 759960 had expected hash
#18 1.389 [DEBUG TimerFinished] installer::unpack_blob(), Elapsed=12.023116ms
#18 1.389 [DEBUG TimerFinished] Installer::install(), Elapsed=12.053016ms
#18 1.389 [TRACE jump] Prepared Process {
#18 1.389         env: EnvVars {
#18 1.389             vars: [],
#18 1.389         },
#18 1.389         exe: "/root/.cache/nce/3e38bf89774a7108031fc6dd7fad2e7c1e4c833a69e2f906356a410b3d90efab/scie-pants.bin",
#18 1.389         args: [],
#18 1.389     }
#18 1.389 [DEBUG TimerFinished] jump::prepare_boot(), Elapsed=13.055534ms
#18 1.397 [DEBUG TimerFinished] BuildRoot::find(), Elapsed=30.2µs
#18 1.397 [DEBUG TimerFinished] PantsConfig::parse(), Elapsed=233.904µs
#18 1.397 [INFO  scie_pants] Found Pants build root at Some("/app")
#18 1.397 [INFO  scie_pants] The required Pants version is Some("2.16.0rc4")
#18 1.397 [DEBUG TimerFinished] scie-pants::get_pants_process(), Elapsed=341.206µs
#18 1.397 [TRACE scie_pants] Launching: Process {
#18 1.397         exe: "/root/bin/pants",
#18 1.397         args: [],
#18 1.397         env: [
#18 1.397             (
#18 1.397                 "SCIE_BOOT",
#18 1.397                 "pants",
#18 1.397             ),
#18 1.397             (
#18 1.397                 "PANTS_BIN_NAME",
#18 1.397                 "pants",
#18 1.397             ),
#18 1.397             (
#18 1.397                 "PANTS_DEBUG",
#18 1.397                 "",
#18 1.397             ),
#18 1.397             (
#18 1.397                 "PANTS_BUILDROOT_OVERRIDE",
#18 1.397                 "/app",
#18 1.397             ),
#18 1.397             (
#18 1.397                 "PANTS_VERSION",
#18 1.397                 "2.16.0rc4",
#18 1.397             ),
#18 1.397         ],
#18 1.397     }
#18 1.398 [DEBUG TimerFinished] lift::assemble(), Elapsed=4.5µs
#18 1.398 [DEBUG TimerFinished] fingerprint::digest(), Elapsed=45.6µs
#18 1.399 [DEBUG TimerFinished] lift::load_scie(), Elapsed=226.904µs
#18 1.399 [TRACE jump] Loaded lift manifest from /root/bin/pants:
#18 1.399     Lift {
#18 1.399         name: "scie-pants",
#18 1.399         description: Some(
#18 1.399             "Isolates your Pants from the elements.",
#18 1.399         ),
#18 1.399         base: None,
#18 1.399         load_dotenv: true,
#18 1.399         size: 5862,
#18 1.399         hash: "11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed",
#18 1.399         boot: Boot {
#18 1.399             commands: {
#18 1.399                 "": Cmd {
#18 1.399                     exe: "{scie-pants.bin}",
#18 1.399                     args: [],
#18 1.399                     env: {},
#18 1.399                     description: None,
#18 1.399                 },
#18 1.399                 "bootstrap-tools": Cmd {
#18 1.399                     exe: "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.399                     args: [
#18 1.399                         "{tools.pex}",
#18 1.399                         "bootstrap-tools",
#18 1.399                         "--python-distribution-hash",
#18 1.399                         "{scie.files:hash.{scie.bindings.configure:PYTHON}}",
#18 1.399                         "--pants-version",
#18 1.399                         "{scie.bindings.configure:PANTS_VERSION}",
#18 1.399                     ],
#18 1.399                     env: {
#18 1.399                         Replace(
#18 1.399                             "PEX_PYTHON_PATH",
#18 1.399                         ): Some(
#18 1.399                             "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.399                         ),
#18 1.399                         Replace(
#18 1.399                             "PEX_ROOT",
#18 1.399                         ): Some(
#18 1.399                             "{scie.bindings}/pex_root",
#18 1.399                         ),
#18 1.399                         Replace(
#18 1.399                             "_SCIENCE_IG_cpython_python_cpython38",
#18 1.399                         ): Some(
#18 1.399                             "python/bin/python3.8",
#18 1.399                         ),
#18 1.399                         Replace(
#18 1.399                             "_SCIENCE_IG_cpython_python_cpython39",
#18 1.399                         ): Some(
#18 1.399                             "python/bin/python3.9",
#18 1.399                         ),
#18 1.399                         Default(
#18 1.399                             "PEX_.*",
#18 1.399                         ): None,
#18 1.399                     },
#18 1.399                     description: None,
#18 1.399                 },
#18 1.399                 "pants": Cmd {
#18 1.399                     exe: "{scie.bindings.install:PANTS_CLIENT_EXE}",
#18 1.399                     args: [
#18 1.399                         "{scie.bindings.configure:PANTS_SHA_FIND_LINKS}",
#18 1.399                     ],
#18 1.399                     env: {
#18 1.399                         Replace(
#18 1.399                             "PANTS_VERSION",
#18 1.399                         ): Some(
#18 1.399                             "{scie.bindings.configure:PANTS_VERSION}",
#18 1.399                         ),
#18 1.399                         Replace(
#18 1.399                             "_PANTS_SERVER_EXE",
#18 1.399                         ): Some(
#18 1.399                             "{scie.bindings.install:PANTS_SERVER_EXE}",
#18 1.399                         ),
#18 1.399                         Default(
#18 1.399                             "PANTS_BUILDROOT_OVERRIDE",
#18 1.399                         ): Some(
#18 1.399                             "{scie.bindings.configure:PANTS_BUILDROOT_OVERRIDE}",
#18 1.399                         ),
#18 1.399                     },
#18 1.399                     description: None,
#18 1.399                 },
#18 1.399                 "pants-debug": Cmd {
#18 1.399                     exe: "{scie.bindings.install:VIRTUAL_ENV}/bin/pants",
#18 1.399                     args: [
#18 1.399                         "-c",
#18 1.399                         "sys = __import__(\"sys\")\nsys.path.pop(0)\nprint(\n    \"Launching debugpy server at '127.0.0.1:5678' and waiting for client connection.\",\n    file=sys.stderr\n)\ndel sys\n__import__(\"debugpy.server.cli\").server.cli.main()\n",
#18 1.399                         "--listen",
#18 1.399                         "127.0.0.1:5678",
#18 1.399                         "--wait-for-client",
#18 1.399                         "{scie.bindings.install:VIRTUAL_ENV}/bin/pants",
#18 1.399                         "{scie.bindings.configure:PANTS_SHA_FIND_LINKS}",
#18 1.399                     ],
#18 1.399                     env: {
#18 1.399                         Replace(
#18 1.399                             "PANTS_VERSION",
#18 1.399                         ): Some(
#18 1.399                             "{scie.bindings.configure:PANTS_VERSION}",
#18 1.399                         ),
#18 1.399                         Default(
#18 1.399                             "PANTS_BUILDROOT_OVERRIDE",
#18 1.399                         ): Some(
#18 1.399                             "{scie.bindings.configure:PANTS_BUILDROOT_OVERRIDE}",
#18 1.399                         ),
#18 1.399                     },
#18 1.399                     description: None,
#18 1.399                 },
#18 1.399                 "update": Cmd {
#18 1.399                     exe: "{cpython39}/python/bin/python3.9",
#18 1.399                     args: [
#18 1.399                         "{tools.pex}",
#18 1.399                         "update-scie-pants",
#18 1.399                         "--ptex-path",
#18 1.399                         "{ptex}",
#18 1.399                         "--platform",
#18 1.399                         "{scie.platform}",
#18 1.399                         "--base-dir",
#18 1.399                         "{scie.bindings}",
#18 1.399                         "--scie",
#18 1.399                         "{scie}",
#18 1.399                         "--current-version",
#18 1.399                         "{scie.bindings.scie-pants-info:VERSION}",
#18 1.399                         "--github-api-bearer-token",
#18 1.399                         "{scie.env.PANTS_BOOTSTRAP_GITHUB_API_BEARER_TOKEN}",
#18 1.399                     ],
#18 1.399                     env: {
#18 1.399                         Replace(
#18 1.399                             "PEX_PYTHON_PATH",
#18 1.399                         ): Some(
#18 1.399                             "{cpython39}/python/bin/python3.9",
#18 1.399                         ),
#18 1.399                         Replace(
#18 1.399                             "PEX_ROOT",
#18 1.399                         ): Some(
#18 1.399                             "{scie.bindings}/pex_root",
#18 1.399                         ),
#18 1.399                         Default(
#18 1.399                             "PEX_.*",
#18 1.399                         ): None,
#18 1.399                     },
#18 1.399                     description: None,
#18 1.399                 },
#18 1.399             },
#18 1.399             bindings: {
#18 1.399                 "configure": Cmd {
#18 1.399                     exe: "{cpython39}/python/bin/python3.9",
#18 1.399                     args: [
#18 1.399                         "{tools.pex}",
#18 1.399                         "configure-pants",
#18 1.399                         "--ptex-path",
#18 1.399                         "{ptex}",
#18 1.399                         "--pants-version",
#18 1.399                         "{scie.env.PANTS_VERSION}",
#18 1.399                         "--pants-sha",
#18 1.399                         "{scie.env.PANTS_SHA}",
#18 1.399                         "--pants-config",
#18 1.399                         "{scie.env.PANTS_TOML}",
#18 1.399                         "--github-api-bearer-token",
#18 1.399                         "{scie.env.PANTS_BOOTSTRAP_GITHUB_API_BEARER_TOKEN}",
#18 1.399                         "{scie.bindings}",
#18 1.399                     ],
#18 1.399                     env: {
#18 1.399                         Replace(
#18 1.399                             "PEX_PYTHON_PATH",
#18 1.399                         ): Some(
#18 1.399                             "{cpython39}/python/bin/python3.9",
#18 1.399                         ),
#18 1.399                         Replace(
#18 1.399                             "PEX_ROOT",
#18 1.399                         ): Some(
#18 1.399                             "{scie.bindings}/pex_root",
#18 1.399                         ),
#18 1.399                         Default(
#18 1.399                             "PANTS_VERSION_PROMPT_SALT",
#18 1.399                         ): Some(
#18 1.399                             "{scie.env.PANTS_VERSION_PROMPT_SALT}",
#18 1.399                         ),
#18 1.399                         Default(
#18 1.399                             "PEX_.*",
#18 1.399                         ): None,
#18 1.399                     },
#18 1.399                     description: None,
#18 1.399                 },
#18 1.399                 "fetch": Cmd {
#18 1.399                     exe: "{ptex}",
#18 1.399                     args: [
#18 1.399                         "{scie.env.PANTS_BOOTSTRAP_URLS={scie.lift}}",
#18 1.399                     ],
#18 1.399                     env: {},
#18 1.399                     description: None,
#18 1.399                 },
#18 1.399                 "install": Cmd {
#18 1.399                     exe: "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.399                     args: [
#18 1.399                         "{tools.pex}",
#18 1.399                         "install-pants",
#18 1.399                         "--pants-version",
#18 1.399                         "{scie.bindings.configure:PANTS_VERSION}",
#18 1.399                         "--find-links",
#18 1.399                         "{scie.bindings.configure:FIND_LINKS}",
#18 1.399                         "--debug",
#18 1.399                         "{scie.env.PANTS_DEBUG}",
#18 1.399                         "--debugpy-requirement",
#18 1.399                         "{scie.env.PANTS_DEBUGPY_VERSION}",
#18 1.399                         "{scie.bindings}",
#18 1.399                     ],
#18 1.399                     env: {
#18 1.399                         Replace(
#18 1.399                             "PEX_PYTHON_PATH",
#18 1.399                         ): Some(
#18 1.399                             "{scie.files.{scie.bindings.configure:PYTHON}}/{scie.env._SCIENCE_IG_cpython_python_{scie.bindings.configure:PYTHON}}",
#18 1.399                         ),
#18 1.399                         Replace(
#18 1.399                             "PEX_ROOT",
#18 1.399                         ): Some(
#18 1.399                             "{scie.bindings}/pex_root",
#18 1.399                         ),
#18 1.399                         Replace(
#18 1.399                             "_SCIENCE_IG_cpython_python_cpython38",
#18 1.399                         ): Some(
#18 1.399                             "python/bin/python3.8",
#18 1.399                         ),
#18 1.399                         Replace(
#18 1.399                             "_SCIENCE_IG_cpython_python_cpython39",
#18 1.399                         ): Some(
#18 1.399                             "python/bin/python3.9",
#18 1.399                         ),
#18 1.399                         Default(
#18 1.399                             "PEX_.*",
#18 1.399                         ): None,
#18 1.399                     },
#18 1.399                     description: None,
#18 1.399                 },
#18 1.399                 "scie-pants-info": Cmd {
#18 1.399                     exe: "{cpython39}/python/bin/python3.9",
#18 1.399                     args: [
#18 1.399                         "{tools.pex}",
#18 1.399                         "record-scie-pants-info",
#18 1.399                         "--base-dir",
#18 1.399                         "{scie.bindings}",
#18 1.399                         "--scie",
#18 1.399                         "{scie}",
#18 1.399                     ],
#18 1.399                     env: {
#18 1.399                         Replace(
#18 1.399                             "PEX_PYTHON_PATH",
#18 1.399                         ): Some(
#18 1.399                             "{cpython39}/python/bin/python3.9",
#18 1.399                         ),
#18 1.399                         Replace(
#18 1.399                             "PEX_ROOT",
#18 1.399                         ): Some(
#18 1.399                             "{scie.bindings}/pex_root",
#18 1.399                         ),
#18 1.399                         Default(
#18 1.399                             "PEX_.*",
#18 1.399                         ): None,
#18 1.399                     },
#18 1.399                     description: None,
#18 1.399                 },
#18 1.399             },
#18 1.399         },
#18 1.399         files: [
#18 1.399             File {
#18 1.399                 name: "ptex-linux-x86_64",
#18 1.399                 key: Some(
#18 1.399                     "ptex",
#18 1.399                 ),
#18 1.399                 size: 3904904,
#18 1.399                 hash: "22652cf60b12e7a187ea0cf21d7bc9d8234bbb630fa94ca6f9c28655bd6a81fb",
#18 1.399                 file_type: Blob,
#18 1.399                 executable: Some(
#18 1.399                     true,
#18 1.399                 ),
#18 1.399                 eager_extract: false,
#18 1.399                 source: Scie,
#18 1.399             },
#18 1.399             File {
#18 1.399                 name: "cpython-3.8.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz",
#18 1.399                 key: Some(
#18 1.399                     "cpython38",
#18 1.399                 ),
#18 1.399                 size: 25953194,
#18 1.399                 hash: "8522b181c018e798ecb7dc54b5eedf7686cb258e6e33b3f7f0488ceb912a341e",
#18 1.399                 file_type: Archive(
#18 1.399                     CompressedTar(
#18 1.399                         Gzip,
#18 1.399                     ),
#18 1.399                 ),
#18 1.399                 executable: None,
#18 1.399                 eager_extract: false,
#18 1.399                 source: LoadBinding(
#18 1.399                     "fetch",
#18 1.399                 ),
#18 1.399             },
#18 1.399             File {
#18 1.399                 name: "cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz",
#18 1.399                 key: Some(
#18 1.399                     "cpython39",
#18 1.399                 ),
#18 1.399                 size: 25738357,
#18 1.399                 hash: "2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b",
#18 1.399                 file_type: Archive(
#18 1.399                     CompressedTar(
#18 1.399                         Gzip,
#18 1.399                     ),
#18 1.399                 ),
#18 1.399                 executable: None,
#18 1.399                 eager_extract: false,
#18 1.399                 source: LoadBinding(
#18 1.399                     "fetch",
#18 1.399                 ),
#18 1.399             },
#18 1.399             File {
#18 1.399                 name: "scie-pants.bin",
#18 1.399                 key: None,
#18 1.399                 size: 759960,
#18 1.399                 hash: "3e38bf89774a7108031fc6dd7fad2e7c1e4c833a69e2f906356a410b3d90efab",
#18 1.399                 file_type: Blob,
#18 1.399                 executable: Some(
#18 1.399                     true,
#18 1.399                 ),
#18 1.399                 eager_extract: false,
#18 1.399                 source: Scie,
#18 1.399             },
#18 1.399             File {
#18 1.399                 name: "tools.pex",
#18 1.399                 key: None,
#18 1.399                 size: 1285047,
#18 1.399                 hash: "5b7e43d9b857d76bdfaa946b6b58c47c04d02fb5b087532e0f7f403bffe5eddb",
#18 1.399                 file_type: Blob,
#18 1.399                 executable: Some(
#18 1.399                     true,
#18 1.399                 ),
#18 1.399                 eager_extract: false,
#18 1.399                 source: Scie,
#18 1.399             },
#18 1.399         ],
#18 1.399         other: Some(
#18 1.399             Other {
#18 1.399                 other: {
#18 1.399                     "ptex": Object {
#18 1.399                         "cpython-3.8.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz": String("https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.8.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz"),
#18 1.399                         "cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz": String("https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.9.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz"),
#18 1.399                     },
#18 1.399                     "science": Object {
#18 1.399                         "app_info": Object {
#18 1.399                             "repo": String("https://github.com/pantsbuild/scie-pants"),
#18 1.399                         },
#18 1.399                         "binary": Object {
#18 1.399                             "hash": String("8e308fc8ee839d9bba6da1f7271c1b8b7c895fab97b8c57b0f837314fcc5a295"),
#18 1.399                             "size": Number(6465489),
#18 1.399                             "url": String("https://github.com/a-scie/lift/releases/download/v0.1.2/science-linux-x86_64"),
#18 1.399                             "version": String("0.1.2"),
#18 1.399                         },
#18 1.399                         "git_state": String("v0.8.1-0-g0b8204e"),
#18 1.399                         "manifest": Object {
#18 1.399                             "hash": String("5b79b2d2055380116e8cbf684f230f3af1f816894d16765a8b5bde8ddd19b379"),
#18 1.399                             "size": Number(5300),
#18 1.399                             "source": String("package/scie-pants.toml"),
#18 1.399                         },
#18 1.399                         "notes": Array [
#18 1.399                             String("This scie lift JSON manifest was generated from a source lift toml manifest using the science binary."),
#18 1.399                             String("Find out more here: https://github.com/a-scie/lift/blob/v0.1.2/README.md"),
#18 1.399                         ],
#18 1.399                     },
#18 1.399                 },
#18 1.399             },
#18 1.399         ),
#18 1.399     }
#18 1.399 [DEBUG jump] Loaded env file from /app/.env
#18 1.399 [DEBUG TimerFinished] jump::load_dotenv, Elapsed=49.101µs
#18 1.399 [DEBUG TimerFinished] Context::new(), Elapsed=16.8µs
#18 1.399 [DEBUG TimerFinished] Process::fingerprint(), Elapsed=35.201µs
#18 1.400 [TRACE jump::context] Installing boot binding Binding {
#18 1.400         target: "/root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/locks/configure-b58dece752db7157f9122f0dbb0d713c00f97e12b655e8ee0ff6ddfefc730bcd",
#18 1.400         process: Process {
#18 1.400             env: EnvVars {
#18 1.400                 vars: [
#18 1.400                     Replace(
#18 1.400                         (
#18 1.400                             "PEX_PYTHON_PATH",
#18 1.400                             "/root/.cache/nce/2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b/cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz/python/bin/python3.9",
#18 1.400                         ),
#18 1.400                     ),
#18 1.400                     Replace(
#18 1.400                         (
#18 1.400                             "PEX_ROOT",
#18 1.400                             "/root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings/pex_root",
#18 1.400                         ),
#18 1.400                     ),
#18 1.400                     Default(
#18 1.400                         (
#18 1.400                             "PANTS_VERSION_PROMPT_SALT",
#18 1.400                             "",
#18 1.400                         ),
#18 1.400                     ),
#18 1.400                     RemoveMatching(
#18 1.400                         ComparableRegex(
#18 1.400                             PEX_.*,
#18 1.400                         ),
#18 1.400                     ),
#18 1.400                 ],
#18 1.400             },
#18 1.400             exe: "/root/.cache/nce/2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b/cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz/python/bin/python3.9",
#18 1.400             args: [
#18 1.400                 "/root/.cache/nce/5b7e43d9b857d76bdfaa946b6b58c47c04d02fb5b087532e0f7f403bffe5eddb/tools.pex",
#18 1.400                 "configure-pants",
#18 1.400                 "--ptex-path",
#18 1.400                 "/root/.cache/nce/22652cf60b12e7a187ea0cf21d7bc9d8234bbb630fa94ca6f9c28655bd6a81fb/ptex-linux-x86_64",
#18 1.400                 "--pants-version",
#18 1.400                 "2.16.0rc4",
#18 1.400                 "--pants-sha",
#18 1.400                 "",
#18 1.400                 "--pants-config",
#18 1.400                 "",
#18 1.400                 "--github-api-bearer-token",
#18 1.400                 "",
#18 1.400                 "/root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings",
#18 1.400             ],
#18 1.400         },
#18 1.400     }
#18 1.426 [DEBUG TimerFinished] fingerprint::digest_reader(), Elapsed=26.507474ms
#18 1.426 [DEBUG jump::installer] The blob destination /root/.cache/nce/22652cf60b12e7a187ea0cf21d7bc9d8234bbb630fa94ca6f9c28655bd6a81fb/ptex-linux-x86_64 of size 3904904 had expected hash
#18 1.456 [DEBUG TimerFinished] installer::unpack_blob(), Elapsed=56.42911ms
#18 1.465 [DEBUG TimerFinished] fingerprint::digest_reader(), Elapsed=8.735957ms
#18 1.465 [DEBUG jump::installer] The blob destination /root/.cache/nce/5b7e43d9b857d76bdfaa946b6b58c47c04d02fb5b087532e0f7f403bffe5eddb/tools.pex of size 1285047 had expected hash
#18 1.475 [DEBUG TimerFinished] installer::unpack_blob(), Elapsed=19.110442ms
#18 1.475 [INFO  jump::installer] Loading cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz via "/root/.cache/nce/22652cf60b12e7a187ea0cf21d7bc9d8234bbb630fa94ca6f9c28655bd6a81fb/ptex-linux-x86_64"...
#18 2.305 [DEBUG TimerFinished] fingerprint::digest_reader(), Elapsed=180.347227ms
#18 2.305 [DEBUG jump::installer] The tar.gz destination /root/.cache/nce/2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b/cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz of size 25738357 had expected hash
#18 3.285 [DEBUG TimerFinished] installer::unpack_tar(), Elapsed=979.787331ms
#18 3.285 [DEBUG TimerFinished] installer::unpack_archive(), Elapsed=1.809615279s
#18 3.285 [DEBUG TimerFinished] Installer::install(), Elapsed=1.885272733s
#18 6.343 [DEBUG TimerFinished] Process::fingerprint(), Elapsed=42.401µs
#18 6.343 [TRACE jump::context] Installing boot binding Binding {
#18 6.343         target: "/root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/locks/install-e87f50988fa3d8ed1570628dd32d9fc6f3c10d8e6ead4011d814cf2d3f3939eb",
#18 6.343         process: Process {
#18 6.343             env: EnvVars {
#18 6.343                 vars: [
#18 6.343                     Replace(
#18 6.343                         (
#18 6.343                             "PEX_PYTHON_PATH",
#18 6.343                             "/root/.cache/nce/2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b/cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz/python/bin/python3.9",
#18 6.343                         ),
#18 6.343                     ),
#18 6.343                     Replace(
#18 6.343                         (
#18 6.343                             "PEX_ROOT",
#18 6.343                             "/root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings/pex_root",
#18 6.343                         ),
#18 6.343                     ),
#18 6.343                     Replace(
#18 6.343                         (
#18 6.343                             "_SCIENCE_IG_cpython_python_cpython38",
#18 6.343                             "python/bin/python3.8",
#18 6.343                         ),
#18 6.343                     ),
#18 6.343                     Replace(
#18 6.343                         (
#18 6.343                             "_SCIENCE_IG_cpython_python_cpython39",
#18 6.343                             "python/bin/python3.9",
#18 6.343                         ),
#18 6.343                     ),
#18 6.343                     RemoveMatching(
#18 6.343                         ComparableRegex(
#18 6.343                             PEX_.*,
#18 6.343                         ),
#18 6.343                     ),
#18 6.343                 ],
#18 6.343             },
#18 6.343             exe: "/root/.cache/nce/2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b/cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz/python/bin/python3.9",
#18 6.343             args: [
#18 6.343                 "/root/.cache/nce/5b7e43d9b857d76bdfaa946b6b58c47c04d02fb5b087532e0f7f403bffe5eddb/tools.pex",
#18 6.343                 "install-pants",
#18 6.343                 "--pants-version",
#18 6.343                 "2.16.0rc4",
#18 6.343                 "--find-links",
#18 6.343                 "file:///root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings/find_links/2.16.0rc4/920d0b88/index.html",
#18 6.343                 "--debug",
#18 6.343                 "",
#18 6.343                 "--debugpy-requirement",
#18 6.343                 "",
#18 6.343                 "/root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings",
#18 6.343             ],
#18 6.343         },
#18 6.343     }
#18 6.343 [DEBUG TimerFinished] Installer::install(), Elapsed=1µs
#18 6.609 Bootstrapping Pants 2.16.0rc4 using cpython 3.9.16
#18 6.609 Installing pantsbuild.pants==2.16.0rc4 into a virtual environment at /root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings/venvs/2.16.0rc4
#18 11.40      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 33.5 MB/s eta 0:00:00
#18 11.87      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 819.3/819.3 KB 45.8 MB/s eta 0:00:00
#18 11.97      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 64.5/64.5 KB 7.0 MB/s eta 0:00:00
#18 29.61 New virtual environment successfully created at /root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings/venvs/2.16.0rc4.
#18 29.63 [DEBUG TimerFinished] Installer::install(), Elapsed=1.1µs
#18 29.63 [TRACE jump] Prepared Process {
#18 29.63         env: EnvVars {
#18 29.63             vars: [
#18 29.63                 Replace(
#18 29.63                     (
#18 29.63                         "PANTS_VERSION",
#18 29.63                         "2.16.0rc4",
#18 29.63                     ),
#18 29.63                 ),
#18 29.63                 Replace(
#18 29.63                     (
#18 29.63                         "_PANTS_SERVER_EXE",
#18 29.63                         "/root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings/venvs/2.16.0rc4/bin/pants",
#18 29.63                     ),
#18 29.63                 ),
#18 29.63                 Default(
#18 29.63                     (
#18 29.63                         "PANTS_BUILDROOT_OVERRIDE",
#18 29.63                         "",
#18 29.63                     ),
#18 29.63                 ),
#18 29.63             ],
#18 29.63         },
#18 29.63         exe: "/root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings/venvs/2.16.0rc4/bin/pants",
#18 29.63         args: [
#18 29.63             "--python-repos-find-links=-[\'file:///root/.cache/nce/11d6ad82783fcc43d94fc1252a886950375d9f311a16b9d6b51d766a86a097ed/bindings/find_links/2.16.0rc4/920d0b88/index.html\']",
#18 29.63         ],
#18 29.63     }
#18 29.63 [DEBUG TimerFinished] jump::prepare_boot(), Elapsed=28.230433926s
#18 35.46 23:11:11.17 [INFO] waiting for pantsd to start...
#18 40.47 23:11:16.19 [INFO] waiting for pantsd to start...
#18 43.28 23:11:18.99 [INFO] pantsd started
#18 43.73 23:11:19.45 [INFO] Initializing scheduler...
#18 59.54 23:11:35.25 [INFO] Scheduler initialized.
#18 59.81 2.16.0rc4
#18 DONE 60.3s
erjac77 commented 1 year ago
#18 [build-stage 7/7] RUN ./get-pants.sh     && pants --version
#18 0.296 Downloading and installing the pants launcher ...
#18 0.917 Installed the pants launcher from https://github.com/pantsbuild/scie-pants/releases/latest/download/scie-pants-linux-x86_64 to /root/bin/pants
#18 0.917 
#18 0.917 Running `pants` in a Pants-enabled repo will use the version of Pants configured for that repo.
#18 0.917 In a repo not yet Pants-enabled, it will prompt you to set up Pants for that repo.
#18 1.264 HTTP/2 302 
#18 1.264 server: GitHub.com
#18 1.264 date: Tue, 06 Jun 2023 23:21:34 GMT
#18 1.264 content-type: text/html; charset=utf-8
#18 1.264 vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, Accept-Encoding, Accept, X-Requested-With
#18 1.264 location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/162334160/a9867b44-5cac-4071-a632-a2e6e9ab00ca?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20230606%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230606T232134Z&X-Amz-Expires=300&X-Amz-Signature=1c8096fd982b13b12aea162245879b5648e8ef13955c07b1f10e9913bf5967e3&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=162334160&response-content-disposition=attachment%3B%20filename%3Dcpython-3.9.16%2B20230507-x86_64-unknown-linux-gnu-install_only.tar.gz&response-content-type=application%2Foctet-stream
#18 1.264 cache-control: no-cache
#18 1.264 strict-transport-security: max-age=31536000; includeSubdomains; preload
#18 1.264 x-frame-options: deny
#18 1.264 x-content-type-options: nosniff
#18 1.264 x-xss-protection: 0
#18 1.264 referrer-policy: no-referrer-when-downgrade
#18 1.264 content-security-policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com objects-origin.githubusercontent.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events *.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ wss://*.actions.githubusercontent.com github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com objects-origin.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; worker-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/
#18 1.264 content-length: 0
#18 1.264 x-github-request-id: B993:156A:1420A:1BF37:647FBF7E
#18 1.264 
#18 1.354 HTTP/2 200 
#18 1.354 content-type: application/octet-stream
#18 1.354 content-md5: 3LqINOUXtCk8u1zrnFvCEw==
#18 1.354 last-modified: Sun, 14 May 2023 17:35:11 GMT
#18 1.354 etag: "0x8DB54A19186E55D"
#18 1.354 server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
#18 1.354 x-ms-request-id: d8b29e33-f01e-005c-1ccd-98b40d000000
#18 1.354 x-ms-version: 2020-04-08
#18 1.354 x-ms-creation-time: Sun, 14 May 2023 17:35:11 GMT
#18 1.354 x-ms-lease-status: unlocked
#18 1.354 x-ms-lease-state: available
#18 1.354 x-ms-blob-type: BlockBlob
#18 1.354 content-disposition: attachment; filename=cpython-3.9.16+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz
#18 1.354 x-ms-server-encrypted: true
#18 1.354 via: 1.1 varnish, 1.1 varnish
#18 1.354 fastly-restarts: 1
#18 1.354 accept-ranges: bytes
#18 1.354 age: 0
#18 1.354 date: Tue, 06 Jun 2023 23:21:34 GMT
#18 1.354 x-served-by: cache-iad-kcgs7200126-IAD, cache-yul12830-YUL
#18 1.354 x-cache: MISS, MISS
#18 1.354 x-cache-hits: 0, 0
#18 1.354 x-timer: S1686093695.623819,VS0,VE68
#18 1.354 content-length: 25738357
#18 1.354 
#18 1.474 thread 'main' panicked at 'Failed to write data to output: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }', src/main.rs:68:14
#18 1.474 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
#18 1.479 Killed
#18 ERROR: process "/bin/sh -c ./get-pants.sh     && pants --version" did not complete successfully: exit code: 137
jsirois commented 1 year ago

Well damn. Thanks @erjac77 that still reveals ~nothing. The ptex (it's just a static curl binary really) subprocess launched by scie-jump starts the download and content-length: 25738357 looks right and then about 100ms later scie-jump appears to die which closes the stdout pipe it has connected between the ptex subprocess and a tmp file. So the why is still totally missing.

I'm baffled. @erjac77 thanks for continuing to play along - this is hard to figure out without a repro I can lay my hands on. Is there anything suspicious in the env of that shell? The only change in scie-jump 0.11.0 -> 0.11.1 (which was what scie-pants 0.8.2 picked up as its only change in turn) was in preparation of env vars to launch subprocesses with. Here it's already successfully launched the ptex subprocess; so I'm not seeing how the env var fix is in-play, but I have nothing else to grasp at at the moment.

erjac77 commented 1 year ago

@jsirois Thx for your help. I'm also baffled by all this.

The only others env vars we have are for the CA Certificates and the ~/bin directory, which must be on the PATH as per Pants documentation.

ENV CERT_PATH=/etc/ssl/certs/ca-certificates.crt
ENV SSL_CERT_FILE=$CERT_PATH \
    REQUESTS_CA_BUNDLE=$CERT_PATH
ENV PATH=$PATH:/root/bin:/root/.local/bin

For now, we will run scie-pants 0.8.1 by passing the version to the get-pants script in the Dockerfile as follow:

RUN ./get-pants.sh -V 0.8.1 && pants --version

jsirois commented 1 year ago

@erjac77 can you provide any details about the Docker image / build tool / command line args (is it docker, podman, something else, etc)? Ideally I'd be able to try to build the same image / have access to the Dockerfile(s).

jsirois commented 1 year ago

@erjac77 as an aside - those docs are sugarcoated for ease of use. If you dig a bit / read the script before running it, you'll see ~/bin is absolutely not a requirement at all - you could say -d /usr/bin and not have to muddle with PATH:

$ curl --proto '=https' --tlsv1.2 -fsSL https://static.pantsbuild.org/setup/get-pants.sh -O
$ bash get-pants.sh --help
Usage: get-pants.sh

Installs the pants launcher binary.

You only need to run this once on a machine when you do not have "pants"
available to run yet.

The pants binary takes care of managing and running the underlying
Pants version configured in "pants.toml" in the surrounding Pants-using
project.

Once installed, if you want to update your "pants" launcher binary, use
"SCIE_BOOT=update pants" to get the latest release or
"SCIE_BOOT=update pants --help" to learn more options.

-h | --help: Print this help message.

-d | --bin-dir:
  The directory to install the scie-pants binary in, "~/bin" by default.

-b | --base-name:
  The name to use for the scie-pants binary, "pants" by default.

-V | --version:
  The version of the scie-pants binary to install, the latest version by default.
  The available versions can be seen at:
    https://github.com/pantsbuild/scie-pants/releases
erjac77 commented 1 year ago

Here a minimal Dockerfile:

FROM docker.io/python:3.9.16-slim AS build-stage

# Install prerequisites
RUN apt-get update \
    && apt-get install --no-install-recommends -y curl openssl \
    && apt-get autoremove -y \
    && apt-get clean all \
    && rm -rf /var/lib/apt/lists/*

# Make 'app' folder the current working directory
WORKDIR /app

ENV PATH=$PATH:/root/bin:/root/.local/bin
COPY . ./
RUN ./get-pants.sh \
    && pants --version

But as I said before, I'm not able to reproduce the problem locally :( The issue only occurs in Concourse CI.

jsirois commented 1 year ago

I've got a local concourse set up. Can you share your pipeline yaml or the relevant bits? Or when you say you couldn't repro locally had you gone to this length already?

erjac77 commented 1 year ago

No, not that far ;) When I build the image locally, I use the Docker build command.

Unfortunately, I can't share the pipeline, but we use the oci-build task to build images. The problematic part of the pipeline is very similar to the example in the README.

https://github.com/concourse/oci-build-task#migrating-from-the-docker-image-resource

jsirois commented 1 year ago

Ok, thanks. Unfortunately that works fine too. I used the quick start docker-compose setup outlined here: https://concourse-ci.org/quick-start.html

This is the test rig repo: https://github.com/jsirois/scie-pants-issue-205 And the pipeline run looks like: Screenshot 2023-06-06 183824

I think the only good news here is not much news: the specific setup of the Pipeline you have and the worker it runs on is crucial to the error.

erjac77 commented 1 year ago

@jsirois Thank you for your thorough investigation, it is much appreciated. We will continue on our side.

erjac77 commented 1 year ago

We updated our Concourse instances and the issue is gone. Thank you.

jsirois commented 1 year ago

Well, I don't like mysteries, but I'm glad you found a reasonable path forward. Thanks for circling back and letting me know @erjac77 .