From cc60e0d15d79916a69c8a1caeb3c4611351bb6c4 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Sun, 1 Mar 2026 23:54:40 +0900 Subject: [PATCH] internal/rosa/make: migrate to helper interface This also updates all affected artifacts to use new behaviour. Signed-off-by: Ophestra --- internal/rosa/acl.go | 42 +++-- internal/rosa/argp-standalone.go | 9 +- internal/rosa/bzip2.go | 13 +- internal/rosa/cmake.go | 18 +- internal/rosa/curl.go | 17 +- internal/rosa/elfutils.go | 24 +-- internal/rosa/fakeroot.go | 42 +++-- internal/rosa/flex.go | 6 +- internal/rosa/git.go | 46 +++-- internal/rosa/gnu.go | 285 +++++++++++++++---------------- internal/rosa/kernel.go | 117 ++++++------- internal/rosa/libcap.go | 34 ++-- internal/rosa/libexpat.go | 10 +- internal/rosa/libffi.go | 10 +- internal/rosa/libgd.go | 9 +- internal/rosa/libpsl.go | 10 +- internal/rosa/libseccomp.go | 17 +- internal/rosa/libucontext.go | 24 +-- internal/rosa/libxml2.go | 17 +- internal/rosa/libxslt.go | 21 +-- internal/rosa/make.go | 152 ++++++++--------- internal/rosa/musl-fts.go | 23 ++- internal/rosa/musl-obstack.go | 23 ++- internal/rosa/musl.go | 34 ++-- internal/rosa/ncurses.go | 6 +- internal/rosa/openssl.go | 17 +- internal/rosa/pcre2.go | 8 +- internal/rosa/perl.go | 55 +++--- internal/rosa/pkg-config.go | 7 +- internal/rosa/procps.go | 37 ++-- internal/rosa/python.go | 18 +- internal/rosa/qemu.go | 61 +++---- internal/rosa/rsync.go | 12 +- internal/rosa/squashfs.go | 41 ++--- internal/rosa/ssl.go | 43 ++--- internal/rosa/toybox.go | 32 ++-- internal/rosa/util-linux.go | 10 +- internal/rosa/x.go | 54 +++--- internal/rosa/xcb.go | 20 +-- internal/rosa/xz.go | 6 +- internal/rosa/zlib.go | 8 +- 41 files changed, 698 insertions(+), 740 deletions(-) diff --git a/internal/rosa/acl.go b/internal/rosa/acl.go index 56571d5..5a33c0a 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" 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 -- -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 ca6c663..0e4da9d 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 569d7d8..e32b350 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 85e6d29..281a899 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 d040ad7..bd8c790 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 ea9dcb6..5c47eba 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 dea7515..f97b466 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 46d59fc..e6fef28 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 a243e50..1880af0 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 a110dce..328a372 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 def556c..5d9bf6f 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", }, @@ -60,29 +54,6 @@ install -Dm0400 \ install -Dm0500 \ /usr/src/.installkernel \ /sbin/installkernel -`, - Make: []string{ - "-f /usr/src/kernel/Makefile", - "O=/tmp/kbuild", - - "LLVM=1", - "KBUILD_BUILD_VERSION='1-Rosa'", - "KBUILD_BUILD_TIMESTAMP='2106-02-07 06:28:15 UTC'", - "KBUILD_BUILD_USER=kbuild", - "KBUILD_BUILD_HOST=localhost", - "all", - }, - ScriptInstall: ` -make \ - "-j$(nproc)" \ - -f /usr/src/kernel/Makefile \ - O=/tmp/kbuild \ - LLVM=1 \ - INSTALL_PATH=/work \ - install \ - INSTALL_MOD_PATH=/work \ - modules_install -rm -v /work/lib/modules/` + kernelVersion + `/build `, Paths: []pkg.ExecPath{ @@ -97,29 +68,61 @@ 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), - 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), + 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", + + "LLVM=1", + "KBUILD_BUILD_VERSION='1-Rosa'", + "KBUILD_BUILD_TIMESTAMP='2106-02-07 06:28:15 UTC'", + "KBUILD_BUILD_USER=kbuild", + "KBUILD_BUILD_HOST=localhost", + "all", + }, + Install: ` +make \ + "-j$(nproc)" \ + -f /usr/src/kernel/Makefile \ + O=/tmp/kbuild \ + LLVM=1 \ + INSTALL_PATH=/work \ + install \ + INSTALL_MOD_PATH=/work \ + modules_install +rm -v /work/lib/modules/` + kernelVersion + `/build +`, + }, + Flex, + Bison, + M4, + Tar, + Perl, + BC, + Sed, + Gawk, + Coreutils, + Diffutils, + Python, + + 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 4649291..81a9ec6 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 3e094f7..3cda122 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 01dcf83..ef4edb5 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 fe88cbe..428a9e1 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 6b0bbf4..27b382f 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 1c2794b..7d1a796 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 838c2e4..cf2333e 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 058977e..8f0a140 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 db1fc41..0162e43 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 fb74039..891f607 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 - - // Suffix appended to the source pathname. - SourceSuffix string - - // Passed through to [Toolchain.New], before source. - Paths []pkg.ExecPath - // Passed through to [Toolchain.New]. - Flag int + Install string } -// 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") +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 != "" +} + +// wantsWrite is equivalent to wantsChmod. +func (attr *MakeHelper) wantsWrite() bool { return attr.wantsChmod() } + +// scriptEarly returns the optional build system generation segment. +func (attr *MakeHelper) scriptEarly() string { if attr == nil { - attr = new(MakeAttr) + return "" + } + + generate := attr.Generate + if len(generate) > 0 && generate[len(generate)-1] != '\n' { + generate += "\n" + } + return generate +} + +// 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(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 ab565fe..26faf79 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 2b45ed8..1f100db 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 74603bf..076fffc 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 9af85fc..3a9e016 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 6361714..600355e 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 c7868b1..415384e 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 2598cdc..64e8c54 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 c5c0814..32eb136 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 53f5ccd..51c3950 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 2c98424..1c9a2fe 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 34241e0..385c13d 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 f854b7b..ccf4186 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 f0ba0cb..8d0c020 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", - }, - t.Load(Sed), + }, &MakeHelper{ - t.Load(Zstd), - t.Load(Gzip), - t.Load(Zlib), + SkipConfigure: true, + InPlace: true, + + SkipCheck: true, + Install: "make INSTALL_PREFIX=/work/system install", + }, + Sed, + + Zstd, + Gzip, + Zlib, ) } func init() { artifactsF[SquashfsTools] = Toolchain.newSquashfsTools } diff --git a/internal/rosa/ssl.go b/internal/rosa/ssl.go index 28b0197..1e57cc7 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 329ad73..813cd5d 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 8dc0f29..d6f4aba 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 191bbe6..fc4596b 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 b35c517..2f9abfc 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 0b9578b..d370494 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 3fc659e..f0ce807 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: `""`, })