aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-03-01 23:54:40 +0900
committerOphestra <cat@gensokyo.uk>2026-03-02 01:24:50 +0900
commitcc60e0d15d79916a69c8a1caeb3c4611351bb6c4 (patch)
tree67f4f59ed7ba7b18af51338e56ffa8d9acf52da6
parent9deaf853f0676ee4475468bffd35aae7e1160a74 (diff)
internal/rosa/make: migrate to helper interface
This also updates all affected artifacts to use new behaviour. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--internal/rosa/acl.go42
-rw-r--r--internal/rosa/argp-standalone.go9
-rw-r--r--internal/rosa/bzip2.go13
-rw-r--r--internal/rosa/cmake.go18
-rw-r--r--internal/rosa/curl.go17
-rw-r--r--internal/rosa/elfutils.go24
-rw-r--r--internal/rosa/fakeroot.go42
-rw-r--r--internal/rosa/flex.go6
-rw-r--r--internal/rosa/git.go46
-rw-r--r--internal/rosa/gnu.go285
-rw-r--r--internal/rosa/kernel.go97
-rw-r--r--internal/rosa/libcap.go34
-rw-r--r--internal/rosa/libexpat.go10
-rw-r--r--internal/rosa/libffi.go10
-rw-r--r--internal/rosa/libgd.go9
-rw-r--r--internal/rosa/libpsl.go10
-rw-r--r--internal/rosa/libseccomp.go17
-rw-r--r--internal/rosa/libucontext.go24
-rw-r--r--internal/rosa/libxml2.go17
-rw-r--r--internal/rosa/libxslt.go21
-rw-r--r--internal/rosa/make.go148
-rw-r--r--internal/rosa/musl-fts.go23
-rw-r--r--internal/rosa/musl-obstack.go23
-rw-r--r--internal/rosa/musl.go34
-rw-r--r--internal/rosa/ncurses.go6
-rw-r--r--internal/rosa/openssl.go17
-rw-r--r--internal/rosa/pcre2.go8
-rw-r--r--internal/rosa/perl.go55
-rw-r--r--internal/rosa/pkg-config.go7
-rw-r--r--internal/rosa/procps.go37
-rw-r--r--internal/rosa/python.go18
-rw-r--r--internal/rosa/qemu.go61
-rw-r--r--internal/rosa/rsync.go12
-rw-r--r--internal/rosa/squashfs.go39
-rw-r--r--internal/rosa/ssl.go43
-rw-r--r--internal/rosa/toybox.go32
-rw-r--r--internal/rosa/util-linux.go10
-rw-r--r--internal/rosa/x.go54
-rw-r--r--internal/rosa/xcb.go20
-rw-r--r--internal/rosa/xz.go6
-rw-r--r--internal/rosa/zlib.go8
41 files changed, 685 insertions, 727 deletions
diff --git a/internal/rosa/acl.go b/internal/rosa/acl.go
index 56571d5f..5a33c0ae 100644
--- a/internal/rosa/acl.go
+++ b/internal/rosa/acl.go
@@ -7,13 +7,14 @@ func (t Toolchain) newAttr() pkg.Artifact {
version = "2.5.2"
checksum = "YWEphrz6vg1sUMmHHVr1CRo53pFXRhq_pjN-AlG8UgwZK1y6m7zuDhxqJhD0SV0l"
)
- return t.NewViaMake("attr", version, t.NewPatchedSource(
- "attr", version, pkg.NewHTTPGetTar(
- nil, "https://download.savannah.nongnu.org/releases/attr/"+
- "attr-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
- ), true, [2]string{"libgen-basename", `From 8a80d895dfd779373363c3a4b62ecce5a549efb2 Mon Sep 17 00:00:00 2001
+ return t.NewPackage("attr", version, pkg.NewHTTPGetTar(
+ nil, "https://download.savannah.nongnu.org/releases/attr/"+
+ "attr-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), &PackageAttr{
+ Patches: [][2]string{
+ {"libgen-basename", `From 8a80d895dfd779373363c3a4b62ecce5a549efb2 Mon Sep 17 00:00:00 2001
From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
Date: Sat, 30 Mar 2024 10:17:10 +0100
Subject: tools/attr.c: Add missing libgen.h include for basename(3)
@@ -38,7 +39,9 @@ index f12e4af..6a3c1e9 100644
#include <attr/attributes.h>
--
-cgit v1.1`}, [2]string{"musl-errno", `diff --git a/test/attr.test b/test/attr.test
+cgit v1.1`},
+
+ {"musl-errno", `diff --git a/test/attr.test b/test/attr.test
index 6ce2f9b..e9bde92 100644
--- a/test/attr.test
+++ b/test/attr.test
@@ -52,15 +55,13 @@ index 6ce2f9b..e9bde92 100644
$ setfattr -n user. -v value f
> setfattr: f: Invalid argument
`},
- ), &MakeAttr{
+ },
+
ScriptEarly: `
ln -s ../../system/bin/perl /usr/bin
`,
- Configure: [][2]string{
- {"enable-static"},
- },
- },
- t.Load(Perl),
+ }, (*MakeHelper)(nil),
+ Perl,
)
}
func init() { artifactsF[Attr] = Toolchain.newAttr }
@@ -70,21 +71,16 @@ func (t Toolchain) newACL() pkg.Artifact {
version = "2.3.2"
checksum = "-fY5nwH4K8ZHBCRXrzLdguPkqjKI6WIiGu4dBtrZ1o0t6AIU73w8wwJz_UyjIS0P"
)
- return t.NewViaMake("acl", version, pkg.NewHTTPGetTar(
- nil,
- "https://download.savannah.nongnu.org/releases/acl/"+
+ return t.NewPackage("acl", version, pkg.NewHTTPGetTar(
+ nil, "https://download.savannah.nongnu.org/releases/acl/"+
"acl-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
- Configure: [][2]string{
- {"enable-static"},
- },
-
+ ), nil, &MakeHelper{
// makes assumptions about uid_map/gid_map
SkipCheck: true,
},
- t.Load(Attr),
+ Attr,
)
}
func init() { artifactsF[ACL] = Toolchain.newACL }
diff --git a/internal/rosa/argp-standalone.go b/internal/rosa/argp-standalone.go
index ca6c6633..0e4da9d9 100644
--- a/internal/rosa/argp-standalone.go
+++ b/internal/rosa/argp-standalone.go
@@ -7,21 +7,22 @@ func (t Toolchain) newArgpStandalone() pkg.Artifact {
version = "1.3"
checksum = "vtW0VyO2pJ-hPyYmDI2zwSLS8QL0sPAUKC1t3zNYbwN2TmsaE-fADhaVtNd3eNFl"
)
- return t.NewViaMake("argp-standalone", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("argp-standalone", version, pkg.NewHTTPGetTar(
nil, "http://www.lysator.liu.se/~nisse/misc/"+
"argp-standalone-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
Env: []string{
"CC=cc -std=gnu89 -fPIC",
},
- ScriptInstall: `
+ }, &MakeHelper{
+ Install: `
install -D -m644 /usr/src/argp-standalone/argp.h /work/system/include/argp.h
install -D -m755 libargp.a /work/system/lib/libargp.a
`,
},
- t.Load(Diffutils),
+ Diffutils,
)
}
func init() { artifactsF[ArgpStandalone] = Toolchain.newArgpStandalone }
diff --git a/internal/rosa/bzip2.go b/internal/rosa/bzip2.go
index 569d7d8a..e32b3507 100644
--- a/internal/rosa/bzip2.go
+++ b/internal/rosa/bzip2.go
@@ -7,21 +7,22 @@ func (t Toolchain) newBzip2() pkg.Artifact {
version = "1.0.8"
checksum = "cTLykcco7boom-s05H1JVsQi1AtChYL84nXkg_92Dm1Xt94Ob_qlMg_-NSguIK-c"
)
- return t.NewViaMake("bzip2", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("bzip2", version, pkg.NewHTTPGetTar(
nil, "https://sourceware.org/pub/bzip2/bzip2-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
- Writable: true,
+ ), &PackageAttr{
+ Writable: true,
+ EnterSource: true,
+ }, &MakeHelper{
+ // uses source tree as scratch space
SkipConfigure: true,
SkipCheck: true,
InPlace: true,
-
- ScriptEarly: "cd /usr/src/bzip2",
Make: []string{
"CC=cc",
},
- ScriptInstall: "make PREFIX=/work/system install",
+ Install: "make PREFIX=/work/system install",
})
}
func init() { artifactsF[Bzip2] = Toolchain.newBzip2 }
diff --git a/internal/rosa/cmake.go b/internal/rosa/cmake.go
index 85e6d292..281a8991 100644
--- a/internal/rosa/cmake.go
+++ b/internal/rosa/cmake.go
@@ -13,15 +13,15 @@ func (t Toolchain) newCMake() pkg.Artifact {
version = "4.2.1"
checksum = "Y3OdbMsob6Xk2y1DCME6z4Fryb5_TkFD7knRT8dTNIRtSqbiCJyyDN9AxggN_I75"
)
- return t.NewViaMake("cmake", version, t.NewPatchedSource(
+ return t.NewPackage("cmake", version, pkg.NewHTTPGetTar(
+ nil, "https://github.com/Kitware/CMake/releases/download/"+
+ "v"+version+"/cmake-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), &PackageAttr{
// expected to be writable in the copy made during bootstrap
- "cmake", version, pkg.NewHTTPGetTar(
- nil, "https://github.com/Kitware/CMake/releases/download/"+
- "v"+version+"/cmake-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
- ), false,
- ), &MakeAttr{
+ Chmod: true,
+ }, &MakeHelper{
OmitDefaults: true,
ConfigureName: "/usr/src/cmake/bootstrap",
@@ -33,7 +33,7 @@ func (t Toolchain) newCMake() pkg.Artifact {
},
SkipCheck: true,
},
- t.Load(KernelHeaders),
+ KernelHeaders,
)
}
func init() { artifactsF[CMake] = Toolchain.newCMake }
diff --git a/internal/rosa/curl.go b/internal/rosa/curl.go
index d040ad7e..bd8c7907 100644
--- a/internal/rosa/curl.go
+++ b/internal/rosa/curl.go
@@ -7,23 +7,24 @@ func (t Toolchain) newCurl() pkg.Artifact {
version = "8.18.0"
checksum = "YpOolP_sx1DIrCEJ3elgVAu0wTLDS-EZMZFvOP0eha7FaLueZUlEpuMwDzJNyi7i"
)
- return t.NewViaMake("curl", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("curl", version, pkg.NewHTTPGetTar(
nil, "https://curl.se/download/curl-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), &MakeAttr{
- Env: []string{
- "TFLAGS=-j256",
- },
+ ), nil, &MakeHelper{
Configure: [][2]string{
{"with-openssl"},
{"with-ca-bundle", "/system/etc/ssl/certs/ca-bundle.crt"},
},
+ Check: []string{
+ "TFLAGS=-j256",
+ "check",
+ },
},
- t.Load(Perl),
+ Perl,
- t.Load(Libpsl),
- t.Load(OpenSSL),
+ Libpsl,
+ OpenSSL,
)
}
func init() { artifactsF[Curl] = Toolchain.newCurl }
diff --git a/internal/rosa/elfutils.go b/internal/rosa/elfutils.go
index ea9dcb67..5c47ebae 100644
--- a/internal/rosa/elfutils.go
+++ b/internal/rosa/elfutils.go
@@ -7,18 +7,18 @@ func (t Toolchain) newElfutils() pkg.Artifact {
version = "0.194"
checksum = "Q3XUygUPv9vR1TkWucwUsQ8Kb1_F6gzk-KMPELr3cC_4AcTrprhVPMvN0CKkiYRa"
)
- return t.NewViaMake("elfutils", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("elfutils", version, pkg.NewHTTPGetTar(
nil, "https://sourceware.org/elfutils/ftp/"+
version+"/elfutils-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), &MakeAttr{
+ ), &PackageAttr{
Env: []string{
"CC=cc" +
// nonstandard glibc extension
" -DFNM_EXTMATCH=0",
},
-
+ }, &MakeHelper{
// nonstandard glibc extension
SkipCheck: true,
@@ -26,16 +26,16 @@ func (t Toolchain) newElfutils() pkg.Artifact {
{"enable-deterministic-archives"},
},
},
- t.Load(M4),
- t.Load(PkgConfig),
+ M4,
+ PkgConfig,
- t.Load(Zlib),
- t.Load(Bzip2),
- t.Load(Zstd),
- t.Load(ArgpStandalone),
- t.Load(MuslFts),
- t.Load(MuslObstack),
- t.Load(KernelHeaders),
+ Zlib,
+ Bzip2,
+ Zstd,
+ ArgpStandalone,
+ MuslFts,
+ MuslObstack,
+ KernelHeaders,
)
}
func init() { artifactsF[Elfutils] = Toolchain.newElfutils }
diff --git a/internal/rosa/fakeroot.go b/internal/rosa/fakeroot.go
index dea7515f..f97b4663 100644
--- a/internal/rosa/fakeroot.go
+++ b/internal/rosa/fakeroot.go
@@ -7,13 +7,14 @@ func (t Toolchain) newFakeroot() pkg.Artifact {
version = "1.37.2"
checksum = "4ve-eDqVspzQ6VWDhPS0NjW3aSenBJcPAJq_BFT7OOFgUdrQzoTBxZWipDAGWxF8"
)
- return t.NewViaMake("fakeroot", version, t.NewPatchedSource(
- "fakeroot", version, pkg.NewHTTPGetTar(
- nil, "https://salsa.debian.org/clint/fakeroot/-/archive/upstream/"+
- version+"/fakeroot-upstream-"+version+".tar.bz2",
- mustDecode(checksum),
- pkg.TarBzip2,
- ), false, [2]string{"remove-broken-docs", `diff --git a/doc/Makefile.am b/doc/Makefile.am
+ return t.NewPackage("fakeroot", version, pkg.NewHTTPGetTar(
+ nil, "https://salsa.debian.org/clint/fakeroot/-/archive/upstream/"+
+ version+"/fakeroot-upstream-"+version+".tar.bz2",
+ mustDecode(checksum),
+ pkg.TarBzip2,
+ ), &PackageAttr{
+ Patches: [][2]string{
+ {"remove-broken-docs", `diff --git a/doc/Makefile.am b/doc/Makefile.am
index f135ad9..85c784c 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -24,30 +25,27 @@ index f135ad9..85c784c 100644
man_MANS = faked.1 fakeroot.1
`},
- ), &MakeAttr{
- Writable: true,
+ },
Env: []string{
"CONFIG_SHELL=/bin/sh",
},
- ScriptEarly: `
-cd /usr/src/fakeroot
-./bootstrap
-`,
+ }, &MakeHelper{
+ Generate: "./bootstrap",
// makes assumptions about /etc/passwd
SkipCheck: true,
},
- t.Load(M4),
- t.Load(Perl),
- t.Load(Autoconf),
- t.Load(Automake),
- t.Load(Libtool),
- t.Load(PkgConfig),
+ M4,
+ Perl,
+ Autoconf,
+ Automake,
+ Libtool,
+ PkgConfig,
- t.Load(Attr),
- t.Load(Libcap),
- t.Load(KernelHeaders),
+ Attr,
+ Libcap,
+ KernelHeaders,
)
}
func init() { artifactsF[Fakeroot] = Toolchain.newFakeroot }
diff --git a/internal/rosa/flex.go b/internal/rosa/flex.go
index 46d59fc2..e6fef284 100644
--- a/internal/rosa/flex.go
+++ b/internal/rosa/flex.go
@@ -9,13 +9,13 @@ func (t Toolchain) newFlex() pkg.Artifact {
version = "2.6.4"
checksum = "p9POjQU7VhgOf3x5iFro8fjhy0NOanvA7CTeuWS_veSNgCixIJshTrWVkc5XLZkB"
)
- return t.NewViaMake("flex", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("flex", version, pkg.NewHTTPGetTar(
nil, "https://github.com/westes/flex/releases/download/"+
"v"+version+"/flex-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil,
- t.Load(M4),
+ ), nil, (*MakeHelper)(nil),
+ M4,
)
}
func init() { artifactsF[Flex] = Toolchain.newFlex }
diff --git a/internal/rosa/git.go b/internal/rosa/git.go
index a243e507..1880af06 100644
--- a/internal/rosa/git.go
+++ b/internal/rosa/git.go
@@ -7,24 +7,22 @@ func (t Toolchain) newGit() pkg.Artifact {
version = "2.52.0"
checksum = "uH3J1HAN_c6PfGNJd2OBwW4zo36n71wmkdvityYnrh8Ak0D1IifiAvEWz9Vi9DmS"
)
- return t.NewViaMake("git", version, t.NewPatchedSource(
- "git", version, pkg.NewHTTPGetTar(
- nil, "https://www.kernel.org/pub/software/scm/git/"+
- "git-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
- ), false,
- ), &MakeAttr{
- // uses source tree as scratch space
- Writable: true,
- InPlace: true,
-
+ return t.NewPackage("git", version, pkg.NewHTTPGetTar(
+ nil, "https://www.kernel.org/pub/software/scm/git/"+
+ "git-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), &PackageAttr{
ScriptEarly: `
-cd /usr/src/git
-
-make configure
ln -s ../../system/bin/perl /usr/bin/ || true
+`,
+ // uses source tree as scratch space
+ EnterSource: true,
+ }, &MakeHelper{
+ InPlace: true,
+ Generate: "make configure",
+ ScriptMakeEarly: `
function disable_test {
local test=$1 pattern=${2:-''}
if [ $# -eq 1 ]; then
@@ -55,16 +53,16 @@ disable_test t2200-add-update
"prove",
},
},
- t.Load(Perl),
- t.Load(Diffutils),
- t.Load(M4),
- t.Load(Autoconf),
- t.Load(Gettext),
+ Perl,
+ Diffutils,
+ M4,
+ Autoconf,
+ Gettext,
- t.Load(Zlib),
- t.Load(Curl),
- t.Load(OpenSSL),
- t.Load(Libexpat),
+ Zlib,
+ Curl,
+ OpenSSL,
+ Libexpat,
)
}
func init() { artifactsF[Git] = Toolchain.newGit }
diff --git a/internal/rosa/gnu.go b/internal/rosa/gnu.go
index a110dcef..328a372c 100644
--- a/internal/rosa/gnu.go
+++ b/internal/rosa/gnu.go
@@ -7,18 +7,17 @@ func (t Toolchain) newM4() pkg.Artifact {
version = "1.4.20"
checksum = "RT0_L3m4Co86bVBY3lCFAEs040yI1WdeNmRylFpah8IZovTm6O4wI7qiHJN3qsW9"
)
- return t.NewViaMake("m4", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("m4", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/m4/m4-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), &MakeAttr{
+ ), &PackageAttr{
Writable: true,
ScriptEarly: `
-cd /usr/src/m4
chmod +w tests/test-c32ispunct.sh && echo '#!/bin/sh' > tests/test-c32ispunct.sh
`,
- },
- t.Load(Diffutils),
+ }, (*MakeHelper)(nil),
+ Diffutils,
)
}
func init() { artifactsF[M4] = Toolchain.newM4 }
@@ -28,14 +27,14 @@ func (t Toolchain) newBison() pkg.Artifact {
version = "3.8.2"
checksum = "BhRM6K7URj1LNOkIDCFDctSErLS-Xo5d9ba9seg10o6ACrgC1uNhED7CQPgIY29Y"
)
- return t.NewViaMake("bison", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("bison", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/bison/bison-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil,
- t.Load(M4),
- t.Load(Diffutils),
- t.Load(Sed),
+ ), nil, (*MakeHelper)(nil),
+ M4,
+ Diffutils,
+ Sed,
)
}
func init() { artifactsF[Bison] = Toolchain.newBison }
@@ -45,12 +44,12 @@ func (t Toolchain) newSed() pkg.Artifact {
version = "4.9"
checksum = "pe7HWH4PHNYrazOTlUoE1fXmhn2GOPFN_xE62i0llOr3kYGrH1g2_orDz0UtZ9Nt"
)
- return t.NewViaMake("sed", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("sed", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/sed/sed-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil,
- t.Load(Diffutils),
+ ), nil, (*MakeHelper)(nil),
+ Diffutils,
)
}
func init() { artifactsF[Sed] = Toolchain.newSed }
@@ -60,21 +59,22 @@ func (t Toolchain) newAutoconf() pkg.Artifact {
version = "2.72"
checksum = "-c5blYkC-xLDer3TWEqJTyh1RLbOd1c5dnRLKsDnIrg_wWNOLBpaqMY8FvmUFJ33"
)
- return t.NewViaMake("autoconf", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("autoconf", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/autoconf/autoconf-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
+ Flag: TExclusive,
+ }, &MakeHelper{
Check: []string{
`TESTSUITEFLAGS="-j$(nproc)"`,
"check",
},
- Flag: TExclusive,
},
- t.Load(M4),
- t.Load(Perl),
- t.Load(Bash),
- t.Load(Diffutils),
+ M4,
+ Perl,
+ Bash,
+ Diffutils,
)
}
func init() { artifactsF[Autoconf] = Toolchain.newAutoconf }
@@ -84,15 +84,13 @@ func (t Toolchain) newAutomake() pkg.Artifact {
version = "1.18.1"
checksum = "FjvLG_GdQP7cThTZJLDMxYpRcKdpAVG-YDs1Fj1yaHlSdh_Kx6nRGN14E0r_BjcG"
)
- return t.NewViaMake("automake", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("automake", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/automake/automake-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
Writable: true,
ScriptEarly: `
-cd /usr/src/automake
-
test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable '#!/bin/sh' t/objcxx-minidemo.sh
@@ -102,13 +100,13 @@ test_disable '#!/bin/sh' t/dist-no-built-sources.sh
test_disable '#!/bin/sh' t/distname.sh
test_disable '#!/bin/sh' t/pr9.sh
`,
- },
- t.Load(M4),
- t.Load(Perl),
- t.Load(Grep),
- t.Load(Gzip),
- t.Load(Autoconf),
- t.Load(Diffutils),
+ }, (*MakeHelper)(nil),
+ M4,
+ Perl,
+ Grep,
+ Gzip,
+ Autoconf,
+ Diffutils,
)
}
func init() { artifactsF[Automake] = Toolchain.newAutomake }
@@ -118,18 +116,18 @@ func (t Toolchain) newLibtool() pkg.Artifact {
version = "2.5.4"
checksum = "pa6LSrQggh8mSJHQfwGjysAApmZlGJt8wif2cCLzqAAa2jpsTY0jZ-6stS3BWZ2Q"
)
- return t.NewViaMake("libtool", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("libtool", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/libtool/libtool-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), nil, &MakeHelper{
Check: []string{
`TESTSUITEFLAGS="-j$(nproc)"`,
"check",
},
},
- t.Load(M4),
- t.Load(Diffutils),
+ M4,
+ Diffutils,
)
}
func init() { artifactsF[Libtool] = Toolchain.newLibtool }
@@ -139,11 +137,11 @@ func (t Toolchain) newGzip() pkg.Artifact {
version = "1.14"
checksum = "NWhjUavnNfTDFkZJyAUonL9aCOak8GVajWX2OMlzpFnuI0ErpBFyj88mz2xSjz0q"
)
- return t.NewViaMake("gzip", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("gzip", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/gzip/gzip-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), nil, &MakeHelper{
// dependency loop
SkipCheck: true,
})
@@ -155,14 +153,13 @@ func (t Toolchain) newGettext() pkg.Artifact {
version = "1.0"
checksum = "3MasKeEdPeFEgWgzsBKk7JqWqql1wEMbgPmzAfs-mluyokoW0N8oQVxPQoOnSdgC"
)
- return t.NewViaMake("gettext", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("gettext", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/gettext/gettext-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
Writable: true,
ScriptEarly: `
-cd /usr/src/gettext
test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable '#!/bin/sh' gettext-tools/tests/msgcat-22
@@ -177,12 +174,12 @@ test_disable 'int main(){return 0;}' gettext-tools/gnulib-tests/test-stdcountof-
touch gettext-tools/autotools/archive.dir.tar
`,
- },
- t.Load(Diffutils),
- t.Load(Gzip),
- t.Load(Sed),
+ }, (*MakeHelper)(nil),
+ Diffutils,
+ Gzip,
+ Sed,
- t.Load(KernelHeaders),
+ KernelHeaders,
)
}
func init() { artifactsF[Gettext] = Toolchain.newGettext }
@@ -192,14 +189,13 @@ func (t Toolchain) newDiffutils() pkg.Artifact {
version = "3.12"
checksum = "9J5VAq5oA7eqwzS1Yvw-l3G5o-TccUrNQR3PvyB_lgdryOFAfxtvQfKfhdpquE44"
)
- return t.NewViaMake("diffutils", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("diffutils", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/diffutils/diffutils-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
Writable: true,
ScriptEarly: `
-cd /usr/src/diffutils
test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable '#!/bin/sh' gnulib-tests/test-c32ispunct.sh
@@ -207,7 +203,7 @@ test_disable 'int main(){return 0;}' gnulib-tests/test-c32ispunct.c
test_disable '#!/bin/sh' tests/cmp
`,
Flag: TEarly,
- })
+ }, (*MakeHelper)(nil))
}
func init() { artifactsF[Diffutils] = Toolchain.newDiffutils }
@@ -216,21 +212,20 @@ func (t Toolchain) newPatch() pkg.Artifact {
version = "2.8"
checksum = "MA0BQc662i8QYBD-DdGgyyfTwaeALZ1K0yusV9rAmNiIsQdX-69YC4t9JEGXZkeR"
)
- return t.NewViaMake("patch", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("patch", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/patch/patch-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
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
`,
Flag: TEarly,
- })
+ }, (*MakeHelper)(nil))
}
func init() { artifactsF[Patch] = Toolchain.newPatch }
@@ -239,16 +234,17 @@ func (t Toolchain) newBash() pkg.Artifact {
version = "5.3"
checksum = "4LQ_GRoB_ko-Ih8QPf_xRKA02xAm_TOxQgcJLmFDT6udUPxTAWrsj-ZNeuTusyDq"
)
- return t.NewViaMake("bash", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("bash", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/bash/bash-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
+ Flag: TEarly,
+ }, &MakeHelper{
Script: "ln -s bash /work/system/bin/sh\n",
Configure: [][2]string{
{"without-bash-malloc"},
},
- Flag: TEarly,
})
}
func init() { artifactsF[Bash] = Toolchain.newBash }
@@ -258,14 +254,13 @@ func (t Toolchain) newCoreutils() pkg.Artifact {
version = "9.9"
checksum = "B1_TaXj1j5aiVIcazLWu8Ix03wDV54uo2_iBry4qHG6Y-9bjDpUPlkNLmU_3Nvw6"
)
- return t.NewViaMake("coreutils", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("coreutils", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/coreutils/coreutils-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
Writable: true,
ScriptEarly: `
-cd /usr/src/coreutils
test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable '#!/bin/sh' gnulib-tests/test-c32ispunct.sh
@@ -276,15 +271,16 @@ test_disable 'int main(){return 0;}' gnulib-tests/test-chown.c
test_disable 'int main(){return 0;}' gnulib-tests/test-fchownat.c
test_disable 'int main(){return 0;}' gnulib-tests/test-lchown.c
`,
+ Flag: TEarly,
+ }, &MakeHelper{
Configure: [][2]string{
{"enable-single-binary", "symlinks"},
},
- Flag: TEarly,
},
- t.Load(Perl),
- t.Load(Bash),
+ Perl,
+ Bash,
- t.Load(KernelHeaders),
+ KernelHeaders,
)
}
func init() { artifactsF[Coreutils] = Toolchain.newCoreutils }
@@ -294,15 +290,15 @@ func (t Toolchain) newTexinfo() pkg.Artifact {
version = "7.2"
checksum = "9EelM5b7QGMAY5DKrAm_El8lofBGuFWlaBPSBhh7l_VQE8054MBmC0KBvGrABqjv"
)
- return t.NewViaMake("texinfo", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("texinfo", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/texinfo/texinfo-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), nil, &MakeHelper{
// nonstandard glibc extension
SkipCheck: true,
},
- t.Load(Perl),
+ Perl,
)
}
func init() { artifactsF[Texinfo] = Toolchain.newTexinfo }
@@ -312,12 +308,12 @@ func (t Toolchain) newGperf() pkg.Artifact {
version = "3.3"
checksum = "RtIy9pPb_Bb8-31J2Nw-rRGso2JlS-lDlVhuNYhqR7Nt4xM_nObznxAlBMnarJv7"
)
- return t.NewViaMake("gperf", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("gperf", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gperf/gperf-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil,
- t.Load(Diffutils),
+ ), nil, (*MakeHelper)(nil),
+ Diffutils,
)
}
func init() { artifactsF[Gperf] = Toolchain.newGperf }
@@ -327,13 +323,13 @@ func (t Toolchain) newGawk() pkg.Artifact {
version = "5.3.2"
checksum = "uIs0d14h_d2DgMGYwrPtegGNyt_bxzG3D6Fe-MmExx_pVoVkQaHzrtmiXVr6NHKk"
)
- return t.NewViaMake("gawk", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("gawk", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/gawk/gawk-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
Flag: TEarly,
-
+ }, &MakeHelper{
// dependency loop
SkipCheck: true,
})
@@ -345,22 +341,20 @@ func (t Toolchain) newGrep() pkg.Artifact {
version = "3.12"
checksum = "qMB4RjaPNRRYsxix6YOrjE8gyAT1zVSTy4nW4wKW9fqa0CHYAuWgPwDTirENzm_1"
)
- return t.NewViaMake("grep", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("grep", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/grep/grep-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
Writable: true,
ScriptEarly: `
-cd /usr/src/grep
-
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
`,
- },
- t.Load(Diffutils),
+ }, (*MakeHelper)(nil),
+ Diffutils,
)
}
func init() { artifactsF[Grep] = Toolchain.newGrep }
@@ -370,24 +364,19 @@ func (t Toolchain) newFindutils() pkg.Artifact {
version = "4.10.0"
checksum = "ZXABdNBQXL7QjTygynRRTdXYWxQKZ0Wn5eMd3NUnxR0xaS0u0VfcKoTlbo50zxv6"
)
- return t.NewViaMake("findutils", version, pkg.NewHTTPGet(
+ return t.NewPackage("findutils", version, pkg.NewHTTPGet(
nil, "https://ftpmirror.gnu.org/gnu/findutils/findutils-"+version+".tar.xz",
mustDecode(checksum),
- ), &MakeAttr{
- SourceSuffix: ".tar.xz",
+ ), &PackageAttr{
+ SourceKind: sourceTarXZ,
ScriptEarly: `
-cd /usr/src/
-tar xf findutils.tar.xz
-mv findutils-` + version + ` findutils
-
-cd findutils
echo '#!/bin/sh' > gnulib-tests/test-c32ispunct.sh
echo 'int main(){return 0;}' > tests/xargs/test-sigusr.c
`,
- },
- t.Load(Diffutils),
- t.Load(XZ),
- t.Load(Sed),
+ }, (*MakeHelper)(nil),
+ Diffutils,
+ XZ,
+ Sed,
)
}
func init() { artifactsF[Findutils] = Toolchain.newFindutils }
@@ -397,17 +386,17 @@ func (t Toolchain) newBC() pkg.Artifact {
version = "1.08.2"
checksum = "8h6f3hjV80XiFs6v9HOPF2KEyg1kuOgn5eeFdVspV05ODBVQss-ey5glc8AmneLy"
)
- return t.NewViaMake("bc", version, t.NewPatchedSource(
- "bc", version, pkg.NewHTTPGetTar(
- nil, "https://ftpmirror.gnu.org/gnu/bc/bc-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
- ), false,
- ), &MakeAttr{
+ return t.NewPackage("bc", version, pkg.NewHTTPGetTar(
+ nil, "https://ftpmirror.gnu.org/gnu/bc/bc-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), &PackageAttr{
+ // source expected to be writable
Writable: true,
- },
- t.Load(Perl),
- t.Load(Texinfo),
+ Chmod: true,
+ }, (*MakeHelper)(nil),
+ Perl,
+ Texinfo,
)
}
func init() { artifactsF[BC] = Toolchain.newBC }
@@ -417,11 +406,11 @@ func (t Toolchain) newLibiconv() pkg.Artifact {
version = "1.18"
checksum = "iV5q3VxP5VPdJ-X7O5OQI4fGm8VjeYb5viLd1L3eAHg26bbHb2_Qn63XPF3ucVZr"
)
- return t.NewViaMake("libiconv", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("libiconv", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/libiconv/libiconv-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil)
+ ), nil, (*MakeHelper)(nil))
}
func init() { artifactsF[Libiconv] = Toolchain.newLibiconv }
@@ -430,30 +419,29 @@ func (t Toolchain) newTar() pkg.Artifact {
version = "1.35"
checksum = "zSaoSlVUDW0dSfm4sbL4FrXLFR8U40Fh3zY5DWhR5NCIJ6GjU6Kc4VZo2-ZqpBRA"
)
- return t.NewViaMake("tar", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("tar", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/tar/tar-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
- Env: []string{
- // very expensive
- "TARTEST_SKIP_LARGE_FILES=1",
- },
+ ), nil, &MakeHelper{
Configure: [][2]string{
{"disable-acl"},
{"without-posix-acls"},
{"without-xattrs"},
},
Check: []string{
+ // very expensive
+ "TARTEST_SKIP_LARGE_FILES=1",
+
`TESTSUITEFLAGS="-j$(nproc)"`,
"check",
},
},
- t.Load(Diffutils),
+ Diffutils,
- t.Load(Gzip),
- t.Load(Bzip2),
- t.Load(Zstd),
+ Gzip,
+ Bzip2,
+ Zstd,
)
}
func init() { artifactsF[Tar] = Toolchain.newTar }
@@ -463,12 +451,12 @@ func (t Toolchain) newBinutils() pkg.Artifact {
version = "2.45"
checksum = "hlLtqqHDmzAT2OQVHaKEd_io2DGFvJkaeS-igBuK8bRRir7LUKGHgHYNkDVKaHTT"
)
- return t.NewViaMake("binutils", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("binutils", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/binutils/binutils-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), nil,
- t.Load(Bash),
+ ), nil, (*MakeHelper)(nil),
+ Bash,
)
}
func init() { artifactsF[Binutils] = Toolchain.newBinutils }
@@ -478,13 +466,13 @@ func (t Toolchain) newGMP() pkg.Artifact {
version = "6.3.0"
checksum = "yrgbgEDWKDdMWVHh7gPbVl56-sRtVVhfvv0M_LX7xMUUk_mvZ1QOJEAnt7g4i3k5"
)
- return t.NewViaMake("gmp", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("gmp", version, pkg.NewHTTPGetTar(
nil, "https://gcc.gnu.org/pub/gcc/infrastructure/"+
"gmp-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), nil,
- t.Load(M4),
+ ), nil, (*MakeHelper)(nil),
+ M4,
)
}
func init() { artifactsF[GMP] = Toolchain.newGMP }
@@ -494,13 +482,13 @@ func (t Toolchain) newMPFR() pkg.Artifact {
version = "4.2.2"
checksum = "wN3gx0zfIuCn9r3VAn_9bmfvAYILwrRfgBjYSD1IjLqyLrLojNN5vKyQuTE9kA-B"
)
- return t.NewViaMake("mpfr", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("mpfr", version, pkg.NewHTTPGetTar(
nil, "https://gcc.gnu.org/pub/gcc/infrastructure/"+
"mpfr-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), nil,
- t.Load(GMP),
+ ), nil, (*MakeHelper)(nil),
+ GMP,
)
}
func init() { artifactsF[MPFR] = Toolchain.newMPFR }
@@ -510,14 +498,14 @@ func (t Toolchain) newMPC() pkg.Artifact {
version = "1.3.1"
checksum = "o8r8K9R4x7PuRx0-JE3-bC5jZQrtxGV2nkB773aqJ3uaxOiBDCID1gKjPaaDxX4V"
)
- return t.NewViaMake("mpc", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("mpc", version, pkg.NewHTTPGetTar(
nil, "https://gcc.gnu.org/pub/gcc/infrastructure/"+
"mpc-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil,
- t.Load(GMP),
- t.Load(MPFR),
+ ), nil, (*MakeHelper)(nil),
+ GMP,
+ MPFR,
)
}
func init() { artifactsF[MPC] = Toolchain.newMPC }
@@ -527,14 +515,14 @@ func (t Toolchain) newGCC() pkg.Artifact {
version = "15.2.0"
checksum = "TXJ5WrbXlGLzy1swghQTr4qxgDCyIZFgJry51XEPTBZ8QYbVmFeB4lZbSMtPJ-a1"
)
- return t.NewViaMake("gcc", version, t.NewPatchedSource(
- "gcc", version,
- pkg.NewHTTPGetTar(
- nil, "https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/"+
- "gcc-"+version+"/gcc-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
- ), true, [2]string{"musl-off64_t-loff_t", `diff --git a/libgo/sysinfo.c b/libgo/sysinfo.c
+ return t.NewPackage("gcc", version, pkg.NewHTTPGetTar(
+ nil, "https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/"+
+ "gcc-"+version+"/gcc-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), &PackageAttr{
+ Patches: [][2]string{
+ {"musl-off64_t-loff_t", `diff --git a/libgo/sysinfo.c b/libgo/sysinfo.c
index 180f5c31d74..44d7ea73f7d 100644
--- a/libgo/sysinfo.c
+++ b/libgo/sysinfo.c
@@ -550,7 +538,9 @@ index 180f5c31d74..44d7ea73f7d 100644
// The following section introduces explicit references to types and
// constants of interest to support bootstrapping libgo using a
-`}, [2]string{"musl-legacy-lfs", `diff --git a/libgo/go/internal/syscall/unix/at_largefile.go b/libgo/go/internal/syscall/unix/at_largefile.go
+`},
+
+ {"musl-legacy-lfs", `diff --git a/libgo/go/internal/syscall/unix/at_largefile.go b/libgo/go/internal/syscall/unix/at_largefile.go
index 82e0dcfd074..16151ecad1b 100644
--- a/libgo/go/internal/syscall/unix/at_largefile.go
+++ b/libgo/go/internal/syscall/unix/at_largefile.go
@@ -678,11 +668,18 @@ index f84860891e6..7efc9615985 100644
}
#endif
-`}), &MakeAttr{
+`},
+ },
+
ScriptEarly: `
ln -s system/lib /
ln -s system/lib /work/
`,
+
+ // GCC spends most of its time in its many configure scripts, however
+ // it also saturates the CPU for a consequential amount of time.
+ Flag: TExclusive,
+ }, &MakeHelper{
Configure: [][2]string{
{"disable-multilib"},
{"with-multilib-list", `""`},
@@ -703,20 +700,16 @@ ln -s system/lib /work/
// well in its current state. That does not matter as long as the
// toolchain it produces passes its own test suite.
SkipCheck: true,
-
- // GCC spends most of its time in its many configure scripts, however
- // it also saturates the CPU for a consequential amount of time.
- Flag: TExclusive,
},
- t.Load(Binutils),
+ Binutils,
- t.Load(GMP),
- t.Load(MPFR),
- t.Load(MPC),
+ GMP,
+ MPFR,
+ MPC,
- t.Load(Zlib),
- t.Load(Libucontext),
- t.Load(KernelHeaders),
+ Zlib,
+ Libucontext,
+ KernelHeaders,
)
}
func init() { artifactsF[gcc] = Toolchain.newGCC }
diff --git a/internal/rosa/kernel.go b/internal/rosa/kernel.go
index def556ce..5d9bf6ff 100644
--- a/internal/rosa/kernel.go
+++ b/internal/rosa/kernel.go
@@ -21,7 +21,9 @@ chmod -R +w /work/usr/src/linux/
func init() { artifactsF[KernelSource] = Toolchain.newKernelSource }
func (t Toolchain) newKernelHeaders() pkg.Artifact {
- return t.NewViaMake("kernel-headers", kernelVersion, kernelSource, &MakeAttr{
+ return t.NewPackage("kernel-headers", kernelVersion, kernelSource, &PackageAttr{
+ Flag: TEarly,
+ }, &MakeHelper{
SkipConfigure: true,
SkipCheck: true,
@@ -33,23 +35,15 @@ func (t Toolchain) newKernelHeaders() pkg.Artifact {
"INSTALL_HDR_PATH=/work/system",
"headers_install",
},
- ScriptInstall: "\n",
-
- Flag: TEarly,
+ Install: "# headers installed during make",
},
- t.Load(Rsync),
+ Rsync,
)
}
func init() { artifactsF[KernelHeaders] = Toolchain.newKernelHeaders }
func (t Toolchain) newKernel() pkg.Artifact {
- return t.NewViaMake("kernel", kernelVersion, kernelSource, &MakeAttr{
- OmitDefaults: true,
- SkipConfigure: true,
-
- // Build, install, and boot kernel before running kselftest on it.
- SkipCheck: true,
-
+ return t.NewPackage("kernel", kernelVersion, kernelSource, &PackageAttr{
Env: []string{
"PATH=/system/sbin",
},
@@ -61,6 +55,28 @@ install -Dm0500 \
/usr/src/.installkernel \
/sbin/installkernel
`,
+
+ Paths: []pkg.ExecPath{
+ pkg.Path(AbsUsrSrc.Append(
+ ".config",
+ ), false, pkg.NewFile(".config", kernelConfig)),
+ pkg.Path(AbsUsrSrc.Append(
+ ".installkernel",
+ ), false, pkg.NewFile("installkernel", []byte(`#!/bin/sh -e
+echo "Installing linux $1..."
+cp -av "$2" "$4"
+cp -av "$3" "$4"
+`))),
+ },
+
+ Flag: TExclusive,
+ }, &MakeHelper{
+ OmitDefaults: true,
+ SkipConfigure: true,
+
+ // Build, install, and boot kernel before running kselftest on it.
+ SkipCheck: true,
+
Make: []string{
"-f /usr/src/kernel/Makefile",
"O=/tmp/kbuild",
@@ -72,7 +88,7 @@ install -Dm0500 \
"KBUILD_BUILD_HOST=localhost",
"all",
},
- ScriptInstall: `
+ Install: `
make \
"-j$(nproc)" \
-f /usr/src/kernel/Makefile \
@@ -84,42 +100,29 @@ make \
modules_install
rm -v /work/lib/modules/` + kernelVersion + `/build
`,
-
- Paths: []pkg.ExecPath{
- pkg.Path(AbsUsrSrc.Append(
- ".config",
- ), false, pkg.NewFile(".config", kernelConfig)),
- pkg.Path(AbsUsrSrc.Append(
- ".installkernel",
- ), false, pkg.NewFile("installkernel", []byte(`#!/bin/sh -e
-echo "Installing linux $1..."
-cp -av "$2" "$4"
-cp -av "$3" "$4"
-`))),
- },
},
- t.Load(Flex),
- t.Load(Bison),
- t.Load(M4),
- t.Load(Tar),
- t.Load(Perl),
- t.Load(BC),
- t.Load(Sed),
- t.Load(Gawk),
- t.Load(Coreutils),
- t.Load(Diffutils),
- t.Load(Python),
+ Flex,
+ Bison,
+ M4,
+ Tar,
+ Perl,
+ BC,
+ Sed,
+ Gawk,
+ Coreutils,
+ Diffutils,
+ Python,
- t.Load(XZ),
- t.Load(Zlib),
- t.Load(Gzip),
- t.Load(Bzip2),
- t.Load(Zstd),
- t.Load(Kmod),
- t.Load(Elfutils),
- t.Load(OpenSSL),
- t.Load(UtilLinux),
- t.Load(KernelHeaders),
+ XZ,
+ Zlib,
+ Gzip,
+ Bzip2,
+ Zstd,
+ Kmod,
+ Elfutils,
+ OpenSSL,
+ UtilLinux,
+ KernelHeaders,
)
}
func init() { artifactsF[Kernel] = Toolchain.newKernel }
diff --git a/internal/rosa/libcap.go b/internal/rosa/libcap.go
index 46492911..81a9ec63 100644
--- a/internal/rosa/libcap.go
+++ b/internal/rosa/libcap.go
@@ -7,17 +7,15 @@ func (t Toolchain) newLibcap() pkg.Artifact {
version = "2.77"
checksum = "2GOTFU4cl2QoS7Dv5wh0c9-hxsQwIzMB9Y_gfAo5xKHqcM13fiHt1RbPkfemzjmB"
)
- return t.NewViaMake("libcap", version, t.NewPatchedSource(
- "libcap", version, pkg.NewHTTPGetTar(
- nil, "https://git.kernel.org/pub/scm/libs/libcap/libcap.git/"+
- "snapshot/libcap-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
- ), false,
- ), &MakeAttr{
- Writable: true,
- SkipConfigure: true,
- InPlace: true,
+ return t.NewPackage("libcap", version, pkg.NewHTTPGetTar(
+ nil, "https://git.kernel.org/pub/scm/libs/libcap/libcap.git/"+
+ "snapshot/libcap-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), &PackageAttr{
+ // uses source tree as scratch space
+ Writable: true,
+ Chmod: true,
Env: []string{
"prefix=/system",
@@ -25,16 +23,22 @@ func (t Toolchain) newLibcap() pkg.Artifact {
},
ScriptEarly: `
ln -s ../system/bin/bash /bin/
-cd /usr/src/libcap
`,
+ }, &MakeHelper{
+ SkipConfigure: true,
+ InPlace: true,
+
Make: []string{
"CC=cc",
"all",
},
- Check: []string{"test"},
+ Check: []string{
+ "CC=cc",
+ "test",
+ },
},
- t.Load(Bash),
- t.Load(Diffutils),
+ Bash,
+ Diffutils,
)
}
func init() { artifactsF[Libcap] = Toolchain.newLibcap }
diff --git a/internal/rosa/libexpat.go b/internal/rosa/libexpat.go
index 3e094f7b..3cda1226 100644
--- a/internal/rosa/libexpat.go
+++ b/internal/rosa/libexpat.go
@@ -11,18 +11,14 @@ func (t Toolchain) newLibexpat() pkg.Artifact {
version = "2.7.3"
checksum = "GmkoD23nRi9cMT0cgG1XRMrZWD82UcOMzkkvP1gkwSFWCBgeSXMuoLpa8-v8kxW-"
)
- return t.NewViaMake("libexpat", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("libexpat", version, pkg.NewHTTPGetTar(
nil, "https://github.com/libexpat/libexpat/releases/download/"+
"R_"+strings.ReplaceAll(version, ".", "_")+"/"+
"expat-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), &MakeAttr{
- Configure: [][2]string{
- {"enable-static"},
- },
- },
- t.Load(Bash),
+ ), nil, (*MakeHelper)(nil),
+ Bash,
)
}
func init() { artifactsF[Libexpat] = Toolchain.newLibexpat }
diff --git a/internal/rosa/libffi.go b/internal/rosa/libffi.go
index 01dcf834..ef4edb5e 100644
--- a/internal/rosa/libffi.go
+++ b/internal/rosa/libffi.go
@@ -7,17 +7,13 @@ func (t Toolchain) newLibffi() pkg.Artifact {
version = "3.4.5"
checksum = "apIJzypF4rDudeRoI_n3K7N-zCeBLTbQlHRn9NSAZqdLAWA80mR0gXPTpHsL7oMl"
)
- return t.NewViaMake("libffi", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("libffi", version, pkg.NewHTTPGetTar(
nil, "https://github.com/libffi/libffi/releases/download/"+
"v"+version+"/libffi-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
- Configure: [][2]string{
- {"enable-static"},
- },
- },
- t.Load(KernelHeaders),
+ ), nil, (*MakeHelper)(nil),
+ KernelHeaders,
)
}
func init() { artifactsF[Libffi] = Toolchain.newLibffi }
diff --git a/internal/rosa/libgd.go b/internal/rosa/libgd.go
index fe88cbef..428a9e1b 100644
--- a/internal/rosa/libgd.go
+++ b/internal/rosa/libgd.go
@@ -7,21 +7,20 @@ func (t Toolchain) newLibgd() pkg.Artifact {
version = "2.3.3"
checksum = "8T-sh1_FJT9K9aajgxzh8ot6vWIF-xxjcKAHvTak9MgGUcsFfzP8cAvvv44u2r36"
)
- return t.NewViaMake("libgd", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("libgd", version, pkg.NewHTTPGetTar(
nil, "https://github.com/libgd/libgd/releases/download/"+
"gd-"+version+"/libgd-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
- OmitDefaults: true,
+ ), &PackageAttr{
Env: []string{
"TMPDIR=/dev/shm/gd",
},
ScriptEarly: `
mkdir /dev/shm/gd
`,
- },
- t.Load(Zlib),
+ }, (*MakeHelper)(nil),
+ Zlib,
)
}
func init() { artifactsF[Libgd] = Toolchain.newLibgd }
diff --git a/internal/rosa/libpsl.go b/internal/rosa/libpsl.go
index 6b0bbf49..27b382f5 100644
--- a/internal/rosa/libpsl.go
+++ b/internal/rosa/libpsl.go
@@ -7,22 +7,20 @@ func (t Toolchain) newLibpsl() pkg.Artifact {
version = "0.21.5"
checksum = "XjfxSzh7peG2Vg4vJlL8z4JZJLcXqbuP6pLWkrGCmRxlnYUFTKNBqWGHCxEOlCad"
)
- return t.NewViaMake("libpsl", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("libpsl", version, pkg.NewHTTPGetTar(
nil, "https://github.com/rockdaboot/libpsl/releases/download/"+
version+"/libpsl-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
Writable: true,
ScriptEarly: `
-cd /usr/src/libpsl
-
test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable 'int main(){return 0;}' tests/test-is-public-builtin.c
`,
- },
- t.Load(Python),
+ }, (*MakeHelper)(nil),
+ Python,
)
}
func init() { artifactsF[Libpsl] = Toolchain.newLibpsl }
diff --git a/internal/rosa/libseccomp.go b/internal/rosa/libseccomp.go
index 1c2794b0..7d1a796c 100644
--- a/internal/rosa/libseccomp.go
+++ b/internal/rosa/libseccomp.go
@@ -9,22 +9,21 @@ func (t Toolchain) newLibseccomp() pkg.Artifact {
version = "2.6.0"
checksum = "mMu-iR71guPjFbb31u-YexBaanKE_nYPjPux-vuBiPfS_0kbwJdfCGlkofaUm-EY"
)
- return t.NewViaMake("libseccomp", version, pkg.NewHTTPGetTar(
- nil,
- "https://github.com/seccomp/libseccomp/releases/download/"+
+ return t.NewPackage("libseccomp", version, pkg.NewHTTPGetTar(
+ nil, "https://github.com/seccomp/libseccomp/releases/download/"+
"v"+version+"/libseccomp-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
ScriptEarly: `
ln -s ../system/bin/bash /bin/
`,
- },
- t.Load(Bash),
- t.Load(Diffutils),
- t.Load(Gperf),
+ }, (*MakeHelper)(nil),
+ Bash,
+ Diffutils,
+ Gperf,
- t.Load(KernelHeaders),
+ KernelHeaders,
)
}
func init() { artifactsF[Libseccomp] = Toolchain.newLibseccomp }
diff --git a/internal/rosa/libucontext.go b/internal/rosa/libucontext.go
index 838c2e41..cf2333e2 100644
--- a/internal/rosa/libucontext.go
+++ b/internal/rosa/libucontext.go
@@ -7,24 +7,24 @@ func (t Toolchain) newLibucontext() pkg.Artifact {
version = "1.5"
checksum = "Ggk7FMmDNBdCx1Z9PcNWWW6LSpjGYssn2vU0GK5BLXJYw7ZxZbA2m_eSgT9TFnIG"
)
- return t.NewViaMake("libucontext", version, t.NewPatchedSource(
- "libucontext", version, pkg.NewHTTPGetTar(
- nil, "https://github.com/kaniini/libucontext/archive/refs/tags/"+
- "libucontext-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
- ), false,
- ), &MakeAttr{
- Writable: true,
+ return t.NewPackage("libucontext", version, pkg.NewHTTPGetTar(
+ nil, "https://github.com/kaniini/libucontext/archive/refs/tags/"+
+ "libucontext-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), &PackageAttr{
+ // uses source tree as scratch space
+ Writable: true,
+ Chmod: true,
+ EnterSource: true,
+ }, &MakeHelper{
OmitDefaults: true,
SkipConfigure: true,
InPlace: true,
-
- ScriptEarly: "cd /usr/src/libucontext",
Make: []string{
"ARCH=" + linuxArch(),
},
- ScriptInstall: "make prefix=/system DESTDIR=/work install",
+ Install: "make prefix=/system DESTDIR=/work install",
})
}
func init() { artifactsF[Libucontext] = Toolchain.newLibucontext }
diff --git a/internal/rosa/libxml2.go b/internal/rosa/libxml2.go
index 058977e5..8f0a140b 100644
--- a/internal/rosa/libxml2.go
+++ b/internal/rosa/libxml2.go
@@ -11,21 +11,16 @@ func (t Toolchain) newLibxml2() pkg.Artifact {
version = "2.15.1"
checksum = "pYzAR3cNrEHezhEMirgiq7jbboLzwMj5GD7SQp0jhSIMdgoU4G9oU9Gxun3zzUIU"
)
- return t.NewViaMake("libxml2", version, pkg.NewHTTPGet(
+ return t.NewPackage("libxml2", version, pkg.NewHTTPGet(
nil, "https://download.gnome.org/sources/libxml2/"+
strings.Join(strings.Split(version, ".")[:2], ".")+
"/libxml2-"+version+".tar.xz",
mustDecode(checksum),
- ), &MakeAttr{
- ScriptEarly: `
-cd /usr/src/
-tar xf libxml2.tar.xz
-mv libxml2-` + version + ` libxml2
-`,
- SourceSuffix: ".tar.xz",
- },
- t.Load(Diffutils),
- t.Load(XZ),
+ ), &PackageAttr{
+ SourceKind: sourceTarXZ,
+ }, (*MakeHelper)(nil),
+ Diffutils,
+ XZ,
)
}
func init() { artifactsF[Libxml2] = Toolchain.newLibxml2 }
diff --git a/internal/rosa/libxslt.go b/internal/rosa/libxslt.go
index db1fc41c..0162e439 100644
--- a/internal/rosa/libxslt.go
+++ b/internal/rosa/libxslt.go
@@ -11,27 +11,22 @@ func (t Toolchain) newLibxslt() pkg.Artifact {
version = "1.1.45"
checksum = "vw72UbREQnA3YDYuZ9-93hDr9BYCaKV6oh_U4Kt4n1Js_na4E-nFj-ksZnZ0kvEK"
)
- return t.NewViaMake("libxslt", version, pkg.NewHTTPGet(
+ return t.NewPackage("libxslt", version, pkg.NewHTTPGet(
nil, "https://download.gnome.org/sources/libxslt/"+
strings.Join(strings.Split(version, ".")[:2], ".")+
"/libxslt-"+version+".tar.xz",
mustDecode(checksum),
- ), &MakeAttr{
- ScriptEarly: `
-cd /usr/src/
-tar xf libxslt.tar.xz
-mv libxslt-` + version + ` libxslt
-`,
- SourceSuffix: ".tar.xz",
-
+ ), &PackageAttr{
+ SourceKind: sourceTarXZ,
+ }, &MakeHelper{
// python libxml2 cyclic dependency
SkipCheck: true,
},
- t.Load(XZ),
- t.Load(Python),
- t.Load(PkgConfig),
+ XZ,
+ Python,
+ PkgConfig,
- t.Load(Libxml2),
+ Libxml2,
)
}
func init() { artifactsF[Libxslt] = Toolchain.newLibxslt }
diff --git a/internal/rosa/make.go b/internal/rosa/make.go
index fb74039c..891f6077 100644
--- a/internal/rosa/make.go
+++ b/internal/rosa/make.go
@@ -28,29 +28,21 @@ cd "$(mktemp -d)"
}
func init() { artifactsF[Make] = Toolchain.newMake }
-// MakeAttr holds the project-specific attributes that will be applied to a new
-// [pkg.Artifact] compiled via [Make].
-type MakeAttr struct {
- // Mount the source tree writable.
- Writable bool
-
+// MakeHelper is the [Make] build system helper.
+type MakeHelper struct {
// Do not include default extras.
OmitDefaults bool
- // Dependencies not provided by stage0.
- NonStage0 []pkg.Artifact
- // Additional environment variables.
- Env []string
- // Runs before configure.
- ScriptEarly string
- // Runs after configure.
- ScriptConfigured string
+ // Command to generate the build system.
+ Generate string
+ // Runs before make.
+ ScriptMakeEarly string
// Runs before check.
ScriptCheckEarly string
// Runs after install.
Script string
- // Remain in working directory set up during ScriptEarly.
+ // Remain in current directory.
InPlace bool
// Whether to skip running the configure script.
@@ -59,40 +51,76 @@ type MakeAttr struct {
ConfigureName string
// Flags passed to the configure script.
Configure [][2]string
- // Extra make targets.
- Make []string
// Host target triple, zero value is equivalent to the Rosa OS triple.
Host string
// Target triple, zero value is equivalent to the Rosa OS triple.
Build string
+
+ // Extra make targets.
+ Make []string
// Whether to skip the check target.
SkipCheck bool
// Name of the check target, zero value is equivalent to "check".
Check []string
// Replaces the default install command.
- ScriptInstall string
+ Install string
+}
+
+var _ Helper = new(MakeHelper)
+
+// name returns its arguments joined with '-'.
+func (*MakeHelper) name(name, version string) string {
+ return name + "-" + version
+}
+
+// extra returns make and other optional dependencies.
+func (attr *MakeHelper) extra(flag int) []PArtifact {
+ extra := []PArtifact{Make}
+ if (attr == nil || !attr.OmitDefaults) && flag&TEarly == 0 {
+ extra = append(extra,
+ Gawk,
+ Coreutils,
+ )
+ }
+ return extra
+}
+
+// wantsChmod returns whether the build system needs to be generated.
+func (attr *MakeHelper) wantsChmod() bool {
+ return attr != nil && attr.Generate != ""
+}
- // Suffix appended to the source pathname.
- SourceSuffix string
+// wantsWrite is equivalent to wantsChmod.
+func (attr *MakeHelper) wantsWrite() bool { return attr.wantsChmod() }
- // Passed through to [Toolchain.New], before source.
- Paths []pkg.ExecPath
- // Passed through to [Toolchain.New].
- Flag int
+// scriptEarly returns the optional build system generation segment.
+func (attr *MakeHelper) scriptEarly() string {
+ if attr == nil {
+ return ""
+ }
+
+ generate := attr.Generate
+ if len(generate) > 0 && generate[len(generate)-1] != '\n' {
+ generate += "\n"
+ }
+ return generate
}
-// NewViaMake returns a [pkg.Artifact] for compiling and installing via [Make].
-func (t Toolchain) NewViaMake(
- name, version string,
- source pkg.Artifact,
- attr *MakeAttr,
- extra ...pkg.Artifact,
-) pkg.Artifact {
- if name == "" || version == "" {
- panic("names must be non-empty")
+// createDir returns false.
+func (*MakeHelper) createDir() bool { return false }
+
+// wantsDir requests a new directory in TMPDIR, or omits the cd statement if InPlace.
+func (attr *MakeHelper) wantsDir() string {
+ if attr != nil && attr.InPlace {
+ return helperInPlace
}
+ return `"$(mktemp -d)"`
+}
+
+// script generates the cure script.
+func (attr *MakeHelper) script(name string) string {
if attr == nil {
- attr = new(MakeAttr)
+ attr = new(MakeHelper)
}
var configure string
@@ -159,8 +187,7 @@ make \
scriptMake += "\n"
if !attr.SkipCheck {
- scriptMake += attr.ScriptCheckEarly + `
-make \
+ scriptMake += attr.ScriptCheckEarly + `make \
"-j$(nproc)" \
`
if len(attr.Check) > 0 {
@@ -171,52 +198,15 @@ make \
scriptMake += "\n"
}
- var finalExtra []pkg.Artifact
- if !t.isStage0() {
- finalExtra = append(finalExtra, t.Load(Make))
- }
- if !attr.OmitDefaults && attr.Flag&TEarly == 0 {
- finalExtra = append(finalExtra,
- t.Load(Gawk),
- t.Load(Coreutils),
- )
- }
- finalExtra = append(finalExtra, extra...)
-
- scriptEarly := attr.ScriptEarly
- if !attr.InPlace {
- scriptEarly += `
-cd "$(mktemp -d)"
-`
- } else if scriptEarly == "" {
- panic("cannot remain in root")
- }
-
- scriptInstall := attr.ScriptInstall
+ scriptInstall := attr.Install
if scriptInstall == "" {
scriptInstall = "make DESTDIR=/work install"
}
scriptInstall += "\n"
- return t.New(
- name+"-"+version,
- attr.Flag,
- stage0Concat(t,
- attr.NonStage0,
- finalExtra...,
- ),
- nil,
- attr.Env,
- scriptEarly+
- configure+
- attr.ScriptConfigured+
- scriptMake+
- scriptInstall+
- attr.Script,
- slices.Concat(attr.Paths, []pkg.ExecPath{
- pkg.Path(AbsUsrSrc.Append(
- name+attr.SourceSuffix,
- ), attr.Writable, source),
- })...,
- )
+ return configure +
+ attr.ScriptMakeEarly +
+ scriptMake +
+ scriptInstall +
+ attr.Script
}
diff --git a/internal/rosa/musl-fts.go b/internal/rosa/musl-fts.go
index ab565fe6..26faf79b 100644
--- a/internal/rosa/musl-fts.go
+++ b/internal/rosa/musl-fts.go
@@ -7,27 +7,24 @@ func (t Toolchain) newMuslFts() pkg.Artifact {
version = "1.2.7"
checksum = "N_p_ZApX3eHt7xoDCw1hLf6XdJOw7ZSx7xPvpvAP0knG2zgU0zeN5w8tt5Pg60XJ"
)
- return t.NewViaMake("musl-fts", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("musl-fts", version, pkg.NewHTTPGetTar(
nil, "https://github.com/void-linux/musl-fts/archive/refs/tags/"+
"v"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
- Writable: true,
+ ), &PackageAttr{
Env: []string{
"CC=cc -fPIC",
},
- ScriptEarly: `
-cd /usr/src/musl-fts
-./bootstrap.sh
-`,
+ }, &MakeHelper{
+ Generate: "./bootstrap.sh",
},
- t.Load(M4),
- t.Load(Perl),
- t.Load(Autoconf),
- t.Load(Automake),
- t.Load(Libtool),
- t.Load(PkgConfig),
+ M4,
+ Perl,
+ Autoconf,
+ Automake,
+ Libtool,
+ PkgConfig,
)
}
func init() { artifactsF[MuslFts] = Toolchain.newMuslFts }
diff --git a/internal/rosa/musl-obstack.go b/internal/rosa/musl-obstack.go
index 2b45ed87..1f100db2 100644
--- a/internal/rosa/musl-obstack.go
+++ b/internal/rosa/musl-obstack.go
@@ -7,27 +7,24 @@ func (t Toolchain) newMuslObstack() pkg.Artifact {
version = "1.2.3"
checksum = "tVRY_KjIlkkMszcaRlkKdBVQHIXTT_T_TiMxbwErlILXrOBosocg8KklppZhNdCG"
)
- return t.NewViaMake("musl-obstack", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("musl-obstack", version, pkg.NewHTTPGetTar(
nil, "https://github.com/void-linux/musl-obstack/archive/refs/tags/"+
"v"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
- Writable: true,
+ ), &PackageAttr{
Env: []string{
"CC=cc -fPIC",
},
- ScriptEarly: `
-cd /usr/src/musl-obstack
-./bootstrap.sh
-`,
+ }, &MakeHelper{
+ Generate: "./bootstrap.sh",
},
- t.Load(M4),
- t.Load(Perl),
- t.Load(Autoconf),
- t.Load(Automake),
- t.Load(Libtool),
- t.Load(PkgConfig),
+ M4,
+ Perl,
+ Autoconf,
+ Automake,
+ Libtool,
+ PkgConfig,
)
}
func init() { artifactsF[MuslObstack] = Toolchain.newMuslObstack }
diff --git a/internal/rosa/musl.go b/internal/rosa/musl.go
index 74603bf0..076fffcc 100644
--- a/internal/rosa/musl.go
+++ b/internal/rosa/musl.go
@@ -13,11 +13,9 @@ func (t Toolchain) newMusl(
)
name := "musl"
- attr := MakeAttr{
+ helper := MakeHelper{
OmitDefaults: true,
SkipCheck: true,
-
- Env: env,
Script: `
mkdir -p /work/system/bin
COMPAT_LINKER_NAME="ld-musl-` + linuxArch() + `.so.1"
@@ -31,20 +29,28 @@ rmdir -v /work/lib
if headers {
name += "-headers"
- attr.ScriptInstall = "make DESTDIR=/work install-headers"
- attr.Script = ""
+ helper.Make = []string{
+ "DESTDIR=/work",
+ "install-headers",
+ }
+ helper.Install = "# headers installed during make"
+ helper.Script = ""
}
- return t.NewViaMake(name, version, t.NewPatchedSource(
+ return t.NewPackage(name, version, pkg.NewHTTPGetTar(
+ nil, "https://musl.libc.org/releases/musl-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), &PackageAttr{
+ NonStage0: extra,
+
// expected to be writable in copies
- "musl", version, pkg.NewHTTPGetTar(
- nil, "https://musl.libc.org/releases/musl-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
- ), false,
- ), &attr, stage0Concat(t, extra,
- t.Load(Coreutils),
- )...)
+ Chmod: true,
+
+ Env: env,
+ }, &helper,
+ Coreutils,
+ )
}
func init() {
artifactsF[Musl] = func(t Toolchain) pkg.Artifact {
diff --git a/internal/rosa/ncurses.go b/internal/rosa/ncurses.go
index 9af85fc4..3a9e0162 100644
--- a/internal/rosa/ncurses.go
+++ b/internal/rosa/ncurses.go
@@ -7,11 +7,11 @@ func (t Toolchain) newNcurses() pkg.Artifact {
version = "6.6"
checksum = "XvWp4xi6hR_hH8XUoGY26L_pqBSDapJYulhzZqPuR0KNklqypqNc1yNXU-nOjf5w"
)
- return t.NewViaMake("ncurses", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("ncurses", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/ncurses/ncurses-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), nil, &MakeHelper{
// "tests" are actual demo programs, not a test suite.
SkipCheck: true,
@@ -20,7 +20,7 @@ func (t Toolchain) newNcurses() pkg.Artifact {
{"enable-pc-files"},
},
},
- t.Load(PkgConfig),
+ PkgConfig,
)
}
func init() { artifactsF[Ncurses] = Toolchain.newNcurses }
diff --git a/internal/rosa/openssl.go b/internal/rosa/openssl.go
index 63617141..600355ef 100644
--- a/internal/rosa/openssl.go
+++ b/internal/rosa/openssl.go
@@ -7,17 +7,18 @@ func (t Toolchain) newOpenSSL() pkg.Artifact {
version = "3.5.5"
checksum = "I2Hp1LxcTR8j4G6LFEQMVy6EJH-Na1byI9Ti-ThBot6EMLNRnjGXGq-WXrim3Fkz"
)
- return t.NewViaMake("openssl", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("openssl", version, pkg.NewHTTPGetTar(
nil, "https://github.com/openssl/openssl/releases/download/"+
"openssl-"+version+"/openssl-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
- OmitDefaults: true,
-
+ ), &PackageAttr{
Env: []string{
"CC=cc",
},
+ }, &MakeHelper{
+ OmitDefaults: true,
+
ConfigureName: "/usr/src/openssl/Configure",
Configure: [][2]string{
{"prefix", "/system"},
@@ -29,11 +30,11 @@ func (t Toolchain) newOpenSSL() pkg.Artifact {
"test",
},
},
- t.Load(Perl),
- t.Load(Coreutils),
+ Perl,
+ Coreutils,
- t.Load(Zlib),
- t.Load(KernelHeaders),
+ Zlib,
+ KernelHeaders,
)
}
func init() { artifactsF[OpenSSL] = Toolchain.newOpenSSL }
diff --git a/internal/rosa/pcre2.go b/internal/rosa/pcre2.go
index c7868b19..415384e1 100644
--- a/internal/rosa/pcre2.go
+++ b/internal/rosa/pcre2.go
@@ -9,17 +9,17 @@ func (t Toolchain) newPCRE2() pkg.Artifact {
version = "10.43"
checksum = "iyNw-POPSJwiZVJfUK5qACA6q2uMzP-84WieimN_CskaEkuw5fRnRTZhEv6ry2Yo"
)
- return t.NewViaMake("pcre2", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("pcre2", version, pkg.NewHTTPGetTar(
nil, "https://github.com/PCRE2Project/pcre2/releases/download/"+
"pcre2-"+version+"/pcre2-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), &MakeAttr{
+ ), &PackageAttr{
ScriptEarly: `
# RunGrepTest expects /bin/echo
ln -s ../system/bin/toybox /bin/echo
`,
-
+ }, &MakeHelper{
Configure: [][2]string{
{"enable-jit"},
{"enable-pcre2-8"},
@@ -27,7 +27,7 @@ ln -s ../system/bin/toybox /bin/echo
{"enable-pcre2-32"},
},
},
- t.Load(Diffutils),
+ Diffutils,
)
}
func init() { artifactsF[PCRE2] = Toolchain.newPCRE2 }
diff --git a/internal/rosa/perl.go b/internal/rosa/perl.go
index 2598cdc1..64e8c549 100644
--- a/internal/rosa/perl.go
+++ b/internal/rosa/perl.go
@@ -11,23 +11,25 @@ func (t Toolchain) newPerl() pkg.Artifact {
version = "5.42.0"
checksum = "2KR7Jbpk-ZVn1a30LQRwbgUvg2AXlPQZfzrqCr31qD5-yEsTwVQ_W76eZH-EdxM9"
)
- return t.NewViaMake("perl", version, t.NewPatchedSource(
- "perl", version, pkg.NewHTTPGetTar(
- nil, "https://www.cpan.org/src/5.0/perl-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
- ), false,
- ), &MakeAttr{
- Writable: true,
- OmitDefaults: true,
- InPlace: true,
+ return t.NewPackage("perl", version, pkg.NewHTTPGetTar(
+ nil, "https://www.cpan.org/src/5.0/perl-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), &PackageAttr{
+ // uses source tree as scratch space
+ Writable: true,
+ Chmod: true,
ScriptEarly: `
-cd /usr/src/perl
-
echo 'print STDOUT "1..0 # Skip broken test\n";' > ext/Pod-Html/t/htmldir3.t
rm -f /system/bin/ps # perl does not like toybox ps
`,
+
+ Flag: TEarly,
+ }, &MakeHelper{
+ OmitDefaults: true,
+ InPlace: true,
+
ConfigureName: "./Configure",
Configure: [][2]string{
{"-des"},
@@ -42,9 +44,7 @@ rm -f /system/bin/ps # perl does not like toybox ps
"TEST_JOBS=256",
"test_harness",
},
- ScriptInstall: "./perl -Ilib -I. installperl --destdir=/work",
-
- Flag: TEarly,
+ Install: "./perl -Ilib -I. installperl --destdir=/work",
})
}
func init() { artifactsF[Perl] = Toolchain.newPerl }
@@ -91,25 +91,26 @@ func (t Toolchain) newViaPerlMakeMaker(
name, version string,
source pkg.Artifact,
patches [][2]string,
- extra ...pkg.Artifact,
+ extra ...PArtifact,
) pkg.Artifact {
- return t.NewViaMake("perl-"+name, version, t.NewPatchedSource(
- "perl-"+name, version, source, false, patches...,
- ), &MakeAttr{
- Writable: true,
+ return t.NewPackage("perl-"+name, version, source, &PackageAttr{
+ // uses source tree as scratch space
+ Writable: true,
+ Chmod: true,
+ EnterSource: true,
+
+ Patches: patches,
+ }, &MakeHelper{
OmitDefaults: true,
InPlace: true,
- ScriptEarly: `
-cd /usr/src/perl-` + name + `
-`,
ConfigureName: "perl Makefile.PL",
Configure: [][2]string{
{"PREFIX", "/system"},
},
Check: []string{"test"},
- }, slices.Concat(extra, []pkg.Artifact{
- t.Load(Perl),
+ }, slices.Concat(extra, []PArtifact{
+ Perl,
})...)
}
@@ -194,7 +195,7 @@ func (t Toolchain) newPerlTextWrapI18N() pkg.Artifact {
mustDecode(checksum),
pkg.TarGzip,
), nil,
- t.Load(PerlTextCharWidth),
+ PerlTextCharWidth,
)
}
func init() { artifactsF[PerlTextWrapI18N] = Toolchain.newPerlTextWrapI18N }
@@ -224,7 +225,7 @@ func (t Toolchain) newPerlUnicodeGCString() pkg.Artifact {
mustDecode(checksum),
pkg.TarGzip,
), nil,
- t.Load(PerlMIMECharset),
+ PerlMIMECharset,
)
}
func init() { artifactsF[PerlUnicodeGCString] = Toolchain.newPerlUnicodeGCString }
diff --git a/internal/rosa/pkg-config.go b/internal/rosa/pkg-config.go
index c5c0814a..32eb1363 100644
--- a/internal/rosa/pkg-config.go
+++ b/internal/rosa/pkg-config.go
@@ -7,13 +7,12 @@ func (t Toolchain) newPkgConfig() pkg.Artifact {
version = "0.29.2"
checksum = "gi7yAvkwo20Inys1tHbeYZ3Wjdm5VPkrnO0Q6_QZPCAwa1zrA8F4a63cdZDd-717"
)
- return t.NewViaMake("pkg-config", version, pkg.NewHTTPGetTar(
- nil,
- "https://pkgconfig.freedesktop.org/releases/"+
+ return t.NewPackage("pkg-config", version, pkg.NewHTTPGetTar(
+ nil, "https://pkgconfig.freedesktop.org/releases/"+
"pkg-config-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), nil, &MakeHelper{
Configure: [][2]string{
{"CFLAGS", "'-Wno-int-conversion'"},
{"with-internal-glib"},
diff --git a/internal/rosa/procps.go b/internal/rosa/procps.go
index 53f5ccde..51c39501 100644
--- a/internal/rosa/procps.go
+++ b/internal/rosa/procps.go
@@ -7,31 +7,26 @@ func (t Toolchain) newProcps() pkg.Artifact {
version = "4.0.6"
checksum = "pl_fZLvDlv6iZTkm8l_tHFpzTDVFGCiSJEs3eu0zAX6u36AV36P_En8K7JPScRWM"
)
- return t.NewViaMake("procps", version, t.NewPatchedSource(
- "procps", version, pkg.NewHTTPGetTar(
- nil, "https://gitlab.com/procps-ng/procps/-/archive/"+
- "v"+version+"/procps-v"+version+".tar.bz2",
- mustDecode(checksum),
- pkg.TarBzip2,
- ), false,
- ), &MakeAttr{
- Writable: true,
- ScriptEarly: `
-cd /usr/src/procps
-./autogen.sh
-`,
+ return t.NewPackage("procps", version, pkg.NewHTTPGetTar(
+ nil, "https://gitlab.com/procps-ng/procps/-/archive/"+
+ "v"+version+"/procps-v"+version+".tar.bz2",
+ mustDecode(checksum),
+ pkg.TarBzip2,
+ ), nil, &MakeHelper{
+ Generate: "./autogen.sh",
Configure: [][2]string{
{"without-ncurses"},
},
},
- t.Load(M4),
- t.Load(Perl),
- t.Load(Autoconf),
- t.Load(Automake),
- t.Load(Gettext),
- t.Load(Libtool),
- t.Load(Gzip),
- t.Load(PkgConfig),
+ M4,
+ Perl,
+ Autoconf,
+ Automake,
+ Gettext,
+ Libtool,
+
+ Gzip,
+ PkgConfig,
)
}
func init() { artifactsF[Procps] = Toolchain.newProcps }
diff --git a/internal/rosa/python.go b/internal/rosa/python.go
index 2c98424b..1c9a2fe7 100644
--- a/internal/rosa/python.go
+++ b/internal/rosa/python.go
@@ -12,14 +12,15 @@ func (t Toolchain) newPython() pkg.Artifact {
version = "3.14.2"
checksum = "7nZunVMGj0viB-CnxpcRego2C90X5wFsMTgsoewd5z-KSZY2zLuqaBwG-14zmKys"
)
- return t.NewViaMake("python", version, t.NewPatchedSource("python", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("python", version, pkg.NewHTTPGetTar(
nil, "https://www.python.org/ftp/python/"+version+
"/Python-"+version+".tgz",
mustDecode(checksum),
pkg.TarGzip,
- ), false), &MakeAttr{
+ ), &PackageAttr{
// test_synopsis_sourceless assumes this is writable and checks __pycache__
Writable: true,
+ Chmod: true,
Env: []string{
"EXTRATESTOPTS=-j0 -x " + strings.Join([]string{
@@ -48,15 +49,16 @@ func (t Toolchain) newPython() pkg.Artifact {
"LDFLAGS=-Wl,--dynamic-linker=/system/lib/" +
"ld-musl-" + linuxArch() + ".so.1",
},
+ }, &MakeHelper{
Check: []string{"test"},
},
- t.Load(Zlib),
- t.Load(Libffi),
+ Zlib,
+ Libffi,
- t.Load(PkgConfig),
- t.Load(OpenSSL),
- t.Load(Bzip2),
- t.Load(XZ),
+ PkgConfig,
+ OpenSSL,
+ Bzip2,
+ XZ,
)
}
func init() { artifactsF[Python] = Toolchain.newPython }
diff --git a/internal/rosa/qemu.go b/internal/rosa/qemu.go
index 34241e0b..385c13df 100644
--- a/internal/rosa/qemu.go
+++ b/internal/rosa/qemu.go
@@ -7,12 +7,13 @@ func (t Toolchain) newQEMU() pkg.Artifact {
version = "10.2.1"
checksum = "rjLTSgHJd3X3Vgpxrsus_ZZiaYLiNix1YhcHaGbLd_odYixwZjCcAIt8CVQPJGdZ"
)
- return t.NewViaMake("qemu", version, t.NewPatchedSource(
- "qemu", version, pkg.NewHTTPGetTar(
- nil, "https://download.qemu.org/qemu-"+version+".tar.bz2",
- mustDecode(checksum),
- pkg.TarBzip2,
- ), false, [2]string{"disable-mcast-test", `diff --git a/tests/qtest/netdev-socket.c b/tests/qtest/netdev-socket.c
+ return t.NewPackage("qemu", version, pkg.NewHTTPGetTar(
+ nil, "https://download.qemu.org/qemu-"+version+".tar.bz2",
+ mustDecode(checksum),
+ pkg.TarBzip2,
+ ), &PackageAttr{
+ Patches: [][2]string{
+ {"disable-mcast-test", `diff --git a/tests/qtest/netdev-socket.c b/tests/qtest/netdev-socket.c
index b731af0ad9..b5cbed4801 100644
--- a/tests/qtest/netdev-socket.c
+++ b/tests/qtest/netdev-socket.c
@@ -35,26 +36,28 @@ index b731af0ad9..b5cbed4801 100644
#endif
}
`},
- ), &MakeAttr{
+ },
+
// configure script uses source as scratch space
Writable: true,
+ Chmod: true,
ScriptEarly: `
# tests expect /var/tmp/ to be available
mkdir -p /var/tmp/
# https://gitlab.com/qemu-project/qemu/-/issues/3145
-(cd /usr/src/qemu && sed -i \
+sed -i \
's,Input/output error,I/O error,g' \
tests/qemu-iotests/[0-9][0-9][0-9]* \
tests/qemu-iotests/tests/copy-before-write \
- tests/qemu-iotests/tests/file-io-error.out &&
+ tests/qemu-iotests/tests/file-io-error.out
cat << EOF > tests/qemu-iotests/150
#!/bin/sh
_notrun 'appears to spuriously fail on zfs'
EOF
-)
`,
+ }, &MakeHelper{
Configure: [][2]string{
{"disable-download"},
{"disable-docs"},
@@ -68,28 +71,28 @@ EOF
"ppc64-softmmu"},
},
},
- t.Load(Bash),
- t.Load(Python),
- t.Load(Ninja),
- t.Load(Bzip2),
- t.Load(PkgConfig),
- t.Load(Diffutils),
+ Bash,
+ Python,
+ Ninja,
+ Bzip2,
+ PkgConfig,
+ Diffutils,
- t.Load(OpenSSL),
- t.Load(Bzip2),
- t.Load(XZ),
+ OpenSSL,
+ Bzip2,
+ XZ,
- t.Load(Flex),
- t.Load(Bison),
- t.Load(M4),
+ Flex,
+ Bison,
+ M4,
- t.Load(PCRE2),
- t.Load(Libffi),
- t.Load(Zlib),
- t.Load(GLib),
- t.Load(Zstd),
- t.Load(DTC),
- t.Load(KernelHeaders),
+ PCRE2,
+ Libffi,
+ Zlib,
+ GLib,
+ Zstd,
+ DTC,
+ KernelHeaders,
)
}
func init() { artifactsF[QEMU] = Toolchain.newQEMU }
diff --git a/internal/rosa/rsync.go b/internal/rosa/rsync.go
index f854b7b0..ccf41862 100644
--- a/internal/rosa/rsync.go
+++ b/internal/rosa/rsync.go
@@ -7,12 +7,14 @@ func (t Toolchain) newRsync() pkg.Artifact {
version = "3.4.1"
checksum = "VBlTsBWd9z3r2-ex7GkWeWxkUc5OrlgDzikAC0pK7ufTjAJ0MbmC_N04oSVTGPiv"
)
- return t.NewViaMake("rsync", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("rsync", version, pkg.NewHTTPGetTar(
nil, "https://download.samba.org/pub/rsync/src/"+
"rsync-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
+ Flag: TEarly,
+ }, &MakeHelper{
Configure: [][2]string{
{"disable-openssl"},
{"disable-xxhash"},
@@ -22,10 +24,6 @@ func (t Toolchain) newRsync() pkg.Artifact {
// circular dependency
SkipCheck: true,
-
- Flag: TEarly,
- },
- t.Load(Gawk),
- )
+ })
}
func init() { artifactsF[Rsync] = Toolchain.newRsync }
diff --git a/internal/rosa/squashfs.go b/internal/rosa/squashfs.go
index f0ba0cb1..8d0c0203 100644
--- a/internal/rosa/squashfs.go
+++ b/internal/rosa/squashfs.go
@@ -7,17 +7,16 @@ func (t Toolchain) newSquashfsTools() pkg.Artifact {
version = "4.7.4"
checksum = "pG0E_wkRJFS6bvPYF-hTKZT-cWnvo5BbIzCDZrJZVQDgJOx2Vc3ZfNSEV7Di7cSW"
)
- return t.NewViaMake("squashfs-tools", version, t.NewPatchedSource(
- "squashfs-tools", version, pkg.NewHTTPGetTar(
- nil, "https://github.com/plougher/squashfs-tools/releases/"+
- "download/"+version+"/squashfs-tools-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
- ), false,
- ), &MakeAttr{
- Writable: true,
- SkipConfigure: true,
- InPlace: true,
+ return t.NewPackage("squashfs-tools", version, pkg.NewHTTPGetTar(
+ nil, "https://github.com/plougher/squashfs-tools/releases/"+
+ "download/"+version+"/squashfs-tools-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), &PackageAttr{
+ // uses source tree as scratch space
+ Writable: true,
+ Chmod: true,
+ EnterSource: true,
Env: []string{
"CONFIG=1",
@@ -27,15 +26,19 @@ func (t Toolchain) newSquashfsTools() pkg.Artifact {
"COMP_DEFAULT=zstd",
"USE_PREBUILT_MANPAGES=y",
},
- ScriptEarly: "cd /usr/src/squashfs-tools/squashfs-tools",
- SkipCheck: true,
- ScriptInstall: "make INSTALL_PREFIX=/work/system install",
+ }, &MakeHelper{
+
+ SkipConfigure: true,
+ InPlace: true,
+
+ SkipCheck: true,
+ Install: "make INSTALL_PREFIX=/work/system install",
},
- t.Load(Sed),
+ Sed,
- t.Load(Zstd),
- t.Load(Gzip),
- t.Load(Zlib),
+ Zstd,
+ Gzip,
+ Zlib,
)
}
func init() { artifactsF[SquashfsTools] = Toolchain.newSquashfsTools }
diff --git a/internal/rosa/ssl.go b/internal/rosa/ssl.go
index 28b01971..1e57cc7f 100644
--- a/internal/rosa/ssl.go
+++ b/internal/rosa/ssl.go
@@ -12,14 +12,12 @@ func (t Toolchain) newNSS() pkg.Artifact {
version0 = "4_38_2"
checksum0 = "25x2uJeQnOHIiq_zj17b4sYqKgeoU8-IsySUptoPcdHZ52PohFZfGuIisBreWzx0"
)
- return t.NewViaMake("nss", version, t.NewPatchedSource(
- "nss", version, pkg.NewHTTPGetTar(
- nil, "https://github.com/nss-dev/nss/archive/refs/tags/"+
- "NSS_"+version+"_RTM.tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
- ), false,
- ), &MakeAttr{
+ return t.NewPackage("nss", version, pkg.NewHTTPGetTar(
+ nil, "https://github.com/nss-dev/nss/archive/refs/tags/"+
+ "NSS_"+version+"_RTM.tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), &PackageAttr{
Paths: []pkg.ExecPath{
pkg.Path(AbsUsrSrc.Append("nspr.zip"), false, pkg.NewHTTPGet(
nil, "https://hg-edge.mozilla.org/projects/nspr/archive/"+
@@ -28,16 +26,19 @@ func (t Toolchain) newNSS() pkg.Artifact {
)),
},
- Writable: true,
- OmitDefaults: true,
- SkipConfigure: true,
- InPlace: true,
+ // uses source tree as scratch space
+ Writable: true,
+ Chmod: true,
ScriptEarly: `
unzip /usr/src/nspr.zip -d /usr/src
mv '/usr/src/nspr-NSPR_` + version0 + `_RTM' /usr/src/nspr
-cd /usr/src/nss
`,
+ }, &MakeHelper{
+ OmitDefaults: true,
+ SkipConfigure: true,
+ InPlace: true,
+
SkipCheck: true,
Make: []string{
"CCC=clang++",
@@ -46,7 +47,7 @@ cd /usr/src/nss
"USE_64=1",
"nss_build_all",
},
- ScriptInstall: `
+ Install: `
mkdir -p /work/system/nss
cp -r \
/usr/src/dist/. \
@@ -54,14 +55,14 @@ cp -r \
/work/system/nss
`,
},
- t.Load(Perl),
- t.Load(Python),
- t.Load(Unzip),
- t.Load(Gawk),
- t.Load(Coreutils),
+ Perl,
+ Python,
+ Unzip,
+ Gawk,
+ Coreutils,
- t.Load(Zlib),
- t.Load(KernelHeaders),
+ Zlib,
+ KernelHeaders,
)
}
func init() { artifactsF[NSS] = Toolchain.newNSS }
diff --git a/internal/rosa/toybox.go b/internal/rosa/toybox.go
index 329ad736..813cd5d5 100644
--- a/internal/rosa/toybox.go
+++ b/internal/rosa/toybox.go
@@ -7,24 +7,27 @@ func (t Toolchain) newToybox(suffix, script string) pkg.Artifact {
version = "0.8.13"
checksum = "rZ1V1ATDte2WeQZanxLVoiRGdfPXhMlEo5-exX-e-ml8cGn9qOv0ABEUVZpX3wTI"
)
- return t.NewViaMake("toybox"+suffix, version, pkg.NewHTTPGetTar(
- nil,
- "https://landley.net/toybox/downloads/toybox-"+version+".tar.gz",
+ return t.NewPackage("toybox"+suffix, version, pkg.NewHTTPGetTar(
+ nil, "https://landley.net/toybox/downloads/toybox-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
- Writable: true,
+ ), &PackageAttr{
+ // uses source tree as scratch space
+ Writable: true,
+ EnterSource: true,
+
+ Flag: TEarly,
+ }, &MakeHelper{
OmitDefaults: true,
InPlace: true,
SkipConfigure: true,
- ScriptEarly: `
+ ScriptMakeEarly: `
LDFLAGS="${LDFLAGS:-''} -static"
chmod +w /bin/
ln -rs "$(which bash)" /bin/ || true
-cd /usr/src/toybox` + suffix + `
chmod +w kconfig tests
rm \
tests/du.test \
@@ -37,25 +40,22 @@ make defconfig
sed -i \
's/^CONFIG_TOYBOX_ZHELP=y$/CONFIG_TOYBOX_ZHELP=0/' \
.config
-`,
- ScriptConfigured: script,
- SkipCheck: t.isStage0(),
+` + script,
+ SkipCheck: t.isStage0(),
Check: []string{
"USER=cure",
"tests",
},
- ScriptInstall: "PREFIX=/work/system/bin make install_flat",
+ Install: "PREFIX=/work/system/bin make install_flat",
Script: `
mkdir -p /work/usr/bin
ln -s ../../system/bin/env /work/usr/bin
`,
-
- Flag: TEarly,
},
- t.Load(Bash),
- t.Load(Gzip),
+ Bash,
+ Gzip,
- t.Load(KernelHeaders),
+ KernelHeaders,
)
}
func init() {
diff --git a/internal/rosa/util-linux.go b/internal/rosa/util-linux.go
index 8dc0f292..d6f4aba5 100644
--- a/internal/rosa/util-linux.go
+++ b/internal/rosa/util-linux.go
@@ -11,17 +11,17 @@ func (t Toolchain) newUtilLinux() pkg.Artifact {
version = "2.41.3"
checksum = "gPTd5JJ2ho_Rd0qainuogcLiiWwKSXEZPXN3yCCRl0m0KBgMaqwFuMjYgu9z8zCH"
)
- return t.NewViaMake("util-linux", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("util-linux", version, pkg.NewHTTPGetTar(
nil, "https://www.kernel.org/pub/linux/utils/util-linux/"+
"v"+strings.Join(strings.SplitN(version, ".", 3)[:2], ".")+
"/util-linux-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
+ ), &PackageAttr{
ScriptEarly: `
ln -s ../system/bin/bash /bin/
`,
-
+ }, &MakeHelper{
Configure: [][2]string{
{"disable-use-tty-group"},
{"disable-makeinstall-setuid"},
@@ -41,9 +41,9 @@ ln -s ../system/bin/bash /bin/
// Don't execute on production system!
SkipCheck: true,
},
- t.Load(Bash),
+ Bash,
- t.Load(KernelHeaders),
+ KernelHeaders,
)
}
func init() { artifactsF[UtilLinux] = Toolchain.newUtilLinux }
diff --git a/internal/rosa/x.go b/internal/rosa/x.go
index 191bbe6f..fc4596b7 100644
--- a/internal/rosa/x.go
+++ b/internal/rosa/x.go
@@ -7,12 +7,12 @@ func (t Toolchain) newUtilMacros() pkg.Artifact {
version = "1.17"
checksum = "vYPO4Qq3B_WGcsBjG0-lfwZ6DZ7ayyrOLqfDrVOgTDcyLChuMGOAAVAa_UXLu5tD"
)
- return t.NewViaMake("util-macros", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("util-macros", version, pkg.NewHTTPGetTar(
nil, "https://www.x.org/releases/X11R7.7/src/util/"+
"util-macros-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), nil)
+ ), nil, (*MakeHelper)(nil))
}
func init() { artifactsF[utilMacros] = Toolchain.newUtilMacros }
@@ -21,27 +21,22 @@ func (t Toolchain) newXproto() pkg.Artifact {
version = "7.0.23"
checksum = "goxwWxV0jZ_3pNczXFltZWHAhq92x-aEreUGyp5Ns8dBOoOmgbpeNIu1nv0Zx07z"
)
- return t.NewViaMake("xproto", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("xproto", version, pkg.NewHTTPGetTar(
nil, "https://www.x.org/releases/X11R7.7/src/proto/"+
"xproto-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), &MakeAttr{
- Writable: true,
-
+ ), nil, &MakeHelper{
// ancient configure script
- ScriptEarly: `
-cd /usr/src/xproto
-autoreconf -if
-`,
+ Generate: "autoreconf -if",
},
- t.Load(M4),
- t.Load(Perl),
- t.Load(Autoconf),
- t.Load(Automake),
- t.Load(PkgConfig),
+ M4,
+ Perl,
+ Autoconf,
+ Automake,
+ PkgConfig,
- t.Load(utilMacros),
+ utilMacros,
)
}
func init() { artifactsF[Xproto] = Toolchain.newXproto }
@@ -51,29 +46,24 @@ func (t Toolchain) newLibXau() pkg.Artifact {
version = "1.0.7"
checksum = "bm768RoZZnHRe9VjNU1Dw3BhfE60DyS9D_bgSR-JLkEEyUWT_Hb_lQripxrXto8j"
)
- return t.NewViaMake("libXau", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("libXau", version, pkg.NewHTTPGetTar(
nil, "https://www.x.org/releases/X11R7.7/src/lib/"+
"libXau-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), &MakeAttr{
- Writable: true,
-
+ ), nil, &MakeHelper{
// ancient configure script
- ScriptEarly: `
-cd /usr/src/libXau
-autoreconf -if
-`,
+ Generate: "autoreconf -if",
},
- t.Load(M4),
- t.Load(Perl),
- t.Load(Autoconf),
- t.Load(Automake),
- t.Load(Libtool),
- t.Load(PkgConfig),
+ M4,
+ Perl,
+ Autoconf,
+ Automake,
+ Libtool,
+ PkgConfig,
- t.Load(utilMacros),
- t.Load(Xproto),
+ utilMacros,
+ Xproto,
)
}
func init() { artifactsF[LibXau] = Toolchain.newLibXau }
diff --git a/internal/rosa/xcb.go b/internal/rosa/xcb.go
index b35c5171..2f9abfc7 100644
--- a/internal/rosa/xcb.go
+++ b/internal/rosa/xcb.go
@@ -7,12 +7,12 @@ func (t Toolchain) newXCBProto() pkg.Artifact {
version = "1.17.0"
checksum = "_NtbKaJ_iyT7XiJz25mXQ7y-niTzE8sHPvLXZPcqtNoV_-vTzqkezJ8Hp2U1enCv"
)
- return t.NewViaMake("xcb-proto", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("xcb-proto", version, pkg.NewHTTPGetTar(
nil, "https://xcb.freedesktop.org/dist/xcb-proto-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil,
- t.Load(Python),
+ ), nil, (*MakeHelper)(nil),
+ Python,
)
}
func init() { artifactsF[XCBProto] = Toolchain.newXCBProto }
@@ -22,17 +22,17 @@ func (t Toolchain) newXCB() pkg.Artifact {
version = "1.17.0"
checksum = "hjjsc79LpWM_hZjNWbDDS6qRQUXREjjekS6UbUsDq-RR1_AjgNDxhRvZf-1_kzDd"
)
- return t.NewViaMake("xcb", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("xcb", version, pkg.NewHTTPGetTar(
nil, "https://xcb.freedesktop.org/dist/libxcb-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil,
- t.Load(Python),
- t.Load(PkgConfig),
+ ), nil, (*MakeHelper)(nil),
+ Python,
+ PkgConfig,
- t.Load(XCBProto),
- t.Load(Xproto),
- t.Load(LibXau),
+ XCBProto,
+ Xproto,
+ LibXau,
)
}
func init() { artifactsF[XCB] = Toolchain.newXCB }
diff --git a/internal/rosa/xz.go b/internal/rosa/xz.go
index 0b9578b8..d3704940 100644
--- a/internal/rosa/xz.go
+++ b/internal/rosa/xz.go
@@ -7,13 +7,13 @@ func (t Toolchain) newXZ() pkg.Artifact {
version = "5.8.2"
checksum = "rXT-XCp9R2q6cXqJ5qenp0cmGPfiENQiU3BWtUVeVgArfRmSsISeUJgvCR3zI0a0"
)
- return t.NewViaMake("xz", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("xz", version, pkg.NewHTTPGetTar(
nil, "https://github.com/tukaani-project/xz/releases/download/"+
"v"+version+"/xz-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), nil,
- t.Load(Diffutils),
+ ), nil, (*MakeHelper)(nil),
+ Diffutils,
)
}
func init() { artifactsF[XZ] = Toolchain.newXZ }
diff --git a/internal/rosa/zlib.go b/internal/rosa/zlib.go
index 3fc659ee..f0ce8071 100644
--- a/internal/rosa/zlib.go
+++ b/internal/rosa/zlib.go
@@ -7,15 +7,17 @@ func (t Toolchain) newZlib() pkg.Artifact {
version = "1.3.1"
checksum = "E-eIpNzE8oJ5DsqH4UuA_0GDKuQF5csqI8ooDx2w7Vx-woJ2mb-YtSbEyIMN44mH"
)
- return t.NewViaMake("zlib", version, pkg.NewHTTPGetTar(
+ return t.NewPackage("zlib", version, pkg.NewHTTPGetTar(
nil, "https://zlib.net/zlib-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), &MakeAttr{
- OmitDefaults: true,
+ ), &PackageAttr{
Env: []string{
"CC=clang -fPIC",
},
+ }, &MakeHelper{
+ OmitDefaults: true,
+
Host: `""`,
Build: `""`,
})