3 Commits
Author SHA1 Message Date
cat 7908fb9583 internal/rosa/llvm: exclude runtime symbols
Test / Create distribution (push) Successful in 1m0s
Test / Sandbox (push) Successful in 3m5s
Test / Hakurei (push) Successful in 4m44s
Test / Sandbox (race detector) (push) Successful in 5m55s
Test / ShareFS (push) Successful in 7m22s
Test / Hakurei (race detector) (push) Failing after 20m42s
Test / Flake checks (push) Skipped
These leak by default when static linking, which is considered unacceptable for many libraries.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-07-29 03:00:59 +09:00
cat 95aa7c205c internal/rosa: remove calls to low-level exec helper
Test / Create distribution (push) Successful in 53s
Test / Sandbox (push) Successful in 2m54s
Test / Hakurei (push) Successful in 4m32s
Test / Sandbox (race detector) (push) Successful in 5m48s
Test / Hakurei (race detector) (push) Successful in 6m59s
Test / ShareFS (push) Successful in 7m29s
Test / Flake checks (push) Successful in 1m12s
This method predates the helper infrastructure, it is awkward to use and difficult to maintain for the replacement bootstrap mechanism. This change prepares for its removal.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-07-27 18:24:38 +09:00
cat bd0cc3656f internal/rosa/llvm: statically link libc++
Test / Hakurei (race detector) (push) Successful in 6m54s
Test / Sandbox (push) Successful in 2m53s
Test / Sandbox (race detector) (push) Successful in 5m58s
Test / ShareFS (push) Successful in 7m25s
Test / Create distribution (push) Successful in 53s
Test / Hakurei (push) Successful in 2m51s
Test / Flake checks (push) Successful in 1m9s
This avoids unnecessarily depending on the toolchain.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-07-27 18:15:00 +09:00
4 changed files with 38 additions and 12 deletions
+15 -8
View File
@@ -17,22 +17,29 @@ func (t Toolchain) NewViaGit(
url, rev string,
checksum pkg.Checksum,
) pkg.Artifact {
return t.New(strings.TrimSuffix(
return t.NewPackage(strings.TrimSuffix(
path.Base(url),
".git",
)+"-src-"+path.Base(rev), THostNet, t.Append(nil,
_nssCACert,
_git,
), &checksum, nil, `
)+"-src", path.Base(rev), nil, &PackageAttr{
KnownChecksum: &checksum,
Flag: THostNet,
Paths: []pkg.ExecPath{resolvconf()},
}, &GenericHelper{
Build: `
git \
-c advice.detachedHead=false \
clone \
--depth=1 \
--revision=`+rev+` \
--revision=` + rev + ` \
--shallow-submodules \
--recurse-submodules \
`+url+` \
` + url + ` \
/work
rm -rf /work/.git
`, resolvconf())
`,
},
_nssCACert,
_git,
)
}
+15 -1
View File
@@ -83,9 +83,11 @@ func init() {
{"LIBCXX_ENABLE_STATIC_ABI_LIBRARY", "OFF"},
{"LIBCXX_HAS_MUSL_LIBC", "ON"},
{"LIBCXX_HARDENING_MODE", "fast"},
{"LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY", "ON"},
{"LIBCXXABI_USE_LLVM_UNWINDER", "ON"},
{"LIBCXXABI_ENABLE_STATIC_UNWINDER", "OFF"},
{"LIBCXXABI_ENABLE_STATIC_UNWINDER", "ON"},
{"LIBCXXABI_USE_COMPILER_RT", "ON"},
{"LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY", "ON"},
{"LLVM_INSTALL_BINUTILS_SYMLINKS", "ON"},
{"LLVM_INSTALL_UTILS", "ON"},
{"LLVM_BUILD_LLVM_DYLIB", "ON"},
@@ -138,6 +140,10 @@ func init() {
"CodeGen/PowerPC/ppc-tmmintrin.c",
"CodeGen/PowerPC/ppc-smmintrin.c",
"CodeGenCUDA/amdgpu-alias-undef-symbols.cu",
// clang: deadlocks with LIBCXXABI_ENABLE_STATIC_UNWINDER
"global-value-regex",
"global-hex-value-regex",
"check-globals",
// cxx: fails on musl
"close.dont-get-rid-of-buffer",
"re/re.traits",
@@ -187,6 +193,10 @@ func init() {
"tr",
"awk",
},
ScriptEarly: `
rm -f /system/bin/clang++.cfg
`,
}, &CMakeHelper{
Append: []string{"llvm"},
@@ -196,6 +206,10 @@ ln -s ld.lld /work/system/bin/ld
ln -s clang /work/system/bin/cc
ln -s clang /work/system/bin/cpp
ln -s clang++ /work/system/bin/c++
cat << EOF > /work/system/bin/clang++.cfg
-static-libstdc++
-Wl,--exclude-libs,libunwind.a:libc++.a:libc++experimental.a:libc++abi.a
EOF
`,
// LLVM_LINK_LLVM_DYLIB causes llvm test suite to leak system
+1 -1
View File
@@ -82,7 +82,7 @@ package spirv-llvm-translator {
};
// litArgs emits shell syntax
early = "\nexport LIT_OPTS=" + litArgs {
early = "rm -f /system/bin/clang++.cfg\nexport LIT_OPTS=" + litArgs {
verbose = true;
skipChecks = arch {
+7 -2
View File
@@ -363,9 +363,14 @@ function apply {
buf.WriteString("'\n")
}
}
return t.New(name+"-src", 0, t.Append(nil,
return t.NewPackage(name+"-src", Unversioned, nil, &PackageAttr{
Paths: paths,
}, &GenericHelper{
Build: buf.String(),
},
_patch,
), nil, nil, buf.String(), paths...)
)
}
// helperInPlace is a special directory value for omitting the cd statement.