aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-02-05 19:10:32 +0900
committerOphestra <cat@gensokyo.uk>2026-02-05 19:10:32 +0900
commitce6b3ff53be779a871d66cb820aa13f566080d05 (patch)
treeca4cdcc0eef1d2f3dd7dfa3adf8e39aecae01378
parent30afa0e2ab25cf989ad6c01a70491a727a9aee72 (diff)
internal/rosa: unzip artifact
Because the zip format is too awful and cannot be streamed anyway, supporting it natively comes with no benefit. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--internal/rosa/all.go2
-rw-r--r--internal/rosa/unzip.go34
2 files changed, 36 insertions, 0 deletions
diff --git a/internal/rosa/all.go b/internal/rosa/all.go
index f82841ea..f600f061 100644
--- a/internal/rosa/all.go
+++ b/internal/rosa/all.go
@@ -61,6 +61,7 @@ const (
Setuptools
Toybox
toyboxEarly
+ Unzip
utilMacros
Wayland
WaylandProtocols
@@ -147,6 +148,7 @@ func ResolveName(name string) (p PArtifact, ok bool) {
"sed": Sed,
"setuptools": Setuptools,
"toybox": Toybox,
+ "unzip": Unzip,
"wayland": Wayland,
"wayland-protocols": WaylandProtocols,
"xcb": XCB,
diff --git a/internal/rosa/unzip.go b/internal/rosa/unzip.go
new file mode 100644
index 00000000..84e6120c
--- /dev/null
+++ b/internal/rosa/unzip.go
@@ -0,0 +1,34 @@
+package rosa
+
+import (
+ "strings"
+
+ "hakurei.app/internal/pkg"
+)
+
+func (t Toolchain) newUnzip() pkg.Artifact {
+ const (
+ version = "6.0"
+ checksum = "fcqjB1IOVRNJ16K5gTGEDt3zCJDVBc7EDSra9w3H93stqkNwH1vaPQs_QGOpQZu1"
+ )
+ return t.New("unzip-"+version, 0, []pkg.Artifact{
+ t.Load(Make),
+ t.Load(Coreutils),
+ }, nil, nil, `
+cd /usr/src/unzip/
+unix/configure
+make -f unix/Makefile generic1
+
+mkdir -p /work/system/bin/
+mv unzip /work/system/bin/
+`, pkg.Path(AbsUsrSrc.Append("unzip"), true, t.NewPatchedSource(
+ "unzip", version, pkg.NewHTTPGetTar(
+ nil, "https://downloads.sourceforge.net/project/infozip/"+
+ "UnZip%206.x%20%28latest%29/UnZip%20"+version+"/"+
+ "unzip"+strings.ReplaceAll(version, ".", "")+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), false,
+ )))
+}
+func init() { artifactsF[Unzip] = Toolchain.newUnzip }