void-packages/common/travis/check-install.sh
classabbyamp 0369ba6769
common/travis/check-install: remove bootstrap repos for workaround
xbps chooses cross-vpkg-dummy over musl1.1 because it's looking for a
virtual package, musl.

fixes: #55528
2025-05-30 11:35:40 -04:00

61 lines
1.7 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"
# HACK: remove remote bootstrap repo from consideration
# if the libc package is virtual (like musl1.1), xbps
# can choose the one provided by cross-vpkg-dummy instead
# of the actual package
# this is fine to do here because it runs last in CI
sed -i -e '/bootstrap/d' "${CONFDIR#-C }"/*remote*.conf
# 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[@]}