name: Solaris Build on: push: branches: - master workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: SSH to build host and run builds uses: appleboy/ssh-action@master with: host: 172.16.11.20 username: root key: ${{ secrets.BUILD_SSH_KEY }} script: | set -e echo "=== Updating sources ===" cd /usr/src/buildpkg && git pull cd /usr/src/dbpware-for-solaris && git pull export BUILDPKG_SCRIPTS=/usr/src/buildpkg/ export BUILDPKG_BASE=/usr/src/dbpware-for-solaris/ # Define build order (adjust as needed) BUILD_ORDER=( binutils # gcc # gmake # coreutils # add more packages in dependency order ) for pkg in "${BUILD_ORDER[@]}"; do echo "=== Checking $pkg ===" cd "$BUILDPKG_BASE/$pkg" # Parse basic fields from build.sh using GNU grep (ggrep) 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" # Skip build 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." continue fi echo "=== Building $pkg (version $version pkgver $pkgver) ===" LOGFILE=$(bash build.sh all 2>&1 | tee /tmp/build-$pkg.log | ggrep -oE '[^ ]+\.log' | tail -n1) if [ -z "$LOGFILE" ]; then echo "ERROR: Could not detect logfile for $pkg" exit 1 fi echo "Tailing logfile: $LOGFILE" tail -f "$LOGFILE" & TAIL_PID=$! # Wait for the build to complete 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 $pkg ===" done