Eups distrib install -t v25_0_1 lsst_distrib fails at sconsUtils

Hi (new to the project, and to the forum, first post :wave:)

I’m having issues installing the LSST Science Pipeline, following the installation guide, v25.0.1. I have run this on the RCS CSD3 facility and my local machine running Ubuntu on WSL2. I’m stuck at the eups distrib install -t v25_0_1 lsst_distrib step. Both fail at the same point, so I’m assuming it’s not a system-specific issue, although the exact contents of the error message differ.

The failure comes from the sconsUtils build (see below for the tail of the build logs), and can be recreated with eups distrib install -t v25_0_1 sconsUtils.

On CSD3, I see a segmentation fault and + exit -4.

On my local machine I see a bit more potentially useful info as error messages from pytest (pytest: error: unrecognized arguments: --flake8) and scons make it to the build log. I’ve done a bit of digging on pytest: error: unrecognized arguments: --flake8: flake8 is installed in the Python environment, but it seems the syntax in pytest setup.cfg has changed between versions. Notably, the current pytest setup.cfg on github differs from the v25.0.1 tagged version.
Hopefully someone who understands the build environment or is more familiar with pytest will be able to shed some light on this.

In the mean time - is there an option to build without downloading? I can’t see one in eups distrib install -h. That way I could try building with an edited setup.cfg.

CSD3 build log (tail only):

./ups/eupspkg: line 786: 83552 Segmentation fault      scons -j$NJOBS prefix="$PREFIX" version="$VERSION" cc="$CC"
+ exit -4
eups distrib: Failed to build sconsUtils-gb98748cec6.eupspkg: Command:
        source "/home/ir-mcka1/lsst_stack/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-7.0.1/eups/bin/setups.sh"; export EUPS_PATH="/home/ir-mcka1/lsst_stack/stack/miniconda3-py38_4.9.2-7.0.1"; (/home/ir-mcka1/lsst_stack/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/build.sh) >> /home/ir-mcka1/lsst_stack/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/build.log 2>&1 4>/home/ir-mcka1/lsst_stack/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/build.msg
exited with code 252

Local machine build log (tail only):

running global pytest...
ERROR: usage: pytest [options] [file_or_dir] [file_or_dir] [...]
pytest: error: unrecognized arguments: --flake8
  inifile: /home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/sconsUtils-gb98748cec6/setup.cfg
  rootdir: /home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/sconsUtils-gb98748cec6

Global pytest run: failed with 4
mv: cannot stat 'tests/.tests/pytest-sconsUtils.xml.out': No such file or directory
scons: *** [tests/.tests/pytest-sconsUtils.xml] Error 1
scons: building terminated because of errors.
+ exit -4
eups distrib: Failed to build sconsUtils-gb98748cec6.eupspkg: Command:
        source "/home/dave/lsst_stack/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-7.0.1/eups/bin/setups.sh"; export EUPS_PATH="/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-7.0.1"; (/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/build.sh) >> /home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/build.log 2>&1 4>/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/build.msg
exited with code 252

Thanks!

Update:

The latest weekly build:

curl -OL https://raw.githubusercontent.com/lsst/lsst/main/scripts/newinstall.sh
bash newinstall.sh -ct
source loadLSST.bash
eups distrib install -t w_2023_39 lsst_distrib

works for me.
So, the issue in v25.0.1 arising from consUtils has been solved previously.

Therefore, I assume, the key issue is that the new install instructions point to a version that fails to build.

You can’t use old releases with new conda environment.

Did you install the conda environment with curl -OL https://raw.githubusercontent.com/lsst/lsst/25.0.1/scripts/newinstall.sh ? That should get you an older rubin-env (it will be shown in the prompt). v25 uses pytest-flake8 as part of the build but newer releases do not and we removed that package from the conda environment.

Hi Tim,
Thanks for your reply.

Yes, I used curl -OL https://raw.githubusercontent.com/lsst/lsst/25.0.1/scripts/newinstall.sh as per the installation instructions. So the versions matched up.

Something is wrong then. Can you show us what your prompt looks like so we can see which rubin-env you have installed?

Sure thing. Here’s my bash history:

 2001  mkdir lsst_stack_test
 2002  cd lsst_stack_test/
 2003  curl -OL https://raw.githubusercontent.com/lsst/lsst/25.0.1/scripts/newinstall.sh
 2004  bash newinstall.sh -ct
 2005  source loadLSST.bash
 2006  eups distrib install -t v25_0_1 lsst_distrib

