internal/rosa/make: migrate to helper interface
All checks were successful
Test / Create distribution (push) Successful in 1m8s
Test / Sandbox (push) Successful in 2m55s
Test / Hakurei (push) Successful in 5m3s
Test / ShareFS (push) Successful in 5m13s
Test / Hpkg (push) Successful in 5m56s
Test / Hakurei (race detector) (push) Successful in 6m18s
Test / Sandbox (race detector) (push) Successful in 2m37s
Test / Flake checks (push) Successful in 1m43s

This also updates all affected artifacts to use new behaviour.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-03-01 23:54:40 +09:00
parent 9deaf853f0
commit cc60e0d15d
41 changed files with 698 additions and 740 deletions

View File

@@ -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(
return t.NewPackage("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
), &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 }

View File

@@ -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 }

View File

@@ -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{
), &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 }

View File

@@ -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(
// expected to be writable in the copy made during bootstrap
"cmake", version, pkg.NewHTTPGetTar(
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,
), false,
), &MakeAttr{
), &PackageAttr{
// expected to be writable in the copy made during bootstrap
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 }

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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(
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,
), false, [2]string{"remove-broken-docs", `diff --git a/doc/Makefile.am b/doc/Makefile.am
), &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 }

View File

@@ -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 }

View File

@@ -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(
return t.NewPackage("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,
), &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 }

View File

@@ -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(
return t.NewPackage("bc", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/bc/bc-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
), false,
), &MakeAttr{
), &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(
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,
), true, [2]string{"musl-off64_t-loff_t", `diff --git a/libgo/sysinfo.c b/libgo/sysinfo.c
), &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 }

View File

@@ -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 }

View File

@@ -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(
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,
), false,
), &MakeAttr{
), &PackageAttr{
// uses source tree as scratch space
Writable: true,
SkipConfigure: true,
InPlace: 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 }

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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(
return t.NewPackage("libucontext", version, pkg.NewHTTPGetTar(
nil, "https://github.com/kaniini/libucontext/archive/refs/tags/"+
"libucontext-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
), false,
), &MakeAttr{
), &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 }

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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
}

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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(
// expected to be writable in copies
"musl", version, pkg.NewHTTPGetTar(
return t.NewPackage(name, 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),
)...)
), &PackageAttr{
NonStage0: extra,
// expected to be writable in copies
Chmod: true,
Env: env,
}, &helper,
Coreutils,
)
}
func init() {
artifactsF[Musl] = func(t Toolchain) pkg.Artifact {

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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(
return t.NewPackage("perl", version, pkg.NewHTTPGetTar(
nil, "https://www.cpan.org/src/5.0/perl-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
), false,
), &MakeAttr{
), &PackageAttr{
// uses source tree as scratch space
Writable: true,
OmitDefaults: true,
InPlace: 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{
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 }

View File

@@ -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"},

View File

@@ -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(
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,
), false,
), &MakeAttr{
Writable: true,
ScriptEarly: `
cd /usr/src/procps
./autogen.sh
`,
), 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 }

View File

@@ -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 }

View File

@@ -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(
return t.NewPackage("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
), &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 }

View File

@@ -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 }

View File

@@ -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(
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,
), false,
), &MakeAttr{
), &PackageAttr{
// uses source tree as scratch space
Writable: true,
SkipConfigure: true,
InPlace: 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 }

View File

@@ -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(
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,
), false,
), &MakeAttr{
), &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 {
)),
},
// uses source tree as scratch space
Writable: true,
OmitDefaults: true,
SkipConfigure: true,
InPlace: 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 }

View File

@@ -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{
), &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,
` + 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() {

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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 }

View File

@@ -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: `""`,
})