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" version = "2.5.2"
checksum = "YWEphrz6vg1sUMmHHVr1CRo53pFXRhq_pjN-AlG8UgwZK1y6m7zuDhxqJhD0SV0l" checksum = "YWEphrz6vg1sUMmHHVr1CRo53pFXRhq_pjN-AlG8UgwZK1y6m7zuDhxqJhD0SV0l"
) )
return t.NewViaMake("attr", version, t.NewPatchedSource( return t.NewPackage("attr", version, pkg.NewHTTPGetTar(
"attr", version, pkg.NewHTTPGetTar(
nil, "https://download.savannah.nongnu.org/releases/attr/"+ nil, "https://download.savannah.nongnu.org/releases/attr/"+
"attr-"+version+".tar.gz", "attr-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, 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> From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
Date: Sat, 30 Mar 2024 10:17:10 +0100 Date: Sat, 30 Mar 2024 10:17:10 +0100
Subject: tools/attr.c: Add missing libgen.h include for basename(3) Subject: tools/attr.c: Add missing libgen.h include for basename(3)
@@ -38,7 +39,9 @@ index f12e4af..6a3c1e9 100644
#include <attr/attributes.h> #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 index 6ce2f9b..e9bde92 100644
--- a/test/attr.test --- a/test/attr.test
+++ b/test/attr.test +++ b/test/attr.test
@@ -52,15 +55,13 @@ index 6ce2f9b..e9bde92 100644
$ setfattr -n user. -v value f $ setfattr -n user. -v value f
> setfattr: f: Invalid argument > setfattr: f: Invalid argument
`}, `},
), &MakeAttr{ },
ScriptEarly: ` ScriptEarly: `
ln -s ../../system/bin/perl /usr/bin ln -s ../../system/bin/perl /usr/bin
`, `,
Configure: [][2]string{ }, (*MakeHelper)(nil),
{"enable-static"}, Perl,
},
},
t.Load(Perl),
) )
} }
func init() { artifactsF[Attr] = Toolchain.newAttr } func init() { artifactsF[Attr] = Toolchain.newAttr }
@@ -70,21 +71,16 @@ func (t Toolchain) newACL() pkg.Artifact {
version = "2.3.2" version = "2.3.2"
checksum = "-fY5nwH4K8ZHBCRXrzLdguPkqjKI6WIiGu4dBtrZ1o0t6AIU73w8wwJz_UyjIS0P" checksum = "-fY5nwH4K8ZHBCRXrzLdguPkqjKI6WIiGu4dBtrZ1o0t6AIU73w8wwJz_UyjIS0P"
) )
return t.NewViaMake("acl", version, pkg.NewHTTPGetTar( return t.NewPackage("acl", version, pkg.NewHTTPGetTar(
nil, nil, "https://download.savannah.nongnu.org/releases/acl/"+
"https://download.savannah.nongnu.org/releases/acl/"+
"acl-"+version+".tar.gz", "acl-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), nil, &MakeHelper{
Configure: [][2]string{
{"enable-static"},
},
// makes assumptions about uid_map/gid_map // makes assumptions about uid_map/gid_map
SkipCheck: true, SkipCheck: true,
}, },
t.Load(Attr), Attr,
) )
} }
func init() { artifactsF[ACL] = Toolchain.newACL } func init() { artifactsF[ACL] = Toolchain.newACL }

View File

@@ -7,21 +7,22 @@ func (t Toolchain) newArgpStandalone() pkg.Artifact {
version = "1.3" version = "1.3"
checksum = "vtW0VyO2pJ-hPyYmDI2zwSLS8QL0sPAUKC1t3zNYbwN2TmsaE-fADhaVtNd3eNFl" 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/"+ nil, "http://www.lysator.liu.se/~nisse/misc/"+
"argp-standalone-"+version+".tar.gz", "argp-standalone-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Env: []string{ Env: []string{
"CC=cc -std=gnu89 -fPIC", "CC=cc -std=gnu89 -fPIC",
}, },
ScriptInstall: ` }, &MakeHelper{
Install: `
install -D -m644 /usr/src/argp-standalone/argp.h /work/system/include/argp.h install -D -m644 /usr/src/argp-standalone/argp.h /work/system/include/argp.h
install -D -m755 libargp.a /work/system/lib/libargp.a install -D -m755 libargp.a /work/system/lib/libargp.a
`, `,
}, },
t.Load(Diffutils), Diffutils,
) )
} }
func init() { artifactsF[ArgpStandalone] = Toolchain.newArgpStandalone } func init() { artifactsF[ArgpStandalone] = Toolchain.newArgpStandalone }

View File

@@ -7,21 +7,22 @@ func (t Toolchain) newBzip2() pkg.Artifact {
version = "1.0.8" version = "1.0.8"
checksum = "cTLykcco7boom-s05H1JVsQi1AtChYL84nXkg_92Dm1Xt94Ob_qlMg_-NSguIK-c" 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", nil, "https://sourceware.org/pub/bzip2/bzip2-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Writable: true, Writable: true,
EnterSource: true,
}, &MakeHelper{
// uses source tree as scratch space
SkipConfigure: true, SkipConfigure: true,
SkipCheck: true, SkipCheck: true,
InPlace: true, InPlace: true,
ScriptEarly: "cd /usr/src/bzip2",
Make: []string{ Make: []string{
"CC=cc", "CC=cc",
}, },
ScriptInstall: "make PREFIX=/work/system install", Install: "make PREFIX=/work/system install",
}) })
} }
func init() { artifactsF[Bzip2] = Toolchain.newBzip2 } func init() { artifactsF[Bzip2] = Toolchain.newBzip2 }

View File

@@ -13,15 +13,15 @@ func (t Toolchain) newCMake() pkg.Artifact {
version = "4.2.1" version = "4.2.1"
checksum = "Y3OdbMsob6Xk2y1DCME6z4Fryb5_TkFD7knRT8dTNIRtSqbiCJyyDN9AxggN_I75" checksum = "Y3OdbMsob6Xk2y1DCME6z4Fryb5_TkFD7knRT8dTNIRtSqbiCJyyDN9AxggN_I75"
) )
return t.NewViaMake("cmake", version, t.NewPatchedSource( return t.NewPackage("cmake", version, pkg.NewHTTPGetTar(
// expected to be writable in the copy made during bootstrap
"cmake", version, pkg.NewHTTPGetTar(
nil, "https://github.com/Kitware/CMake/releases/download/"+ nil, "https://github.com/Kitware/CMake/releases/download/"+
"v"+version+"/cmake-"+version+".tar.gz", "v"+version+"/cmake-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), false, ), &PackageAttr{
), &MakeAttr{ // expected to be writable in the copy made during bootstrap
Chmod: true,
}, &MakeHelper{
OmitDefaults: true, OmitDefaults: true,
ConfigureName: "/usr/src/cmake/bootstrap", ConfigureName: "/usr/src/cmake/bootstrap",
@@ -33,7 +33,7 @@ func (t Toolchain) newCMake() pkg.Artifact {
}, },
SkipCheck: true, SkipCheck: true,
}, },
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { artifactsF[CMake] = Toolchain.newCMake } func init() { artifactsF[CMake] = Toolchain.newCMake }

View File

@@ -7,23 +7,24 @@ func (t Toolchain) newCurl() pkg.Artifact {
version = "8.18.0" version = "8.18.0"
checksum = "YpOolP_sx1DIrCEJ3elgVAu0wTLDS-EZMZFvOP0eha7FaLueZUlEpuMwDzJNyi7i" 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", nil, "https://curl.se/download/curl-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), &MakeAttr{ ), nil, &MakeHelper{
Env: []string{
"TFLAGS=-j256",
},
Configure: [][2]string{ Configure: [][2]string{
{"with-openssl"}, {"with-openssl"},
{"with-ca-bundle", "/system/etc/ssl/certs/ca-bundle.crt"}, {"with-ca-bundle", "/system/etc/ssl/certs/ca-bundle.crt"},
}, },
Check: []string{
"TFLAGS=-j256",
"check",
}, },
t.Load(Perl), },
Perl,
t.Load(Libpsl), Libpsl,
t.Load(OpenSSL), OpenSSL,
) )
} }
func init() { artifactsF[Curl] = Toolchain.newCurl } func init() { artifactsF[Curl] = Toolchain.newCurl }

View File

@@ -7,18 +7,18 @@ func (t Toolchain) newElfutils() pkg.Artifact {
version = "0.194" version = "0.194"
checksum = "Q3XUygUPv9vR1TkWucwUsQ8Kb1_F6gzk-KMPELr3cC_4AcTrprhVPMvN0CKkiYRa" 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/"+ nil, "https://sourceware.org/elfutils/ftp/"+
version+"/elfutils-"+version+".tar.bz2", version+"/elfutils-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), &MakeAttr{ ), &PackageAttr{
Env: []string{ Env: []string{
"CC=cc" + "CC=cc" +
// nonstandard glibc extension // nonstandard glibc extension
" -DFNM_EXTMATCH=0", " -DFNM_EXTMATCH=0",
}, },
}, &MakeHelper{
// nonstandard glibc extension // nonstandard glibc extension
SkipCheck: true, SkipCheck: true,
@@ -26,16 +26,16 @@ func (t Toolchain) newElfutils() pkg.Artifact {
{"enable-deterministic-archives"}, {"enable-deterministic-archives"},
}, },
}, },
t.Load(M4), M4,
t.Load(PkgConfig), PkgConfig,
t.Load(Zlib), Zlib,
t.Load(Bzip2), Bzip2,
t.Load(Zstd), Zstd,
t.Load(ArgpStandalone), ArgpStandalone,
t.Load(MuslFts), MuslFts,
t.Load(MuslObstack), MuslObstack,
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { artifactsF[Elfutils] = Toolchain.newElfutils } func init() { artifactsF[Elfutils] = Toolchain.newElfutils }

View File

@@ -7,13 +7,14 @@ func (t Toolchain) newFakeroot() pkg.Artifact {
version = "1.37.2" version = "1.37.2"
checksum = "4ve-eDqVspzQ6VWDhPS0NjW3aSenBJcPAJq_BFT7OOFgUdrQzoTBxZWipDAGWxF8" checksum = "4ve-eDqVspzQ6VWDhPS0NjW3aSenBJcPAJq_BFT7OOFgUdrQzoTBxZWipDAGWxF8"
) )
return t.NewViaMake("fakeroot", version, t.NewPatchedSource( return t.NewPackage("fakeroot", version, pkg.NewHTTPGetTar(
"fakeroot", version, pkg.NewHTTPGetTar(
nil, "https://salsa.debian.org/clint/fakeroot/-/archive/upstream/"+ nil, "https://salsa.debian.org/clint/fakeroot/-/archive/upstream/"+
version+"/fakeroot-upstream-"+version+".tar.bz2", version+"/fakeroot-upstream-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, 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 index f135ad9..85c784c 100644
--- a/doc/Makefile.am --- a/doc/Makefile.am
+++ b/doc/Makefile.am +++ b/doc/Makefile.am
@@ -24,30 +25,27 @@ index f135ad9..85c784c 100644
man_MANS = faked.1 fakeroot.1 man_MANS = faked.1 fakeroot.1
`}, `},
), &MakeAttr{ },
Writable: true,
Env: []string{ Env: []string{
"CONFIG_SHELL=/bin/sh", "CONFIG_SHELL=/bin/sh",
}, },
ScriptEarly: ` }, &MakeHelper{
cd /usr/src/fakeroot Generate: "./bootstrap",
./bootstrap
`,
// makes assumptions about /etc/passwd // makes assumptions about /etc/passwd
SkipCheck: true, SkipCheck: true,
}, },
t.Load(M4), M4,
t.Load(Perl), Perl,
t.Load(Autoconf), Autoconf,
t.Load(Automake), Automake,
t.Load(Libtool), Libtool,
t.Load(PkgConfig), PkgConfig,
t.Load(Attr), Attr,
t.Load(Libcap), Libcap,
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { artifactsF[Fakeroot] = Toolchain.newFakeroot } func init() { artifactsF[Fakeroot] = Toolchain.newFakeroot }

View File

@@ -9,13 +9,13 @@ func (t Toolchain) newFlex() pkg.Artifact {
version = "2.6.4" version = "2.6.4"
checksum = "p9POjQU7VhgOf3x5iFro8fjhy0NOanvA7CTeuWS_veSNgCixIJshTrWVkc5XLZkB" 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/"+ nil, "https://github.com/westes/flex/releases/download/"+
"v"+version+"/flex-"+version+".tar.gz", "v"+version+"/flex-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), nil, ), nil, (*MakeHelper)(nil),
t.Load(M4), M4,
) )
} }
func init() { artifactsF[Flex] = Toolchain.newFlex } func init() { artifactsF[Flex] = Toolchain.newFlex }

