#!/bin/bash # build-deb.sh - Build Debian package for FeatherDDNS (runs inside container) set -e VERSION="${VERSION:-1.0.0}" ARCH="amd64" PACKAGE_NAME="featherddns" MAINTAINER="Steven Tracey " HOMEPAGE="https://git.nevets.tech/Steven/FeatherDDNS" BUILD_DIR="build/${PACKAGE_NAME}_${VERSION}_${ARCH}" echo "Building ${PACKAGE_NAME} version ${VERSION}..." # Clean and create build directory rm -rf "$BUILD_DIR" mkdir -p "$BUILD_DIR/DEBIAN" mkdir -p "$BUILD_DIR/usr/bin" mkdir -p "$BUILD_DIR/etc/featherddns" mkdir -p "$BUILD_DIR/lib/systemd/system" # Copy and strip binary echo "Copying binary..." cp "bin/FeatherDDNS" "$BUILD_DIR/usr/bin/featherddns" strip "$BUILD_DIR/usr/bin/featherddns" chmod 755 "$BUILD_DIR/usr/bin/featherddns" # Copy config if exists if [ -f "config.json.example" ]; then echo "Copying configuration..." cp "config.json.example" "$BUILD_DIR/etc/featherddns/config.json" chmod 644 "$BUILD_DIR/etc/featherddns/config.json" fi # Copy systemd service if exists if [ -f "featherddns.service" ]; then echo "Copying systemd service..." cp "featherddns.service" "$BUILD_DIR/lib/systemd/system/" chmod 644 "$BUILD_DIR/lib/systemd/system/featherddns.service" fi # Create control file cat > "$BUILD_DIR/DEBIAN/control" < "$BUILD_DIR/DEBIAN/conffiles" < "$BUILD_DIR/DEBIAN/postinst" <<'EOF' #!/bin/bash set -e case "$1" in configure) # Create featherddns user if it doesn't exist if ! getent passwd featherddns > /dev/null; then useradd --system --home-dir /var/lib/featherddns --shell /bin/false featherddns fi # Create directories mkdir -p /var/lib/featherddns mkdir -p /var/log/featherddns chown featherddns:featherddns /var/lib/featherddns chown featherddns:featherddns /var/log/featherddns # Reload systemd if [ -d /run/systemd/system ]; then systemctl daemon-reload >/dev/null || true fi ;; esac exit 0 EOF chmod 755 "$BUILD_DIR/DEBIAN/postinst" # Create prerm script cat > "$BUILD_DIR/DEBIAN/prerm" <<'EOF' #!/bin/bash set -e case "$1" in remove|upgrade) if [ -d /run/systemd/system ]; then systemctl stop featherddns.service >/dev/null 2>&1 || true fi ;; esac exit 0 EOF chmod 755 "$BUILD_DIR/DEBIAN/prerm" # Create postrm script cat > "$BUILD_DIR/DEBIAN/postrm" <<'EOF' #!/bin/bash set -e case "$1" in remove) if [ -d /run/systemd/system ]; then systemctl daemon-reload >/dev/null || true fi ;; purge) rm -rf /etc/featherddns rm -rf /var/lib/featherddns rm -rf /var/log/featherddns if [ -d /run/systemd/system ]; then systemctl daemon-reload >/dev/null || true fi ;; esac exit 0 EOF chmod 755 "$BUILD_DIR/DEBIAN/postrm" # Build the package echo "Building package..." dpkg-deb --build --root-owner-group "$BUILD_DIR" # Move to dist directory mkdir -p dist mv "${BUILD_DIR}.deb" "dist/" echo "Package built: dist/${PACKAGE_NAME}_${VERSION}_${ARCH}.deb" # Run lintian check if command -v lintian > /dev/null 2>&1; then echo "Running lintian check..." lintian "dist/${PACKAGE_NAME}_${VERSION}_${ARCH}.deb" || true fi echo "Done!"