#!/usr/bin/env bash set -e # --- Configuration --- PRODUCT=${1:?"Usage: $0 "} VERSION=${2:?"Usage: $0 "} PROFILE=${PROFILE:-production} ARCH="x86_64" SOURCE_DIR="target/${PROFILE}" STAGING_DIR="/tmp/${PRODUCT}-staging" DEST_DIR="target/production" # --- Script Start --- echo "๐Ÿ“ฆ Starting RPM build for '$PRODUCT' version '$VERSION'..." # 1. Clean up and create a fresh staging directory echo "๐Ÿ”ง Setting up staging directory: ${STAGING_DIR}" rm -rf "$STAGING_DIR" mkdir -p "$STAGING_DIR/usr/bin" mkdir -p "$STAGING_DIR/usr/lib/${PRODUCT}" mkdir -p "$STAGING_DIR/usr/lib/systemd/system" mkdir -p "$STAGING_DIR/etc/default" # 2. Copy compiled binaries and assets into the staging directory echo "๐Ÿ“‚ Copying application files..." cp "${SOURCE_DIR}/${PRODUCT}" "${STAGING_DIR}/usr/bin/" cp "${SOURCE_DIR}/${PRODUCT}-prepare-worker" "${STAGING_DIR}/usr/lib/${PRODUCT}/" cp "${SOURCE_DIR}/${PRODUCT}-execute-worker" "${STAGING_DIR}/usr/lib/${PRODUCT}/" # MODIFIED PATH: Prefixed with the subdirectory name cp "pezkuwi/scripts/packaging/pezkuwi.service" "${STAGING_DIR}/usr/lib/systemd/system/" # Create default config file echo 'PEZKUWI_CLI_ARGS=""' > "$STAGING_DIR/etc/default/pezkuwi" # 3. Use fpm to package the staging directory into an RPM # fpm config file .fpm is located in the pezkuwi-sdk root directory echo "๐ŸŽ Running fpm to create the RPM package..." fpm \ -s dir \ -t rpm \ -n "$PRODUCT" \ -v "$VERSION" \ -a "$ARCH" \ --rpm-os linux \ --description "Pezkuwi Node" \ --license "GPL-3.0-only" \ --url "https://pezkuwi.network/" \ --depends systemd \ --depends shadow-utils \ --after-install "pezkuwi/scripts/packaging/rpm-maintainer-scripts/rpm-postinst.sh" \ --before-remove "pezkuwi/scripts/packaging/rpm-maintainer-scripts/rpm-preun.sh" \ --after-remove "pezkuwi/scripts/packaging/rpm-maintainer-scripts/rpm-postun.sh" \ --config-files "/etc/default/pezkuwi" \ -C "$STAGING_DIR" \ . # 4. Move the final RPM to the artifacts directory echo "๐Ÿšš Moving RPM to '${DEST_DIR}'..." mkdir -p "$DEST_DIR" mv "${PRODUCT}-${VERSION}-1.${ARCH}.rpm" "$DEST_DIR/" # 5. Clean up the staging directory echo "๐Ÿงน Cleaning up temporary files..." rm -rf "$STAGING_DIR" echo "โœ… RPM package build complete!" ls -l "$DEST_DIR"