And the output for the eups command (all other output was as expected, and newinstall.sh exited normally):

(lsst-scipipe-7.0.1) dave@DM-Surface:~/lsst_stack_test$ eups distrib install -t v25_0_1 lsst_distrib
   [  1/90 ]  alert_packet g5d8fbe4fe2                                   done.
   [  2/90 ]  fgcm g322c47f462                                           done.
   [  3/90 ]  gbdes g00d849c8c0                                          done.
   [  4/90 ]  kht gafcb7142de                                            done.
   [  5/90 ]  obs_decam_data gc3e517dea3                                 done.
   [  6/90 ]  obs_lsst_data gbdb8a927be                                  done.
   [  7/90 ]  obs_subaru_data g2f68bc2906                                done.
   [  8/90 ]  proxmin g33b4157f25                                        done.
  [  9/90 ]  sconsUtils gb98748cec6 ...

***** error: from /home/dave/lsst_stack_test/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/build.log:
pytest: automated test discovery mode enabled.
scons: done reading SConscript files.
scons: Building targets ...
scons: Nothing to be done for `python'.
rewrite_shebang(["bin/makeLinkFarm"], ["bin.src/makeLinkFarm"])
rewrite_shebang(["bin/sconsOpts"], ["bin.src/sconsOpts"])
Cannot guess fingerprint without .git directory; will be set to '0x0'.
scons: Nothing to be done for `doc'.
running tests/testSingle.py... failed
running global pytest...
ERROR: usage: pytest [options] [file_or_dir] [file_or_dir] [...]
pytest: error: unrecognized arguments: --flake8
  inifile: /home/dave/lsst_stack_test/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/sconsUtils-gb98748cec6/setup.cfg
  rootdir: /home/dave/lsst_stack_test/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/sconsUtils-gb98748cec6

Global pytest run: failed with 4
mv: cannot stat 'tests/.tests/pytest-sconsUtils.xml.out': No such file or directory
scons: *** [tests/.tests/pytest-sconsUtils.xml] Error 1
scons: building terminated because of errors.
+ exit -4
eups distrib: Failed to build sconsUtils-gb98748cec6.eupspkg: Command:
        source "/home/dave/lsst_stack_test/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-7.0.1/eups/bin/setups.sh"; export EUPS_PATH="/home/dave/lsst_stack_test/stack/miniconda3-py38_4.9.2-7.0.1"; (/home/dave/lsst_stack_test/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/build.sh) >> /home/dave/lsst_stack_test/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/build.log 2>&1 4>/home/dave/lsst_stack_test/stack/miniconda3-py38_4.9.2-7.0.1/EupsBuildDir/Linux64/sconsUtils-gb98748cec6/build.msg
exited with code 252

Happy to provide the newinstall.sh output if you need it.

I think we may have an incorrect set of tags here. We’ll investigate.

Thanks to Matthias Wittgen, the tags have been fixed, and you should now get the proper version of rubin-env (5.0.1) when doing a curl -LO https://raw.githubusercontent.com/lsst/lsst/25.0.1/scripts/newinstall.sh

(You can also try using lsstinstall, which will be the supported installation mechanism going forward.)

1 Like

Thanks @ktl and @timj.
That fix helped as the build now gets past consUtils, however it now fails at afw.

Here’s the end of the build.log for afw:

