mirror of
https://github.com/ivabus/pantry
synced 2024-11-26 10:25:05 +03:00
95 lines
3.1 KiB
YAML
95 lines
3.1 KiB
YAML
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:
|
||
SHARE: /opt/python.org/share
|
||
ARGS:
|
||
- --prefix="{{ prefix }}"
|
||
# it’s 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 probably will actually want to --enable-framework
|
||
- --enable-shared
|
||
# put data that doesn’t vary between pythons in a consistent place
|
||
- --datarootdir="$SHARE"
|
||
- --datadir="$SHARE"
|
||
|
||
#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 python’s 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
|