View File

@@ -7,24 +7,22 @@ func (t Toolchain) newGit() pkg.Artifact {
version = "2.52.0" version = "2.52.0"
checksum = "uH3J1HAN_c6PfGNJd2OBwW4zo36n71wmkdvityYnrh8Ak0D1IifiAvEWz9Vi9DmS" checksum = "uH3J1HAN_c6PfGNJd2OBwW4zo36n71wmkdvityYnrh8Ak0D1IifiAvEWz9Vi9DmS"
) )
return t.NewViaMake("git", version, t.NewPatchedSource( return t.NewPackage("git", version, pkg.NewHTTPGetTar(
"git", version, pkg.NewHTTPGetTar(
nil, "https://www.kernel.org/pub/software/scm/git/"+ nil, "https://www.kernel.org/pub/software/scm/git/"+
"git-"+version+".tar.gz", "git-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), false, ), &PackageAttr{
), &MakeAttr{
// uses source tree as scratch space
Writable: true,
InPlace: true,
ScriptEarly: ` ScriptEarly: `
cd /usr/src/git
make configure
ln -s ../../system/bin/perl /usr/bin/ || true 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 { function disable_test {
local test=$1 pattern=${2:-''} local test=$1 pattern=${2:-''}
if [ $# -eq 1 ]; then if [ $# -eq 1 ]; then
@@ -55,16 +53,16 @@ disable_test t2200-add-update
"prove", "prove",
}, },
}, },
t.Load(Perl), Perl,
t.Load(Diffutils), Diffutils,
t.Load(M4), M4,
t.Load(Autoconf), Autoconf,
t.Load(Gettext), Gettext,
t.Load(Zlib), Zlib,
t.Load(Curl), Curl,
t.Load(OpenSSL), OpenSSL,
t.Load(Libexpat), Libexpat,
) )
} }
func init() { artifactsF[Git] = Toolchain.newGit } func init() { artifactsF[Git] = Toolchain.newGit }

View File

