aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/package/python
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-05-19 02:06:17 +0900
committerOphestra <cat@gensokyo.uk>2026-05-19 02:06:17 +0900
commit1ed027846de4b8b29944ee5412fc364d2574112b (patch)
tree63c3a0f9f5b8d26845eab644b99889ee7c5248e2 /internal/rosa/package/python
parent2f376d4813e473525849ab690f7b8001d52b92b6 (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.az70
-rw-r--r--internal/rosa/package/python/zipfile-no-default-strict_timestamps.patch22
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'):