#!/usr/dbpware/bin/bash # Usage: ./build-package.sh set -e PKG="$1" if [ -z "$PKG" ]; then echo "Usage: $0 " 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" cd "$BUILDPKG_BASE/$PKG" 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" 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 --- bash build.sh all EXIT_CODE=$? # --- Find logfile --- LOGFILE=$(ls -1 ${secname}-*.log 2>/dev/null | sort | tail -n1) # --- Always output logfile --- if [ -f "$LOGFILE" ]; then echo echo "================ Log output: $LOGFILE ================" cat "$LOGFILE" echo "=====================================================" fi # --- Handle logfile --- if [ $EXIT_CODE -eq 0 ]; then echo "Build succeeded for $PKG, deleting logfile: $LOGFILE" rm -f "$LOGFILE" || true else echo "Build FAILED for $PKG, logfile kept: $LOGFILE" exit $EXIT_CODE fi echo "=== Finished build of $PKG ==="