@@ -7,18 +7,17 @@ func (t Toolchain) newM4() pkg.Artifact {
version = "1.4.20" version = "1.4.20"
checksum = "RT0_L3m4Co86bVBY3lCFAEs040yI1WdeNmRylFpah8IZovTm6O4wI7qiHJN3qsW9" 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", nil, "https://ftpmirror.gnu.org/gnu/m4/m4-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), &MakeAttr{ ), &PackageAttr{
Writable: true, Writable: true,
ScriptEarly: ` ScriptEarly: `
cd /usr/src/m4
chmod +w tests/test-c32ispunct.sh && echo '#!/bin/sh' > tests/test-c32ispunct.sh chmod +w tests/test-c32ispunct.sh && echo '#!/bin/sh' > tests/test-c32ispunct.sh
`, `,
}, }, (*MakeHelper)(nil),
t.Load(Diffutils), Diffutils,
) )
} }
func init() { artifactsF[M4] = Toolchain.newM4 } func init() { artifactsF[M4] = Toolchain.newM4 }
@@ -28,14 +27,14 @@ func (t Toolchain) newBison() pkg.Artifact {
version = "3.8.2" version = "3.8.2"
checksum = "BhRM6K7URj1LNOkIDCFDctSErLS-Xo5d9ba9seg10o6ACrgC1uNhED7CQPgIY29Y" 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", nil, "https://ftpmirror.gnu.org/gnu/bison/bison-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), nil, ), nil, (*MakeHelper)(nil),
t.Load(M4), M4,
t.Load(Diffutils), Diffutils,
t.Load(Sed), Sed,
) )
} }
func init() { artifactsF[Bison] = Toolchain.newBison } func init() { artifactsF[Bison] = Toolchain.newBison }
@@ -45,12 +44,12 @@ func (t Toolchain) newSed() pkg.Artifact {
version = "4.9" version = "4.9"
checksum = "pe7HWH4PHNYrazOTlUoE1fXmhn2GOPFN_xE62i0llOr3kYGrH1g2_orDz0UtZ9Nt" 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", nil, "https://ftpmirror.gnu.org/gnu/sed/sed-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), nil, ), nil, (*MakeHelper)(nil),
t.Load(Diffutils), Diffutils,
) )
} }
func init() { artifactsF[Sed] = Toolchain.newSed } func init() { artifactsF[Sed] = Toolchain.newSed }
@@ -60,21 +59,22 @@ func (t Toolchain) newAutoconf() pkg.Artifact {
version = "2.72" version = "2.72"
checksum = "-c5blYkC-xLDer3TWEqJTyh1RLbOd1c5dnRLKsDnIrg_wWNOLBpaqMY8FvmUFJ33" 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", nil, "https://ftpmirror.gnu.org/gnu/autoconf/autoconf-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Flag: TExclusive,
}, &MakeHelper{
Check: []string{ Check: []string{
`TESTSUITEFLAGS="-j$(nproc)"`, `TESTSUITEFLAGS="-j$(nproc)"`,
"check", "check",
}, },
Flag: TExclusive,
}, },
t.Load(M4), M4,
t.Load(Perl), Perl,
t.Load(Bash), Bash,
t.Load(Diffutils), Diffutils,
) )
} }
func init() { artifactsF[Autoconf] = Toolchain.newAutoconf } func init() { artifactsF[Autoconf] = Toolchain.newAutoconf }
@@ -84,15 +84,13 @@ func (t Toolchain) newAutomake() pkg.Artifact {
version = "1.18.1" version = "1.18.1"
checksum = "FjvLG_GdQP7cThTZJLDMxYpRcKdpAVG-YDs1Fj1yaHlSdh_Kx6nRGN14E0r_BjcG" 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", nil, "https://ftpmirror.gnu.org/gnu/automake/automake-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Writable: true, Writable: true,
ScriptEarly: ` ScriptEarly: `
cd /usr/src/automake
test_disable() { chmod +w "$2" && echo "$1" > "$2"; } test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable '#!/bin/sh' t/objcxx-minidemo.sh 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/distname.sh
test_disable '#!/bin/sh' t/pr9.sh test_disable '#!/bin/sh' t/pr9.sh
`, `,
}, }, (*MakeHelper)(nil),
t.Load(M4), M4,
t.Load(Perl), Perl,
t.Load(Grep), Grep,
t.Load(Gzip), Gzip,
t.Load(Autoconf), Autoconf,
t.Load(Diffutils), Diffutils,
) )
} }
func init() { artifactsF[Automake] = Toolchain.newAutomake } func init() { artifactsF[Automake] = Toolchain.newAutomake }
@@ -118,18 +116,18 @@ func (t Toolchain) newLibtool() pkg.Artifact {
version = "2.5.4" version = "2.5.4"
checksum = "pa6LSrQggh8mSJHQfwGjysAApmZlGJt8wif2cCLzqAAa2jpsTY0jZ-6stS3BWZ2Q" 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", nil, "https://ftpmirror.gnu.org/gnu/libtool/libtool-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), nil, &MakeHelper{
Check: []string{ Check: []string{
`TESTSUITEFLAGS="-j$(nproc)"`, `TESTSUITEFLAGS="-j$(nproc)"`,
"check", "check",
}, },
}, },
t.Load(M4), M4,
t.Load(Diffutils), Diffutils,
) )
} }
func init() { artifactsF[Libtool] = Toolchain.newLibtool } func init() { artifactsF[Libtool] = Toolchain.newLibtool }
@@ -139,11 +137,11 @@ func (t Toolchain) newGzip() pkg.Artifact {
version = "1.14" version = "1.14"
checksum = "NWhjUavnNfTDFkZJyAUonL9aCOak8GVajWX2OMlzpFnuI0ErpBFyj88mz2xSjz0q" 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", nil, "https://ftpmirror.gnu.org/gnu/gzip/gzip-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), nil, &MakeHelper{
// dependency loop // dependency loop
SkipCheck: true, SkipCheck: true,
}) })
@@ -155,14 +153,13 @@ func (t Toolchain) newGettext() pkg.Artifact {
version = "1.0" version = "1.0"
checksum = "3MasKeEdPeFEgWgzsBKk7JqWqql1wEMbgPmzAfs-mluyokoW0N8oQVxPQoOnSdgC" 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", nil, "https://ftpmirror.gnu.org/gnu/gettext/gettext-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Writable: true, Writable: true,
ScriptEarly: ` ScriptEarly: `
cd /usr/src/gettext
test_disable() { chmod +w "$2" && echo "$1" > "$2"; } test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable '#!/bin/sh' gettext-tools/tests/msgcat-22 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 touch gettext-tools/autotools/archive.dir.tar
`, `,
}, }, (*MakeHelper)(nil),
t.Load(Diffutils), Diffutils,
t.Load(Gzip), Gzip,
t.Load(Sed), Sed,
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { artifactsF[Gettext] = Toolchain.newGettext } func init() { artifactsF[Gettext] = Toolchain.newGettext }
@@ -192,14 +189,13 @@ func (t Toolchain) newDiffutils() pkg.Artifact {
version = "3.12" version = "3.12"
checksum = "9J5VAq5oA7eqwzS1Yvw-l3G5o-TccUrNQR3PvyB_lgdryOFAfxtvQfKfhdpquE44" 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", nil, "https://ftpmirror.gnu.org/gnu/diffutils/diffutils-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Writable: true, Writable: true,
ScriptEarly: ` ScriptEarly: `
cd /usr/src/diffutils
test_disable() { chmod +w "$2" && echo "$1" > "$2"; } test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable '#!/bin/sh' gnulib-tests/test-c32ispunct.sh 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 test_disable '#!/bin/sh' tests/cmp
`, `,
Flag: TEarly, Flag: TEarly,
}) }, (*MakeHelper)(nil))
} }
func init() { artifactsF[Diffutils] = Toolchain.newDiffutils } func init() { artifactsF[Diffutils] = Toolchain.newDiffutils }
@@ -216,21 +212,20 @@ func (t Toolchain) newPatch() pkg.Artifact {
version = "2.8" version = "2.8"
checksum = "MA0BQc662i8QYBD-DdGgyyfTwaeALZ1K0yusV9rAmNiIsQdX-69YC4t9JEGXZkeR" 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", nil, "https://ftpmirror.gnu.org/gnu/patch/patch-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Writable: true, Writable: true,
ScriptEarly: ` ScriptEarly: `
cd /usr/src/patch
test_disable() { chmod +w "$2" && echo "$1" > "$2"; } test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable '#!/bin/sh' tests/ed-style test_disable '#!/bin/sh' tests/ed-style
test_disable '#!/bin/sh' tests/need-filename test_disable '#!/bin/sh' tests/need-filename
`, `,
Flag: TEarly, Flag: TEarly,
}) }, (*MakeHelper)(nil))
} }
func init() { artifactsF[Patch] = Toolchain.newPatch } func init() { artifactsF[Patch] = Toolchain.newPatch }
@@ -239,16 +234,17 @@ func (t Toolchain) newBash() pkg.Artifact {
version = "5.3" version = "5.3"
checksum = "4LQ_GRoB_ko-Ih8QPf_xRKA02xAm_TOxQgcJLmFDT6udUPxTAWrsj-ZNeuTusyDq" 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", nil, "https://ftpmirror.gnu.org/gnu/bash/bash-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Flag: TEarly,
}, &MakeHelper{
Script: "ln -s bash /work/system/bin/sh\n", Script: "ln -s bash /work/system/bin/sh\n",
Configure: [][2]string{ Configure: [][2]string{
{"without-bash-malloc"}, {"without-bash-malloc"},
}, },
Flag: TEarly,
}) })
} }
func init() { artifactsF[Bash] = Toolchain.newBash } func init() { artifactsF[Bash] = Toolchain.newBash }
@@ -258,14 +254,13 @@ func (t Toolchain) newCoreutils() pkg.Artifact {
version = "9.9" version = "9.9"
checksum = "B1_TaXj1j5aiVIcazLWu8Ix03wDV54uo2_iBry4qHG6Y-9bjDpUPlkNLmU_3Nvw6" 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", nil, "https://ftpmirror.gnu.org/gnu/coreutils/coreutils-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Writable: true, Writable: true,
ScriptEarly: ` ScriptEarly: `
cd /usr/src/coreutils
test_disable() { chmod +w "$2" && echo "$1" > "$2"; } test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable '#!/bin/sh' gnulib-tests/test-c32ispunct.sh 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-fchownat.c
test_disable 'int main(){return 0;}' gnulib-tests/test-lchown.c test_disable 'int main(){return 0;}' gnulib-tests/test-lchown.c
`, `,
Flag: TEarly,
}, &MakeHelper{
Configure: [][2]string{ Configure: [][2]string{
{"enable-single-binary", "symlinks"}, {"enable-single-binary", "symlinks"},
}, },
Flag: TEarly,
}, },
t.Load(Perl), Perl,
t.Load(Bash), Bash,
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { artifactsF[Coreutils] = Toolchain.newCoreutils } func init() { artifactsF[Coreutils] = Toolchain.newCoreutils }
@@ -294,15 +290,15 @@ func (t Toolchain) newTexinfo() pkg.Artifact {
version = "7.2" version = "7.2"
checksum = "9EelM5b7QGMAY5DKrAm_El8lofBGuFWlaBPSBhh7l_VQE8054MBmC0KBvGrABqjv" 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", nil, "https://ftpmirror.gnu.org/gnu/texinfo/texinfo-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), nil, &MakeHelper{
// nonstandard glibc extension // nonstandard glibc extension
SkipCheck: true, SkipCheck: true,
}, },
t.Load(Perl), Perl,
) )
} }
func init() { artifactsF[Texinfo] = Toolchain.newTexinfo } func init() { artifactsF[Texinfo] = Toolchain.newTexinfo }
@@ -312,12 +308,12 @@ func (t Toolchain) newGperf() pkg.Artifact {
version = "3.3" version = "3.3"
checksum = "RtIy9pPb_Bb8-31J2Nw-rRGso2JlS-lDlVhuNYhqR7Nt4xM_nObznxAlBMnarJv7" 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", nil, "https://ftpmirror.gnu.org/gperf/gperf-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), nil, ), nil, (*MakeHelper)(nil),
t.Load(Diffutils), Diffutils,
) )
} }
func init() { artifactsF[Gperf] = Toolchain.newGperf } func init() { artifactsF[Gperf] = Toolchain.newGperf }
@@ -327,13 +323,13 @@ func (t Toolchain) newGawk() pkg.Artifact {
version = "5.3.2" version = "5.3.2"
checksum = "uIs0d14h_d2DgMGYwrPtegGNyt_bxzG3D6Fe-MmExx_pVoVkQaHzrtmiXVr6NHKk" 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", nil, "https://ftpmirror.gnu.org/gnu/gawk/gawk-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Flag: TEarly, Flag: TEarly,
}, &MakeHelper{
// dependency loop // dependency loop
SkipCheck: true, SkipCheck: true,
}) })
@@ -345,22 +341,20 @@ func (t Toolchain) newGrep() pkg.Artifact {
version = "3.12" version = "3.12"
checksum = "qMB4RjaPNRRYsxix6YOrjE8gyAT1zVSTy4nW4wKW9fqa0CHYAuWgPwDTirENzm_1" 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", nil, "https://ftpmirror.gnu.org/gnu/grep/grep-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Writable: true, Writable: true,
ScriptEarly: ` ScriptEarly: `
cd /usr/src/grep
test_disable() { chmod +w "$2" && echo "$1" > "$2"; } test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable '#!/bin/sh' gnulib-tests/test-c32ispunct.sh test_disable '#!/bin/sh' gnulib-tests/test-c32ispunct.sh
test_disable 'int main(){return 0;}' gnulib-tests/test-c32ispunct.c test_disable 'int main(){return 0;}' gnulib-tests/test-c32ispunct.c
`, `,
}, }, (*MakeHelper)(nil),
t.Load(Diffutils), Diffutils,
) )
} }
func init() { artifactsF[Grep] = Toolchain.newGrep } func init() { artifactsF[Grep] = Toolchain.newGrep }
@@ -370,24 +364,19 @@ func (t Toolchain) newFindutils() pkg.Artifact {
version = "4.10.0" version = "4.10.0"
checksum = "ZXABdNBQXL7QjTygynRRTdXYWxQKZ0Wn5eMd3NUnxR0xaS0u0VfcKoTlbo50zxv6" 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", nil, "https://ftpmirror.gnu.org/gnu/findutils/findutils-"+version+".tar.xz",
mustDecode(checksum), mustDecode(checksum),
), &MakeAttr{ ), &PackageAttr{
SourceSuffix: ".tar.xz", SourceKind: sourceTarXZ,
ScriptEarly: ` ScriptEarly: `
cd /usr/src/
tar xf findutils.tar.xz
mv findutils-` + version + ` findutils
cd findutils
echo '#!/bin/sh' > gnulib-tests/test-c32ispunct.sh echo '#!/bin/sh' > gnulib-tests/test-c32ispunct.sh
echo 'int main(){return 0;}' > tests/xargs/test-sigusr.c echo 'int main(){return 0;}' > tests/xargs/test-sigusr.c
`, `,
}, }, (*MakeHelper)(nil),
t.Load(Diffutils), Diffutils,
t.Load(XZ), XZ,
t.Load(Sed), Sed,
) )
} }
func init() { artifactsF[Findutils] = Toolchain.newFindutils } func init() { artifactsF[Findutils] = Toolchain.newFindutils }
@@ -397,17 +386,17 @@ func (t Toolchain) newBC() pkg.Artifact {
version = "1.08.2" version = "1.08.2"
checksum = "8h6f3hjV80XiFs6v9HOPF2KEyg1kuOgn5eeFdVspV05ODBVQss-ey5glc8AmneLy" checksum = "8h6f3hjV80XiFs6v9HOPF2KEyg1kuOgn5eeFdVspV05ODBVQss-ey5glc8AmneLy"
) )
return t.NewViaMake("bc", version, t.NewPatchedSource( return t.NewPackage("bc", version, pkg.NewHTTPGetTar(
"bc", version, pkg.NewHTTPGetTar(
nil, "https://ftpmirror.gnu.org/gnu/bc/bc-"+version+".tar.gz", nil, "https://ftpmirror.gnu.org/gnu/bc/bc-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), false, ), &PackageAttr{
), &MakeAttr{ // source expected to be writable
Writable: true, Writable: true,
}, Chmod: true,
t.Load(Perl), }, (*MakeHelper)(nil),
t.Load(Texinfo), Perl,
Texinfo,
) )
} }
func init() { artifactsF[BC] = Toolchain.newBC } func init() { artifactsF[BC] = Toolchain.newBC }
@@ -417,11 +406,11 @@ func (t Toolchain) newLibiconv() pkg.Artifact {
version = "1.18" version = "1.18"
checksum = "iV5q3VxP5VPdJ-X7O5OQI4fGm8VjeYb5viLd1L3eAHg26bbHb2_Qn63XPF3ucVZr" 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", nil, "https://ftpmirror.gnu.org/gnu/libiconv/libiconv-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), nil) ), nil, (*MakeHelper)(nil))
} }
func init() { artifactsF[Libiconv] = Toolchain.newLibiconv } func init() { artifactsF[Libiconv] = Toolchain.newLibiconv }
@@ -430,30 +419,29 @@ func (t Toolchain) newTar() pkg.Artifact {
version = "1.35" version = "1.35"
checksum = "zSaoSlVUDW0dSfm4sbL4FrXLFR8U40Fh3zY5DWhR5NCIJ6GjU6Kc4VZo2-ZqpBRA" 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", nil, "https://ftpmirror.gnu.org/gnu/tar/tar-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), nil, &MakeHelper{
Env: []string{
// very expensive
"TARTEST_SKIP_LARGE_FILES=1",
},
Configure: [][2]string{ Configure: [][2]string{
{"disable-acl"}, {"disable-acl"},
{"without-posix-acls"}, {"without-posix-acls"},
{"without-xattrs"}, {"without-xattrs"},
}, },
Check: []string{ Check: []string{
// very expensive
"TARTEST_SKIP_LARGE_FILES=1",
`TESTSUITEFLAGS="-j$(nproc)"`, `TESTSUITEFLAGS="-j$(nproc)"`,
"check", "check",
}, },
}, },
t.Load(Diffutils), Diffutils,
t.Load(Gzip), Gzip,
t.Load(Bzip2), Bzip2,
t.Load(Zstd), Zstd,
) )
} }
func init() { artifactsF[Tar] = Toolchain.newTar } func init() { artifactsF[Tar] = Toolchain.newTar }
@@ -463,12 +451,12 @@ func (t Toolchain) newBinutils() pkg.Artifact {
version = "2.45" version = "2.45"
checksum = "hlLtqqHDmzAT2OQVHaKEd_io2DGFvJkaeS-igBuK8bRRir7LUKGHgHYNkDVKaHTT" 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", nil, "https://ftpmirror.gnu.org/gnu/binutils/binutils-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), nil, ), nil, (*MakeHelper)(nil),
t.Load(Bash), Bash,
) )
} }
func init() { artifactsF[Binutils] = Toolchain.newBinutils } func init() { artifactsF[Binutils] = Toolchain.newBinutils }
@@ -478,13 +466,13 @@ func (t Toolchain) newGMP() pkg.Artifact {
version = "6.3.0" version = "6.3.0"
checksum = "yrgbgEDWKDdMWVHh7gPbVl56-sRtVVhfvv0M_LX7xMUUk_mvZ1QOJEAnt7g4i3k5" 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/"+ nil, "https://gcc.gnu.org/pub/gcc/infrastructure/"+
"gmp-"+version+".tar.bz2", "gmp-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), nil, ), nil, (*MakeHelper)(nil),
t.Load(M4), M4,
) )
} }
func init() { artifactsF[GMP] = Toolchain.newGMP } func init() { artifactsF[GMP] = Toolchain.newGMP }
@@ -494,13 +482,13 @@ func (t Toolchain) newMPFR() pkg.Artifact {
version = "4.2.2" version = "4.2.2"
checksum = "wN3gx0zfIuCn9r3VAn_9bmfvAYILwrRfgBjYSD1IjLqyLrLojNN5vKyQuTE9kA-B" 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/"+ nil, "https://gcc.gnu.org/pub/gcc/infrastructure/"+
"mpfr-"+version+".tar.bz2", "mpfr-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), nil, ), nil, (*MakeHelper)(nil),
t.Load(GMP), GMP,
) )
} }
func init() { artifactsF[MPFR] = Toolchain.newMPFR } func init() { artifactsF[MPFR] = Toolchain.newMPFR }
@@ -510,14 +498,14 @@ func (t Toolchain) newMPC() pkg.Artifact {
version = "1.3.1" version = "1.3.1"
checksum = "o8r8K9R4x7PuRx0-JE3-bC5jZQrtxGV2nkB773aqJ3uaxOiBDCID1gKjPaaDxX4V" 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/"+ nil, "https://gcc.gnu.org/pub/gcc/infrastructure/"+
"mpc-"+version+".tar.gz", "mpc-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), nil, ), nil, (*MakeHelper)(nil),
t.Load(GMP), GMP,
t.Load(MPFR), MPFR,
) )
} }
func init() { artifactsF[MPC] = Toolchain.newMPC } func init() { artifactsF[MPC] = Toolchain.newMPC }
@@ -527,14 +515,14 @@ func (t Toolchain) newGCC() pkg.Artifact {
version = "15.2.0" version = "15.2.0"
checksum = "TXJ5WrbXlGLzy1swghQTr4qxgDCyIZFgJry51XEPTBZ8QYbVmFeB4lZbSMtPJ-a1" checksum = "TXJ5WrbXlGLzy1swghQTr4qxgDCyIZFgJry51XEPTBZ8QYbVmFeB4lZbSMtPJ-a1"
) )
return t.NewViaMake("gcc", version, t.NewPatchedSource( return t.NewPackage("gcc", version, pkg.NewHTTPGetTar(
"gcc", version,
pkg.NewHTTPGetTar(
nil, "https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/"+ nil, "https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/"+
"gcc-"+version+"/gcc-"+version+".tar.gz", "gcc-"+version+"/gcc-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, 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 index 180f5c31d74..44d7ea73f7d 100644
--- a/libgo/sysinfo.c --- a/libgo/sysinfo.c
+++ b/libgo/sysinfo.c +++ b/libgo/sysinfo.c
@@ -550,7 +538,9 @@ index 180f5c31d74..44d7ea73f7d 100644
// The following section introduces explicit references to types and // The following section introduces explicit references to types and
// constants of interest to support bootstrapping libgo using a // 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 index 82e0dcfd074..16151ecad1b 100644
--- a/libgo/go/internal/syscall/unix/at_largefile.go --- a/libgo/go/internal/syscall/unix/at_largefile.go
+++ b/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 #endif
`}), &MakeAttr{ `},
},
ScriptEarly: ` ScriptEarly: `
ln -s system/lib / ln -s system/lib /
ln -s system/lib /work/ 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{ Configure: [][2]string{
{"disable-multilib"}, {"disable-multilib"},
{"with-multilib-list", `""`}, {"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 // well in its current state. That does not matter as long as the
// toolchain it produces passes its own test suite. // toolchain it produces passes its own test suite.
SkipCheck: true, 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), GMP,
t.Load(MPFR), MPFR,
t.Load(MPC), MPC,
t.Load(Zlib), Zlib,
t.Load(Libucontext), Libucontext,
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { artifactsF[gcc] = Toolchain.newGCC } 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 init() { artifactsF[KernelSource] = Toolchain.newKernelSource }
func (t Toolchain) newKernelHeaders() pkg.Artifact { 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, SkipConfigure: true,
SkipCheck: true, SkipCheck: true,
@@ -33,23 +35,15 @@ func (t Toolchain) newKernelHeaders() pkg.Artifact {
"INSTALL_HDR_PATH=/work/system", "INSTALL_HDR_PATH=/work/system",
"headers_install", "headers_install",
}, },
ScriptInstall: "\n", Install: "# headers installed during make",
Flag: TEarly,
}, },
t.Load(Rsync), Rsync,
) )
} }
func init() { artifactsF[KernelHeaders] = Toolchain.newKernelHeaders } func init() { artifactsF[KernelHeaders] = Toolchain.newKernelHeaders }
func (t Toolchain) newKernel() pkg.Artifact { func (t Toolchain) newKernel() pkg.Artifact {
return t.NewViaMake("kernel", kernelVersion, kernelSource, &MakeAttr{ return t.NewPackage("kernel", kernelVersion, kernelSource, &PackageAttr{
OmitDefaults: true,
SkipConfigure: true,
// Build, install, and boot kernel before running kselftest on it.
SkipCheck: true,
Env: []string{ Env: []string{
"PATH=/system/sbin", "PATH=/system/sbin",
}, },
@@ -60,29 +54,6 @@ install -Dm0400 \
install -Dm0500 \ install -Dm0500 \
/usr/src/.installkernel \ /usr/src/.installkernel \
/sbin/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{ Paths: []pkg.ExecPath{
@@ -97,29 +68,61 @@ cp -av "$2" "$4"
cp -av "$3" "$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), Flag: TExclusive,
t.Load(Zlib), }, &MakeHelper{
t.Load(Gzip), OmitDefaults: true,
t.Load(Bzip2), SkipConfigure: true,
t.Load(Zstd),
t.Load(Kmod), // Build, install, and boot kernel before running kselftest on it.
t.Load(Elfutils), SkipCheck: true,
t.Load(OpenSSL),
t.Load(UtilLinux), Make: []string{
t.Load(KernelHeaders), "-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 } func init() { artifactsF[Kernel] = Toolchain.newKernel }

View File

@@ -7,17 +7,15 @@ func (t Toolchain) newLibcap() pkg.Artifact {
version = "2.77" version = "2.77"
checksum = "2GOTFU4cl2QoS7Dv5wh0c9-hxsQwIzMB9Y_gfAo5xKHqcM13fiHt1RbPkfemzjmB" checksum = "2GOTFU4cl2QoS7Dv5wh0c9-hxsQwIzMB9Y_gfAo5xKHqcM13fiHt1RbPkfemzjmB"
) )
return t.NewViaMake("libcap", version, t.NewPatchedSource( return t.NewPackage("libcap", version, pkg.NewHTTPGetTar(
"libcap", version, pkg.NewHTTPGetTar(
nil, "https://git.kernel.org/pub/scm/libs/libcap/libcap.git/"+ nil, "https://git.kernel.org/pub/scm/libs/libcap/libcap.git/"+
"snapshot/libcap-"+version+".tar.gz", "snapshot/libcap-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), false, ), &PackageAttr{
), &MakeAttr{ // uses source tree as scratch space
Writable: true, Writable: true,
SkipConfigure: true, Chmod: true,
InPlace: true,
Env: []string{ Env: []string{
"prefix=/system", "prefix=/system",
@@ -25,16 +23,22 @@ func (t Toolchain) newLibcap() pkg.Artifact {
}, },
ScriptEarly: ` ScriptEarly: `
ln -s ../system/bin/bash /bin/ ln -s ../system/bin/bash /bin/
cd /usr/src/libcap
`, `,
}, &MakeHelper{
SkipConfigure: true,
InPlace: true,
Make: []string{ Make: []string{
"CC=cc", "CC=cc",
"all", "all",
}, },
Check: []string{"test"}, Check: []string{
"CC=cc",
"test",
}, },
t.Load(Bash), },
t.Load(Diffutils), Bash,
Diffutils,
) )
} }
func init() { artifactsF[Libcap] = Toolchain.newLibcap } func init() { artifactsF[Libcap] = Toolchain.newLibcap }

View File

@@ -11,18 +11,14 @@ func (t Toolchain) newLibexpat() pkg.Artifact {
version = "2.7.3" version = "2.7.3"
checksum = "GmkoD23nRi9cMT0cgG1XRMrZWD82UcOMzkkvP1gkwSFWCBgeSXMuoLpa8-v8kxW-" 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/"+ nil, "https://github.com/libexpat/libexpat/releases/download/"+
"R_"+strings.ReplaceAll(version, ".", "_")+"/"+ "R_"+strings.ReplaceAll(version, ".", "_")+"/"+
"expat-"+version+".tar.bz2", "expat-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), &MakeAttr{ ), nil, (*MakeHelper)(nil),
Configure: [][2]string{ Bash,
{"enable-static"},
},
},
t.Load(Bash),
) )
} }
func init() { artifactsF[Libexpat] = Toolchain.newLibexpat } func init() { artifactsF[Libexpat] = Toolchain.newLibexpat }

View File

@@ -7,17 +7,13 @@ func (t Toolchain) newLibffi() pkg.Artifact {
version = "3.4.5" version = "3.4.5"
checksum = "apIJzypF4rDudeRoI_n3K7N-zCeBLTbQlHRn9NSAZqdLAWA80mR0gXPTpHsL7oMl" 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/"+ nil, "https://github.com/libffi/libffi/releases/download/"+
"v"+version+"/libffi-"+version+".tar.gz", "v"+version+"/libffi-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), nil, (*MakeHelper)(nil),
Configure: [][2]string{ KernelHeaders,
{"enable-static"},
},
},
t.Load(KernelHeaders),
) )
} }
func init() { artifactsF[Libffi] = Toolchain.newLibffi } func init() { artifactsF[Libffi] = Toolchain.newLibffi }

