From 6420b6e6e881c67f19e7f4d37dc612d19a0c0b93 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Thu, 22 Jan 2026 02:47:47 +0900 Subject: [PATCH] internal/rosa: libffi artifact Required by python during llvm test suite. Signed-off-by: Ophestra --- internal/rosa/gnu.go | 1 - internal/rosa/libffi.go | 28 ++++++++++++++++++++++++++++ internal/rosa/llvm.go | 1 + internal/rosa/python.go | 1 + 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 internal/rosa/libffi.go diff --git a/internal/rosa/gnu.go b/internal/rosa/gnu.go index b509cf5..c609f68 100644 --- a/internal/rosa/gnu.go +++ b/internal/rosa/gnu.go @@ -48,7 +48,6 @@ make DESTDIR=/work install mustDecode(checksum), pkg.TarBzip2, ))) - } // NewAutoconf returns a [pkg.Artifact] containing an installation of GNU Autoconf. diff --git a/internal/rosa/libffi.go b/internal/rosa/libffi.go new file mode 100644 index 0000000..3c39005 --- /dev/null +++ b/internal/rosa/libffi.go @@ -0,0 +1,28 @@ +package rosa + +import "hakurei.app/internal/pkg" + +// NewLibffi returns a [pkg.Artifact] containing an installation of libffi. +func (t Toolchain) NewLibffi() pkg.Artifact { + const ( + version = "3.4.5" + checksum = "apIJzypF4rDudeRoI_n3K7N-zCeBLTbQlHRn9NSAZqdLAWA80mR0gXPTpHsL7oMl" + ) + return t.New("libffi-"+version, []pkg.Artifact{ + t.NewMake(), + t.NewKernelHeaders(), + }, nil, nil, ` +cd "$(mktemp -d)" +/usr/src/libffi/configure \ + --prefix=/system \ + --build="${ROSA_TRIPLE}" +make "-j$(nproc)" check +make DESTDIR=/work install +`, pkg.Path(AbsUsrSrc.Append("libffi"), false, pkg.NewHTTPGetTar( + nil, + "https://github.com/libffi/libffi/releases/download/"+ + "v"+version+"/libffi-"+version+".tar.gz", + mustDecode(checksum), + pkg.TarGzip, + ))) +} diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go index 28e65ec..4d2caf8 100644 --- a/internal/rosa/llvm.go +++ b/internal/rosa/llvm.go @@ -125,6 +125,7 @@ func (t Toolchain) newLLVM(variant string, attr *llvmAttr) pkg.Artifact { } extra := []pkg.Artifact{ + t.NewLibffi(), t.NewPython(), t.NewKernelHeaders(), } diff --git a/internal/rosa/python.go b/internal/rosa/python.go index 3e82427..8fbc74f 100644 --- a/internal/rosa/python.go +++ b/internal/rosa/python.go @@ -36,6 +36,7 @@ func (t Toolchain) NewPython() pkg.Artifact { return t.New("python-"+version, []pkg.Artifact{ t.NewMake(), t.NewZlib(), + t.NewLibffi(), }, nil, []string{ "EXTRATESTOPTS=-j0 -x " + strings.Join(skipTests, " -x "), }, `