summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@parabola.nu>2017-02-15 15:56:42 -0500
committerLuke Shumaker <lukeshu@parabola.nu>2018-05-20 21:57:40 -0400
commitc7f10f1efc4d38672f4a2ae02d71f0f384bc421d (patch)
tree19085411552a2236caa604eba4313f29c7f09d48
parentbc2ed98d54218cb7b432f15ea0ccda027896337f (diff)
makechrootpkg: _chrootbuild: Split into _chroot{prepare,build}
-rw-r--r--makechrootpkg.in27
1 files changed, 26 insertions, 1 deletions
diff --git a/makechrootpkg.in b/makechrootpkg.in
index 6105a64..0b48d5b 100644
--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -206,6 +206,12 @@ EOF
# working copy
{
printf '#!/bin/bash\n'
+ declare -f _chrootprepare
+ printf '_chrootprepare "$@"\n'
+ } > "$copydir/chrootprepare"
+ chmod +x "$copydir/chrootprepare"
+ {
+ printf '#!/bin/bash\n'
declare -f _chrootbuild
declare -p SOURCE_DATE_EPOCH 2>/dev/null || true
printf '_chrootbuild "$@" || exit\n'
@@ -220,6 +226,20 @@ EOF
# These functions aren't run in makechrootpkg,
# so no global variables
+_chrootprepare() {
+ # No coredumps
+ ulimit -c 0
+
+ # shellcheck source=/dev/null
+ . /etc/profile
+
+ # Beware, there are some stupid arbitrary rules on how you can
+ # use "$" in arguments to commands with "sudo -i". ${foo} or
+ # ${1} is OK, but $foo or $1 isn't.
+ # https://bugzilla.sudo.ws/show_bug.cgi?id=765
+ sudo --preserve-env=SOURCE_DATE_EPOCH -iu builduser bash -c 'cd /startdir; makepkg "$@" --nobuild' -bash "$@"
+}
+
_chrootbuild() {
# No coredumps
ulimit -c 0
@@ -231,7 +251,7 @@ _chrootbuild() {
# use "$" in arguments to commands with "sudo -i". ${foo} or
# ${1} is OK, but $foo or $1 isn't.
# https://bugzilla.sudo.ws/show_bug.cgi?id=765
- sudo --preserve-env=SOURCE_DATE_EPOCH -iu builduser bash -c 'cd /startdir; makepkg "$@"' -bash "$@"
+ sudo --preserve-env=SOURCE_DATE_EPOCH -iu builduser bash -c 'cd /startdir; makepkg "$@" --noextract --noprepare' -bash "$@"
}
_chrootnamcap() {
@@ -418,6 +438,11 @@ main() {
--bind="$PWD:/startdir" \
--bind="$SRCDEST:/srcdest" \
"${bindmounts_ro[@]}" "${bindmounts_rw[@]}" \
+ /chrootprepare "${makepkg_args[@]}" &&
+ arch-nspawn "$copydir" \
+ --bind="$PWD:/startdir" \
+ --bind="$SRCDEST:/srcdest" \
+ "${bindmounts_ro[@]}" "${bindmounts_rw[@]}" \
/chrootbuild "${makepkg_args[@]}"
then
move_products "$copydir" "$src_owner"