diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-01-30 00:29:15 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-01-30 00:29:44 +0900 |
| commit | bc3dd6fbb0048bfdbb50f90873c0f7e3f952981a (patch) | |
| tree | 5695198e3a709d40bbff335e73421be636f9efbb /internal | |
| parent | 616ed29edf92fb2d60962058a3e2c545d3b652ea (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.go | 11 | ||||
| -rw-r--r-- | internal/rosa/git.go | 14 | ||||
| -rw-r--r-- | internal/rosa/musl.go | 15 | ||||
| -rw-r--r-- | internal/rosa/ninja.go | 8 | ||||
| -rw-r--r-- | internal/rosa/perl.go | 13 | ||||
| -rw-r--r-- | internal/rosa/python.go | 8 |
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 } |
