Some checks failed
Solaris Multi-Package Build / build (i386, 172.16.11.20, 2.6) (push) Failing after 8s
60 lines
1.5 KiB
Bash
Executable File
60 lines
1.5 KiB
Bash
Executable File
#!/usr/dbpware/bin/bash
|
|
# Usage: ./build-package.sh <package-name>
|
|
set -e
|
|
|
|
PKG="$1"
|
|
if [ -z "$PKG" ]; then
|
|
echo "Usage: $0 <package-name>"
|
|
exit 1
|
|
fi
|
|
|
|
# --- Host-level lock ---
|
|
LOCKDIR="/tmp/build-host.lock"
|
|
while ! mkdir "$LOCKDIR" 2>/dev/null; do
|
|
echo "Another build is running on this host. Waiting..."
|
|
sleep 10
|
|
done
|
|
trap "rmdir '$LOCKDIR'" EXIT
|
|
echo "Acquired host lock, starting build of $PKG"
|
|
|
|
# --- Navigate to package directory ---
|
|
cd "$BUILDPKG_BASE/$PKG"
|
|
|
|
# --- Read package metadata from build.sh ---
|
|
topdir=$(ggrep -E '^topdir=' build.sh | cut -d= -f2)
|
|
version=$(ggrep -E '^version=' build.sh | cut -d= -f2)
|
|
pkgver=$(ggrep -E '^pkgver=' build.sh | cut -d= -f2)
|
|
secname="$topdir"
|
|
|
|
# --- Check if package already exists ---
|
|
PKGFILE=$(ls -1 ${secname}-${version}-${pkgver}.dbp*.gz 2>/dev/null | head -n1 || true)
|
|
if [ -n "$PKGFILE" ]; then
|
|
echo "Package already built: $PKGFILE. Skipping."
|
|
exit 0
|
|
fi
|
|
|
|
# --- Run the build ---
|
|
LOGFILE=$(bash build.sh all 2>&1 | tee /tmp/build-$secname.log | ggrep -oE '[^ ]+\.log' | gtail -n1)
|
|
if [ -n "$LOGFILE" ] && [ -f "$LOGFILE" ]; then
|
|
echo "Tailing logfile: $LOGFILE"
|
|
gtail -f "$LOGFILE" &
|
|
TAIL_PID=$!
|
|
else
|
|
echo "ERROR: No logfile detected for $PKG"
|
|
exit 1
|
|
fi
|
|
|
|
wait -n
|
|
EXIT_CODE=$?
|
|
kill $TAIL_PID || true
|
|
|
|
if [ $EXIT_CODE -eq 0 ]; then
|
|
echo "Build succeeded for $PKG, deleting logfile."
|
|
rm -f "$LOGFILE" || true
|
|
else
|
|
echo "Build FAILED for $PKG, keeping logfile: $LOGFILE"
|
|
exit $EXIT_CODE
|
|
fi
|
|
|
|
echo "=== Finished build of $PKG ==="
|