diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-05-19 02:06:17 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-05-19 02:06:17 +0900 |
| commit | 1ed027846de4b8b29944ee5412fc364d2574112b (patch) | |
| tree | 63c3a0f9f5b8d26845eab644b99889ee7c5248e2 /internal/rosa/package/python | |
| parent | 2f376d4813e473525849ab690f7b8001d52b92b6 (diff) | |
internal/rosa/package: migrate python interpreter
Packages will take quite some work.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/package/python')
| -rw-r--r-- | internal/rosa/package/python/package.az | 70 | ||||
| -rw-r--r-- | internal/rosa/package/python/zipfile-no-default-strict_timestamps.patch | 22 |
2 files changed, 92 insertions, 0 deletions
diff --git a/internal/rosa/package/python/package.az b/internal/rosa/package/python/package.az new file mode 100644 index 00000000..70699250 --- /dev/null +++ b/internal/rosa/package/python/package.az @@ -0,0 +1,70 @@ +package python { + description = "the Python programming language interpreter"; + website = "https://www.python.org"; + anitya = 13254; + + version* = "3.14.5"; + source = remoteTar { + url = "https://www.python.org/ftp/python/"+version+ + "/Python-"+version+".tgz"; + checksum = "zYIpDlk2ftZ-UVGCQS1rthle2OHoyXV653ztWiopKV1NhmIJf1K2hHbkwM4DozQ9"; + compress = gzip; + }; + patches = [ "zipfile-no-default-strict_timestamps.patch" ]; + + // test_synopsis_sourceless assumes this is writable and checks __pycache__ + writable = true; + chmod = true; + + env = [ + "EXTRATESTOPTS=-j0 -x " + join { + elems = [ + // requires internet access (http://www.pythontest.net/) + "test_asyncio", + "test_socket", + "test_urllib2", + "test_urllibnet", + "test_urllib2net", + + // makes assumptions about uid_map/gid_map + "test_os", + "test_subprocess", + + // patched out insane strict_timestamps default + "test_zipfile", + + // requires gcc + "test_ctypes", + + // breaks on llvm + "test_dbm_gnu", + ]; + sep = " -x "; + }, + + // _ctypes appears to infer something from the linker name + "LDFLAGS=-Wl,--dynamic-linker=/system/lib/" + + "ld-musl-" + linuxArch + ".so.1", + ]; + + exec = make { + check = [ "test" ]; + }; + + inputs = [ + zlib, + bzip2, + libffi, + openssl, + + pkg-config, + xz, + ]; + + runtime = [ + zlib, + bzip2, + libffi, + openssl, + ]; +} diff --git a/internal/rosa/package/python/zipfile-no-default-strict_timestamps.patch b/internal/rosa/package/python/zipfile-no-default-strict_timestamps.patch new file mode 100644 index 00000000..5effb75f --- /dev/null +++ b/internal/rosa/package/python/zipfile-no-default-strict_timestamps.patch @@ -0,0 +1,22 @@ +diff --git a/Lib/zipfile/__init__.py b/Lib/zipfile/__init__.py +index 19aea290b58..51603ba9510 100644 +--- a/Lib/zipfile/__init__.py ++++ b/Lib/zipfile/__init__.py +@@ -617,7 +617,7 @@ def _decodeExtra(self, filename_crc): + extra = extra[ln+4:] + + @classmethod +- def from_file(cls, filename, arcname=None, *, strict_timestamps=True): ++ def from_file(cls, filename, arcname=None, *, strict_timestamps=False): + """Construct an appropriate ZipInfo for a file on the filesystem. + + filename should be the path to a file or directory on the filesystem. +@@ -1412,7 +1412,7 @@ class ZipFile: + _windows_illegal_name_trans_table = None + + def __init__(self, file, mode="r", compression=ZIP_STORED, allowZip64=True, +- compresslevel=None, *, strict_timestamps=True, metadata_encoding=None): ++ compresslevel=None, *, strict_timestamps=False, metadata_encoding=None): + """Open the ZIP file with mode read 'r', write 'w', exclusive create 'x', + or append 'a'.""" + if mode not in ('r', 'w', 'x', 'a'): |
