aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-30 00:29:15 +0900
committerOphestra <cat@gensokyo.uk>2026-01-30 00:29:44 +0900
commitbc3dd6fbb0048bfdbb50f90873c0f7e3f952981a (patch)
tree5695198e3a709d40bbff335e73421be636f9efbb /internal
parent616ed29edf92fb2d60962058a3e2c545d3b652ea (diff)
internal/rosa: chmod via patch helper
This works around the zfs overlay mount overhead and significantly reduces I/O in general. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
-rw-r--r--internal/rosa/cmake.go11
-rw-r--r--internal/rosa/git.go14
-rw-r--r--internal/rosa/musl.go15
-rw-r--r--internal/rosa/ninja.go8
-rw-r--r--internal/rosa/perl.go13
-rw-r--r--internal/rosa/python.go8
6 files changed, 34 insertions, 35 deletions
diff --git a/internal/rosa/cmake.go b/internal/rosa/cmake.go
index b15ec9d5..5dab313d 100644
--- a/internal/rosa/cmake.go
+++ b/internal/rosa/cmake.go
@@ -17,9 +17,6 @@ func (t Toolchain) newCMake() pkg.Artifact {
t.Load(Make),
t.Load(KernelHeaders),
}, nil, nil, `
-# expected to be writable in the copy made during bootstrap
-chmod -R +w /usr/src/cmake/Tests
-
cd "$(mktemp -d)"
/usr/src/cmake/bootstrap \
--prefix=/system \
@@ -28,13 +25,15 @@ cd "$(mktemp -d)"
-DCMAKE_USE_OPENSSL=OFF
make "-j$(nproc)"
make DESTDIR=/work install
-`, pkg.Path(AbsUsrSrc.Append("cmake"), true,
- pkg.NewHTTPGetTar(
+`, pkg.Path(AbsUsrSrc.Append("cmake"), true, t.NewPatchedSource(
+ // expected to be writable in the copy made during bootstrap
+ "cmake", version, pkg.NewHTTPGetTar(
nil, "https://github.com/Kitware/CMake/releases/download/"+
"v"+version+"/cmake-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- )))
+ ), false,
+ )))
}
func init() { artifactsF[CMake] = Toolchain.newCMake }
diff --git a/internal/rosa/git.go b/internal/rosa/git.go
index 6773cb93..e29e2032 100644
--- a/internal/rosa/git.go
+++ b/internal/rosa/git.go
@@ -20,16 +20,18 @@ func (t Toolchain) newGit() pkg.Artifact {
t.Load(Zlib),
), nil, nil, `
-chmod -R +w /usr/src/git && cd /usr/src/git
+cd /usr/src/git
make configure
./configure --prefix=/system
make "-j$(nproc)" all
make DESTDIR=/work install
-`, pkg.Path(AbsUsrSrc.Append("git"), true, pkg.NewHTTPGetTar(
- nil, "https://www.kernel.org/pub/software/scm/git/"+
- "git-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
+`, pkg.Path(AbsUsrSrc.Append("git"), true, t.NewPatchedSource(
+ "git", version, pkg.NewHTTPGetTar(
+ nil, "https://www.kernel.org/pub/software/scm/git/"+
+ "git-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), false,
)))
}
func init() { artifactsF[Git] = Toolchain.newGit }
diff --git a/internal/rosa/musl.go b/internal/rosa/musl.go
index a90c5be3..78487226 100644
--- a/internal/rosa/musl.go
+++ b/internal/rosa/musl.go
@@ -48,18 +48,17 @@ rmdir -v /work/lib
), nil, slices.Concat([]string{
"ROSA_MUSL_TARGET=" + target,
}, attr.Env), `
-# expected to be writable in copies
-chmod -R +w /usr/src/musl/
-
cd "$(mktemp -d)"
/usr/src/musl/configure \
--prefix=/system \
--target="${ROSA_TRIPLE}"
make "-j$(nproc)" DESTDIR=/work "${ROSA_MUSL_TARGET}"
-`+script, pkg.Path(AbsUsrSrc.Append("musl"), true, pkg.NewHTTPGetTar(
- nil,
- "https://musl.libc.org/releases/musl-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
+`+script, pkg.Path(AbsUsrSrc.Append("musl"), false, t.NewPatchedSource(
+ // expected to be writable in copies
+ "musl", version, pkg.NewHTTPGetTar(
+ nil, "https://musl.libc.org/releases/musl-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), false,
)))
}
diff --git a/internal/rosa/ninja.go b/internal/rosa/ninja.go
index 1eee63ef..5b84f8c4 100644
--- a/internal/rosa/ninja.go
+++ b/internal/rosa/ninja.go
@@ -12,7 +12,6 @@ func (t Toolchain) newNinja() pkg.Artifact {
t.Load(Python),
t.Load(Bash),
}, nil, nil, `
-chmod -R +w /usr/src/ninja/
mkdir -p /work/system/bin/ && cd /work/system/bin/
python3 /usr/src/ninja/configure.py \
--bootstrap \
@@ -25,12 +24,13 @@ python3 /usr/src/ninja/configure.py \
"v1.16.0/googletest-1.16.0.tar.gz",
mustDecode("NjLGvSbgPy_B-y-o1hdanlzEzaYeStFcvFGxpYV3KYlhrWWFRcugYhM3ZMzOA9B_"),
pkg.TarGzip,
- )), pkg.Path(AbsUsrSrc.Append("ninja"), true,
- pkg.NewHTTPGetTar(
+ )), pkg.Path(AbsUsrSrc.Append("ninja"), true, t.NewPatchedSource(
+ "ninja", version, pkg.NewHTTPGetTar(
nil, "https://github.com/ninja-build/ninja/archive/refs/tags/"+
"v"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- )))
+ ), false,
+ )))
}
func init() { artifactsF[Ninja] = Toolchain.newNinja }
diff --git a/internal/rosa/perl.go b/internal/rosa/perl.go
index fb912dd9..a4476bbf 100644
--- a/internal/rosa/perl.go
+++ b/internal/rosa/perl.go
@@ -10,7 +10,7 @@ func (t Toolchain) newPerl() pkg.Artifact {
return t.New("perl-"+version, TEarly, []pkg.Artifact{
t.Load(Make),
}, nil, nil, `
-chmod -R +w /usr/src/perl && cd /usr/src/perl
+cd /usr/src/perl
echo 'print STDOUT "1..0 # Skip broken test\n";' > ext/Pod-Html/t/htmldir3.t
rm -f /system/bin/ps # perl does not like toybox ps
@@ -28,11 +28,12 @@ make \
TEST_JOBS=256 \
test_harness
make DESTDIR=/work install
-`, pkg.Path(AbsUsrSrc.Append("perl"), true, pkg.NewHTTPGetTar(
- nil,
- "https://www.cpan.org/src/5.0/perl-"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
+`, pkg.Path(AbsUsrSrc.Append("perl"), true, t.NewPatchedSource(
+ "perl", version, pkg.NewHTTPGetTar(
+ nil, "https://www.cpan.org/src/5.0/perl-"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), false,
)))
}
func init() { artifactsF[Perl] = Toolchain.newPerl }
diff --git a/internal/rosa/python.go b/internal/rosa/python.go
index 2052d48c..4aca9713 100644
--- a/internal/rosa/python.go
+++ b/internal/rosa/python.go
@@ -47,9 +47,6 @@ func (t Toolchain) newPython() pkg.Artifact {
"LDFLAGS=-Wl,--dynamic-linker=/system/lib/" +
"ld-musl-" + linuxArch() + ".so.1",
}, `
-# test_synopsis_sourceless assumes this is writable and checks __pycache__
-chmod -R +w /usr/src/python/
-
export HOME="$(mktemp -d)"
cd "$(mktemp -d)"
/usr/src/python/configure \
@@ -59,12 +56,13 @@ make "-j$(nproc)"
make test
make DESTDIR=/work install
`, pkg.Path(AbsUsrSrc.Append("python"), true,
- pkg.NewHTTPGetTar(
+ // 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 }