aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-02-07 22:33:12 +0900
committerOphestra <cat@gensokyo.uk>2026-02-07 22:33:12 +0900
commit1fc9c3200ffeae6ca287af4adb040f13608f09ee (patch)
tree287585dd49e394e17b4c1419821154f91a5ed55b
parent096a25ad3a7229931aa57ec4186564c67806d0fe (diff)
internal/rosa: libucontext artifact
Required by GCC on musl. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--internal/rosa/all.go2
-rw-r--r--internal/rosa/libucontext.go40
2 files changed, 42 insertions, 0 deletions
diff --git a/internal/rosa/all.go b/internal/rosa/all.go
index 5aea5ee4..560d0405 100644
--- a/internal/rosa/all.go
+++ b/internal/rosa/all.go
@@ -41,6 +41,7 @@ const (
Libgd
Libtool
Libseccomp
+ Libucontext
Libxml2
M4
MPC
@@ -130,6 +131,7 @@ func ResolveName(name string) (p PArtifact, ok bool) {
"libexpat": Libexpat,
"libpsl": Libpsl,
"libseccomp": Libseccomp,
+ "libucontext": Libucontext,
"libxml2": Libxml2,
"libffi": Libffi,
"libgd": Libgd,
diff --git a/internal/rosa/libucontext.go b/internal/rosa/libucontext.go
new file mode 100644
index 00000000..0dccbf65
--- /dev/null
+++ b/internal/rosa/libucontext.go
@@ -0,0 +1,40 @@
+package rosa
+
+import "hakurei.app/internal/pkg"
+
+func (t Toolchain) newLibucontext() pkg.Artifact {
+ const (
+ version = "1.5"
+ checksum = "Ggk7FMmDNBdCx1Z9PcNWWW6LSpjGYssn2vU0GK5BLXJYw7ZxZbA2m_eSgT9TFnIG"
+ )
+ return t.New("libucontext", 0, []pkg.Artifact{
+ t.Load(Make),
+ }, nil, []string{
+ "ARCH=" + linuxArch(),
+ }, `
+cd /usr/src/libucontext
+make check
+make DESTDIR=/work install
+`, pkg.Path(AbsUsrSrc.Append("libucontext"), true,
+ t.NewPatchedSource("libucontext", version, pkg.NewHTTPGetTar(
+ nil, "https://github.com/kaniini/libucontext/archive/refs/tags/"+
+ "libucontext-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), true, [2]string{"rosa-prefix", `diff --git a/Makefile b/Makefile
+index c80e574..4a8c1d3 100644
+--- a/Makefile
++++ b/Makefile
+@@ -17,7 +17,7 @@ ifeq ($(ARCH),$(filter $(ARCH),arm64))
+ override ARCH = aarch64
+ endif
+
+-prefix = /usr
++prefix = /system
+ libdir = ${prefix}/lib
+ shared_libdir = ${libdir}
+ static_libdir = ${libdir}
+`}),
+ ))
+}
+func init() { artifactsF[Libucontext] = Toolchain.newLibucontext }