Opened 9 years ago
Last modified 7 years ago
#46432 new defect
scons messes up the environment and removes ${prefix}/bin from $PATH
Reported by: | jeremyhu (Jeremy Huddleston Sequoia) | Owned by: | macports-tickets@… |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.3.3 |
Keywords: | Cc: | ||
Port: | scons |
Description
scons messes up the environment in processes it spawns.
Most horrifically, it messes up $PATH, removing ${prefix}/bin. This can cause it to not find the correct tools when it does things like executing install-name-tool to workaround other horrific design decisions in the build system (specifically, not setting the dylib id at link time).
---
I verified that the environment was this in pre_destdir:
TMPDIR=/opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_www_serf1/serf1/work/.tmp NO_PROXY=*.local,169.254/16 USER=root CCACHE_DIR=/opt/local/var/macports/build/.ccache COLUMNS=164 PATH=/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin PWD=/opt/local/var/macports LANG=en_US.UTF-8 LINES=45 SHLVL=1 HOME=/opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_www_serf1/serf1/work/.home _=/usr/bin/env
But when scons executed install-name-tool, it picked it up from /usr/bin instead of /opt/local/bin, and this was the path in that process (I replaced /usr/bin/install-name-tool with a shell script to verify this):
PATH=/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin _=/usr/bin/env PWD=/opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_www_serf1/serf1/work/serf-1.3.4 PATHOSX=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin SHLVL=2
This pretty much prevents the scons build system from being used with modern toolchains on older systems because older install-name-tool will fail like:
scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... Install file: "libserf-1.a" as "/opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_www_serf1/serf1/work/destroot/opt/local/lib/libserf-1.a" Install file: "libserf-1.1.3.4.dylib" as "/opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_www_serf1/serf1/work/destroot/opt/local/lib/libserf-1.1.3.4.dylib" install_name_tool -id /opt/local/lib/libserf-1.dylib /opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_www_serf1/serf1/work/destroot/opt/local/lib/libserf-1.1.3.4.dylib install_name_tool: for architecture x86_64 object: /opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_www_serf1/serf1/work/destroot/opt/local/lib/libserf-1.1.3.4.dylib malformed object (unknown load command 7)
Change History (3)
comment:1 Changed 9 years ago by jeremyhu (Jeremy Huddleston Sequoia)
comment:2 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)
Owner: | changed from landonf@… to macports-tickets@… |
---|
comment:3 Changed 7 years ago by larryv (Lawrence Velázquez)
I’ve updated scons
to 2.5.1. Is this still an issue?
Some of this mess is the fault of serf1's Sconstruct file, but the PATH issue seems to be from scons itself and not serf-specific bits.