diff --git a/installlocal.sh b/installlocal.sh index d956e2a..0418811 100755 --- a/installlocal.sh +++ b/installlocal.sh @@ -29,10 +29,10 @@ fi echo "==> Detected package format: $PKG_FORMAT (arch: $NFPM_ARCH)" # Find package matching the target architecture +# RPM uses x86_64/aarch64, DEB uses amd64/arm64 find_pkg() { local pattern="$1" - # Filter by architecture name in filename - ls $pattern 2>/dev/null | grep -E "[._]${NFPM_ARCH}[._]" | head -1 + ls $pattern 2>/dev/null | grep -E "[._](${NFPM_ARCH}|${RPM_ARCH})[._]" | head -1 } if [ "$PKG_FORMAT" = "rpm" ]; then diff --git a/nfpm.yaml b/nfpm.yaml index 34ae5fd..047ecc8 100644 --- a/nfpm.yaml +++ b/nfpm.yaml @@ -1,5 +1,5 @@ name: mcpctl -arch: ${NFPM_ARCH:-amd64} +arch: ${NFPM_ARCH} version: 0.0.1 release: "1" maintainer: michal diff --git a/scripts/arch-helper.sh b/scripts/arch-helper.sh index 74b02e3..c3a8bcc 100644 --- a/scripts/arch-helper.sh +++ b/scripts/arch-helper.sh @@ -3,7 +3,8 @@ # Source this file, then call: resolve_arch [target_arch] # # Outputs (exported): -# NFPM_ARCH — nfpm/deb/rpm arch name: "amd64" or "arm64" +# NFPM_ARCH — nfpm arch name: "amd64" or "arm64" +# RPM_ARCH — RPM arch name: "x86_64" or "aarch64" # BUN_TARGET — bun cross-compile target (empty if native build) # ARCH_SUFFIX — filename suffix for cross-compiled binaries (empty if native) @@ -57,6 +58,13 @@ resolve_arch() { fi fi - export NFPM_ARCH BUN_TARGET ARCH_SUFFIX + # RPM uses different arch names than deb/nfpm + case "$NFPM_ARCH" in + amd64) RPM_ARCH="x86_64" ;; + arm64) RPM_ARCH="aarch64" ;; + *) RPM_ARCH="$NFPM_ARCH" ;; + esac + + export NFPM_ARCH RPM_ARCH BUN_TARGET ARCH_SUFFIX echo " Architecture: ${NFPM_ARCH} (native: ${native}${BUN_TARGET:+, cross-compiling via $BUN_TARGET})" } diff --git a/scripts/build-deb.sh b/scripts/build-deb.sh index bc83c22..e8b1d07 100755 --- a/scripts/build-deb.sh +++ b/scripts/build-deb.sh @@ -28,13 +28,19 @@ if [ ! -f "dist/mcpctl${ARCH_SUFFIX}" ] || [ ! -f "dist/mcpctl-local${ARCH_SUFFI echo "==> Binaries not found, building from scratch..." echo "" - echo "==> Running unit tests..." - pnpm test:run - echo "" + # Generate Prisma client if missing (fresh checkout) + if [ ! -d src/db/node_modules/.prisma ]; then + echo "==> Generating Prisma client..." + pnpm --filter @mcpctl/db exec prisma generate + fi echo "==> Building TypeScript..." pnpm build + echo "==> Running unit tests..." + pnpm test:run + echo "" + echo "==> Generating shell completions..." pnpm completions:generate diff --git a/scripts/build-rpm.sh b/scripts/build-rpm.sh index 1f72996..f2db0f1 100755 --- a/scripts/build-rpm.sh +++ b/scripts/build-rpm.sh @@ -23,13 +23,19 @@ resolve_arch "${MCPCTL_TARGET_ARCH:-}" source "$SCRIPT_DIR/ensure-deps.sh" ensure_build_deps -echo "==> Running unit tests..." -pnpm test:run -echo "" +# Generate Prisma client if missing (fresh checkout) +if [ ! -d src/db/node_modules/.prisma ]; then + echo "==> Generating Prisma client..." + pnpm --filter @mcpctl/db exec prisma generate +fi echo "==> Building TypeScript..." pnpm build +echo "==> Running unit tests..." +pnpm test:run +echo "" + echo "==> Generating shell completions..." pnpm completions:generate @@ -37,7 +43,7 @@ echo "==> Bundling standalone binaries (target: ${NFPM_ARCH})..." mkdir -p dist rm -f "dist/mcpctl${ARCH_SUFFIX}" "dist/mcpctl-local${ARCH_SUFFIX}" # Only remove RPMs for the target arch (preserve cross-compiled packages) -ls dist/mcpctl-*.${NFPM_ARCH}.rpm 2>/dev/null | xargs -r rm -f +ls dist/mcpctl-*.${RPM_ARCH}.rpm 2>/dev/null | xargs -r rm -f # Ink optionally imports react-devtools-core which isn't installed. # Provide a no-op stub so bun can bundle it (it's only invoked when DEV=true). @@ -58,7 +64,7 @@ echo "==> Packaging RPM (arch: ${NFPM_ARCH})..." export NFPM_ARCH nfpm pkg --packager rpm --target dist/ -RPM_FILE=$(ls dist/mcpctl-*.${NFPM_ARCH}.rpm 2>/dev/null | head -1) +RPM_FILE=$(ls dist/mcpctl-*.${RPM_ARCH}.rpm 2>/dev/null | head -1) echo "==> Built: $RPM_FILE" echo " Size: $(du -h "$RPM_FILE" | cut -f1)" if command -v rpm &>/dev/null; then diff --git a/scripts/publish-rpm.sh b/scripts/publish-rpm.sh index 0a15196..130b259 100755 --- a/scripts/publish-rpm.sh +++ b/scripts/publish-rpm.sh @@ -24,8 +24,8 @@ fi source "$SCRIPT_DIR/arch-helper.sh" resolve_arch "${MCPCTL_TARGET_ARCH:-}" -# Find RPM matching target architecture -RPM_FILE=$(ls dist/mcpctl-*.rpm 2>/dev/null | grep -E "[._]${NFPM_ARCH}[._]" | head -1) +# Find RPM matching target architecture (RPM uses x86_64/aarch64) +RPM_FILE=$(ls dist/mcpctl-*.rpm 2>/dev/null | grep -E "[._]${RPM_ARCH}[._]" | head -1) if [ -z "$RPM_FILE" ]; then # Fallback: try any rpm file RPM_FILE=$(ls dist/mcpctl-*.rpm 2>/dev/null | head -1) diff --git a/scripts/release.sh b/scripts/release.sh index 2e5c8ff..dfa5b70 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -53,7 +53,10 @@ if command -v dpkg &>/dev/null && ! command -v dnf &>/dev/null; then DEB_FILE=$(ls dist/mcpctl*.deb 2>/dev/null | grep -E "[._]${NATIVE_ARCH}[._]" | head -1) sudo dpkg -i "$DEB_FILE" || sudo apt-get install -f -y else - RPM_FILE=$(ls dist/mcpctl-*.rpm 2>/dev/null | grep -E "[._]${NATIVE_ARCH}[._]" | head -1) + # RPM filenames use x86_64/aarch64, not amd64/arm64 + local rpm_arch + case "$NATIVE_ARCH" in amd64) rpm_arch="x86_64" ;; arm64) rpm_arch="aarch64" ;; *) rpm_arch="$NATIVE_ARCH" ;; esac + RPM_FILE=$(ls dist/mcpctl-*.rpm 2>/dev/null | grep -E "[._]${rpm_arch}[._]" | head -1) sudo rpm -U --force "$RPM_FILE" fi