diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-01-31 03:38:16 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-01-31 05:01:22 +0900 |
| commit | 5f81aac0e23e0197b449373912aa995dd7bb004a (patch) | |
| tree | ec537ec178b0d3820d22754b18fe222a710d6212 /internal/rosa/gnu.go | |
| parent | 47490823be4d81643ed3895263feec1da64f751e (diff) | |
internal/rosa: make helper
This change only migrates artifacts that remain unchanged under the helper, so this change should not cause any rebuilds.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/gnu.go')
| -rw-r--r-- | internal/rosa/gnu.go | 289 |
1 files changed, 106 insertions, 183 deletions
diff --git a/internal/rosa/gnu.go b/internal/rosa/gnu.go index 81229ae1..6bb7004d 100644 --- a/internal/rosa/gnu.go +++ b/internal/rosa/gnu.go @@ -7,27 +7,19 @@ func (t Toolchain) newM4() pkg.Artifact { version = "1.4.20" checksum = "RT0_L3m4Co86bVBY3lCFAEs040yI1WdeNmRylFpah8IZovTm6O4wI7qiHJN3qsW9" ) - return t.New("m4-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), - t.Load(Diffutils), - }, nil, nil, ` -cd /usr/src/m4 -chmod +w tests/test-c32ispunct.sh && echo '#!/bin/sh' > tests/test-c32ispunct.sh - -cd "$(mktemp -d)" -/usr/src/m4/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("m4"), true, pkg.NewHTTPGetTar( - nil, - "https://ftp.gnu.org/gnu/m4/m4-"+version+".tar.bz2", + return t.NewViaMake("m4", version, pkg.NewHTTPGetTar( + nil, "https://ftp.gnu.org/gnu/m4/m4-"+version+".tar.bz2", mustDecode(checksum), pkg.TarBzip2, - ))) + ), &MakeAttr{ + Writable: true, + ScriptEarly: ` +cd /usr/src/m4 +chmod +w tests/test-c32ispunct.sh && echo '#!/bin/sh' > tests/test-c32ispunct.sh +`, + }, + t.Load(Diffutils), + ) } func init() { artifactsF[M4] = Toolchain.newM4 } @@ -36,24 +28,13 @@ func (t Toolchain) newSed() pkg.Artifact { version = "4.9" checksum = "pe7HWH4PHNYrazOTlUoE1fXmhn2GOPFN_xE62i0llOr3kYGrH1g2_orDz0UtZ9Nt" ) - return t.New("sed-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), - t.Load(Diffutils), - }, nil, nil, ` -cd "$(mktemp -d)" -/usr/src/sed/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("sed"), false, pkg.NewHTTPGetTar( - nil, - "https://ftp.gnu.org/gnu/sed/sed-"+version+".tar.gz", + return t.NewViaMake("sed", version, pkg.NewHTTPGetTar( + nil, "https://ftp.gnu.org/gnu/sed/sed-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, - ))) + ), nil, + t.Load(Diffutils), + ) } func init() { artifactsF[Sed] = Toolchain.newSed } @@ -94,23 +75,14 @@ func (t Toolchain) newGzip() pkg.Artifact { version = "1.14" checksum = "NWhjUavnNfTDFkZJyAUonL9aCOak8GVajWX2OMlzpFnuI0ErpBFyj88mz2xSjz0q" ) - return t.New("gzip-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), - }, nil, nil, ` -cd "$(mktemp -d)" -/usr/src/gzip/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make "-j$(nproc)" -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("gzip"), false, pkg.NewHTTPGetTar( - nil, - "https://ftp.gnu.org/gnu/gzip/gzip-"+version+".tar.gz", + return t.NewViaMake("gzip", version, pkg.NewHTTPGetTar( + nil, "https://ftp.gnu.org/gnu/gzip/gzip-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, - ))) + ), &MakeAttr{ + // dependency loop + SkipCheck: true, + }) } func init() { artifactsF[Gzip] = Toolchain.newGzip } @@ -119,14 +91,13 @@ func (t Toolchain) newGettext() pkg.Artifact { version = "0.26" checksum = "IMu7yDZX7xL5UO1ZxXc-iBMbY9LLEUlOroyuSlHMZwg9MKtxG7HIm8F2LheDua0y" ) - return t.New("gettext-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), - t.Load(Diffutils), - t.Load(Gzip), - t.Load(Sed), - }, nil, nil, ` + return t.NewViaMake("gettext", version, pkg.NewHTTPGetTar( + nil, "https://ftp.gnu.org/pub/gnu/gettext/gettext-"+version+".tar.gz", + mustDecode(checksum), + pkg.TarGzip, + ), &MakeAttr{ + Writable: true, + ScriptEarly: ` cd /usr/src/gettext test_disable() { chmod +w "$2" && echo "$1" > "$2"; } @@ -141,19 +112,12 @@ test_disable '#!/bin/sh' gettext-tools/gnulib-tests/test-c32ispunct.sh test_disable 'int main(){return 0;}' gettext-tools/gnulib-tests/test-stdcountof-h.c touch gettext-tools/misc/archive.dir.tar - -cd "$(mktemp -d)" -/usr/src/gettext/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("gettext"), true, pkg.NewHTTPGetTar( - nil, - "https://ftp.gnu.org/pub/gnu/gettext/gettext-"+version+".tar.gz", - mustDecode(checksum), - pkg.TarGzip, - ))) +`, + }, + t.Load(Diffutils), + t.Load(Gzip), + t.Load(Sed), + ) } func init() { artifactsF[Gettext] = Toolchain.newGettext } @@ -162,28 +126,22 @@ func (t Toolchain) newDiffutils() pkg.Artifact { version = "3.12" checksum = "9J5VAq5oA7eqwzS1Yvw-l3G5o-TccUrNQR3PvyB_lgdryOFAfxtvQfKfhdpquE44" ) - return t.New("diffutils-"+version, TEarly, []pkg.Artifact{ - t.Load(Make), - }, nil, nil, ` + return t.NewViaMake("diffutils", version, pkg.NewHTTPGetTar( + nil, "https://ftp.gnu.org/gnu/diffutils/diffutils-"+version+".tar.gz", + mustDecode(checksum), + pkg.TarGzip, + ), &MakeAttr{ + Writable: true, + ScriptEarly: ` cd /usr/src/diffutils test_disable() { chmod +w "$2" && echo "$1" > "$2"; } test_disable '#!/bin/sh' gnulib-tests/test-c32ispunct.sh test_disable 'int main(){return 0;}' gnulib-tests/test-c32ispunct.c test_disable '#!/bin/sh' tests/cmp - -cd "$(mktemp -d)" -/usr/src/diffutils/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("diffutils"), true, pkg.NewHTTPGetTar( - nil, - "https://ftp.gnu.org/gnu/diffutils/diffutils-"+version+".tar.gz", - mustDecode(checksum), - pkg.TarGzip, - ))) +`, + Flag: TEarly, + }) } func init() { artifactsF[Diffutils] = Toolchain.newDiffutils } @@ -192,27 +150,21 @@ func (t Toolchain) newPatch() pkg.Artifact { version = "2.8" checksum = "MA0BQc662i8QYBD-DdGgyyfTwaeALZ1K0yusV9rAmNiIsQdX-69YC4t9JEGXZkeR" ) - return t.New("patch-"+version, TEarly, []pkg.Artifact{ - t.Load(Make), - }, nil, nil, ` + return t.NewViaMake("patch", version, pkg.NewHTTPGetTar( + nil, "https://ftp.gnu.org/gnu/patch/patch-"+version+".tar.gz", + mustDecode(checksum), + pkg.TarGzip, + ), &MakeAttr{ + Writable: true, + ScriptEarly: ` cd /usr/src/patch test_disable() { chmod +w "$2" && echo "$1" > "$2"; } test_disable '#!/bin/sh' tests/ed-style test_disable '#!/bin/sh' tests/need-filename - -cd "$(mktemp -d)" -/usr/src/patch/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("patch"), true, pkg.NewHTTPGetTar( - nil, - "https://ftp.gnu.org/gnu/patch/patch-"+version+".tar.gz", - mustDecode(checksum), - pkg.TarGzip, - ))) +`, + Flag: TEarly, + }) } func init() { artifactsF[Patch] = Toolchain.newPatch } @@ -221,23 +173,19 @@ func (t Toolchain) newBash() pkg.Artifact { version = "5.3" checksum = "4LQ_GRoB_ko-Ih8QPf_xRKA02xAm_TOxQgcJLmFDT6udUPxTAWrsj-ZNeuTusyDq" ) - return t.New("bash-"+version, TEarly, []pkg.Artifact{ - t.Load(Make), - }, nil, nil, ` -cd "$(mktemp -d)" -/usr/src/bash/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" \ - --without-bash-malloc -make "-j$(nproc)" check -make DESTDIR=/work install -ln -s bash /work/system/bin/sh -`, pkg.Path(AbsUsrSrc.Append("bash"), true, pkg.NewHTTPGetTar( - nil, - "https://ftp.gnu.org/gnu/bash/bash-"+version+".tar.gz", + return t.NewViaMake("bash", version, pkg.NewHTTPGetTar( + nil, "https://ftp.gnu.org/gnu/bash/bash-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, - ))) + ), &MakeAttr{ + Writable: true, + + Script: "ln -s bash /work/system/bin/sh\n", + Configure: [][2]string{ + {"without-bash-malloc"}, + }, + Flag: TEarly, + }) } func init() { artifactsF[Bash] = Toolchain.newBash } @@ -246,32 +194,27 @@ func (t Toolchain) newCoreutils() pkg.Artifact { version = "9.9" checksum = "B1_TaXj1j5aiVIcazLWu8Ix03wDV54uo2_iBry4qHG6Y-9bjDpUPlkNLmU_3Nvw6" ) - return t.New("coreutils-"+version, TEarly, []pkg.Artifact{ - t.Load(Make), - t.Load(Perl), - t.Load(Bash), - - t.Load(KernelHeaders), - }, nil, nil, ` + return t.NewViaMake("coreutils", version, pkg.NewHTTPGetTar( + nil, "https://ftp.gnu.org/gnu/coreutils/coreutils-"+version+".tar.gz", + mustDecode(checksum), + pkg.TarGzip, + ), &MakeAttr{ + Writable: true, + ScriptEarly: ` cd /usr/src/coreutils test_disable() { chmod +w "$2" && echo "$1" > "$2"; } test_disable '#!/bin/sh' gnulib-tests/test-c32ispunct.sh test_disable '#!/bin/sh' tests/split/line-bytes.sh test_disable '#!/bin/sh' tests/dd/no-allocate.sh +`, + Flag: TEarly, + }, + t.Load(Perl), + t.Load(Bash), -cd "$(mktemp -d)" -/usr/src/coreutils/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("coreutils"), true, pkg.NewHTTPGetTar( - nil, - "https://ftp.gnu.org/gnu/coreutils/coreutils-"+version+".tar.gz", - mustDecode(checksum), - pkg.TarGzip, - ))) + t.Load(KernelHeaders), + ) } func init() { artifactsF[Coreutils] = Toolchain.newCoreutils } @@ -280,23 +223,15 @@ func (t Toolchain) newGperf() pkg.Artifact { version = "3.3" checksum = "RtIy9pPb_Bb8-31J2Nw-rRGso2JlS-lDlVhuNYhqR7Nt4xM_nObznxAlBMnarJv7" ) - return t.New("gperf-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), - t.Load(Diffutils), - }, nil, nil, ` -cd "$(mktemp -d)" -/usr/src/gperf/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("gperf"), true, pkg.NewHTTPGetTar( + return t.NewViaMake("gperf", version, pkg.NewHTTPGetTar( nil, "https://ftp.gnu.org/pub/gnu/gperf/gperf-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, - ))) + ), &MakeAttr{ + Writable: true, + }, + t.Load(Diffutils), + ) } func init() { artifactsF[Gperf] = Toolchain.newGperf } @@ -305,20 +240,16 @@ func (t Toolchain) newGawk() pkg.Artifact { version = "5.3.2" checksum = "uIs0d14h_d2DgMGYwrPtegGNyt_bxzG3D6Fe-MmExx_pVoVkQaHzrtmiXVr6NHKk" ) - return t.New("gawk-"+version, TEarly, []pkg.Artifact{ - t.Load(Make), - }, nil, nil, ` -cd "$(mktemp -d)" -/usr/src/gawk/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make "-j$(nproc)" -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("gawk"), false, pkg.NewHTTPGetTar( + return t.NewViaMake("gawk", version, pkg.NewHTTPGetTar( nil, "https://ftp.gnu.org/gnu/gawk/gawk-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, - ))) + ), &MakeAttr{ + Flag: TEarly, + + // dependency loop + SkipCheck: true, + }) } func init() { artifactsF[Gawk] = Toolchain.newGawk } @@ -327,32 +258,24 @@ func (t Toolchain) newFindutils() pkg.Artifact { version = "4.10.0" checksum = "ZXABdNBQXL7QjTygynRRTdXYWxQKZ0Wn5eMd3NUnxR0xaS0u0VfcKoTlbo50zxv6" ) - return t.New("findutils-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), - t.Load(Diffutils), - t.Load(XZ), - t.Load(Sed), - }, nil, nil, ` + return t.NewViaMake("findutils", version, pkg.NewHTTPGet( + nil, "https://ftp.gnu.org/gnu/findutils/findutils-"+version+".tar.xz", + mustDecode(checksum), + ), &MakeAttr{ + SourceSuffix: ".tar.xz", + ScriptEarly: ` cd /usr/src/ tar xf findutils.tar.xz -mv findutils-`+version+` findutils +mv findutils-` + version + ` findutils cd findutils echo '#!/bin/sh' > gnulib-tests/test-c32ispunct.sh echo 'int main(){return 0;}' > tests/xargs/test-sigusr.c - -cd "$(mktemp -d)" -/usr/src/findutils/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("findutils.tar.xz"), false, pkg.NewHTTPGet( - nil, - "https://ftp.gnu.org/gnu/findutils/findutils-"+version+".tar.xz", - mustDecode(checksum), - ))) +`, + }, + t.Load(Diffutils), + t.Load(XZ), + t.Load(Sed), + ) } func init() { artifactsF[Findutils] = Toolchain.newFindutils } |
