mirror of
https://github.com/openwrt/routing.git
synced 2025-12-21 17:04:33 +04:00
Some packages variants have conflicting dependencies with the base packages and the CI test will fail to install before anything can be done by the packages to setup the system for install. This change adds a pre-test.sh that runs before the install so things like the default libustream variant can be swapped out as shown in the updated cache-domains. Signed-off-by: Gerard Ryan <G.M0N3Y.2503@gmail.com>
63 lines
1.7 KiB
Bash
Executable File
63 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# not enabling `errtrace` and `pipefail` since those are bash specific
|
|
set -o errexit # failing commands causes script to fail
|
|
set -o nounset # undefined variables causes script to fail
|
|
|
|
echo "src/gz packages_ci file:///ci" >> /etc/opkg/distfeeds.conf
|
|
|
|
FINGERPRINT="$(usign -F -p /ci/packages_ci.pub)"
|
|
cp /ci/packages_ci.pub "/etc/opkg/keys/$FINGERPRINT"
|
|
|
|
mkdir -p /var/lock/
|
|
|
|
opkg update
|
|
|
|
[ -n "${CI_HELPER:=''}" ] || CI_HELPER="/ci/.github/workflows/ci_helpers.sh"
|
|
|
|
for PKG in /ci/*.ipk; do
|
|
tar -xzOf "$PKG" ./control.tar.gz | tar xzf - ./control
|
|
# package name including variant
|
|
PKG_NAME=$(sed -ne 's#^Package: \(.*\)$#\1#p' ./control)
|
|
# package version without release
|
|
PKG_VERSION=$(sed -ne 's#^Version: \(.*\)-[0-9]*$#\1#p' ./control)
|
|
# package source contianing test.sh script
|
|
PKG_SOURCE=$(sed -ne 's#^Source: .*/\(.*\)$#\1#p' ./control)
|
|
|
|
echo "Testing package $PKG_NAME in version $PKG_VERSION from $PKG_SOURCE"
|
|
|
|
export PKG_NAME PKG_VERSION CI_HELPER
|
|
|
|
PRE_TEST_SCRIPT=$(find /ci/ -name "$PKG_SOURCE" -type d)/pre-test.sh
|
|
|
|
if [ -f "$PRE_TEST_SCRIPT" ]; then
|
|
echo "Use package specific pre-test.sh"
|
|
if sh "$PRE_TEST_SCRIPT" "$PKG_NAME" "$PKG_VERSION"; then
|
|
echo "Pre-test successful"
|
|
else
|
|
echo "Pre-test failed"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "No pre-test.sh script available"
|
|
fi
|
|
|
|
opkg install "$PKG"
|
|
|
|
TEST_SCRIPT=$(find /ci/ -name "$PKG_SOURCE" -type d)/test.sh
|
|
|
|
if [ -f "$TEST_SCRIPT" ]; then
|
|
echo "Use package specific test.sh"
|
|
if sh "$TEST_SCRIPT" "$PKG_NAME" "$PKG_VERSION"; then
|
|
echo "Test succesful"
|
|
else
|
|
echo "Test failed"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "No test.sh script available"
|
|
fi
|
|
|
|
opkg remove "$PKG_NAME" --force-removal-of-dependent-packages --force-remove --autoremove || true
|
|
done
|