aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-22 02:47:47 +0900
committerOphestra <cat@gensokyo.uk>2026-01-22 02:47:47 +0900
commit6420b6e6e881c67f19e7f4d37dc612d19a0c0b93 (patch)
tree1024d647ef0ffb23c452b2d50e7e1c40a30419ac /internal
parentd7d058fdc512bc3c09643bb3a3ad04d95aba261b (diff)
internal/rosa: libffi artifact
Required by python during llvm test suite. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
-rw-r--r--internal/rosa/gnu.go1
-rw-r--r--internal/rosa/libffi.go28
-rw-r--r--internal/rosa/llvm.go1
-rw-r--r--internal/rosa/python.go1
4 files changed, 30 insertions, 1 deletions
diff --git a/internal/rosa/gnu.go b/internal/rosa/gnu.go
index b509cf56..c609f68a 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 00000000..3c39005a
--- /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 28e65ec1..4d2caf85 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 3e82427c..8fbc74fd 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 "),
}, `