/home/dave/lsst_stack/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-5.0.1/bin/x86_64-conda-linux-gnu-c++ -o src/table/aggregates.os -c -fvisibility-inlines-hidden -fmessage-length=0 -std=c++17 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -ffunction-sections -pipe -isystem /home/dave/lsst_stack/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-5.0.1/include -g -DLSST_LITTLE_ENDIAN=1 -O3 -Wall -Wno-unknown-pragmas -Wno-unused-local-typedefs -fno-lto -fPIC -Iinclude -I/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-5.0.1/Linux64/astshim/g38293774b4+62d12e78cb/include -I/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-5.0.1/Linux64/pex_config/g79ca90bc5c+fa2cc03294/include -I/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-5.0.1/Linux64/log/g9d27549199+78cd207961/include -I/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-5.0.1/Linux64/geom/g3b44f30a73+2891c76795/include -I/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-5.0.1/Linux64/sphgeom/gb35d6563ee+62d12e78cb/include -I/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-5.0.1/Linux64/daf_base/g5c4744a4d9+78cd207961/include -I/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-5.0.1/Linux64/cpputils/g2e2c1a68ba+cc1f6f037e/include -I/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-5.0.1/Linux64/pex_exceptions/g48ccf36440+885b902d19/include -I/home/dave/lsst_stack/stack/miniconda3-py38_4.9.2-5.0.1/Linux64/base/g7985c39107+62d12e78cb/include -isystem /home/dave/lsst_stack/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-5.0.1/include -isystem /home/dave/lsst_stack/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-5.0.1/include/python3.10 -isystem /home/dave/lsst_stack/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-5.0.1/lib/python3.10/site-packages/numpy/core/include -isystem /home/dave/lsst_stack/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-5.0.1/include/eigen3 -isystem /home/dave/lsst_stack/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-5.0.1/include/Minuit2 src/table/aggregates.cc
{standard input}: Error: invalid operands (.text._ZN5boost8geometry6detail9get_turns21get_turns_in_sectionsINS0_5model13multi_polygonINS4_7polygonIN4lsst4geom5PointIdLi2EEELb1ELb1ESt6vectorSB_SaSaEESB_SaEESD_Lb0ELb0ENS0_7sectionINS4_3boxISA_EELm2EEESH_NS1_7overlay13get_turn_infoINSI_18assign_null_policyEEEE5applyINS0_10strategies6relate9cartesianIvEENS1_17no_rescale_policyESt5dequeINSI_9turn_infoISA_NS0_13segment_ratioIdEENSI_14turn_operationISA_SW_EENS_5arrayISY_Lm2EEEEESaIS11_EENS1_8disjoint25disjoint_interrupt_policyEEEbiRKSD_RKSH_iS17_S19_bbRKT_RKT0_RT1_RT2_ and *UND* sections) for `-'
{standard input}: Error: .size expression for _ZN5boost8geometry6detail9get_turns21get_turns_in_sectionsINS0_5model13multi_polygonINS4_7polygonIN4lsst4geom5PointIdLi2EEELb1ELb1ESt6vectorSB_SaSaEESB_SaEESD_Lb0ELb0ENS0_7sectionINS4_3boxISA_EELm2EEESH_NS1_7overlay13get_turn_infoINSI_18assign_null_policyEEEE5applyINS0_10strategies6relate9cartesianIvEENS1_17no_rescale_policyESt5dequeINSI_9turn_infoISA_NS0_13segment_ratioIdEENSI_14turn_operationISA_SW_EENS_5arrayISY_Lm2EEEEESaIS11_EENS1_8disjoint25disjoint_interrupt_policyEEEbiRKSD_RKSH_iS17_S19_bbRKT_RKT0_RT1_RT2_ does not evaluate to a constant
x86_64-conda-linux-gnu-c++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
scons: *** [src/geom/polygon/Polygon.os] Error 1
scons: building terminated because of errors.
+ exit -4

This is still with newinstall.sh prior to eups distrib install.

Happy to test lsstinstall - I’ll try that later today following Install with lsstinstall and report back.

Hi all, happy to report installation with lsstinstall was successful on both my laptop (Ubuntu on WSL2) and the HPC service I’m using (which runs RHEL).

I’ve marked @ktl 's reply as the solution, however please note his final comment in parenthesis is the solution - lsstinstall is the supported installation mechanism - and that I didn’t get the newinstall.sh installation system to work.

Thanks!

Hm. I think we’ve seen C++ compiler failures like that due to running out of memory. But that should apply equally for lsstinstall as newinstall. Is it possible that something else was consuming memory at the time?

Oh, there’s one more factor that would explain this. lsstinstall will try to use pre-compiled binary packages wherever possible. newinstall is a bit finicky and often falls back to source packages and compilation even when this isn’t necessary.

Oh, there’s one more factor that would explain this. lsstinstall will try to use pre-compiled binary packages wherever possible. newinstall is a bit finicky and often falls back to source packages and compilation even when this isn’t necessary.

This seems more likely (than the memory suggestion) considering I had issues on two different systems with newinstall, and both work with lsstinstall.