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 }}" # 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 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 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