Fix searching readline and sqlite3 in FreeBSD

Surprisingly, CPython doesn't search these with pkg-config
This is fixed upstream in 3.12.0a1
This commit is contained in:
Ivan Pozdeev 2023-01-13 15:46:38 +03:00
parent b9a27af7b8
commit 2a5bbf6cb5
2 changed files with 49 additions and 3 deletions

View file

@ -1422,9 +1422,18 @@ use_freebsd_pkg() {
# check if 11-R or later # check if 11-R or later
release="$(uname -r)" release="$(uname -r)"
if [ "${release%%.*}" -ge 11 ]; then if [ "${release%%.*}" -ge 11 ]; then
if pkg info -e readline > /dev/null && ! command -v pkg-config > /dev/null ; then # Use packages from Ports Collection.
# use readline from Ports Collection #
# unlike Linux, BSD's cc does not look in /usr/local by default # Unlike Linux, BSD's cc does not look in /usr/local by default
# where Ports-installed packages are, but they are available via pkg-config.
# Surprisingly, CPython's Configure only uses pkg-config
# to locate some of the dependencies and not others.
# Here we detect those that are (as of this writing) known
# to not be searched via pkg-config.
#
# XXX: As a side effect, this would pick up any other libs from Ports
# that are searched via compiler
if pkg info -e readline || pkg info -e sqlite3; then
export CPPFLAGS="${CPPFLAGS:+${CPPFLAGS% } }-I/usr/local/include" export CPPFLAGS="${CPPFLAGS:+${CPPFLAGS% } }-I/usr/local/include"
export LDFLAGS="${LDFLAGS:+${LDFLAGS% } }-L/usr/local/lib -Wl,-rpath,/usr/local/lib" export LDFLAGS="${LDFLAGS:+${LDFLAGS% } }-L/usr/local/lib -Wl,-rpath,/usr/local/lib"
fi fi

View file

@ -259,6 +259,42 @@ make install
OUT OUT
} }
@test "readline and sqlite3 are linked from Ports in FreeBSD" {
cached_tarball "Python-3.6.2"
for lib in readline sqlite3; do
for i in {1..8}; do stub uname '-s : echo FreeBSD'; done
stub uname '-r : echo 11.0-RELEASE'
for i in {1..2}; do stub uname '-s : echo FreeBSD'; done
stub sysctl '-n hw.ncpu : echo 1'
stub pkg "$([[ $lib == readline ]] && echo "info -e $lib : true" || echo false)"
if [[ $lib == sqlite3 ]]; then stub pkg echo "info -e $lib : true"; fi
stub_make_install
export -n MAKE_OPTS
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 make
unstub pkg
unstub sysctl
assert_build_log <<OUT
Python-3.6.2: CPPFLAGS="-I${TMP}/install/include -I/usr/local/include" LDFLAGS="-L${TMP}/install/lib -Wl,-rpath=${TMP}/install/lib -L/usr/local/lib -Wl,-rpath,/usr/local/lib" PKG_CONFIG_PATH=""
Python-3.6.2: --prefix=$INSTALL_ROOT --enable-shared --libdir=$INSTALL_ROOT/lib
make -j 1
make install
OUT
rm "$INSTALL_ROOT/build.log"
done
}
@test "no library searches performed during normal operation touch homebrew in non-MacOS" { @test "no library searches performed during normal operation touch homebrew in non-MacOS" {
cached_tarball "Python-3.6.2" cached_tarball "Python-3.6.2"
@ -502,6 +538,7 @@ OUT
for i in {1..8}; do stub uname '-s : echo FreeBSD'; done for i in {1..8}; do stub uname '-s : echo FreeBSD'; done
stub uname '-r : echo 11.0-RELEASE' stub uname '-r : echo 11.0-RELEASE'
for i in {1..2}; do stub uname '-s : echo FreeBSD'; done for i in {1..2}; do stub uname '-s : echo FreeBSD'; done
for i in {1..2}; do stub pkg false; done
stub sysctl '-n hw.ncpu : echo 1' stub sysctl '-n hw.ncpu : echo 1'
stub_make_install stub_make_install