View File

@@ -7,21 +7,20 @@ func (t Toolchain) newLibgd() pkg.Artifact {
version = "2.3.3" version = "2.3.3"
checksum = "8T-sh1_FJT9K9aajgxzh8ot6vWIF-xxjcKAHvTak9MgGUcsFfzP8cAvvv44u2r36" 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/"+ nil, "https://github.com/libgd/libgd/releases/download/"+
"gd-"+version+"/libgd-"+version+".tar.gz", "gd-"+version+"/libgd-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
OmitDefaults: true,
Env: []string{ Env: []string{
"TMPDIR=/dev/shm/gd", "TMPDIR=/dev/shm/gd",
}, },
ScriptEarly: ` ScriptEarly: `
mkdir /dev/shm/gd mkdir /dev/shm/gd
`, `,
}, }, (*MakeHelper)(nil),
t.Load(Zlib), Zlib,
) )
} }
func init() { artifactsF[Libgd] = Toolchain.newLibgd } func init() { artifactsF[Libgd] = Toolchain.newLibgd }

View File

@@ -7,22 +7,20 @@ func (t Toolchain) newLibpsl() pkg.Artifact {
version = "0.21.5" version = "0.21.5"
checksum = "XjfxSzh7peG2Vg4vJlL8z4JZJLcXqbuP6pLWkrGCmRxlnYUFTKNBqWGHCxEOlCad" checksum = "XjfxSzh7peG2Vg4vJlL8z4JZJLcXqbuP6pLWkrGCmRxlnYUFTKNBqWGHCxEOlCad"
) )
return t.NewViaMake("libpsl", version, pkg.NewHTTPGetTar( return t.NewPackage("libpsl", version, pkg.NewHTTPGetTar(
nil, "https://github.com/rockdaboot/libpsl/releases/download/"+ nil, "https://github.com/rockdaboot/libpsl/releases/download/"+
version+"/libpsl-"+version+".tar.gz", version+"/libpsl-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Writable: true, Writable: true,
ScriptEarly: ` ScriptEarly: `
cd /usr/src/libpsl
test_disable() { chmod +w "$2" && echo "$1" > "$2"; } test_disable() { chmod +w "$2" && echo "$1" > "$2"; }
test_disable 'int main(){return 0;}' tests/test-is-public-builtin.c test_disable 'int main(){return 0;}' tests/test-is-public-builtin.c
`, `,
}, }, (*MakeHelper)(nil),
t.Load(Python), Python,
) )
} }
func init() { artifactsF[Libpsl] = Toolchain.newLibpsl } func init() { artifactsF[Libpsl] = Toolchain.newLibpsl }

