aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-27 02:02:49 +0900
committerOphestra <cat@gensokyo.uk>2026-01-27 02:02:49 +0900
commitc84fe632170301d417b58205d346e8fa15744fae (patch)
tree3f584d51054bbb832204863efb8383e906b770fe
parenteb67e5e0a8821058fed782bf9c90b45c793036a5 (diff)
internal/rosa: various X artifacts
Required by xcb which is required by hakurei. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--cmd/mbf/main.go8
-rw-r--r--internal/rosa/all.go4
-rw-r--r--internal/rosa/libgd.go3
-rw-r--r--internal/rosa/x.go52
-rw-r--r--internal/rosa/xcb.go56
5 files changed, 122 insertions, 1 deletions
diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go
index 944fd75b..ed4422b8 100644
--- a/cmd/mbf/main.go
+++ b/cmd/mbf/main.go
@@ -174,6 +174,8 @@ func main() {
p = rosa.Gperf
case "kernel-headers":
p = rosa.KernelHeaders
+ case "libXau":
+ p = rosa.LibXau
case "libexpat":
p = rosa.Libexpat
case "libseccomp":
@@ -208,6 +210,12 @@ func main() {
p = rosa.Wayland
case "wayland-protocols":
p = rosa.WaylandProtocols
+ case "xcb":
+ p = rosa.XCB
+ case "xcb-proto":
+ p = rosa.XCBProto
+ case "xproto":
+ p = rosa.Xproto
case "zlib":
p = rosa.Zlib
diff --git a/internal/rosa/all.go b/internal/rosa/all.go
index 4d95d4e2..686422c2 100644
--- a/internal/rosa/all.go
+++ b/internal/rosa/all.go
@@ -23,6 +23,7 @@ const (
Go
Gperf
KernelHeaders
+ LibXau
Libexpat
Libffi
Libgd
@@ -40,6 +41,9 @@ const (
Setuptools
Wayland
WaylandProtocols
+ XCB
+ XCBProto
+ Xproto
Zlib
// _presetEnd is the total number of presets and does not denote a preset.
diff --git a/internal/rosa/libgd.go b/internal/rosa/libgd.go
index 0ab414c5..6eb199ed 100644
--- a/internal/rosa/libgd.go
+++ b/internal/rosa/libgd.go
@@ -19,7 +19,8 @@ mkdir /dev/shm/gd
cd "$(mktemp -d)"
/usr/src/libgd/configure \
--prefix=/system \
- --build="${ROSA_TRIPLE}"
+ --build="${ROSA_TRIPLE}" \
+ --enable-static
make "-j$(nproc)" check
make DESTDIR=/work install
`, pkg.Path(AbsUsrSrc.Append("libgd"), true, pkg.NewHTTPGetTar(
diff --git a/internal/rosa/x.go b/internal/rosa/x.go
new file mode 100644
index 00000000..a10f6ba2
--- /dev/null
+++ b/internal/rosa/x.go
@@ -0,0 +1,52 @@
+package rosa
+
+import "hakurei.app/internal/pkg"
+
+func (t Toolchain) newXproto() pkg.Artifact {
+ const (
+ version = "7.0.23"
+ checksum = "goxwWxV0jZ_3pNczXFltZWHAhq92x-aEreUGyp5Ns8dBOoOmgbpeNIu1nv0Zx07z"
+ )
+ return t.New("xproto-"+version, false, []pkg.Artifact{
+ t.Load(Make),
+ t.Load(PkgConfig),
+ }, nil, nil, `
+cd "$(mktemp -d)"
+/usr/src/xproto/configure \
+ --prefix=/system \
+ --enable-static
+make "-j$(nproc)" check
+make DESTDIR=/work install
+`, pkg.Path(AbsUsrSrc.Append("xproto"), true, pkg.NewHTTPGetTar(
+ nil, "https://www.x.org/releases/X11R7.7/src/proto/xproto-"+version+".tar.bz2",
+ mustDecode(checksum),
+ pkg.TarBzip2,
+ )))
+}
+func init() { artifactsF[Xproto] = Toolchain.newXproto }
+
+func (t Toolchain) newLibXau() pkg.Artifact {
+ const (
+ version = "1.0.7"
+ checksum = "bm768RoZZnHRe9VjNU1Dw3BhfE60DyS9D_bgSR-JLkEEyUWT_Hb_lQripxrXto8j"
+ )
+ return t.New("libXau-"+version, false, []pkg.Artifact{
+ t.Load(Make),
+ t.Load(PkgConfig),
+
+ t.Load(Xproto),
+ }, nil, nil, `
+cd "$(mktemp -d)"
+/usr/src/libXau/configure \
+ --prefix=/system \
+ --enable-static
+make "-j$(nproc)" check
+make DESTDIR=/work install
+`, pkg.Path(AbsUsrSrc.Append("libXau"), true, pkg.NewHTTPGetTar(
+ nil, "https://www.x.org/releases/X11R7.7/src/lib/"+
+ "libXau-"+version+".tar.bz2",
+ mustDecode(checksum),
+ pkg.TarBzip2,
+ )))
+}
+func init() { artifactsF[LibXau] = Toolchain.newLibXau }
diff --git a/internal/rosa/xcb.go b/internal/rosa/xcb.go
new file mode 100644
index 00000000..58863567
--- /dev/null
+++ b/internal/rosa/xcb.go
@@ -0,0 +1,56 @@
+package rosa
+
+import "hakurei.app/internal/pkg"
+
+func (t Toolchain) newXCBProto() pkg.Artifact {
+ const (
+ version = "1.17.0"
+ checksum = "_NtbKaJ_iyT7XiJz25mXQ7y-niTzE8sHPvLXZPcqtNoV_-vTzqkezJ8Hp2U1enCv"
+ )
+ return t.New("xcb-proto-"+version, false, []pkg.Artifact{
+ t.Load(Make),
+ t.Load(Python),
+ }, nil, nil, `
+cd "$(mktemp -d)"
+/usr/src/xcb-proto/configure \
+ --prefix=/system \
+ --build="${ROSA_TRIPLE}" \
+ --enable-static
+make "-j$(nproc)" check
+make DESTDIR=/work install
+`, pkg.Path(AbsUsrSrc.Append("xcb-proto"), true, pkg.NewHTTPGetTar(
+ nil, "https://xcb.freedesktop.org/dist/xcb-proto-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ )))
+}
+func init() { artifactsF[XCBProto] = Toolchain.newXCBProto }
+
+func (t Toolchain) newXCB() pkg.Artifact {
+ const (
+ version = "1.17.0"
+ checksum = "hjjsc79LpWM_hZjNWbDDS6qRQUXREjjekS6UbUsDq-RR1_AjgNDxhRvZf-1_kzDd"
+ )
+ return t.New("xcb-"+version, false, []pkg.Artifact{
+ t.Load(Make),
+ t.Load(Python),
+ t.Load(PkgConfig),
+
+ t.Load(XCBProto),
+ t.Load(Xproto),
+ t.Load(LibXau),
+ }, nil, nil, `
+cd "$(mktemp -d)"
+/usr/src/xcb/configure \
+ --prefix=/system \
+ --build="${ROSA_TRIPLE}" \
+ --enable-static
+make "-j$(nproc)" check
+make DESTDIR=/work install
+`, pkg.Path(AbsUsrSrc.Append("xcb"), true, pkg.NewHTTPGetTar(
+ nil, "https://xcb.freedesktop.org/dist/libxcb-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ )))
+}
+func init() { artifactsF[XCB] = Toolchain.newXCB }