aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--internal/rosa/llvm.go18
-rw-r--r--internal/rosa/package/acl/package.az6
-rw-r--r--internal/rosa/package/git.az4
-rw-r--r--internal/rosa/package/gnu.az5
-rw-r--r--internal/rosa/package/libcap.az4
-rw-r--r--internal/rosa/package/libinput.az3
-rw-r--r--internal/rosa/package/libseccomp/package.az3
-rw-r--r--internal/rosa/package/lm_sensors.az8
-rw-r--r--internal/rosa/package/netfilter/package.az2
-rw-r--r--internal/rosa/package/ninja.az9
-rw-r--r--internal/rosa/package/pcre2.az7
-rw-r--r--internal/rosa/package/rdfind.az7
-rw-r--r--internal/rosa/package/util-linux.az3
-rw-r--r--internal/rosa/package/x.az5
-rw-r--r--internal/rosa/rosa.go24
-rw-r--r--internal/rosa/state.go20
17 files changed, 67 insertions, 62 deletions
diff --git a/.gitignore b/.gitignore
index 72917bd6..5be5f0ec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
# produced by tools and text editors
+*.swp
*.qcow2
*.test
*.out
diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go
index 397cfe20..8fd515d2 100644
--- a/internal/rosa/llvm.go
+++ b/internal/rosa/llvm.go
@@ -341,6 +341,13 @@ ln -s \
return &meta, t.NewPackage("llvm", meta.Version, source, &PackageAttr{
Flag: TExclusive,
+ Bin: []string{
+ "chmod",
+ "mkdir",
+ "rm",
+ "tr",
+ "awk",
+ },
}, &CMakeHelper{
Append: []string{"llvm"},
@@ -358,16 +365,7 @@ ln -s clang++ /work/system/bin/c++
// on 3-stage determinism to test later stages.
SkipTest: t.stage.isStage0(),
- Test: `
-chmod +w /bin && ln -s \
- ../system/bin/chmod \
- ../system/bin/mkdir \
- ../system/bin/rm \
- ../system/bin/tr \
- ../system/bin/awk \
- /bin
-ninja ` + jobsFlagE + ` check-all
-`,
+ Test: "ninja " + jobsFlagE + " check-all",
},
_python,
_perl,
diff --git a/internal/rosa/package/acl/package.az b/internal/rosa/package/acl/package.az
index 1317ae02..d4e4a13e 100644
--- a/internal/rosa/package/acl/package.az
+++ b/internal/rosa/package/acl/package.az
@@ -13,10 +13,8 @@ package attr {
patches = [ "musl-errno.patch" ];
- early = `
-ln -s ../../system/bin/perl /usr/bin
-`;
-
+ bin = [ "perl" ];
+ populateUsrBin = true;
exec = make {};
inputs = [
diff --git a/internal/rosa/package/git.az b/internal/rosa/package/git.az
index ffa6bb5a..f2da8ef5 100644
--- a/internal/rosa/package/git.az
+++ b/internal/rosa/package/git.az
@@ -12,8 +12,6 @@ package git {
};
early = `
-ln -s ../../system/bin/perl /usr/bin/ || true
-
# test suite assumes apache
rm -f /system/bin/httpd
`;
@@ -22,6 +20,8 @@ rm -f /system/bin/httpd
enterSource = true;
env = [ "NO_RUST=YesPlease" ];
+ bin = [ "perl" ];
+ populateUsrBin = true;
exec = make {
inPlace = true;
generate = "make configure";
diff --git a/internal/rosa/package/gnu.az b/internal/rosa/package/gnu.az
index c27fc2d8..49b8a933 100644
--- a/internal/rosa/package/gnu.az
+++ b/internal/rosa/package/gnu.az
@@ -511,10 +511,7 @@ package parallel {
compress = bzip2;
};
- early = `
-ln -s ../system/bin/bash /bin/
-`;
-
+ bin = [ "bash" ];
exec = make {};
inputs = [
diff --git a/internal/rosa/package/libcap.az b/internal/rosa/package/libcap.az
index 3816bc5d..6f6eb355 100644
--- a/internal/rosa/package/libcap.az
+++ b/internal/rosa/package/libcap.az
@@ -12,6 +12,7 @@ package libcap {
};
// uses source tree as scratch space
+ enterSource = true;
writable = true;
chmod = true;
@@ -20,8 +21,7 @@ package libcap {
"lib=lib",
];
- early = "\nln -s ../system/bin/bash /bin/\n";
-
+ bin = [ "bash" ];
exec = make {
skipConfigure = true;
inPlace = true;
diff --git a/internal/rosa/package/libinput.az b/internal/rosa/package/libinput.az
index 90725e14..272f33c1 100644
--- a/internal/rosa/package/libinput.az
+++ b/internal/rosa/package/libinput.az
@@ -11,8 +11,7 @@ package libinput {
checksum = "GxBGPN6YybQxrD2MDsIL8gdDYImXn4NAJi6EvTx_Hb_1jcbjwCrjeyjY2upUyTMi";
};
- early = "ln -sf ../system/bin/bash /bin/\n";
-
+ bin = [ "bash" ];
exec = meson {
setup = {
"Dmtdev": "false";
diff --git a/internal/rosa/package/libseccomp/package.az b/internal/rosa/package/libseccomp/package.az
index 486a423a..71069849 100644
--- a/internal/rosa/package/libseccomp/package.az
+++ b/internal/rosa/package/libseccomp/package.az
@@ -13,8 +13,7 @@ package libseccomp {
};
patches = [ "fix-export-oob-read.patch" ];
- early = "\nln -s ../system/bin/bash /bin/\n";
-
+ bin = [ "bash" ];
exec = make {};
inputs = [
diff --git a/internal/rosa/package/lm_sensors.az b/internal/rosa/package/lm_sensors.az
index 6b89bd6a..4b0486f2 100644
--- a/internal/rosa/package/lm_sensors.az
+++ b/internal/rosa/package/lm_sensors.az
@@ -14,12 +14,8 @@ package lm_sensors {
chmod = true;
enterSource = true;
- early = `
-ln -s \
- ../../system/bin/perl \
- /usr/bin/
-`;
-
+ bin = [ "perl" ];
+ populateUsrBin = true;
exec = make {
inPlace = true;
skipConfigure = true;
diff --git a/internal/rosa/package/netfilter/package.az b/internal/rosa/package/netfilter/package.az
index 421e2880..d5aeb5a1 100644
--- a/internal/rosa/package/netfilter/package.az
+++ b/internal/rosa/package/netfilter/package.az
@@ -81,13 +81,13 @@ sed -i \
extensions/libebt_snat.txlate
`;
+ bin = [ "bash" ];
exec = make {
generate = "./autogen.sh";
configure = {
"enable-static";
};
preCheck = `
-ln -s ../system/bin/bash /bin/
chmod +w /etc/ && ln -s ../usr/src/iptables/etc/ethertypes /etc/
`;
};
diff --git a/internal/rosa/package/ninja.az b/internal/rosa/package/ninja.az
index d6a45493..2eb7694b 100644
--- a/internal/rosa/package/ninja.az
+++ b/internal/rosa/package/ninja.az
@@ -15,6 +15,7 @@ package ninja {
"CFLAGS=-std=c++17",
];
+ bin = [ "echo" ];
exec = generic {
build = `
python3 /usr/src/ninja/configure.py \
@@ -22,12 +23,10 @@ python3 /usr/src/ninja/configure.py \
--bootstrap
python3 /usr/src/ninja/configure.py \
--gtest-source-dir=/usr/src/extra/googletest
-./ninja ` + jobsFlagE + ` all`;
+./ninja ` + jobsFlagE + ` all
+`;
- check = `
-chmod +w /bin/
-ln -s ../system/bin/echo /bin/
-./ninja_test`;
+ check = "./ninja_test";
install = `
mkdir -p /work/system/bin/
diff --git a/internal/rosa/package/pcre2.az b/internal/rosa/package/pcre2.az
index 3fede131..27f21bf7 100644
--- a/internal/rosa/package/pcre2.az
+++ b/internal/rosa/package/pcre2.az
@@ -12,11 +12,8 @@ package pcre2 {
compress = bzip2;
};
- early = `
-# RunGrepTest expects /bin/echo
-ln -s ../system/bin/toybox /bin/echo
-`;
-
+ // RunGrepTest expects /bin/echo
+ bin = [ "echo" ];
exec = make {
configure = {
"enable-jit";
diff --git a/internal/rosa/package/rdfind.az b/internal/rosa/package/rdfind.az
index 86caf33f..5c16548d 100644
--- a/internal/rosa/package/rdfind.az
+++ b/internal/rosa/package/rdfind.az
@@ -10,10 +10,9 @@ package rdfind {
compress = gzip;
};
- exec = make {
- // test suite hard codes /bin/echo
- preCheck = "\nln -s ../system/bin/toybox /bin/echo\n";
- };
+ // test suite hard codes /bin/echo
+ bin = [ "echo" ];
+ exec = make {};
inputs = [ nettle ];
runtime = [ nettle ];
diff --git a/internal/rosa/package/util-linux.az b/internal/rosa/package/util-linux.az
index 7b18d7c3..4c36199e 100644
--- a/internal/rosa/package/util-linux.az
+++ b/internal/rosa/package/util-linux.az
@@ -23,8 +23,7 @@ package util-linux {
compress = gzip;
};
- early = "\nln -s ../system/bin/bash /bin/\n";
-
+ bin = [ "bash" ];
exec = make {
configure = {
"disable-use-tty-group";
diff --git a/internal/rosa/package/x.az b/internal/rosa/package/x.az
index 46658af9..04d4000f 100644
--- a/internal/rosa/package/x.az
+++ b/internal/rosa/package/x.az
@@ -781,6 +781,7 @@ package xwayland {
checksum = "0D0bs8EbDzlyLIULvm6lizqzdx4g1-umdbjVVO7zk-cS1kVIaSkKronCqj95tz-A";
};
+ bin = [ "bash" ];
exec = meson {
setup = {
"Dipv6": "false";
@@ -788,10 +789,6 @@ package xwayland {
};
};
- early = `
-ln -sf ../system/bin/bash /bin/
-`;
-
inputs = [
bash,
gawk,
diff --git a/internal/rosa/rosa.go b/internal/rosa/rosa.go
index ebb814dc..7c23736c 100644
--- a/internal/rosa/rosa.go
+++ b/internal/rosa/rosa.go
@@ -414,6 +414,10 @@ type PackageAttr struct {
// Passed to [Toolchain.NewPatchedSource].
Patches []KV
+ // Programs to make available in /bin/.
+ Bin []string
+ // Whether to replace /usr/bin/ with a symlink to /bin/.
+ PopulateUsrBin bool
// Unregistered extras.
Extra []pkg.Artifact
@@ -544,6 +548,26 @@ cd '/usr/src/` + name + `/'
})
}
+ bin := attr.Bin
+ if attr.PopulateUsrBin {
+ scriptEarly += `
+chmod +w /usr/ /usr/bin/
+rm -rf /usr/bin/
+ln -s ../bin /usr/`
+ bin = append(bin, "env")
+ }
+
+ if t.stage != stageGentoo && len(bin) > 0 {
+ scriptEarly += "\nchmod +w /bin/" +
+ "\n(set -o braceexpand && ln -sf ../system/bin/"
+ if len(bin) > 1 {
+ scriptEarly += "{'" + strings.Join(bin, "','") + "'}"
+ } else {
+ scriptEarly += "'" + bin[0] + "'"
+ }
+ scriptEarly += " /bin/)\n"
+ }
+
return t.New(
rn,
attr.Flag,
diff --git a/internal/rosa/state.go b/internal/rosa/state.go
index 6b914edc..088963bf 100644
--- a/internal/rosa/state.go
+++ b/internal/rosa/state.go
@@ -1004,15 +1004,17 @@ func (ctx *evalContext) pf(
k("block"): &meta.Blocked,
k("latest"): &meta.latest,
- k("writable"): &attr.Writable,
- k("chmod"): &attr.Chmod,
- k("enterSource"): &attr.EnterSource,
- k("env"): &attr.Env,
- k("early"): &attr.ScriptEarly,
- k("patches"): &patches,
- k("files"): &files,
- k("exclusive"): &excl,
- k("toyboxEarly"): &early,
+ k("writable"): &attr.Writable,
+ k("chmod"): &attr.Chmod,
+ k("enterSource"): &attr.EnterSource,
+ k("env"): &attr.Env,
+ k("early"): &attr.ScriptEarly,
+ k("bin"): &attr.Bin,
+ k("populateUsrBin"): &attr.PopulateUsrBin,
+ k("patches"): &patches,
+ k("files"): &files,
+ k("exclusive"): &excl,
+ k("toyboxEarly"): &early,
k("checksum"): &kc,
k("output"): &output,