View File

@@ -9,22 +9,21 @@ func (t Toolchain) newLibseccomp() pkg.Artifact {
version = "2.6.0" version = "2.6.0"
checksum = "mMu-iR71guPjFbb31u-YexBaanKE_nYPjPux-vuBiPfS_0kbwJdfCGlkofaUm-EY" checksum = "mMu-iR71guPjFbb31u-YexBaanKE_nYPjPux-vuBiPfS_0kbwJdfCGlkofaUm-EY"
) )
return t.NewViaMake("libseccomp", version, pkg.NewHTTPGetTar( return t.NewPackage("libseccomp", version, pkg.NewHTTPGetTar(
nil, nil, "https://github.com/seccomp/libseccomp/releases/download/"+
"https://github.com/seccomp/libseccomp/releases/download/"+
"v"+version+"/libseccomp-"+version+".tar.gz", "v"+version+"/libseccomp-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
ScriptEarly: ` ScriptEarly: `
ln -s ../system/bin/bash /bin/ ln -s ../system/bin/bash /bin/
`, `,
}, }, (*MakeHelper)(nil),
t.Load(Bash), Bash,
t.Load(Diffutils), Diffutils,
t.Load(Gperf), Gperf,
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { artifactsF[Libseccomp] = Toolchain.newLibseccomp } func init() { artifactsF[Libseccomp] = Toolchain.newLibseccomp }

View File

@@ -7,24 +7,24 @@ func (t Toolchain) newLibucontext() pkg.Artifact {
version = "1.5" version = "1.5"
checksum = "Ggk7FMmDNBdCx1Z9PcNWWW6LSpjGYssn2vU0GK5BLXJYw7ZxZbA2m_eSgT9TFnIG" checksum = "Ggk7FMmDNBdCx1Z9PcNWWW6LSpjGYssn2vU0GK5BLXJYw7ZxZbA2m_eSgT9TFnIG"
) )
return t.NewViaMake("libucontext", version, t.NewPatchedSource( return t.NewPackage("libucontext", version, pkg.NewHTTPGetTar(
"libucontext", version, pkg.NewHTTPGetTar(
nil, "https://github.com/kaniini/libucontext/archive/refs/tags/"+ nil, "https://github.com/kaniini/libucontext/archive/refs/tags/"+
"libucontext-"+version+".tar.gz", "libucontext-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), false, ), &PackageAttr{
), &MakeAttr{ // uses source tree as scratch space
Writable: true, Writable: true,
Chmod: true,
EnterSource: true,
}, &MakeHelper{
OmitDefaults: true, OmitDefaults: true,
SkipConfigure: true, SkipConfigure: true,
InPlace: true, InPlace: true,
ScriptEarly: "cd /usr/src/libucontext",
Make: []string{ Make: []string{
"ARCH=" + linuxArch(), "ARCH=" + linuxArch(),
}, },
ScriptInstall: "make prefix=/system DESTDIR=/work install", Install: "make prefix=/system DESTDIR=/work install",
}) })
} }
func init() { artifactsF[Libucontext] = Toolchain.newLibucontext } func init() { artifactsF[Libucontext] = Toolchain.newLibucontext }

View File

@@ -11,21 +11,16 @@ func (t Toolchain) newLibxml2() pkg.Artifact {
version = "2.15.1" version = "2.15.1"
checksum = "pYzAR3cNrEHezhEMirgiq7jbboLzwMj5GD7SQp0jhSIMdgoU4G9oU9Gxun3zzUIU" checksum = "pYzAR3cNrEHezhEMirgiq7jbboLzwMj5GD7SQp0jhSIMdgoU4G9oU9Gxun3zzUIU"
) )
return t.NewViaMake("libxml2", version, pkg.NewHTTPGet( return t.NewPackage("libxml2", version, pkg.NewHTTPGet(
nil, "https://download.gnome.org/sources/libxml2/"+ nil, "https://download.gnome.org/sources/libxml2/"+
strings.Join(strings.Split(version, ".")[:2], ".")+ strings.Join(strings.Split(version, ".")[:2], ".")+
"/libxml2-"+version+".tar.xz", "/libxml2-"+version+".tar.xz",
mustDecode(checksum), mustDecode(checksum),
), &MakeAttr{ ), &PackageAttr{
ScriptEarly: ` SourceKind: sourceTarXZ,
cd /usr/src/ }, (*MakeHelper)(nil),
tar xf libxml2.tar.xz Diffutils,
mv libxml2-` + version + ` libxml2 XZ,
`,
SourceSuffix: ".tar.xz",
},
t.Load(Diffutils),
t.Load(XZ),
) )
} }
func init() { artifactsF[Libxml2] = Toolchain.newLibxml2 } func init() { artifactsF[Libxml2] = Toolchain.newLibxml2 }

View File

@@ -11,27 +11,22 @@ func (t Toolchain) newLibxslt() pkg.Artifact {
version = "1.1.45" version = "1.1.45"
checksum = "vw72UbREQnA3YDYuZ9-93hDr9BYCaKV6oh_U4Kt4n1Js_na4E-nFj-ksZnZ0kvEK" 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/"+ nil, "https://download.gnome.org/sources/libxslt/"+
strings.Join(strings.Split(version, ".")[:2], ".")+ strings.Join(strings.Split(version, ".")[:2], ".")+
"/libxslt-"+version+".tar.xz", "/libxslt-"+version+".tar.xz",
mustDecode(checksum), mustDecode(checksum),
), &MakeAttr{ ), &PackageAttr{
ScriptEarly: ` SourceKind: sourceTarXZ,
cd /usr/src/ }, &MakeHelper{
tar xf libxslt.tar.xz
mv libxslt-` + version + ` libxslt
`,
SourceSuffix: ".tar.xz",
// python libxml2 cyclic dependency // python libxml2 cyclic dependency
SkipCheck: true, SkipCheck: true,
}, },
t.Load(XZ), XZ,
t.Load(Python), Python,
t.Load(PkgConfig), PkgConfig,
t.Load(Libxml2), Libxml2,
) )
} }
func init() { artifactsF[Libxslt] = Toolchain.newLibxslt } func init() { artifactsF[Libxslt] = Toolchain.newLibxslt }

View File

@@ -28,29 +28,21 @@ cd "$(mktemp -d)"
} }
func init() { artifactsF[Make] = Toolchain.newMake } func init() { artifactsF[Make] = Toolchain.newMake }
// MakeAttr holds the project-specific attributes that will be applied to a new // MakeHelper is the [Make] build system helper.
// [pkg.Artifact] compiled via [Make]. type MakeHelper struct {
type MakeAttr struct {
// Mount the source tree writable.
Writable bool
// Do not include default extras. // Do not include default extras.
OmitDefaults bool OmitDefaults bool
// Dependencies not provided by stage0.
NonStage0 []pkg.Artifact
// Additional environment variables. // Command to generate the build system.
Env []string Generate string
// Runs before configure. // Runs before make.
ScriptEarly string ScriptMakeEarly string
// Runs after configure.
ScriptConfigured string
// Runs before check. // Runs before check.
ScriptCheckEarly string ScriptCheckEarly string
// Runs after install. // Runs after install.
Script string Script string
// Remain in working directory set up during ScriptEarly. // Remain in current directory.
InPlace bool InPlace bool
// Whether to skip running the configure script. // Whether to skip running the configure script.
@@ -59,40 +51,76 @@ type MakeAttr struct {
ConfigureName string ConfigureName string
// Flags passed to the configure script. // Flags passed to the configure script.
Configure [][2]string Configure [][2]string
// Extra make targets.
Make []string
// Host target triple, zero value is equivalent to the Rosa OS triple. // Host target triple, zero value is equivalent to the Rosa OS triple.
Host string Host string
// Target triple, zero value is equivalent to the Rosa OS triple. // Target triple, zero value is equivalent to the Rosa OS triple.
Build string Build string
// Extra make targets.
Make []string
// Whether to skip the check target. // Whether to skip the check target.
SkipCheck bool SkipCheck bool
// Name of the check target, zero value is equivalent to "check". // Name of the check target, zero value is equivalent to "check".
Check []string Check []string
// Replaces the default install command. // Replaces the default install command.
ScriptInstall string Install 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
} }
// NewViaMake returns a [pkg.Artifact] for compiling and installing via [Make]. var _ Helper = new(MakeHelper)
func (t Toolchain) NewViaMake(
name, version string, // name returns its arguments joined with '-'.
source pkg.Artifact, func (*MakeHelper) name(name, version string) string {
attr *MakeAttr, return name + "-" + version
extra ...pkg.Artifact,
) pkg.Artifact {
if name == "" || version == "" {
panic("names must be non-empty")
} }
// 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 { 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 var configure string
@@ -159,8 +187,7 @@ make \
scriptMake += "\n" scriptMake += "\n"
if !attr.SkipCheck { if !attr.SkipCheck {
scriptMake += attr.ScriptCheckEarly + ` scriptMake += attr.ScriptCheckEarly + `make \
make \
"-j$(nproc)" \ "-j$(nproc)" \
` `
if len(attr.Check) > 0 { if len(attr.Check) > 0 {
@@ -171,52 +198,15 @@ make \
scriptMake += "\n" scriptMake += "\n"
} }
var finalExtra []pkg.Artifact scriptInstall := attr.Install
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
if scriptInstall == "" { if scriptInstall == "" {
scriptInstall = "make DESTDIR=/work install" scriptInstall = "make DESTDIR=/work install"
} }
scriptInstall += "\n" scriptInstall += "\n"
return t.New( return configure +
name+"-"+version, attr.ScriptMakeEarly +
attr.Flag,
stage0Concat(t,
attr.NonStage0,
finalExtra...,
),
nil,
attr.Env,
scriptEarly+
configure+
attr.ScriptConfigured+
scriptMake + scriptMake +
scriptInstall + scriptInstall +
attr.Script, attr.Script
slices.Concat(attr.Paths, []pkg.ExecPath{
pkg.Path(AbsUsrSrc.Append(
name+attr.SourceSuffix,
), attr.Writable, source),
})...,
)
} }

View File

@@ -7,27 +7,24 @@ func (t Toolchain) newMuslFts() pkg.Artifact {
version = "1.2.7" version = "1.2.7"
checksum = "N_p_ZApX3eHt7xoDCw1hLf6XdJOw7ZSx7xPvpvAP0knG2zgU0zeN5w8tt5Pg60XJ" 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/"+ nil, "https://github.com/void-linux/musl-fts/archive/refs/tags/"+
"v"+version+".tar.gz", "v"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Writable: true,
Env: []string{ Env: []string{
"CC=cc -fPIC", "CC=cc -fPIC",
}, },
ScriptEarly: ` }, &MakeHelper{
cd /usr/src/musl-fts Generate: "./bootstrap.sh",
./bootstrap.sh
`,
}, },
t.Load(M4), M4,
t.Load(Perl), Perl,
t.Load(Autoconf), Autoconf,
t.Load(Automake), Automake,
t.Load(Libtool), Libtool,
t.Load(PkgConfig), PkgConfig,
) )
} }
func init() { artifactsF[MuslFts] = Toolchain.newMuslFts } func init() { artifactsF[MuslFts] = Toolchain.newMuslFts }

