From 1fc9c3200ffeae6ca287af4adb040f13608f09ee Mon Sep 17 00:00:00 2001 From: Ophestra Date: Sat, 7 Feb 2026 22:33:12 +0900 Subject: [PATCH] internal/rosa: libucontext artifact Required by GCC on musl. Signed-off-by: Ophestra --- internal/rosa/all.go | 2 ++ internal/rosa/libucontext.go | 40 ++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 internal/rosa/libucontext.go diff --git a/internal/rosa/all.go b/internal/rosa/all.go index 5aea5ee..560d040 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 0000000..0dccbf6 --- /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 }