aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-31 05:09:17 +0900
committerOphestra <cat@gensokyo.uk>2026-01-31 08:55:33 +0900
commit8b4576bc5f6eaaf703886629f2dfa12ba38b574c (patch)
treef347a2189841297be8c5bc96b02dfc610490b19d
parent29ebc52e26811b0a657bd1978b0c02284822462f (diff)
internal/rosa: migrate to make helper
This migrates artifacts that the helper cannot produce an identical instance of. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--internal/rosa/acl.go30
-rw-r--r--internal/rosa/git.go71
-rw-r--r--internal/rosa/gnu.go44
-rw-r--r--internal/rosa/libexpat.go23
-rw-r--r--internal/rosa/libgd.go2
-rw-r--r--internal/rosa/libseccomp.go36
-rw-r--r--internal/rosa/libxml2.go35
-rw-r--r--internal/rosa/make.go56
-rw-r--r--internal/rosa/mksh.go1
-rw-r--r--internal/rosa/pkg-config.go2
-rw-r--r--internal/rosa/python.go83
-rw-r--r--internal/rosa/rsync.go35
-rw-r--r--internal/rosa/x.go53
-rw-r--r--internal/rosa/xcb.go29
-rw-r--r--internal/rosa/zlib.go25
15 files changed, 262 insertions, 263 deletions
diff --git a/internal/rosa/acl.go b/internal/rosa/acl.go
index 7369896a..f7eaf1cb 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 e29e2032..23644224 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 6bb7004d..a3a42779 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 2139e442..3e094f7b 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 f61e99b0..6f2991d4 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 a2e5ce19..b9b31362 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 e2dcc4b8..12013e52 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 7d7418f7..f47be4eb 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 6e9d00a5..ffef8e53 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 28a42dc0..c5c0814a 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 4aca9713..81cf9b45 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",
- t.Load(Zlib),
- t.Load(Libffi),
- }, nil, []string{
- "EXTRATESTOPTS=-j0 -x " + strings.Join(skipTests, " -x "),
+ // 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",
+ },
- // _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)"
-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)))
+`,
+
+ CheckName: "test",
+ },
+ t.Load(Zlib),
+ t.Load(Libffi),
+ )
}
func init() { artifactsF[Python] = Toolchain.newPython }
diff --git a/internal/rosa/rsync.go b/internal/rosa/rsync.go
index ee2acec3..f854b7b0 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 19f3ee68..5cf5b066 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 3f0e3671..b659cf2e 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 55346ee8..6ebd5a3d 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 }