View File

@@ -7,27 +7,24 @@ func (t Toolchain) newMuslObstack() pkg.Artifact {
version = "1.2.3" version = "1.2.3"
checksum = "tVRY_KjIlkkMszcaRlkKdBVQHIXTT_T_TiMxbwErlILXrOBosocg8KklppZhNdCG" 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/"+ nil, "https://github.com/void-linux/musl-obstack/archive/refs/tags/"+
"v"+version+".tar.gz", "v"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Writable: true,
Env: []string{ Env: []string{
"CC=cc -fPIC", "CC=cc -fPIC",
}, },
ScriptEarly: ` }, &MakeHelper{
cd /usr/src/musl-obstack Generate: "./bootstrap.sh",
./bootstrap.sh
`,
}, },
t.Load(M4), M4,
t.Load(Perl), Perl,
t.Load(Autoconf), Autoconf,
t.Load(Automake), Automake,
t.Load(Libtool), Libtool,
t.Load(PkgConfig), PkgConfig,
) )
} }
func init() { artifactsF[MuslObstack] = Toolchain.newMuslObstack } func init() { artifactsF[MuslObstack] = Toolchain.newMuslObstack }

View File

@@ -13,11 +13,9 @@ func (t Toolchain) newMusl(
) )
name := "musl" name := "musl"
attr := MakeAttr{ helper := MakeHelper{
OmitDefaults: true, OmitDefaults: true,
SkipCheck: true, SkipCheck: true,
Env: env,
Script: ` Script: `
mkdir -p /work/system/bin mkdir -p /work/system/bin
COMPAT_LINKER_NAME="ld-musl-` + linuxArch() + `.so.1" COMPAT_LINKER_NAME="ld-musl-` + linuxArch() + `.so.1"
@@ -31,20 +29,28 @@ rmdir -v /work/lib
if headers { if headers {
name += "-headers" name += "-headers"
attr.ScriptInstall = "make DESTDIR=/work install-headers" helper.Make = []string{
attr.Script = "" "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(
// expected to be writable in copies
"musl", version, pkg.NewHTTPGetTar(
nil, "https://musl.libc.org/releases/musl-"+version+".tar.gz", nil, "https://musl.libc.org/releases/musl-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), false, ), &PackageAttr{
), &attr, stage0Concat(t, extra, NonStage0: extra,
t.Load(Coreutils),
)...) // expected to be writable in copies
Chmod: true,
Env: env,
}, &helper,
Coreutils,
)
} }
func init() { func init() {
artifactsF[Musl] = func(t Toolchain) pkg.Artifact { artifactsF[Musl] = func(t Toolchain) pkg.Artifact {

View File

@@ -7,11 +7,11 @@ func (t Toolchain) newNcurses() pkg.Artifact {
version = "6.6" version = "6.6"
checksum = "XvWp4xi6hR_hH8XUoGY26L_pqBSDapJYulhzZqPuR0KNklqypqNc1yNXU-nOjf5w" 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", nil, "https://ftpmirror.gnu.org/gnu/ncurses/ncurses-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), nil, &MakeHelper{
// "tests" are actual demo programs, not a test suite. // "tests" are actual demo programs, not a test suite.
SkipCheck: true, SkipCheck: true,
@@ -20,7 +20,7 @@ func (t Toolchain) newNcurses() pkg.Artifact {
{"enable-pc-files"}, {"enable-pc-files"},
}, },
}, },
t.Load(PkgConfig), PkgConfig,
) )
} }
func init() { artifactsF[Ncurses] = Toolchain.newNcurses } func init() { artifactsF[Ncurses] = Toolchain.newNcurses }

View File

@@ -7,17 +7,18 @@ func (t Toolchain) newOpenSSL() pkg.Artifact {
version = "3.5.5" version = "3.5.5"
checksum = "I2Hp1LxcTR8j4G6LFEQMVy6EJH-Na1byI9Ti-ThBot6EMLNRnjGXGq-WXrim3Fkz" 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/"+ nil, "https://github.com/openssl/openssl/releases/download/"+
"openssl-"+version+"/openssl-"+version+".tar.gz", "openssl-"+version+"/openssl-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
OmitDefaults: true,
Env: []string{ Env: []string{
"CC=cc", "CC=cc",
}, },
}, &MakeHelper{
OmitDefaults: true,
ConfigureName: "/usr/src/openssl/Configure", ConfigureName: "/usr/src/openssl/Configure",
Configure: [][2]string{ Configure: [][2]string{
{"prefix", "/system"}, {"prefix", "/system"},
@@ -29,11 +30,11 @@ func (t Toolchain) newOpenSSL() pkg.Artifact {
"test", "test",
}, },
}, },
t.Load(Perl), Perl,
t.Load(Coreutils), Coreutils,
t.Load(Zlib), Zlib,
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { artifactsF[OpenSSL] = Toolchain.newOpenSSL } func init() { artifactsF[OpenSSL] = Toolchain.newOpenSSL }

View File

@@ -9,17 +9,17 @@ func (t Toolchain) newPCRE2() pkg.Artifact {
version = "10.43" version = "10.43"
checksum = "iyNw-POPSJwiZVJfUK5qACA6q2uMzP-84WieimN_CskaEkuw5fRnRTZhEv6ry2Yo" 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/"+ nil, "https://github.com/PCRE2Project/pcre2/releases/download/"+
"pcre2-"+version+"/pcre2-"+version+".tar.bz2", "pcre2-"+version+"/pcre2-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), &MakeAttr{ ), &PackageAttr{
ScriptEarly: ` ScriptEarly: `
# RunGrepTest expects /bin/echo # RunGrepTest expects /bin/echo
ln -s ../system/bin/toybox /bin/echo ln -s ../system/bin/toybox /bin/echo
`, `,
}, &MakeHelper{
Configure: [][2]string{ Configure: [][2]string{
{"enable-jit"}, {"enable-jit"},
{"enable-pcre2-8"}, {"enable-pcre2-8"},
@@ -27,7 +27,7 @@ ln -s ../system/bin/toybox /bin/echo
{"enable-pcre2-32"}, {"enable-pcre2-32"},
}, },
}, },
t.Load(Diffutils), Diffutils,
) )
} }
func init() { artifactsF[PCRE2] = Toolchain.newPCRE2 } func init() { artifactsF[PCRE2] = Toolchain.newPCRE2 }

View File

@@ -11,23 +11,25 @@ func (t Toolchain) newPerl() pkg.Artifact {
version = "5.42.0" version = "5.42.0"
checksum = "2KR7Jbpk-ZVn1a30LQRwbgUvg2AXlPQZfzrqCr31qD5-yEsTwVQ_W76eZH-EdxM9" checksum = "2KR7Jbpk-ZVn1a30LQRwbgUvg2AXlPQZfzrqCr31qD5-yEsTwVQ_W76eZH-EdxM9"
) )
return t.NewViaMake("perl", version, t.NewPatchedSource( return t.NewPackage("perl", version, pkg.NewHTTPGetTar(
"perl", version, pkg.NewHTTPGetTar(
nil, "https://www.cpan.org/src/5.0/perl-"+version+".tar.gz", nil, "https://www.cpan.org/src/5.0/perl-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), false, ), &PackageAttr{
), &MakeAttr{ // uses source tree as scratch space
Writable: true, Writable: true,
OmitDefaults: true, Chmod: true,
InPlace: true,
ScriptEarly: ` ScriptEarly: `
cd /usr/src/perl
echo 'print STDOUT "1..0 # Skip broken test\n";' > ext/Pod-Html/t/htmldir3.t 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 rm -f /system/bin/ps # perl does not like toybox ps
`, `,
Flag: TEarly,
}, &MakeHelper{
OmitDefaults: true,
InPlace: true,
ConfigureName: "./Configure", ConfigureName: "./Configure",
Configure: [][2]string{ Configure: [][2]string{
{"-des"}, {"-des"},
@@ -42,9 +44,7 @@ rm -f /system/bin/ps # perl does not like toybox ps
"TEST_JOBS=256", "TEST_JOBS=256",
"test_harness", "test_harness",
}, },
ScriptInstall: "./perl -Ilib -I. installperl --destdir=/work", Install: "./perl -Ilib -I. installperl --destdir=/work",
Flag: TEarly,
}) })
} }
func init() { artifactsF[Perl] = Toolchain.newPerl } func init() { artifactsF[Perl] = Toolchain.newPerl }
@@ -91,25 +91,26 @@ func (t Toolchain) newViaPerlMakeMaker(
name, version string, name, version string,
source pkg.Artifact, source pkg.Artifact,
patches [][2]string, patches [][2]string,
extra ...pkg.Artifact, extra ...PArtifact,
) pkg.Artifact { ) pkg.Artifact {
return t.NewViaMake("perl-"+name, version, t.NewPatchedSource( return t.NewPackage("perl-"+name, version, source, &PackageAttr{
"perl-"+name, version, source, false, patches..., // uses source tree as scratch space
), &MakeAttr{
Writable: true, Writable: true,
Chmod: true,
EnterSource: true,
Patches: patches,
}, &MakeHelper{
OmitDefaults: true, OmitDefaults: true,
InPlace: true, InPlace: true,
ScriptEarly: `
cd /usr/src/perl-` + name + `
`,
ConfigureName: "perl Makefile.PL", ConfigureName: "perl Makefile.PL",
Configure: [][2]string{ Configure: [][2]string{
{"PREFIX", "/system"}, {"PREFIX", "/system"},
}, },
Check: []string{"test"}, Check: []string{"test"},
}, slices.Concat(extra, []pkg.Artifact{ }, slices.Concat(extra, []PArtifact{
t.Load(Perl), Perl,
})...) })...)
} }
@@ -194,7 +195,7 @@ func (t Toolchain) newPerlTextWrapI18N() pkg.Artifact {
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), nil, ), nil,
t.Load(PerlTextCharWidth), PerlTextCharWidth,
) )
} }
func init() { artifactsF[PerlTextWrapI18N] = Toolchain.newPerlTextWrapI18N } func init() { artifactsF[PerlTextWrapI18N] = Toolchain.newPerlTextWrapI18N }
@@ -224,7 +225,7 @@ func (t Toolchain) newPerlUnicodeGCString() pkg.Artifact {
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), nil, ), nil,
t.Load(PerlMIMECharset), PerlMIMECharset,
) )
} }
func init() { artifactsF[PerlUnicodeGCString] = Toolchain.newPerlUnicodeGCString } func init() { artifactsF[PerlUnicodeGCString] = Toolchain.newPerlUnicodeGCString }

View File

