New package: python3.11-3.11.6

This commit is contained in:
Andrew J. Hesford 2023-10-11 22:26:59 -04:00
parent 591ad074bd
commit b532149a46
7 changed files with 288 additions and 0 deletions

1
srcpkgs/python3.11-devel Symbolic link
View file

@ -0,0 +1 @@
python3.11

View file

@ -0,0 +1,29 @@
[externally-managed]
Error=
This system-wide Python installation is managed by the Void Linux package
manager, XBPS. Installation of Python packages from other sources is not
normally allowed.
To install a Python package not offered by Void Linux, consider using a virtual
environment, e.g.:
python3 -m venv /path/to/venv
/path/to/venv/pip install <package>
Appending the flag --system-site-packages to the first command will give the
virtual environment access to any Python package installed via XBPS.
Invoking python, pip, and executables installed by pip in /path/to/venv/bin
should automatically use the virtual environment. Alternatively, source its
activation script to add the environment to the command search path for a shell:
. /path/to/venv/activate
After activation, running
deactivate
will remove the environment from the search path without destroying it.
The XBPS package python3-pipx provides pipx, a convenient tool to automatically
manage virtual environments for individual Python applications.

View file

@ -0,0 +1,21 @@
diff -ur a/Makefile.pre.in b/Makefile.pre.in
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1901,8 +1901,6 @@
upgrade) ensurepip="--upgrade" ;; \
install|*) ensurepip="" ;; \
esac; \
- $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
- $$ensurepip --root=$(DESTDIR)/ ; \
fi
.PHONY: altinstall
@@ -1912,8 +1910,6 @@
upgrade) ensurepip="--altinstall --upgrade" ;; \
install|*) ensurepip="--altinstall" ;; \
esac; \
- $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
- $$ensurepip --root=$(DESTDIR)/ ; \
fi
.PHONY: commoninstall

View file

@ -0,0 +1,44 @@
--- a/Lib/ctypes/util.py
+++ b/Lib/ctypes/util.py
@@ -265,6 +265,41 @@
def find_library(name, is64 = False):
return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name))
+ elif True:
+
+ # Patched for Alpine Linux / musl - search manually system paths
+ def _is_elf(filepath):
+ try:
+ with open(filepath, 'rb') as fh:
+ return fh.read(4) == b'\x7fELF'
+ except:
+ return False
+
+ def find_library(name):
+ from glob import glob
+ # absolute name?
+ if os.path.isabs(name):
+ return name
+ # special case for libm, libcrypt and libpthread and musl
+ if name in ['m', 'crypt', 'pthread']:
+ name = 'c'
+ elif name in ['libm.so', 'libcrypt.so', 'libpthread.so']:
+ name = 'libc.so'
+ # search in standard locations (musl order)
+ paths = ['/lib', '/usr/local/lib', '/usr/lib']
+ if 'LD_LIBRARY_PATH' in os.environ:
+ paths = os.environ['LD_LIBRARY_PATH'].split(':') + paths
+ for d in paths:
+ f = os.path.join(d, name)
+ if _is_elf(f):
+ return os.path.basename(f)
+
+ prefix = os.path.join(d, 'lib'+name)
+ for suffix in ['.so', '.so.*']:
+ for f in glob('{0}{1}'.format(prefix, suffix)):
+ if _is_elf(f):
+ return os.path.basename(f)
+
else:
def _findSoname_ldconfig(name):

View file

@ -0,0 +1,45 @@
diff -ur a/configure b/configure
--- a/configure
+++ b/configure
@@ -5952,6 +5952,14 @@
printf "%s\n" "$ac_cv_path_EGREP" >&6; }
EGREP="$ac_cv_path_EGREP"
+if test x$MULTIARCH = xpowerpc-linux-musl
+then
+ MULTIARCH="powerpc-linux-gnu"
+fi
+if test x$MULTIARCH = xpowerpcle-linux-musl
+then
+ MULTIARCH="powerpcle-linux-gnu"
+fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CC compiler name" >&5
@@ -6859,7 +6867,11 @@
powerpc64-linux-gnu
# endif
# elif defined(__powerpc__)
+# if defined(__LITTLE_ENDIAN__)
+ powerpcle-linux-gnu
+# else
powerpc-linux-gnu
+# endif
# elif defined(__s390x__)
s390x-linux-gnu
# elif defined(__s390__)
diff -ur a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -1039,7 +1039,11 @@
powerpc64-linux-gnu
# endif
# elif defined(__powerpc__)
+# if defined(__LITTLE_ENDIAN__)
+ powerpcle-linux-gnu
+# else
powerpc-linux-gnu
+# endif
# elif defined(__s390x__)
s390x-linux-gnu
# elif defined(__s390__)

145
srcpkgs/python3.11/template Normal file
View file

