pantry/projects/python.org/package.yml
2022-08-31 15:45:04 -04:00

92 lines
2.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

distributable:
url: https://www.python.org/ftp/python/{{ version }}/Python-{{ version }}.tar.xz
strip-components: 1
versions:
github: python/cpython/tags
dependencies:
# recommended but none are actually required
zlib.net: 1
sourceware.org/bzip2: 1
openssl.org: ^1.1
sourceware.org/libffi: 3
libexpat.github.io: 2
bytereef.org/mpdecimal: 2
tukaani.org/xz: 5
sqlite.org: 3
gnu.org/readline: 8
invisible-island.net/ncurses: 6
#TODO pip should be python.org/pip and installed by default (as a recommended dependent) with python
#RATIONALE it is independently versioned
build:
dependencies:
tea.xyz/gx/cc: c99
tea.xyz/gx/make: '*'
freedesktop.org/pkg-config: ^0.29
#TODO use the diff
script: |
sed -i.bak -e 's|system_lib_dirs = .*|system_lib_dirs = os.getenv("LIBRARY_PATH").split(":")|' ./setup.py
sed -i.bak -e 's|system_include_dirs = .*|system_include_dirs = os.getenv("CPATH").split(":")|' ./setup.py
./configure $ARGS
make --jobs {{ hw.concurrency }}
make install
cd {{ prefix }}/bin
ln -sf python{{ version.marketing }} python
ln -sf python{{ version.marketing }}-config python-config
ln -sf pip{{ version.marketing }} pip
env:
ARGS:
- --prefix="{{ prefix }}"
# its 202x
- --enable-ipv6
# prevent auto updates -> we control that
# - --without-ensurepip
- --disable-loadable-sqlite-extensions
# use our libraries not the bundled ones
- --with-system-expat
- --with-system-ffi
- --with-system-libmpdec
# these two make our binary not portable
#- --enable-optimizations
#- --with-lto
# on macOS we want an option that is instead --enable-framework
- --enable-shared
#FIXME get rid of these v*
OPENSSL_INCLUDES: /opt/openssl.org/v*/include
OPENSSL_LDFLAGS: -L/opt/openssl.org/v*/lib'
#FIXME we should get the include path from the ncurses `.pc` files
CPATH: /opt/invisible-island.net/ncurses/v*/include/ncursesw:$CPATH
# required for `setup.py` which is used to detect the libs for pythons modules
diff: |
diff --git a/setup.py b/setup.py
index 85a2b26..4f2f742 100644
--- a/setup.py
+++ b/setup.py
@@ -847,8 +847,8 @@ class PyBuildExt(build_ext):
add_dir_to_list(self.compiler.include_dirs,
sysconfig.get_config_var("INCLUDEDIR"))
- system_lib_dirs = ['/lib64', '/usr/lib64', '/lib', '/usr/lib']
- system_include_dirs = ['/usr/include']
+ system_lib_dirs = os.getenv("LIBRARY_PATH").split(":")
+ system_include_dirs = os.getenv("CPATH").split(":")
# lib_dirs and inc_dirs are used to search for files;
# if a file is found in one of those directories, it can
# be assumed that no additional -I,-L directives are needed.
test:
#TODO test all modules eg zlib module
script: |
python --version
pip --version