@@ -7,13 +7,12 @@ func (t Toolchain) newPkgConfig() pkg.Artifact {
version = "0.29.2" version = "0.29.2"
checksum = "gi7yAvkwo20Inys1tHbeYZ3Wjdm5VPkrnO0Q6_QZPCAwa1zrA8F4a63cdZDd-717" checksum = "gi7yAvkwo20Inys1tHbeYZ3Wjdm5VPkrnO0Q6_QZPCAwa1zrA8F4a63cdZDd-717"
) )
return t.NewViaMake("pkg-config", version, pkg.NewHTTPGetTar( return t.NewPackage("pkg-config", version, pkg.NewHTTPGetTar(
nil, nil, "https://pkgconfig.freedesktop.org/releases/"+
"https://pkgconfig.freedesktop.org/releases/"+
"pkg-config-"+version+".tar.gz", "pkg-config-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), nil, &MakeHelper{
Configure: [][2]string{ Configure: [][2]string{
{"CFLAGS", "'-Wno-int-conversion'"}, {"CFLAGS", "'-Wno-int-conversion'"},
{"with-internal-glib"}, {"with-internal-glib"},

View File

@@ -7,31 +7,26 @@ func (t Toolchain) newProcps() pkg.Artifact {
version = "4.0.6" version = "4.0.6"
checksum = "pl_fZLvDlv6iZTkm8l_tHFpzTDVFGCiSJEs3eu0zAX6u36AV36P_En8K7JPScRWM" checksum = "pl_fZLvDlv6iZTkm8l_tHFpzTDVFGCiSJEs3eu0zAX6u36AV36P_En8K7JPScRWM"
) )
return t.NewViaMake("procps", version, t.NewPatchedSource( return t.NewPackage("procps", version, pkg.NewHTTPGetTar(
"procps", version, pkg.NewHTTPGetTar(
nil, "https://gitlab.com/procps-ng/procps/-/archive/"+ nil, "https://gitlab.com/procps-ng/procps/-/archive/"+
"v"+version+"/procps-v"+version+".tar.bz2", "v"+version+"/procps-v"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), false, ), nil, &MakeHelper{
), &MakeAttr{ Generate: "./autogen.sh",
Writable: true,
ScriptEarly: `
cd /usr/src/procps
./autogen.sh
`,
Configure: [][2]string{ Configure: [][2]string{
{"without-ncurses"}, {"without-ncurses"},
}, },
}, },
t.Load(M4), M4,
t.Load(Perl), Perl,
t.Load(Autoconf), Autoconf,
t.Load(Automake), Automake,
t.Load(Gettext), Gettext,
t.Load(Libtool), Libtool,
t.Load(Gzip),
t.Load(PkgConfig), Gzip,
PkgConfig,
) )
} }
func init() { artifactsF[Procps] = Toolchain.newProcps } func init() { artifactsF[Procps] = Toolchain.newProcps }

View File

@@ -12,14 +12,15 @@ func (t Toolchain) newPython() pkg.Artifact {
version = "3.14.2" version = "3.14.2"
checksum = "7nZunVMGj0viB-CnxpcRego2C90X5wFsMTgsoewd5z-KSZY2zLuqaBwG-14zmKys" 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+ nil, "https://www.python.org/ftp/python/"+version+
"/Python-"+version+".tgz", "/Python-"+version+".tgz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), false), &MakeAttr{ ), &PackageAttr{
// test_synopsis_sourceless assumes this is writable and checks __pycache__ // test_synopsis_sourceless assumes this is writable and checks __pycache__
Writable: true, Writable: true,
Chmod: true,
Env: []string{ Env: []string{
"EXTRATESTOPTS=-j0 -x " + strings.Join([]string{ "EXTRATESTOPTS=-j0 -x " + strings.Join([]string{
@@ -48,15 +49,16 @@ func (t Toolchain) newPython() pkg.Artifact {
"LDFLAGS=-Wl,--dynamic-linker=/system/lib/" + "LDFLAGS=-Wl,--dynamic-linker=/system/lib/" +
"ld-musl-" + linuxArch() + ".so.1", "ld-musl-" + linuxArch() + ".so.1",
}, },
}, &MakeHelper{
Check: []string{"test"}, Check: []string{"test"},
}, },
t.Load(Zlib), Zlib,
t.Load(Libffi), Libffi,
t.Load(PkgConfig), PkgConfig,
t.Load(OpenSSL), OpenSSL,
t.Load(Bzip2), Bzip2,
t.Load(XZ), XZ,
) )
} }
func init() { artifactsF[Python] = Toolchain.newPython } func init() { artifactsF[Python] = Toolchain.newPython }

View File

@@ -7,12 +7,13 @@ func (t Toolchain) newQEMU() pkg.Artifact {
version = "10.2.1" version = "10.2.1"
checksum = "rjLTSgHJd3X3Vgpxrsus_ZZiaYLiNix1YhcHaGbLd_odYixwZjCcAIt8CVQPJGdZ" checksum = "rjLTSgHJd3X3Vgpxrsus_ZZiaYLiNix1YhcHaGbLd_odYixwZjCcAIt8CVQPJGdZ"
) )
return t.NewViaMake("qemu", version, t.NewPatchedSource( return t.NewPackage("qemu", version, pkg.NewHTTPGetTar(
"qemu", version, pkg.NewHTTPGetTar(
nil, "https://download.qemu.org/qemu-"+version+".tar.bz2", nil, "https://download.qemu.org/qemu-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, 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 index b731af0ad9..b5cbed4801 100644
--- a/tests/qtest/netdev-socket.c --- a/tests/qtest/netdev-socket.c
+++ b/tests/qtest/netdev-socket.c +++ b/tests/qtest/netdev-socket.c
@@ -35,26 +36,28 @@ index b731af0ad9..b5cbed4801 100644
#endif #endif
} }
`}, `},
), &MakeAttr{ },
// configure script uses source as scratch space // configure script uses source as scratch space
Writable: true, Writable: true,
Chmod: true,
ScriptEarly: ` ScriptEarly: `
# tests expect /var/tmp/ to be available # tests expect /var/tmp/ to be available
mkdir -p /var/tmp/ mkdir -p /var/tmp/
# https://gitlab.com/qemu-project/qemu/-/issues/3145 # https://gitlab.com/qemu-project/qemu/-/issues/3145
(cd /usr/src/qemu && sed -i \ sed -i \
's,Input/output error,I/O error,g' \ 's,Input/output error,I/O error,g' \
tests/qemu-iotests/[0-9][0-9][0-9]* \ tests/qemu-iotests/[0-9][0-9][0-9]* \
tests/qemu-iotests/tests/copy-before-write \ 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 cat << EOF > tests/qemu-iotests/150
#!/bin/sh #!/bin/sh
_notrun 'appears to spuriously fail on zfs' _notrun 'appears to spuriously fail on zfs'
EOF EOF
)
`, `,
}, &MakeHelper{
Configure: [][2]string{ Configure: [][2]string{
{"disable-download"}, {"disable-download"},
{"disable-docs"}, {"disable-docs"},
@@ -68,28 +71,28 @@ EOF
"ppc64-softmmu"}, "ppc64-softmmu"},
}, },
}, },
t.Load(Bash), Bash,
t.Load(Python), Python,
t.Load(Ninja), Ninja,
t.Load(Bzip2), Bzip2,
t.Load(PkgConfig), PkgConfig,
t.Load(Diffutils), Diffutils,
t.Load(OpenSSL), OpenSSL,
t.Load(Bzip2), Bzip2,
t.Load(XZ), XZ,
t.Load(Flex), Flex,
t.Load(Bison), Bison,
t.Load(M4), M4,
t.Load(PCRE2), PCRE2,
t.Load(Libffi), Libffi,
t.Load(Zlib), Zlib,
t.Load(GLib), GLib,
t.Load(Zstd), Zstd,
t.Load(DTC), DTC,
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { artifactsF[QEMU] = Toolchain.newQEMU } func init() { artifactsF[QEMU] = Toolchain.newQEMU }

View File

@@ -7,12 +7,14 @@ func (t Toolchain) newRsync() pkg.Artifact {
version = "3.4.1" version = "3.4.1"
checksum = "VBlTsBWd9z3r2-ex7GkWeWxkUc5OrlgDzikAC0pK7ufTjAJ0MbmC_N04oSVTGPiv" 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/"+ nil, "https://download.samba.org/pub/rsync/src/"+
"rsync-"+version+".tar.gz", "rsync-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
Flag: TEarly,
}, &MakeHelper{
Configure: [][2]string{ Configure: [][2]string{
{"disable-openssl"}, {"disable-openssl"},
{"disable-xxhash"}, {"disable-xxhash"},
@@ -22,10 +24,6 @@ func (t Toolchain) newRsync() pkg.Artifact {
// circular dependency // circular dependency
SkipCheck: true, SkipCheck: true,
})
Flag: TEarly,
},
t.Load(Gawk),
)
} }
func init() { artifactsF[Rsync] = Toolchain.newRsync } func init() { artifactsF[Rsync] = Toolchain.newRsync }

View File

@@ -7,17 +7,16 @@ func (t Toolchain) newSquashfsTools() pkg.Artifact {
version = "4.7.4" version = "4.7.4"
checksum = "pG0E_wkRJFS6bvPYF-hTKZT-cWnvo5BbIzCDZrJZVQDgJOx2Vc3ZfNSEV7Di7cSW" checksum = "pG0E_wkRJFS6bvPYF-hTKZT-cWnvo5BbIzCDZrJZVQDgJOx2Vc3ZfNSEV7Di7cSW"
) )
return t.NewViaMake("squashfs-tools", version, t.NewPatchedSource( return t.NewPackage("squashfs-tools", version, pkg.NewHTTPGetTar(
"squashfs-tools", version, pkg.NewHTTPGetTar(
nil, "https://github.com/plougher/squashfs-tools/releases/"+ nil, "https://github.com/plougher/squashfs-tools/releases/"+
"download/"+version+"/squashfs-tools-"+version+".tar.gz", "download/"+version+"/squashfs-tools-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), false, ), &PackageAttr{
), &MakeAttr{ // uses source tree as scratch space
Writable: true, Writable: true,
SkipConfigure: true, Chmod: true,
InPlace: true, EnterSource: true,
Env: []string{ Env: []string{
"CONFIG=1", "CONFIG=1",
@@ -27,15 +26,19 @@ func (t Toolchain) newSquashfsTools() pkg.Artifact {
"COMP_DEFAULT=zstd", "COMP_DEFAULT=zstd",
"USE_PREBUILT_MANPAGES=y", "USE_PREBUILT_MANPAGES=y",
}, },
ScriptEarly: "cd /usr/src/squashfs-tools/squashfs-tools", }, &MakeHelper{
SkipCheck: true,
ScriptInstall: "make INSTALL_PREFIX=/work/system install",
},
t.Load(Sed),
t.Load(Zstd), SkipConfigure: true,
t.Load(Gzip), InPlace: true,
t.Load(Zlib),
SkipCheck: true,
Install: "make INSTALL_PREFIX=/work/system install",
},
Sed,
Zstd,
Gzip,
Zlib,
) )
} }
func init() { artifactsF[SquashfsTools] = Toolchain.newSquashfsTools } func init() { artifactsF[SquashfsTools] = Toolchain.newSquashfsTools }

View File

