mirror of
https://github.com/pyenv/pyenv.git
synced 2024-11-21 20:47:00 -05:00
Allow to build CPython with --with-dsymutil
Since 3.12, CPython can provide debug symbols in Apple's nonstandard way, "dSYM bundles"
This commit is contained in:
parent
5b08a6492b
commit
f3521e88be
2 changed files with 75 additions and 5 deletions
|
@ -779,6 +779,7 @@ build_package_standard_build() {
|
||||||
else
|
else
|
||||||
use_homebrew_zlib || true
|
use_homebrew_zlib || true
|
||||||
fi
|
fi
|
||||||
|
use_dsymutil || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
( if [ "${CFLAGS+defined}" ] || [ "${!PACKAGE_CFLAGS+defined}" ]; then
|
( if [ "${CFLAGS+defined}" ] || [ "${!PACKAGE_CFLAGS+defined}" ]; then
|
||||||
|
@ -1626,6 +1627,16 @@ use_tcltk() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Since 3.12, CPython can add DWARF debug information in MacOS
|
||||||
|
# using Apple's nonstandard way, `dsymutil', that creates a "dSYM bundle"
|
||||||
|
# that's supposed to be installed alongside executables
|
||||||
|
# (https://github.com/python/cpython/issues/95973).
|
||||||
|
use_dsymutil() {
|
||||||
|
if [[ -n "$PYTHON_BUILD_CONFIGURE_WITH_DSYMUTIL" ]] && is_mac; then
|
||||||
|
package_option python configure --with-dsymutil
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
build_package_enable_shared() {
|
build_package_enable_shared() {
|
||||||
package_option python configure --enable-shared
|
package_option python configure --enable-shared
|
||||||
}
|
}
|
||||||
|
|
|
@ -515,14 +515,41 @@ make install DOGE="such wow"
|
||||||
OUT
|
OUT
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "setting MAKE_INSTALL_OPTS to a multi-word string" {
|
@test "configuring with dSYM in MacOS" {
|
||||||
cached_tarball "Python-3.6.2"
|
cached_tarball "Python-3.6.2"
|
||||||
|
|
||||||
for i in {1..8}; do stub uname '-s : echo Linux'; done
|
for i in {1..9}; do stub uname '-s : echo Darwin'; done
|
||||||
|
for i in {1..2}; do stub sw_vers '-productVersion : echo 1010'; done
|
||||||
|
for i in {1..4}; do stub brew false; done
|
||||||
stub_make_install
|
stub_make_install
|
||||||
|
|
||||||
export MAKE_INSTALL_OPTS="DOGE=\"such wow\""
|
|
||||||
run_inline_definition <<DEF
|
run_inline_definition <<DEF
|
||||||
|
export PYTHON_BUILD_CONFIGURE_WITH_DSYMUTIL=1
|
||||||
|
install_package "Python-3.6.2" "http://python.org/ftp/python/3.6.2/Python-3.6.2.tar.gz"
|
||||||
|
DEF
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
unstub sw_vers
|
||||||
|
unstub uname
|
||||||
|
unstub brew
|
||||||
|
unstub make
|
||||||
|
|
||||||
|
assert_build_log <<OUT
|
||||||
|
Python-3.6.2: CPPFLAGS="-I${TMP}/install/include " LDFLAGS="-L${TMP}/install/lib "
|
||||||
|
Python-3.6.2: --prefix=$INSTALL_ROOT --libdir=${TMP}/install/lib --with-dsymutil
|
||||||
|
make -j 2
|
||||||
|
make install
|
||||||
|
OUT
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "configuring with dSYM has no effect in non-MacOS" {
|
||||||
|
cached_tarball "Python-3.6.2"
|
||||||
|
|
||||||
|
for i in {1..9}; do stub uname '-s : echo Linux'; done
|
||||||
|
stub_make_install
|
||||||
|
|
||||||
|
run_inline_definition <<DEF
|
||||||
|
export PYTHON_BUILD_CONFIGURE_WITH_DSYMUTIL=1
|
||||||
install_package "Python-3.6.2" "http://python.org/ftp/python/3.6.2/Python-3.6.2.tar.gz"
|
install_package "Python-3.6.2" "http://python.org/ftp/python/3.6.2/Python-3.6.2.tar.gz"
|
||||||
DEF
|
DEF
|
||||||
assert_success
|
assert_success
|
||||||
|
@ -532,9 +559,41 @@ DEF
|
||||||
|
|
||||||
assert_build_log <<OUT
|
assert_build_log <<OUT
|
||||||
Python-3.6.2: CPPFLAGS="-I${TMP}/install/include " LDFLAGS="-L${TMP}/install/lib "
|
Python-3.6.2: CPPFLAGS="-I${TMP}/install/include " LDFLAGS="-L${TMP}/install/lib "
|
||||||
Python-3.6.2: --prefix=$INSTALL_ROOT --libdir=$INSTALL_ROOT/lib
|
Python-3.6.2: --prefix=$INSTALL_ROOT --libdir=${TMP}/install/lib
|
||||||
make -j 2
|
make -j 2
|
||||||
make install DOGE="such wow"
|
make install
|
||||||
|
OUT
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "tcl-tk is not linked from Homebrew when explicitly defined" {
|
||||||
|
cached_tarball "Python-3.6.2"
|
||||||
|
|
||||||
|
# python build
|
||||||
|
tcl_tk_version_long="8.6.10"
|
||||||
|
tcl_tk_version="${tcl_tk_version_long%.*}"
|
||||||
|
|
||||||
|
for i in {1..8}; do stub uname '-s : echo Darwin'; done
|
||||||
|
for i in {1..2}; do stub sw_vers '-productVersion : echo 1010'; done
|
||||||
|
|
||||||
|
for i in {1..4}; do stub brew false; done
|
||||||
|
stub_make_install
|
||||||
|
|
||||||
|
export PYTHON_CONFIGURE_OPTS="--with-tcltk-libs='-L${TMP}/custom-tcl-tk/lib -ltcl$tcl_tk_version -ltk$tcl_tk_version'"
|
||||||
|
run_inline_definition <<DEF
|
||||||
|
install_package "Python-3.6.2" "http://python.org/ftp/python/3.6.2/Python-3.6.2.tar.gz"
|
||||||
|
DEF
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
unstub uname
|
||||||
|
unstub sw_vers
|
||||||
|
unstub brew
|
||||||
|
unstub make
|
||||||
|
|
||||||
|
assert_build_log <<OUT
|
||||||
|
Python-3.6.2: CPPFLAGS="-I${TMP}/install/include " LDFLAGS="-L${TMP}/install/lib "
|
||||||
|
Python-3.6.2: --prefix=$INSTALL_ROOT --libdir=$INSTALL_ROOT/lib --with-tcltk-libs=-L${TMP}/custom-tcl-tk/lib -ltcl8.6 -ltk8.6
|
||||||
|
make -j 2
|
||||||
|
make install
|
||||||
OUT
|
OUT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue