void-packages/common/travis/check-install.sh
oreo639 d029dcf6f1 common/travis/check-install.sh: don't exit after install failure
This allows for showing all install errors for a package at once, rather than
having to check one at a time.
2025-03-22 11:10:01 -04:00

54 lines
1.4 KiB
Bash
Executable file

#!/bin/bash
#
# check-install.sh
set -e
HOST_ARCH="$1"
export XBPS_TARGET_ARCH="$2"
if [ "$HOST_ARCH" != "$XBPS_TARGET_ARCH" ]; then
triplet="$(./xbps-src -a "$XBPS_TARGET_ARCH" show-var XBPS_CROSS_TRIPLET)"
CONFDIR="-C $PWD/masterdir-$HOST_ARCH/usr/$triplet/etc/xbps.d"
else
CONFDIR="-C $PWD/masterdir-$HOST_ARCH/etc/xbps.d"
fi
if ! [ -d /check-install ]; then
/bin/echo -e "\x1b[31m/check-install does not exist\x1b[0m"
exit 1
fi
mkdir -p /check-install/var/db/xbps/keys
cp /var/db/xbps/keys/* /check-install/var/db/xbps/keys/
ADDREPO="--repository=hostdir/binpkgs/bootstrap
--repository=hostdir/binpkgs
--repository=hostdir/binpkgs/nonfree"
ROOTDIR="-r /check-install"
# if this fails, there were no packages built for this arch and thus no repodatas
xbps-install $ROOTDIR $ADDREPO $CONFDIR -S || exit 0
failed=()
while read -r pkg; do
for subpkg in $(xsubpkg $pkg); do
/bin/echo -e "\x1b[32mTrying to install dependents of $subpkg:\x1b[0m"
for dep in $(xbps-query $ADDREPO -RX "$subpkg"); do
ret=0
xbps-install \
$ROOTDIR $ADDREPO $CONFDIR \
-ny \
"$subpkg" "$(xbps-uhelper getpkgname "$dep")" \
|| ret="$?"
if [ "$ret" -ne 0 ]; then
/bin/echo -e "\x1b[31mFailed to install '$subpkg' and '$dep'\x1b[0m"
failed+=("Failed to install '$subpkg' and '$dep'")
fi
done
done
done < /tmp/templates
for msg in "${failed[@]}"; do
/bin/echo -e "\x1b[31m$msg\x1b[0m"
done
exit ${#failed[@]}