@@ -12,14 +12,12 @@ func (t Toolchain) newNSS() pkg.Artifact {
version0 = "4_38_2" version0 = "4_38_2"
checksum0 = "25x2uJeQnOHIiq_zj17b4sYqKgeoU8-IsySUptoPcdHZ52PohFZfGuIisBreWzx0" checksum0 = "25x2uJeQnOHIiq_zj17b4sYqKgeoU8-IsySUptoPcdHZ52PohFZfGuIisBreWzx0"
) )
return t.NewViaMake("nss", version, t.NewPatchedSource( return t.NewPackage("nss", version, pkg.NewHTTPGetTar(
"nss", version, pkg.NewHTTPGetTar(
nil, "https://github.com/nss-dev/nss/archive/refs/tags/"+ nil, "https://github.com/nss-dev/nss/archive/refs/tags/"+
"NSS_"+version+"_RTM.tar.gz", "NSS_"+version+"_RTM.tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), false, ), &PackageAttr{
), &MakeAttr{
Paths: []pkg.ExecPath{ Paths: []pkg.ExecPath{
pkg.Path(AbsUsrSrc.Append("nspr.zip"), false, pkg.NewHTTPGet( pkg.Path(AbsUsrSrc.Append("nspr.zip"), false, pkg.NewHTTPGet(
nil, "https://hg-edge.mozilla.org/projects/nspr/archive/"+ 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, Writable: true,
OmitDefaults: true, Chmod: true,
SkipConfigure: true,
InPlace: true,
ScriptEarly: ` ScriptEarly: `
unzip /usr/src/nspr.zip -d /usr/src unzip /usr/src/nspr.zip -d /usr/src
mv '/usr/src/nspr-NSPR_` + version0 + `_RTM' /usr/src/nspr mv '/usr/src/nspr-NSPR_` + version0 + `_RTM' /usr/src/nspr
cd /usr/src/nss
`, `,
}, &MakeHelper{
OmitDefaults: true,
SkipConfigure: true,
InPlace: true,
SkipCheck: true, SkipCheck: true,
Make: []string{ Make: []string{
"CCC=clang++", "CCC=clang++",
@@ -46,7 +47,7 @@ cd /usr/src/nss
"USE_64=1", "USE_64=1",
"nss_build_all", "nss_build_all",
}, },
ScriptInstall: ` Install: `
mkdir -p /work/system/nss mkdir -p /work/system/nss
cp -r \ cp -r \
/usr/src/dist/. \ /usr/src/dist/. \
@@ -54,14 +55,14 @@ cp -r \
/work/system/nss /work/system/nss
`, `,
}, },
t.Load(Perl), Perl,
t.Load(Python), Python,
t.Load(Unzip), Unzip,
t.Load(Gawk), Gawk,
t.Load(Coreutils), Coreutils,
t.Load(Zlib), Zlib,
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { artifactsF[NSS] = Toolchain.newNSS } 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" version = "0.8.13"
checksum = "rZ1V1ATDte2WeQZanxLVoiRGdfPXhMlEo5-exX-e-ml8cGn9qOv0ABEUVZpX3wTI" checksum = "rZ1V1ATDte2WeQZanxLVoiRGdfPXhMlEo5-exX-e-ml8cGn9qOv0ABEUVZpX3wTI"
) )
return t.NewViaMake("toybox"+suffix, version, pkg.NewHTTPGetTar( return t.NewPackage("toybox"+suffix, version, pkg.NewHTTPGetTar(
nil, nil, "https://landley.net/toybox/downloads/toybox-"+version+".tar.gz",
"https://landley.net/toybox/downloads/toybox-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
// uses source tree as scratch space
Writable: true, Writable: true,
EnterSource: true,
Flag: TEarly,
}, &MakeHelper{
OmitDefaults: true, OmitDefaults: true,
InPlace: true, InPlace: true,
SkipConfigure: true, SkipConfigure: true,
ScriptEarly: ` ScriptMakeEarly: `
LDFLAGS="${LDFLAGS:-''} -static" LDFLAGS="${LDFLAGS:-''} -static"
chmod +w /bin/ chmod +w /bin/
ln -rs "$(which bash)" /bin/ || true ln -rs "$(which bash)" /bin/ || true
cd /usr/src/toybox` + suffix + `
chmod +w kconfig tests chmod +w kconfig tests
rm \ rm \
tests/du.test \ tests/du.test \
@@ -37,25 +40,22 @@ make defconfig
sed -i \ sed -i \
's/^CONFIG_TOYBOX_ZHELP=y$/CONFIG_TOYBOX_ZHELP=0/' \ 's/^CONFIG_TOYBOX_ZHELP=y$/CONFIG_TOYBOX_ZHELP=0/' \
.config .config
`, ` + script,
ScriptConfigured: script,
SkipCheck: t.isStage0(), SkipCheck: t.isStage0(),
Check: []string{ Check: []string{
"USER=cure", "USER=cure",
"tests", "tests",
}, },
ScriptInstall: "PREFIX=/work/system/bin make install_flat", Install: "PREFIX=/work/system/bin make install_flat",
Script: ` Script: `
mkdir -p /work/usr/bin mkdir -p /work/usr/bin
ln -s ../../system/bin/env /work/usr/bin ln -s ../../system/bin/env /work/usr/bin
`, `,
Flag: TEarly,
}, },
t.Load(Bash), Bash,
t.Load(Gzip), Gzip,
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { func init() {

View File

@@ -11,17 +11,17 @@ func (t Toolchain) newUtilLinux() pkg.Artifact {
version = "2.41.3" version = "2.41.3"
checksum = "gPTd5JJ2ho_Rd0qainuogcLiiWwKSXEZPXN3yCCRl0m0KBgMaqwFuMjYgu9z8zCH" 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/"+ nil, "https://www.kernel.org/pub/linux/utils/util-linux/"+
"v"+strings.Join(strings.SplitN(version, ".", 3)[:2], ".")+ "v"+strings.Join(strings.SplitN(version, ".", 3)[:2], ".")+
"/util-linux-"+version+".tar.gz", "/util-linux-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
ScriptEarly: ` ScriptEarly: `
ln -s ../system/bin/bash /bin/ ln -s ../system/bin/bash /bin/
`, `,
}, &MakeHelper{
Configure: [][2]string{ Configure: [][2]string{
{"disable-use-tty-group"}, {"disable-use-tty-group"},
{"disable-makeinstall-setuid"}, {"disable-makeinstall-setuid"},
@@ -41,9 +41,9 @@ ln -s ../system/bin/bash /bin/
// Don't execute on production system! // Don't execute on production system!
SkipCheck: true, SkipCheck: true,
}, },
t.Load(Bash), Bash,
t.Load(KernelHeaders), KernelHeaders,
) )
} }
func init() { artifactsF[UtilLinux] = Toolchain.newUtilLinux } func init() { artifactsF[UtilLinux] = Toolchain.newUtilLinux }

View File

@@ -7,12 +7,12 @@ func (t Toolchain) newUtilMacros() pkg.Artifact {
version = "1.17" version = "1.17"
checksum = "vYPO4Qq3B_WGcsBjG0-lfwZ6DZ7ayyrOLqfDrVOgTDcyLChuMGOAAVAa_UXLu5tD" 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/"+ nil, "https://www.x.org/releases/X11R7.7/src/util/"+
"util-macros-"+version+".tar.bz2", "util-macros-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), nil) ), nil, (*MakeHelper)(nil))
} }
func init() { artifactsF[utilMacros] = Toolchain.newUtilMacros } func init() { artifactsF[utilMacros] = Toolchain.newUtilMacros }
@@ -21,27 +21,22 @@ func (t Toolchain) newXproto() pkg.Artifact {
version = "7.0.23" version = "7.0.23"
checksum = "goxwWxV0jZ_3pNczXFltZWHAhq92x-aEreUGyp5Ns8dBOoOmgbpeNIu1nv0Zx07z" 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/"+ nil, "https://www.x.org/releases/X11R7.7/src/proto/"+
"xproto-"+version+".tar.bz2", "xproto-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), &MakeAttr{ ), nil, &MakeHelper{
Writable: true,
// ancient configure script // ancient configure script
ScriptEarly: ` Generate: "autoreconf -if",
cd /usr/src/xproto
autoreconf -if
`,
}, },
t.Load(M4), M4,
t.Load(Perl), Perl,
t.Load(Autoconf), Autoconf,
t.Load(Automake), Automake,
t.Load(PkgConfig), PkgConfig,
t.Load(utilMacros), utilMacros,
) )
} }
func init() { artifactsF[Xproto] = Toolchain.newXproto } func init() { artifactsF[Xproto] = Toolchain.newXproto }
@@ -51,29 +46,24 @@ func (t Toolchain) newLibXau() pkg.Artifact {
version = "1.0.7" version = "1.0.7"
checksum = "bm768RoZZnHRe9VjNU1Dw3BhfE60DyS9D_bgSR-JLkEEyUWT_Hb_lQripxrXto8j" 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/"+ nil, "https://www.x.org/releases/X11R7.7/src/lib/"+
"libXau-"+version+".tar.bz2", "libXau-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), &MakeAttr{ ), nil, &MakeHelper{
Writable: true,
// ancient configure script // ancient configure script
ScriptEarly: ` Generate: "autoreconf -if",
cd /usr/src/libXau
autoreconf -if
`,
}, },
t.Load(M4), M4,
t.Load(Perl), Perl,
t.Load(Autoconf), Autoconf,
t.Load(Automake), Automake,
t.Load(Libtool), Libtool,
t.Load(PkgConfig), PkgConfig,
t.Load(utilMacros), utilMacros,
t.Load(Xproto), Xproto,
) )
} }
func init() { artifactsF[LibXau] = Toolchain.newLibXau } func init() { artifactsF[LibXau] = Toolchain.newLibXau }

View File

@@ -7,12 +7,12 @@ func (t Toolchain) newXCBProto() pkg.Artifact {
version = "1.17.0" version = "1.17.0"
checksum = "_NtbKaJ_iyT7XiJz25mXQ7y-niTzE8sHPvLXZPcqtNoV_-vTzqkezJ8Hp2U1enCv" 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", nil, "https://xcb.freedesktop.org/dist/xcb-proto-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), nil, ), nil, (*MakeHelper)(nil),
t.Load(Python), Python,
) )
} }
func init() { artifactsF[XCBProto] = Toolchain.newXCBProto } func init() { artifactsF[XCBProto] = Toolchain.newXCBProto }
@@ -22,17 +22,17 @@ func (t Toolchain) newXCB() pkg.Artifact {
version = "1.17.0" version = "1.17.0"
checksum = "hjjsc79LpWM_hZjNWbDDS6qRQUXREjjekS6UbUsDq-RR1_AjgNDxhRvZf-1_kzDd" 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", nil, "https://xcb.freedesktop.org/dist/libxcb-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), nil, ), nil, (*MakeHelper)(nil),
t.Load(Python), Python,
t.Load(PkgConfig), PkgConfig,
t.Load(XCBProto), XCBProto,
t.Load(Xproto), Xproto,
t.Load(LibXau), LibXau,
) )
} }
func init() { artifactsF[XCB] = Toolchain.newXCB } func init() { artifactsF[XCB] = Toolchain.newXCB }

View File

@@ -7,13 +7,13 @@ func (t Toolchain) newXZ() pkg.Artifact {
version = "5.8.2" version = "5.8.2"
checksum = "rXT-XCp9R2q6cXqJ5qenp0cmGPfiENQiU3BWtUVeVgArfRmSsISeUJgvCR3zI0a0" 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/"+ nil, "https://github.com/tukaani-project/xz/releases/download/"+
"v"+version+"/xz-"+version+".tar.bz2", "v"+version+"/xz-"+version+".tar.bz2",
mustDecode(checksum), mustDecode(checksum),
pkg.TarBzip2, pkg.TarBzip2,
), nil, ), nil, (*MakeHelper)(nil),
t.Load(Diffutils), Diffutils,
) )
} }
func init() { artifactsF[XZ] = Toolchain.newXZ } func init() { artifactsF[XZ] = Toolchain.newXZ }

View File

@@ -7,15 +7,17 @@ func (t Toolchain) newZlib() pkg.Artifact {
version = "1.3.1" version = "1.3.1"
checksum = "E-eIpNzE8oJ5DsqH4UuA_0GDKuQF5csqI8ooDx2w7Vx-woJ2mb-YtSbEyIMN44mH" 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", nil, "https://zlib.net/zlib-"+version+".tar.gz",
mustDecode(checksum), mustDecode(checksum),
pkg.TarGzip, pkg.TarGzip,
), &MakeAttr{ ), &PackageAttr{
OmitDefaults: true,
Env: []string{ Env: []string{
"CC=clang -fPIC", "CC=clang -fPIC",
}, },
}, &MakeHelper{
OmitDefaults: true,
Host: `""`, Host: `""`,
Build: `""`, Build: `""`,
}) })