diff --git a/internal/rosa/acl.go b/internal/rosa/acl.go index 7369896..f7eaf1c 100644 --- a/internal/rosa/acl.go +++ b/internal/rosa/acl.go @@ -7,22 +7,7 @@ func (t Toolchain) newAttr() pkg.Artifact { version = "2.5.2" checksum = "YWEphrz6vg1sUMmHHVr1CRo53pFXRhq_pjN-AlG8UgwZK1y6m7zuDhxqJhD0SV0l" ) - return t.New("attr-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Perl), - t.Load(Gawk), - t.Load(Coreutils), - }, nil, nil, ` -ln -s ../../system/bin/perl /usr/bin - -cd "$(mktemp -d)" -/usr/src/attr/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" \ - --enable-static -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("attr"), true, t.NewPatchedSource( + return t.NewViaMake("attr", version, t.NewPatchedSource( "attr", version, pkg.NewHTTPGetTar( nil, "https://download.savannah.nongnu.org/releases/attr/"+ "attr-"+version+".tar.gz", @@ -67,7 +52,16 @@ index 6ce2f9b..e9bde92 100644 $ setfattr -n user. -v value f > setfattr: f: Invalid argument `}, - ))) + ), &MakeAttr{ + ScriptEarly: ` +ln -s ../../system/bin/perl /usr/bin +`, + Configure: [][2]string{ + {"enable-static"}, + }, + }, + t.Load(Perl), + ) } func init() { artifactsF[Attr] = Toolchain.newAttr } @@ -83,8 +77,6 @@ func (t Toolchain) newACL() pkg.Artifact { mustDecode(checksum), pkg.TarGzip, ), &MakeAttr{ - Writable: true, - Configure: [][2]string{ {"enable-static"}, }, diff --git a/internal/rosa/git.go b/internal/rosa/git.go index e29e203..2364422 100644 --- a/internal/rosa/git.go +++ b/internal/rosa/git.go @@ -9,29 +9,64 @@ func (t Toolchain) newGit() pkg.Artifact { version = "2.52.0" checksum = "uH3J1HAN_c6PfGNJd2OBwW4zo36n71wmkdvityYnrh8Ak0D1IifiAvEWz9Vi9DmS" ) - return t.New("git-"+version, 0, stage3Concat(t, []pkg.Artifact{}, - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), - t.Load(Perl), - t.Load(M4), - t.Load(Autoconf), - t.Load(Gettext), - - t.Load(Zlib), - ), nil, nil, ` -cd /usr/src/git -make configure -./configure --prefix=/system -make "-j$(nproc)" all -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("git"), true, t.NewPatchedSource( + return t.NewViaMake("git", version, t.NewPatchedSource( "git", version, pkg.NewHTTPGetTar( nil, "https://www.kernel.org/pub/software/scm/git/"+ "git-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, ), false, - ))) + ), &MakeAttr{ + // uses source tree as scratch space + Writable: true, + InPlace: true, + + // test suite in subdirectory + SkipCheck: true, + + Make: []string{"all"}, + ScriptEarly: ` +cd /usr/src/git + +make configure +`, + Script: ` +ln -s ../../system/bin/perl /usr/bin/ || true + +function disable_test { + local test=$1 pattern=$2 + if [ $# -eq 1 ]; then + rm "t/${test}.sh" + else + sed -i "t/${test}.sh" \ + -e "/^\s*test_expect_.*$pattern/,/^\s*' *\$/{s/^/: #/}" + fi +} + +disable_test t5319-multi-pack-index +disable_test t1305-config-include +disable_test t3900-i18n-commit +disable_test t3507-cherry-pick-conflict +disable_test t4201-shortlog +disable_test t5303-pack-corruption-resilience +disable_test t4301-merge-tree-write-tree +disable_test t8005-blame-i18n +disable_test t9350-fast-export +disable_test t9300-fast-import + +make \ + -C t \ + GIT_PROVE_OPTS="--jobs 32 --failures" \ + prove +`, + }, + t.Load(Perl), + t.Load(Diffutils), + t.Load(M4), + t.Load(Autoconf), + t.Load(Gettext), + + t.Load(Zlib), + ) } func init() { artifactsF[Git] = Toolchain.newGit } diff --git a/internal/rosa/gnu.go b/internal/rosa/gnu.go index 6bb7004..a3a4277 100644 --- a/internal/rosa/gnu.go +++ b/internal/rosa/gnu.go @@ -1,6 +1,11 @@ package rosa -import "hakurei.app/internal/pkg" +import ( + "runtime" + "strconv" + + "hakurei.app/internal/pkg" +) func (t Toolchain) newM4() pkg.Artifact { const ( @@ -43,30 +48,21 @@ func (t Toolchain) newAutoconf() pkg.Artifact { version = "2.72" checksum = "-c5blYkC-xLDer3TWEqJTyh1RLbOd1c5dnRLKsDnIrg_wWNOLBpaqMY8FvmUFJ33" ) - return t.New("autoconf-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(M4), - t.Load(Perl), - t.Load(Bash), - t.Load(Gawk), - t.Load(Coreutils), - t.Load(Diffutils), - }, nil, nil, ` -cd "$(mktemp -d)" -/usr/src/autoconf/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make \ - "-j$(nproc)" \ - TESTSUITEFLAGS="-j$(nproc)" \ - check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("autoconf"), false, pkg.NewHTTPGetTar( + return t.NewViaMake("autoconf", version, pkg.NewHTTPGetTar( nil, "https://ftp.gnu.org/gnu/autoconf/autoconf-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, - ))) + ), &MakeAttr{ + Env: []string{ + "TESTSUITEFLAGS=" + strconv.Itoa(runtime.NumCPU()), + }, + }, + t.Load(M4), + t.Load(Perl), + t.Load(Bash), + t.Load(Diffutils), + ) } func init() { artifactsF[Autoconf] = Toolchain.newAutoconf } @@ -178,8 +174,6 @@ func (t Toolchain) newBash() pkg.Artifact { mustDecode(checksum), pkg.TarGzip, ), &MakeAttr{ - Writable: true, - Script: "ln -s bash /work/system/bin/sh\n", Configure: [][2]string{ {"without-bash-malloc"}, @@ -227,9 +221,7 @@ func (t Toolchain) newGperf() pkg.Artifact { nil, "https://ftp.gnu.org/pub/gnu/gperf/gperf-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, - ), &MakeAttr{ - Writable: true, - }, + ), nil, t.Load(Diffutils), ) } diff --git a/internal/rosa/libexpat.go b/internal/rosa/libexpat.go index 2139e44..3e094f7 100644 --- a/internal/rosa/libexpat.go +++ b/internal/rosa/libexpat.go @@ -11,25 +11,18 @@ func (t Toolchain) newLibexpat() pkg.Artifact { version = "2.7.3" checksum = "GmkoD23nRi9cMT0cgG1XRMrZWD82UcOMzkkvP1gkwSFWCBgeSXMuoLpa8-v8kxW-" ) - return t.New("libexpat-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Bash), - t.Load(Gawk), - t.Load(Coreutils), - }, nil, nil, ` -cd "$(mktemp -d)" -/usr/src/libexpat/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" \ - --enable-static -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("libexpat"), false, pkg.NewHTTPGetTar( + return t.NewViaMake("libexpat", version, pkg.NewHTTPGetTar( nil, "https://github.com/libexpat/libexpat/releases/download/"+ "R_"+strings.ReplaceAll(version, ".", "_")+"/"+ "expat-"+version+".tar.bz2", mustDecode(checksum), pkg.TarBzip2, - ))) + ), &MakeAttr{ + Configure: [][2]string{ + {"enable-static"}, + }, + }, + t.Load(Bash), + ) } func init() { artifactsF[Libexpat] = Toolchain.newLibexpat } diff --git a/internal/rosa/libgd.go b/internal/rosa/libgd.go index f61e99b..6f2991d 100644 --- a/internal/rosa/libgd.go +++ b/internal/rosa/libgd.go @@ -13,8 +13,6 @@ func (t Toolchain) newLibgd() pkg.Artifact { mustDecode(checksum), pkg.TarGzip, ), &MakeAttr{ - Writable: true, - OmitDefaults: true, Env: []string{ "TMPDIR=/dev/shm/gd", diff --git a/internal/rosa/libseccomp.go b/internal/rosa/libseccomp.go index a2e5ce1..b9b3136 100644 --- a/internal/rosa/libseccomp.go +++ b/internal/rosa/libseccomp.go @@ -9,31 +9,25 @@ func (t Toolchain) newLibseccomp() pkg.Artifact { version = "2.6.0" checksum = "mMu-iR71guPjFbb31u-YexBaanKE_nYPjPux-vuBiPfS_0kbwJdfCGlkofaUm-EY" ) - return t.New("libseccomp-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Bash), - t.Load(Gawk), - t.Load(Coreutils), - t.Load(Diffutils), - t.Load(Gperf), - - t.Load(KernelHeaders), - }, nil, nil, ` -ln -s ../system/bin/bash /bin/bash - -cd "$(mktemp -d)" -/usr/src/libseccomp/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" \ - --enable-static -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("libseccomp"), false, pkg.NewHTTPGetTar( + return t.NewViaMake("libseccomp", version, pkg.NewHTTPGetTar( nil, "https://github.com/seccomp/libseccomp/releases/download/"+ "v"+version+"/libseccomp-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, - ))) + ), &MakeAttr{ + ScriptEarly: ` +ln -s ../system/bin/bash /bin/ +`, + Configure: [][2]string{ + {"enable-static"}, + }, + }, + t.Load(Bash), + t.Load(Diffutils), + t.Load(Gperf), + + t.Load(KernelHeaders), + ) } func init() { artifactsF[Libseccomp] = Toolchain.newLibseccomp } diff --git a/internal/rosa/libxml2.go b/internal/rosa/libxml2.go index e2dcc4b..12013e5 100644 --- a/internal/rosa/libxml2.go +++ b/internal/rosa/libxml2.go @@ -11,29 +11,24 @@ func (t Toolchain) newLibxml2() pkg.Artifact { version = "2.15.1" checksum = "pYzAR3cNrEHezhEMirgiq7jbboLzwMj5GD7SQp0jhSIMdgoU4G9oU9Gxun3zzUIU" ) - return t.New("libxml2-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), - t.Load(Diffutils), - t.Load(XZ), - }, nil, nil, ` -cd /usr/src/ -tar xf libxml2.tar.xz -mv libxml2-`+version+` libxml2 - -cd "$(mktemp -d)" -/usr/src/libxml2/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" \ - --enable-static -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("libxml2.tar.xz"), false, pkg.NewHTTPGet( + return t.NewViaMake("libxml2", version, pkg.NewHTTPGet( nil, "https://download.gnome.org/sources/libxml2/"+ strings.Join(strings.Split(version, ".")[:2], ".")+ "/libxml2-"+version+".tar.xz", mustDecode(checksum), - ))) + ), &MakeAttr{ + ScriptEarly: ` +cd /usr/src/ +tar xf libxml2.tar.xz +mv libxml2-` + version + ` libxml2 +`, + Configure: [][2]string{ + {"enable-static"}, + }, + SourceSuffix: ".tar.xz", + }, + t.Load(Diffutils), + t.Load(XZ), + ) } func init() { artifactsF[Libxml2] = Toolchain.newLibxml2 } diff --git a/internal/rosa/make.go b/internal/rosa/make.go index 7d7418f..f47be4e 100644 --- a/internal/rosa/make.go +++ b/internal/rosa/make.go @@ -21,8 +21,7 @@ cd "$(mktemp -d)" ./build.sh ./make DESTDIR=/work install check `, pkg.Path(AbsUsrSrc.Append("make"), false, pkg.NewHTTPGetTar( - nil, - "https://ftp.gnu.org/gnu/make/make-"+version+".tar.gz", + nil, "https://ftp.gnu.org/gnu/make/make-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, ))) @@ -37,6 +36,8 @@ type MakeAttr struct { // Do not include default extras. OmitDefaults bool + // Dependencies not provided by stage3. + NonStage3 []pkg.Artifact // Additional environment variables. Env []string @@ -45,12 +46,19 @@ type MakeAttr struct { // Runs after cmake. Script string + // Remain in working directory set up during ScriptEarly. + InPlace bool + // Flags passed to the configure script. Configure [][2]string + // Extra make targets. + Make []string // Target triple, zero value is equivalent to the Rosa OS triple. Build string // Whether to skip the check target. SkipCheck bool + // Name of the check target, zero value is equivalent to "check". + CheckName string // Suffix appended to the source pathname. SourceSuffix string @@ -101,30 +109,50 @@ func (t Toolchain) NewViaMake( ) } - defaults := []pkg.Artifact{ + var buildFlag string + if attr.Build != `""` { + buildFlag = ` \ + --build=` + build + } + + makeTargets := make([]string, 1, 2+len(attr.Make)) + if !attr.SkipCheck { + if attr.CheckName == "" { + makeTargets = append(makeTargets, "check") + } else { + makeTargets = append(makeTargets, attr.CheckName) + } + } + makeTargets = append(makeTargets, attr.Make...) + if len(makeTargets) == 1 { + makeTargets = nil + } + + finalExtra := []pkg.Artifact{ t.Load(Make), } if attr.OmitDefaults || attr.Flag&TEarly == 0 { - defaults = append(defaults, + finalExtra = append(finalExtra, t.Load(Gawk), t.Load(Coreutils), ) } + finalExtra = append(finalExtra, extra...) - var makeSuffix string - if !attr.SkipCheck { - makeSuffix += " check" + scriptEarly := attr.ScriptEarly + if !attr.InPlace { + scriptEarly += "\ncd \"$(mktemp -d)\"" + } else if scriptEarly == "" { + panic("cannot remain in root") } return t.New(name+"-"+version, attr.Flag, stage3Concat(t, - defaults, - extra..., - ), nil, attr.Env, attr.ScriptEarly+` -cd "$(mktemp -d)" + attr.NonStage3, + finalExtra..., + ), nil, attr.Env, scriptEarly+` /usr/src/`+name+`/configure \ - --prefix=/system \ - --build=`+build+configureFlags+` -make "-j$(nproc)"`+makeSuffix+` + --prefix=/system`+buildFlag+configureFlags+` +make "-j$(nproc)"`+strings.Join(makeTargets, " ")+` make DESTDIR=/work install `+attr.Script, pkg.Path(AbsUsrSrc.Append( name+attr.SourceSuffix, diff --git a/internal/rosa/mksh.go b/internal/rosa/mksh.go index 6e9d00a..ffef8e5 100644 --- a/internal/rosa/mksh.go +++ b/internal/rosa/mksh.go @@ -8,7 +8,6 @@ func (t Toolchain) newMksh() pkg.Artifact { checksum = "0Zj-k4nXEu3IuJY4lvwD2OrC2t27GdZj8SPy4DoaeuBRH1padWb7oREpYgwY8JNq" ) return t.New("mksh-"+version, 0, stage3Concat(t, []pkg.Artifact{}, - t.Load(Make), t.Load(Perl), t.Load(Coreutils), ), nil, []string{ diff --git a/internal/rosa/pkg-config.go b/internal/rosa/pkg-config.go index 28a42dc..c5c0814 100644 --- a/internal/rosa/pkg-config.go +++ b/internal/rosa/pkg-config.go @@ -14,8 +14,6 @@ func (t Toolchain) newPkgConfig() pkg.Artifact { mustDecode(checksum), pkg.TarGzip, ), &MakeAttr{ - Writable: true, - Configure: [][2]string{ {"CFLAGS", "'-Wno-int-conversion'"}, {"with-internal-glib"}, diff --git a/internal/rosa/python.go b/internal/rosa/python.go index 4aca971..81cf9b4 100644 --- a/internal/rosa/python.go +++ b/internal/rosa/python.go @@ -12,57 +12,52 @@ func (t Toolchain) newPython() pkg.Artifact { version = "3.14.2" checksum = "7nZunVMGj0viB-CnxpcRego2C90X5wFsMTgsoewd5z-KSZY2zLuqaBwG-14zmKys" ) - skipTests := []string{ - // requires internet access (http://www.pythontest.net/) - "test_asyncio", - "test_socket", - "test_urllib2", - "test_urllibnet", - "test_urllib2net", + return t.NewViaMake("python", version, t.NewPatchedSource("python", version, pkg.NewHTTPGetTar( + nil, "https://www.python.org/ftp/python/"+version+ + "/Python-"+version+".tgz", + mustDecode(checksum), + pkg.TarGzip, + ), false), &MakeAttr{ + // test_synopsis_sourceless assumes this is writable and checks __pycache__ + Writable: true, - // makes assumptions about uid_map/gid_map - "test_os", - "test_subprocess", + Env: []string{ + "EXTRATESTOPTS=-j0 -x " + strings.Join([]string{ + // requires internet access (http://www.pythontest.net/) + "test_asyncio", + "test_socket", + "test_urllib2", + "test_urllibnet", + "test_urllib2net", - // somehow picks up mtime of source code - "test_zipfile", + // makes assumptions about uid_map/gid_map + "test_os", + "test_subprocess", - // requires gcc - "test_ctypes", + // somehow picks up mtime of source code + "test_zipfile", - // breaks on llvm - "test_dbm_gnu", - } - return t.New("python-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), + // requires gcc + "test_ctypes", + // breaks on llvm + "test_dbm_gnu", + }, " -x "), + + // _ctypes appears to infer something from the linker name + "LDFLAGS=-Wl,--dynamic-linker=/system/lib/" + + "ld-musl-" + linuxArch() + ".so.1", + }, + + ScriptEarly: ` +export HOME="$(mktemp -d)" +`, + + CheckName: "test", + }, t.Load(Zlib), t.Load(Libffi), - }, nil, []string{ - "EXTRATESTOPTS=-j0 -x " + strings.Join(skipTests, " -x "), - - // _ctypes appears to infer something from the linker name - "LDFLAGS=-Wl,--dynamic-linker=/system/lib/" + - "ld-musl-" + linuxArch() + ".so.1", - }, ` -export HOME="$(mktemp -d)" -cd "$(mktemp -d)" -/usr/src/python/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" -make "-j$(nproc)" -make test -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("python"), true, - // test_synopsis_sourceless assumes this is writable and checks __pycache__ - t.NewPatchedSource("python", version, pkg.NewHTTPGetTar( - nil, "https://www.python.org/ftp/python/"+version+ - "/Python-"+version+".tgz", - mustDecode(checksum), - pkg.TarGzip, - ), false))) + ) } func init() { artifactsF[Python] = Toolchain.newPython } diff --git a/internal/rosa/rsync.go b/internal/rosa/rsync.go index ee2acec..f854b7b 100644 --- a/internal/rosa/rsync.go +++ b/internal/rosa/rsync.go @@ -7,24 +7,25 @@ func (t Toolchain) newRsync() pkg.Artifact { version = "3.4.1" checksum = "VBlTsBWd9z3r2-ex7GkWeWxkUc5OrlgDzikAC0pK7ufTjAJ0MbmC_N04oSVTGPiv" ) - return t.New("rsync-"+version, TEarly, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - }, nil, nil, ` -cd "$(mktemp -d)" -/usr/src/rsync/configure --prefix=/system \ - --build="${ROSA_TRIPLE}" \ - --disable-openssl \ - --disable-xxhash \ - --disable-zstd \ - --disable-lz4 -make "-j${nproc}" -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("rsync"), false, pkg.NewHTTPGetTar( - nil, - "https://download.samba.org/pub/rsync/src/rsync-"+version+".tar.gz", + return t.NewViaMake("rsync", version, pkg.NewHTTPGetTar( + nil, "https://download.samba.org/pub/rsync/src/"+ + "rsync-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, - ))) + ), &MakeAttr{ + Configure: [][2]string{ + {"disable-openssl"}, + {"disable-xxhash"}, + {"disable-zstd"}, + {"disable-lz4"}, + }, + + // circular dependency + SkipCheck: true, + + Flag: TEarly, + }, + t.Load(Gawk), + ) } func init() { artifactsF[Rsync] = Toolchain.newRsync } diff --git a/internal/rosa/x.go b/internal/rosa/x.go index 19f3ee6..5cf5b06 100644 --- a/internal/rosa/x.go +++ b/internal/rosa/x.go @@ -7,23 +7,17 @@ func (t Toolchain) newXproto() pkg.Artifact { version = "7.0.23" checksum = "goxwWxV0jZ_3pNczXFltZWHAhq92x-aEreUGyp5Ns8dBOoOmgbpeNIu1nv0Zx07z" ) - return t.New("xproto-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), - t.Load(PkgConfig), - }, nil, nil, ` -cd "$(mktemp -d)" -/usr/src/xproto/configure \ - --prefix=/system \ - --enable-static -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("xproto"), true, pkg.NewHTTPGetTar( - nil, "https://www.x.org/releases/X11R7.7/src/proto/xproto-"+version+".tar.bz2", + return t.NewViaMake("xproto", version, pkg.NewHTTPGetTar( + nil, "https://www.x.org/releases/X11R7.7/src/proto/"+ + "xproto-"+version+".tar.bz2", mustDecode(checksum), pkg.TarBzip2, - ))) + ), &MakeAttr{ + // buggy configure script + Build: `""`, + }, + t.Load(PkgConfig), + ) } func init() { artifactsF[Xproto] = Toolchain.newXproto } @@ -32,25 +26,22 @@ func (t Toolchain) newLibXau() pkg.Artifact { version = "1.0.7" checksum = "bm768RoZZnHRe9VjNU1Dw3BhfE60DyS9D_bgSR-JLkEEyUWT_Hb_lQripxrXto8j" ) - return t.New("libXau-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), - t.Load(PkgConfig), - - t.Load(Xproto), - }, nil, nil, ` -cd "$(mktemp -d)" -/usr/src/libXau/configure \ - --prefix=/system \ - --enable-static -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("libXau"), true, pkg.NewHTTPGetTar( + return t.NewViaMake("libXau", version, pkg.NewHTTPGetTar( nil, "https://www.x.org/releases/X11R7.7/src/lib/"+ "libXau-"+version+".tar.bz2", mustDecode(checksum), pkg.TarBzip2, - ))) + ), &MakeAttr{ + Configure: [][2]string{ + {"enable-static"}, + }, + + // buggy configure script + Build: `""`, + }, + t.Load(PkgConfig), + + t.Load(Xproto), + ) } func init() { artifactsF[LibXau] = Toolchain.newLibXau } diff --git a/internal/rosa/xcb.go b/internal/rosa/xcb.go index 3f0e367..b659cf2 100644 --- a/internal/rosa/xcb.go +++ b/internal/rosa/xcb.go @@ -12,8 +12,6 @@ func (t Toolchain) newXCBProto() pkg.Artifact { mustDecode(checksum), pkg.TarGzip, ), &MakeAttr{ - Writable: true, - Configure: [][2]string{ {"enable-static"}, }, @@ -28,28 +26,21 @@ func (t Toolchain) newXCB() pkg.Artifact { version = "1.17.0" checksum = "hjjsc79LpWM_hZjNWbDDS6qRQUXREjjekS6UbUsDq-RR1_AjgNDxhRvZf-1_kzDd" ) - return t.New("xcb-"+version, 0, []pkg.Artifact{ - t.Load(Make), - t.Load(Gawk), - t.Load(Coreutils), + return t.NewViaMake("xcb", version, pkg.NewHTTPGetTar( + nil, "https://xcb.freedesktop.org/dist/libxcb-"+version+".tar.gz", + mustDecode(checksum), + pkg.TarGzip, + ), &MakeAttr{ + Configure: [][2]string{ + {"enable-static"}, + }, + }, t.Load(Python), t.Load(PkgConfig), t.Load(XCBProto), t.Load(Xproto), t.Load(LibXau), - }, nil, nil, ` -cd "$(mktemp -d)" -/usr/src/xcb/configure \ - --prefix=/system \ - --build="${ROSA_TRIPLE}" \ - --enable-static -make "-j$(nproc)" check -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("xcb"), true, pkg.NewHTTPGetTar( - nil, "https://xcb.freedesktop.org/dist/libxcb-"+version+".tar.gz", - mustDecode(checksum), - pkg.TarGzip, - ))) + ) } func init() { artifactsF[XCB] = Toolchain.newXCB } diff --git a/internal/rosa/zlib.go b/internal/rosa/zlib.go index 55346ee..6ebd5a3 100644 --- a/internal/rosa/zlib.go +++ b/internal/rosa/zlib.go @@ -7,19 +7,16 @@ func (t Toolchain) newZlib() pkg.Artifact { version = "1.3.1" checksum = "E-eIpNzE8oJ5DsqH4UuA_0GDKuQF5csqI8ooDx2w7Vx-woJ2mb-YtSbEyIMN44mH" ) - return t.New("zlib-"+version, 0, []pkg.Artifact{ - t.Load(Make), - }, nil, nil, ` -cd "$(mktemp -d)" -CC="clang -fPIC" /usr/src/zlib/configure \ - --prefix /system -make "-j$(nproc)" test -make DESTDIR=/work install -`, pkg.Path(AbsUsrSrc.Append("zlib"), true, - pkg.NewHTTPGetTar( - nil, "https://zlib.net/zlib-"+version+".tar.gz", - mustDecode(checksum), - pkg.TarGzip, - ))) + return t.NewViaMake("zlib", version, pkg.NewHTTPGetTar( + nil, "https://zlib.net/zlib-"+version+".tar.gz", + mustDecode(checksum), + pkg.TarGzip, + ), &MakeAttr{ + OmitDefaults: true, + Env: []string{ + "CC=clang -fPIC", + }, + Build: `""`, + }) } func init() { artifactsF[Zlib] = Toolchain.newZlib }