From 574a64aa85e8a1842f8b26d554adee8b9a6e1415 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Mon, 19 Jan 2026 01:58:53 +0900 Subject: [PATCH] internal/rosa: cpython artifact Dependency of llvm build scripts, also an optional cure dependency of ninja. Signed-off-by: Ophestra --- internal/rosa/python.go | 60 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 internal/rosa/python.go diff --git a/internal/rosa/python.go b/internal/rosa/python.go new file mode 100644 index 0000000..274fe81 --- /dev/null +++ b/internal/rosa/python.go @@ -0,0 +1,60 @@ +package rosa + +import ( + "strings" + + "hakurei.app/internal/pkg" +) + +// NewPython returns a [pkg.Artifact] containing an installation of Python. +func (t Toolchain) NewPython() pkg.Artifact { + const ( + version = "3.14.2" + checksum = "7nZunVMGj0viB-CnxpcRego2C90X5wFsMTgsoewd5z-KSZY2zLuqaBwG-14zmKys" + ) + skipTests := []string{ + // requires internet access (http://www.pythontest.net/) + "test_asyncio", + "test_socket", + "test_urllib2", + "test_urllibnet", + "test_urllib2net", + + // hits std.PresetExt ruleset + "test_os", + "test_posix", + "test_shutil", + + // somehow picks up mtime of source code + "test_zipfile", + + // requires gcc + "test_ctypes", + + // breaks on llvm + "test_dbm_gnu", + } + return t.New("python-"+version, []pkg.Artifact{ + t.NewMake(), + t.NewZlib(), + }, nil, []string{ + "EXTRATESTOPTS=-j0 -x " + strings.Join(skipTests, " -x "), + }, ` +# test_synopsis_sourceless assumes this is writable and checks __pycache__ +chmod -R +w /usr/src/python/ + +export HOME="$(mktemp -d)" +cd "$(mktemp -d)" +/usr/src/python/configure \ + --prefix=/system +make "-j$(nproc)" +make test +make DESTDIR=/work install +`, pkg.Path(AbsUsrSrc.Append("python"), true, + pkg.NewHTTPGetTar( + nil, "https://www.python.org/ftp/python/"+version+ + "/Python-"+version+".tgz", + mustDecode(checksum), + pkg.TarGzip, + ))) +}