#!/bin/sh # build.sh — Assemble kit-connect SPK for Synology SRM (ipq806x) # Output: kit-connect-0.1-0001.spk # # SPK structure (outer tar, UNCOMPRESSED): # INFO # PACKAGE_ICON.PNG (64x64) # PACKAGE_ICON_256.PNG (256x256) # scripts/ # postinst # start-stop-status # preinst # preuninst # postuninst # conf/ # privilege # resource # package.tgz (gzipped inner tar of bin/ + conf/) # checksum (md5 of package.tgz) set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" cd "$SCRIPT_DIR" PKG_NAME="kit-connect" VERSION="0.1-0001" OUTPUT="${PKG_NAME}-${VERSION}.spk" BUILD_DIR="/tmp/kit-connect-build-$$" echo "=== Building ${PKG_NAME}-${VERSION}.spk ===" # Clean and create build staging directory rm -rf "$BUILD_DIR" mkdir -p "$BUILD_DIR" # ── 1. Create inner package.tgz (gzipped tar of bin/ + conf/) ───────── echo " → Creating package.tgz" tar -czf "$BUILD_DIR/package.tgz" \ --format=ustar \ bin/ \ conf/connect.conf # ── 2. Generate checksum ────────────────────────────────────────────── echo " → Computing checksum" md5sum "$BUILD_DIR/package.tgz" | awk '{print $1}' > "$BUILD_DIR/checksum" # ── 3. Assemble outer SPK (UNCOMPRESSED tar) ────────────────────────── echo " → Assembling SPK" tar -cf "${OUTPUT}" \ --format=ustar \ -C "$SCRIPT_DIR" \ INFO \ PACKAGE_ICON.PNG \ PACKAGE_ICON_256.PNG \ scripts/ \ -C "$BUILD_DIR" \ package.tgz \ checksum # SPK conf/ goes in the outer tar too tar -rf "${OUTPUT}" \ --format=ustar \ -C "$SCRIPT_DIR" \ conf/privilege \ conf/resource # ── 4. Verify ───────────────────────────────────────────────────────── echo " → Verifying SPK contents" tar -tf "${OUTPUT}" | sort SIZE=$(stat -f%z "${OUTPUT}" 2>/dev/null || stat -c%s "${OUTPUT}" 2>/dev/null) echo "" echo "=== Build complete: ${OUTPUT} ===" echo " Size: ${SIZE} bytes" echo " MD5: $(md5sum "${OUTPUT}" | awk '{print $1}')" # Cleanup rm -rf "$BUILD_DIR"