SPS · log · files · refs · tags · releases · people · languages · GitHub · commit
ba34097
mkpkg: wrap gcc so setup links libraries already in SPS_ROOT.
Parents
Stat
bin/mkiso | 5 ++- bin/mkpkg | 90 +++++++++++++++++++++++++++++++++++++++++++++------ bin/pkin | 37 +++++++++++++++++---- bin/sget | 9 +++++- lib/mkiso/initrd-init | 4 ++- lib/mkiso/live-plasma | 42 ++++++++++++++++-------- lib/mkiso/live-rc | 2 +- tests/test_build.sh | 33 ++++++++++++++++--- tests/test_mkiso.sh | 12 +++++++ tests/test_output.sh | 3 ++ 10 files changed, 201 insertions(+), 36 deletions(-)
Diff
diff --git a/bin/mkiso b/bin/mkiso
index 7323644..f1390f7 100755
--- a/bin/mkiso
+++ b/bin/mkiso
@@ -912,6 +912,7 @@ mkiso_copy_plasma()
[Daemon]
Autolock=false
LockOnResume=false
+LockOnStart=false
Timeout=0
EOF
# Host /etc/dbus-1 may already contain system-local.conf. live-plasma
@@ -1394,7 +1395,9 @@ if [ -d "$mkiso_modules" ]; then
for mkiso_mod in squashfs overlay loop isofs cdrom sr_mod sd_mod \
ahci nvme usb-storage xhci-pci ehci-hcd uhci-hcd \
virtio_blk virtio_pci virtio_scsi virtio_net \
- nls_cp437 nls_iso8859-1 vfat fat crc32c libcrc32c
+ nls_cp437 nls_iso8859-1 vfat fat crc32c libcrc32c \
+ drm drm_kms_helper drm_shmem_helper drm_ttm_helper ttm \
+ virtio_dma_buf virtio_gpu bochs simpledrm
do
if command -v modprobe >/dev/null 2>&1; then
modprobe -D "$mkiso_mod" 2>/dev/null | while IFS= read -r mkiso_line
diff --git a/bin/mkpkg b/bin/mkpkg
index 93f0af1..25c2085 100755
--- a/bin/mkpkg
+++ b/bin/mkpkg
@@ -707,23 +707,65 @@ WORK=$work_dir
MAKEJOBS=$makejobs
export PKG SRC WORK MAKEJOBS
+# Quote a path for a generated wrapper. SPS_ROOT is an absolute directory.
+shell_quote()
+{
+ printf "'%s'" "$(printf '%s' "$1" | sed "s/'/'\\\\''/g")"
+}
+
+# gcc on PATH must inject -L/-isystem itself. Autoconf often runs `gcc`
+# without LDFLAGS, which is how alsa-utils printed "No linkable libasound
+# was found" after alsa-lib was already in SPS_ROOT.
+write_cc_wrapper()
+{
+ wrapper_path=$1
+ real_cc=$2
+ [ -n "$real_cc" ] && [ -x "$real_cc" ] || return 0
+ {
+ printf '%s\n' '#!/bin/sh'
+ printf 'exec %s -isystem %s -L%s -L%s -L%s -L%s -Wl,-rpath-link,%s -Wl,-rpath-link,%s "$@"\n' \
+ "$(shell_quote "$real_cc")" \
+ "$(shell_quote "$target_inc")" \
+ "$(shell_quote "$target_root/usr/lib64")" \
+ "$(shell_quote "$target_root/usr/lib")" \
+ "$(shell_quote "$target_root/lib64")" \
+ "$(shell_quote "$target_root/lib")" \
+ "$(shell_quote "$target_root/usr/lib64")" \
+ "$(shell_quote "$target_root/usr/lib")"
+ } >"$wrapper_path"
+ chmod 755 "$wrapper_path"
+}
+
# A controlled build root runs each phase with the root's /usr/bin and /bin
# ahead of the host PATH and exposes the root as $SYSROOT. Recipes building a
# staged toolchain use this to ensure their compiler, linker, and headers are
# taken from the target root rather than the host, mirroring an LFS sysroot.
+wrapper_bin=
+if [ -n "${SPS_ROOT:-}" ] && [ "$SPS_ROOT" != / ]; then
+ wrapper_bin=$build_dir/run
+fi
+
if [ -n "$build_root" ]; then
- run_env="PATH=$build_root/usr/bin:$build_root/bin:$PATH SYSROOT=$build_root"
+ if [ -n "$wrapper_bin" ]; then
+ run_env="PATH=$wrapper_bin:$build_root/usr/bin:$build_root/bin:$PATH SYSROOT=$build_root"
+ else
+ run_env="PATH=$build_root/usr/bin:$build_root/bin:$PATH SYSROOT=$build_root"
+ fi
say "using build root $build_root"
+elif [ -n "$wrapper_bin" ]; then
+ run_env="PATH=$wrapper_bin:$PATH"
else
run_env=
fi
# Live setup builds into SPS_ROOT (a mounted disk) with the live compiler.
-# gcc and pkg-config search /usr unless they are pointed at packages pkin
-# already unpacked into the target. That is why alsa-utils configure found
-# host ALSA headers then died with "No linkable libasound was found" after
-# alsa-lib had been installed into the target, not the live root. The same
-# hole hits every later package that links a library from the target.
+# The live disc copies host /usr/include (so ALSA headers exist) but not
+# host libasound. gcc must search packages pkin already unpacked into the
+# target, not only live /usr. Exporting LDFLAGS is not enough: autoconf
+# AC_CHECK_LIB often invokes `gcc conftest.c -lasound` with a cleared
+# environment. Wrappers named gcc/g++ on PATH inject -L/-isystem instead.
+# Do not set LD_LIBRARY_PATH to the target; that makes host gcc load a
+# half-installed libc from the disk.
if [ -n "${SPS_ROOT:-}" ] && [ "$SPS_ROOT" != / ]; then
target_root=$SPS_ROOT
target_inc=$target_root/usr/include
@@ -737,6 +779,8 @@ if [ -n "${SPS_ROOT:-}" ] && [ "$SPS_ROOT" != / ]; then
target_cflags="-I$target_inc"
target_ldflags="-L$target_root/usr/lib64 -L$target_root/usr/lib"
target_ldflags="$target_ldflags -L$target_root/lib64 -L$target_root/lib"
+ target_ldflags="$target_ldflags -Wl,-rpath-link,$target_root/usr/lib64"
+ target_ldflags="$target_ldflags -Wl,-rpath-link,$target_root/usr/lib"
PKG_CONFIG_SYSROOT_DIR=$target_root
PKG_CONFIG_LIBDIR=$target_pc
@@ -750,9 +794,7 @@ if [ -n "${SPS_ROOT:-}" ] && [ "$SPS_ROOT" != / ]; then
C_INCLUDE_PATH=$target_inc${C_INCLUDE_PATH:+:$C_INCLUDE_PATH}
CPLUS_INCLUDE_PATH=$target_inc${CPLUS_INCLUDE_PATH:+:$CPLUS_INCLUDE_PATH}
LIBRARY_PATH=$target_libpath${LIBRARY_PATH:+:$LIBRARY_PATH}
- LD_LIBRARY_PATH=$target_libpath${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
- export CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH LIBRARY_PATH \
- LD_LIBRARY_PATH
+ export CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH LIBRARY_PATH
CPPFLAGS="$target_cflags${CPPFLAGS:+ $CPPFLAGS}"
CFLAGS="$target_cflags${CFLAGS:+ $CFLAGS}"
@@ -768,6 +810,36 @@ if [ -n "${SPS_ROOT:-}" ] && [ "$SPS_ROOT" != / ]; then
ACLOCAL_PATH=$target_root/usr/share/aclocal${ACLOCAL_PATH:+:$ACLOCAL_PATH}
export ACLOCAL_PATH
+ mkdir -p "$build_dir/run"
+ host_path=$PATH
+ if [ -n "$build_root" ]; then
+ host_path=$build_root/usr/bin:$build_root/bin:$PATH
+ fi
+ host_cc=$(PATH=$host_path command -v gcc 2>/dev/null) || host_cc=
+ host_cxx=$(PATH=$host_path command -v g++ 2>/dev/null) || host_cxx=
+ host_cc_alt=$(PATH=$host_path command -v cc 2>/dev/null) || host_cc_alt=
+ host_cxx_alt=$(PATH=$host_path command -v c++ 2>/dev/null) || host_cxx_alt=
+ write_cc_wrapper "$build_dir/run/gcc" "$host_cc"
+ write_cc_wrapper "$build_dir/run/g++" "$host_cxx"
+ if [ -z "$host_cc_alt" ] || [ "$host_cc_alt" = "$host_cc" ]; then
+ write_cc_wrapper "$build_dir/run/cc" "$host_cc"
+ else
+ write_cc_wrapper "$build_dir/run/cc" "$host_cc_alt"
+ fi
+ if [ -z "$host_cxx_alt" ] || [ "$host_cxx_alt" = "$host_cxx" ]; then
+ write_cc_wrapper "$build_dir/run/c++" "$host_cxx"
+ else
+ write_cc_wrapper "$build_dir/run/c++" "$host_cxx_alt"
+ fi
+ if [ -x "$build_dir/run/gcc" ]; then
+ CC=$build_dir/run/gcc
+ export CC
+ fi
+ if [ -x "$build_dir/run/g++" ]; then
+ CXX=$build_dir/run/g++
+ export CXX
+ fi
+
say "using $target_root for headers, libraries, and pkg-config"
fi
diff --git a/bin/pkin b/bin/pkin
index 03e39f4..05ad2c4 100755
--- a/bin/pkin
+++ b/bin/pkin
@@ -20,7 +20,18 @@ sps_load_config || exit $?
sps_usage()
{
- printf '%s\n' 'usage: pkin [--explicit|--dependency] PACKAGE'
+ printf '%s\n' 'usage: pkin [-v|--verbose] [-q|--quiet] [--explicit|--dependency] PACKAGE'
+}
+
+sps_say()
+{
+ printf '%s: %s\n' "$sps_prog" "$*" >&2
+}
+
+sps_verbose_say()
+{
+ [ "${sps_verbose:-1}" -eq 1 ] || return 0
+ sps_say "$*"
}
sps_fail()
@@ -159,11 +170,20 @@ trap sps_cleanup 0
trap 'exit 130' 1 2 3 15
sps_reason=${SPS_INSTALL_REASON:-explicit}
-case ${1-} in
- --explicit) sps_reason=explicit; shift ;;
- --dependency) sps_reason=dependency; shift ;;
- -h|--help) sps_usage; exit 0 ;;
-esac
+sps_verbose=1
+case ${SPS_QUIET-} in 1|yes|true) sps_verbose=0 ;; esac
+while [ "$#" -gt 0 ]; do
+ case $1 in
+ -v|--verbose) sps_verbose=1; shift ;;
+ -q|--quiet) sps_verbose=0; shift ;;
+ --explicit) sps_reason=explicit; shift ;;
+ --dependency) sps_reason=dependency; shift ;;
+ -h|--help) sps_usage; exit 0 ;;
+ --) shift; break ;;
+ -*) sps_fail 2 "unknown option '$1'" ;;
+ *) break ;;
+ esac
+done
case $sps_reason in
explicit|dependency) ;;
*) sps_fail 2 "invalid install reason '$sps_reason'" ;;
@@ -240,6 +260,7 @@ for sps_control in .SPS/meta .SPS/files .SPS/hashes; do
done
# Extract only after member names pass validation, and always into a fresh tree.
+sps_say "unpacking ${sps_archive##*/}"
if ! sps_archive_extract 2>"$sps_work/tar.error"; then
sed 's/^/pkin: tar: /' "$sps_work/tar.error" >&2
sps_fail 4 "cannot extract package archive '$sps_archive'"
@@ -510,6 +531,9 @@ done <"$sps_stage/.SPS/files"
mkdir -p "$SPS_ROOT" || sps_fail 8 "cannot create target root '$SPS_ROOT'"
+sps_file_count=$(awk 'END { print NR + 0 }' "$sps_work/owned")
+sps_say "$sps_install_action $sps_name $sps_version-$sps_release ($sps_file_count files)"
+
# Create directories first. Existing directories are shared, not exclusively
# owned by a package.
while IFS= read -r sps_entry || [ -n "$sps_entry" ]; do
@@ -542,6 +566,7 @@ while IFS= read -r sps_entry || [ -n "$sps_entry" ]; do
sps_parent=${sps_target%/*}
[ -n "$sps_parent" ] || sps_parent=/
mkdir -p "$sps_parent" || sps_fail 8 "cannot create parent of /$sps_path"
+ sps_verbose_say "/$sps_path"
if [ -L "$sps_source" ]; then
sps_link_tmp=$(sps_mktemp_dir "$sps_parent" link) ||
sps_fail 8 "cannot stage symlink /$sps_path"
diff --git a/bin/sget b/bin/sget
index bd80fd4..ba372f9 100755
--- a/bin/sget
+++ b/bin/sget
@@ -502,7 +502,14 @@ sget_install()
fi
case ,$sget_roots, in *,"$sget_package",*) sget_reason=explicit ;; *) sget_reason=dependency ;; esac
- SPS_INSTALL_REASON=$sget_reason pkin "$sget_artifact" ||
+ sget_pkin_flags=
+ if [ "${sget_verbose:-0}" -eq 1 ]; then
+ sget_pkin_flags=-v
+ elif [ "${sget_quiet:-0}" -eq 1 ]; then
+ sget_pkin_flags=-q
+ fi
+ # shellcheck disable=SC2086
+ SPS_INSTALL_REASON=$sget_reason pkin $sget_pkin_flags "$sget_artifact" ||
sps_die $? "installation failed for '$sget_package'"
done <"$sget_work/todo"
fi
diff --git a/lib/mkiso/initrd-init b/lib/mkiso/initrd-init
index 9cb94d2..ed7f968 100755
--- a/lib/mkiso/initrd-init
+++ b/lib/mkiso/initrd-init
@@ -44,7 +44,9 @@ rescue()
for mod in loop squashfs overlay isofs vfat nls_cp437 nls_iso8859-1 \
usb-storage xhci-pci ehci-pci uhci-hcd sr_mod sd_mod ahci nvme \
virtio_blk virtio_pci virtio_scsi virtio_net virtio_console \
- sdhci sdhci-pci mmc_block
+ sdhci sdhci-pci mmc_block \
+ drm drm_kms_helper drm_ttm_helper ttm virtio_dma_buf virtio_gpu \
+ bochs simpledrm
do
"$bb" modprobe "$mod" 2>/dev/null || :
done
diff --git a/lib/mkiso/live-plasma b/lib/mkiso/live-plasma
index 17112e3..a5207b4 100644
--- a/lib/mkiso/live-plasma
+++ b/lib/mkiso/live-plasma
@@ -33,28 +33,38 @@ chmod 700 "$XDG_RUNTIME_DIR"
chmod 1777 /tmp /tmp/.X11-unix /tmp/.ICE-unix 2>/dev/null || :
# startplasma reads this before KSplash. A missing file logs
# QIODevice::readLineInto ... kdedefaults/package.
+# Engine=none skips ksplashqml. Engine=KSplashQML plus a missing
+# breeze splash makes plasma_waitforname hang forever: KWin is up
+# (black screen, cursor only) and the desktop never appears.
+mkdir -p /root/.config /root/.config/kdedefaults /etc/xdg
if [ ! -s /root/.config/kdedefaults/package ]; then
printf '%s\n' 'org.kde.breeze.desktop' >/root/.config/kdedefaults/package
fi
-if [ ! -s /root/.config/kdedefaults/ksplashrc ]; then
- printf '%s\n' '[KSplash]' 'Engine=KSplashQML' \
- 'Theme=org.kde.breeze.desktop' >/root/.config/kdedefaults/ksplashrc
-fi
-# Live runs as root with no PAM stack. kscreenlocker_greet missing or
-# autolocking leaves KWin's lock surface up: black screen, cursor only.
-mkdir -p /etc/xdg /root/.config
+printf '%s\n' '[KSplash]' 'Engine=none' >/root/.config/kdedefaults/ksplashrc
+printf '%s\n' '[KSplash]' 'Engine=none' >/root/.config/ksplashrc
+# Live runs as root with no PAM stack. kscreenlocker autolock or
+# LockOnStart leaves KWin's lock surface up: black screen, cursor only.
if [ ! -s /etc/xdg/kscreenlockerrc ]; then
printf '%s\n' \
'[Daemon]' \
'Autolock=false' \
'LockOnResume=false' \
+ 'LockOnStart=false' \
'Timeout=0' >/etc/xdg/kscreenlockerrc
fi
if [ ! -s /root/.config/kscreenlockerrc ]; then
cp /etc/xdg/kscreenlockerrc /root/.config/kscreenlockerrc
+else
+ grep -q LockOnStart /root/.config/kscreenlockerrc ||
+ printf '%s\n' 'LockOnStart=false' >>/root/.config/kscreenlockerrc
+fi
+# Indexing a live overlay is slow and not useful.
+if [ ! -s /root/.config/baloofilerc ]; then
+ printf '%s\n' '[Basic Settings]' 'Indexing-Enabled=false' \
+ >/root/.config/baloofilerc
fi
if command -v fc-cache >/dev/null 2>&1; then
- fc-cache -f >/dev/null 2>&1 || :
+ fc-cache >/dev/null 2>&1 || :
fi
# Live NVIDIA is nouveau. Keep the proprietary stack unloaded.
@@ -94,7 +104,7 @@ if command -v dbus-daemon >/dev/null 2>&1; then
dbus-daemon --system --nofork --nopidfile --nosyslog \
>/run/sps-dbus.log 2>&1 &
n=0
- while [ "$n" -lt 8 ]; do
+ while [ "$n" -lt 5 ]; do
if [ -S /run/dbus/system_bus_socket ] ||
[ -S /var/run/dbus/system_bus_socket ]
then
@@ -117,13 +127,19 @@ else
fi
if command -v seatd >/dev/null 2>&1; then
seatd -g video >/dev/null 2>&1 &
- sleep 1
+ n=0
+ while [ "$n" -lt 5 ]; do
+ [ -S /run/seatd.sock ] && break
+ n=$((n + 1))
+ sleep 1
+ done
fi
-# kwin_wayland needs a KMS node. live-rc loads virtio_gpu/bochs/qxl;
-# wait here so Plasma does not race the first DRM probe.
+# kwin_wayland needs a KMS node. GPU modules are loaded in the
+# initramfs and again in live-rc; wait briefly so Plasma does not
+# race the first DRM probe.
n=0
-while [ "$n" -lt 10 ]; do
+while [ "$n" -lt 5 ]; do
if [ -e /dev/dri/card0 ] || [ -e /dev/dri/card1 ]; then
break
fi
diff --git a/lib/mkiso/live-rc b/lib/mkiso/live-rc
index 5890128..576a980 100644
--- a/lib/mkiso/live-rc
+++ b/lib/mkiso/live-rc
@@ -146,7 +146,7 @@ then
dbus-daemon --system --nofork --nopidfile --nosyslog \
>/run/sps-dbus.log 2>&1 &
n=0
- while [ "$n" -lt 8 ]; do
+ while [ "$n" -lt 5 ]; do
if [ -S /run/dbus/system_bus_socket ] ||
[ -S /var/run/dbus/system_bus_socket ]
then
diff --git a/tests/test_build.sh b/tests/test_build.sh
index f0c10e3..bba6721 100755
--- a/tests/test_build.sh
+++ b/tests/test_build.sh
@@ -187,9 +187,10 @@ tar -xf "$sysroot_artifact" -C "$tmp/sysroot-extract"
assert_equal "$tmp/buildroot" \
"$(cat "$tmp/sysroot-extract/usr/share/sysroot-probe/sysroot")" \
"SYSROOT was not set to the build root"
-case "$(cat "$tmp/sysroot-extract/usr/share/sysroot-probe/path")" in
- "$tmp/buildroot/usr/bin:$tmp/buildroot/bin:"*) : ;;
- *) fail "build root bin dirs were not first on PATH" ;;
+sysroot_path=$(cat "$tmp/sysroot-extract/usr/share/sysroot-probe/path")
+case $sysroot_path in
+ "$tmp/buildroot/usr/bin:$tmp/buildroot/bin:"*|*/run:"$tmp/buildroot/usr/bin:$tmp/buildroot/bin:"*) : ;;
+ *) fail "build root bin dirs were not on PATH ahead of the host ($sysroot_path)" ;;
esac
[ ! -e "$tmp/buildroot/usr/share/sysroot-probe" ] ||
@@ -244,6 +245,30 @@ EOF
fail "probe binary was not staged"
# The .so lives only under SPS_ROOT, so a successful link means gcc
# searched the target rather than the live /usr/lib64.
+
+ # Autoconf AC_CHECK_LIB often unsets LDFLAGS and invokes `gcc`
+ # from PATH. The wrapper named gcc must still find the target lib.
+ mkdir -p "$tmp/wrap-recipe" "$tmp/wrap-out"
+ cat >"$tmp/wrap-recipe/recipe" <<'EOF'
+name target-cc-wrapper-probe
+version 1.0
+release 1
+arch any
+description Confirms PATH gcc injects SPS_ROOT -L even without LDFLAGS
+configure unset LDFLAGS CFLAGS CPPFLAGS LIBRARY_PATH
+configure printf '%s\n' '#include <spsprobe.h>' 'int main(void){return sps_probe_lib();}' >"$WORK/probe.c"
+configure gcc "$WORK/probe.c" -lspsprobe -o "$WORK/probe"
+install mkdir -p "$PKG/usr/bin"
+install cp "$WORK/probe" "$PKG/usr/bin/target-cc-wrapper-probe"
+install chmod 755 "$PKG/usr/bin/target-cc-wrapper-probe"
+EOF
+ wrap_artifact=$(run_mkpkg --no-download --output "$tmp/wrap-out" \
+ "$tmp/wrap-recipe/recipe") ||
+ fail "target-root gcc wrapper probe failed to build"
+ mkdir "$tmp/wrap-extract"
+ tar -xf "$wrap_artifact" -C "$tmp/wrap-extract"
+ [ -x "$tmp/wrap-extract/usr/bin/target-cc-wrapper-probe" ] ||
+ fail "wrapper probe binary was not staged"
fi
-printf '%s\n' 'test_build: ok'
\ No newline at end of file
+printf '%s\n' 'test_build: ok'
diff --git a/tests/test_mkiso.sh b/tests/test_mkiso.sh
index 3a68680..10311e6 100755
--- a/tests/test_mkiso.sh
+++ b/tests/test_mkiso.sh
@@ -98,6 +98,12 @@ grep -q C.UTF-8 "$layout/etc/sps/live-plasma" ||
fail 'live-plasma must set a UTF-8 locale'
grep -q kdedefaults "$layout/etc/sps/live-plasma" ||
fail 'live-plasma must seed kdedefaults for KSplash'
+grep -q 'Engine=none' "$layout/etc/sps/live-plasma" ||
+ fail 'live-plasma must disable KSplash so plasma_waitforname cannot hang'
+grep -q LockOnStart "$layout/etc/sps/live-plasma" ||
+ fail 'live-plasma must disable kscreenlocker LockOnStart'
+grep -q virtio_gpu "$project_dir/lib/mkiso/initrd-init" ||
+ fail 'initrd must load virtio_gpu so Plasma has DRM before switch_root'
if grep -q 'export QT_QPA_PLATFORM=wayland' "$layout/etc/sps/live-plasma"
then
fail 'live-plasma must not force QT_QPA_PLATFORM=wayland on KWin'
@@ -244,6 +250,12 @@ grep -q mkiso_copy_plasma_runtime_deps "$mkiso" ||
fail 'plasma ISO must ldd session helpers (kactivitymanagerd, greeter)'
grep -q 'using .* for headers, libraries, and pkg-config' "$project_dir/bin/mkpkg" ||
fail 'mkpkg must compile against SPS_ROOT so setup can link target libs'
+grep -q write_cc_wrapper "$project_dir/bin/mkpkg" ||
+ fail 'mkpkg must wrap gcc so autoconf finds libraries in SPS_ROOT'
+grep -q 'sps_say "unpacking' "$project_dir/bin/pkin" ||
+ fail 'pkin must log unpacking'
+grep -q sps_verbose_say "$project_dir/bin/pkin" ||
+ fail 'pkin must have a verbose file-install path'
grep -q mkiso_verify_setup_catalog "$mkiso" ||
fail 'mkiso must refuse extras/sets that name unpackaged recipes'
if grep -E '^(htop|btop|tmux)[[:space:]]' "$project_dir/lib/setup/extras" |
diff --git a/tests/test_output.sh b/tests/test_output.sh
index dddb737..e60379a 100755
--- a/tests/test_output.sh
+++ b/tests/test_output.sh
@@ -282,6 +282,8 @@ contains "$sget_all" FOO-BUILD-LINE
contains "$sget_all" 'mkpkg: built libbar-2.1-1-any.pkg.tar'
contains "$sget_all" 'pkin: installed libbar 2.1-1'
contains "$sget_all" 'pkin: installed foo 4.7-2'
+contains "$sget_all" 'pkin: unpacking'
+contains "$sget_all" 'pkin: /usr/share/sps-test/foo'
[ "$(cat "$tmp/root/usr/share/sps-test/foo")" = foo ] || fail 'foo payload missing'
# Cached binary package: no build phases, no fake progress.
@@ -312,6 +314,7 @@ contains "$quiet_all" 'install quietpkg 1.0-1'
contains "$quiet_all" 'pkin: installed quietpkg 1.0-1'
omits "$quiet_all" QUIET-SHOULD-HIDE
omits "$quiet_all" 'running build phase'
+omits "$quiet_all" 'pkin: /usr/share/sps-test/quietpkg'
set +e
sget -q install --reinstall --nodeps broken >"$tmp/qfail.stdout" 2>"$tmp/qfail.stderr"