@ -0,0 +1,145 @@
# Template file for 'python3.11'
pkgname=python3.11
version=3.11.6
revision=1
build_style="gnu-configure"
configure_args="--enable-shared --enable-ipv6 --enable-optimizations
--enable-loadable-sqlite-extensions --with-computed-gotos
--with-dbmliborder=gdbm:ndbm --with-system-expat --with-system-ffi
--without-ensurepip ac_cv_working_tzset=yes"
pycompile_dirs="usr/lib/python${version%.*}"
hostmakedepends="pkgconf"
makedepends="libffi-devel readline-devel gdbm-devel openssl-devel
expat-devel sqlite-devel bzip2-devel zlib-devel liblzma-devel"
depends="ca-certificates"
checkdepends="$depends iana-etc"
short_desc="Python ${version%.*} (limited install; not for regular use)"
maintainer="Andrew J. Hesford <ajh@sideband.org>"
license="Python-2.0"
homepage="https://www.python.org"
_bluez="bluez-5.64"
distfiles="
https://www.python.org/ftp/python/${version%rc*}/Python-${version}.tar.xz
${KERNEL_SITE}/bluetooth/${_bluez}.tar.xz
"
checksum="0fab78fa7f133f4f38210c6260d90d7c0d5c7198446419ce057ec7ac2e6f5f38
ae437e65b6b3070c198bc5b0109fe9cdeb9eaa387380e2072f9de65fe8a1de34"
skip_extraction="${_bluez}.tar.xz"
if [ "$CROSS_BUILD" ]; then
hostmakedepends+=" python3.11"
configure_args+=" --with-build-python=python${version%.*}"
configure_args+=" ac_cv_broken_sem_getvalue=no"
fi
post_extract() {
# Ensure that the internal copy of expat is not used
rm -r Modules/expat
# Extract Bluetooth headers
local _srcdistdir="${XBPS_SRCDISTDIR}/${sourcepkg}-${version}"
mkdir External
bsdtar -C External --strip-components=1 -x \
-f "${_srcdistdir}/${_bluez}.tar.xz" "${_bluez}/lib/*.h"
mv External/lib External/bluetooth
}
post_patch() {
if [ -n "$CROSS_BUILD" ]; then
patch -Np1 -i ${FILESDIR}/cross.patch
fi
}
do_configure() {
# If these are set, distutils will default to cc and attempt to pass
# `-R<path>` to the compiler for every compiled extension that sets an
# rpath rather than the '-Wl,-R<path>' argument that GCC requires
unset GCC CC CXX CPP LD AR AS RANLIB
# Make sure configure can find Bluetooth headers
CFLAGS+=" -I./External"
CPPFLAGS+=" -I./External"
./configure ${configure_args}
}
do_check() {
local opts
# relies on sane group membership not found in xbps-src
opts="-i test_chown_*"
# expects shadow passwd db unreadable by user
opts+=" -i test_getspnam_exception"
# expects functionality patched out for musl
opts+=" -i test_find_library_with_*"
# SSL advertises unexpected ciphers
opts+=" -i test_shared_ciphers"
# requires in-tree expat, which we removed
opts+=" -i test_freeze_simple_script"
# anomalies in SSL session handling
opts+=" -i test_session*"
# overflow in datetime.time.mktime
opts+=" -i test_localtime_daylight_*_dst_true"
if [ "${XBPS_TARGET_LIBC}" = "musl" ]; then
# musl doesn't work with locales
opts+=" -i test_locale* -i test_c_locale* -i test__locale"
opts+=" -i test_fpathconf"
fi
make ${makejobs} EXTRATESTOPTS="${opts}" quicktest
}
do_install() {
make DESTDIR=${DESTDIR} install maninstall
# Put the license in the usual location and remove from the libdir
# to prevent the XBPS trigger from attempting to byte-compile it
vlicense LICENSE
rm ${DESTDIR}/usr/lib/python${version%.*}/LICENSE.txt
# Remove major-only components that conflict with python3 packages
rm ${DESTDIR}/usr/bin/{pydoc3,python3,2to3,python3-config}
rm ${DESTDIR}/usr/lib/libpython3.so
rm ${DESTDIR}/usr/lib/pkgconfig/python3{,-embed}.pc
rm ${DESTDIR}/usr/share/man/man1/python3.1
# Remove files that belong to idle
rm ${DESTDIR}/usr/bin/idle3*
rm -r ${DESTDIR}/usr/lib/python${version%.*}/idlelib
# Remove test module and tests that fail to be byte-compiled.
rm -r ${DESTDIR}/usr/lib/python${version%.*}/test
rm -r ${DESTDIR}/usr/lib/python${version%.*}/lib2to3/tests
# Remove references to the install(1) wrapper.
sed -e "s,${XBPS_WRAPPERDIR},/usr/bin,g" -i \
${DESTDIR}/usr/lib/python${version%.*}/_sysconfigdata_*_*.py \
${DESTDIR}/usr/lib/python${version%.*}/config-${version%.*}*/Makefile
if [ "$CROSS_BUILD" ]; then
# Remove references to cross toolchain.
sed -i "s/$XBPS_CROSS_TRIPLET-//g" \
${DESTDIR}/usr/lib/python${version%.*}/_sysconfigdata_*_*.py \
${DESTDIR}/usr/lib/python${version%.*}/config-${version%.*}*/Makefile
sed -i -e "s,$XBPS_CROSS_BASE,,g" \
${DESTDIR}/usr/bin/python${version%.*}-config
fi
# https://peps.python.org/pep-0668/
vinstall ${FILESDIR}/EXTERNALLY-MANAGED 644 usr/lib/python${version%.*}
}
python3.11-devel_package() {
short_desc+=" - development files"
depends="${sourcepkg}-${version}_${revision}"
pkg_install() {
vmove usr/bin/python*-config
vmove usr/lib/pkgconfig
vmove usr/include
mv ${DESTDIR}/usr/lib/python${version%.*}/config-${version%.*}*/libpython${version%.*}*.a \
${PKGDESTDIR}/usr/lib
mkdir -p ${DESTDIR}/usr/include/python${version%.*}
mv ${PKGDESTDIR}/usr/include/python${version%.*}/pyconfig.h \
${DESTDIR}/usr/include/python${version%.*}
}
}

View file

@ -0,0 +1,3 @@
pkgname=Python
site="${homepage}/downloads/source/"
pattern='Python-\K3\.11\.[0-9]+(?=\.tgz)'