3939 @echo " Packaging targets:"
4040 @echo " package-deb Build DEB package for amd64"
4141 @echo " package-deb-arm64 Build DEB package for arm64 (requires 'make release')"
42- @echo " package-deb-386 Build DEB package for 386/i386 (requires 'make release')"
4342 @echo " package-deb-arm Build DEB package for arm/armhf (requires 'make release')"
4443 @echo " package-rpm Build RPM package for amd64"
4544 @echo " package-rpm-arm64 Build RPM package for arm64 (requires 'make release')"
46- @echo " package-rpm-386 Build RPM package for 386/i386 (requires 'make release')"
47- @echo " package-rpm-arm Build RPM package for arm/armv7hl (requires 'make release')"
4845 @echo " packages Build all packages (deb/rpm for all architectures)"
4946 @echo " packages-local Build packages for local architecture only"
5047 @echo " validate-packages Verify binary/package architectures match targets"
@@ -244,35 +241,42 @@ deps:
244241 go mod verify
245242 go mod tidy
246243
244+ # Build matrix: os-arch (gh extension install compatible)
245+ # Format: OS-ARCH (no prefix, no dots, windows has .exe)
246+ # Based on download analysis:
247+ # linux-amd64: 16999 (critical - primary platform)
248+ # darwin-arm64: 12, darwin-amd64: 9 (real but low usage)
249+ # windows/*: 8 each (likely checks only, but kept for completeness)
250+ # freebsd/*: 8 each (likely checks only - commented out)
251+ BUILD_MATRIX := \
252+ linux-amd64 \
253+ linux-arm64 \
254+ darwin-amd64 \
255+ darwin-arm64 \
256+ windows-amd64:.exe \
257+ windows-arm64:.exe
258+
259+ # Additional platforms (uncomment if needed):
260+ # windows-386:.exe, linux-386, linux-arm, freebsd-amd64, freebsd-arm64, freebsd-386
261+
247262# Build release binaries
248263release : clean
249264 @echo " Building release binaries..."
250265 mkdir -p dist
251-
252- # Linux AMD64
253- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build $(LDFLAGS ) -o dist/$(BINARY_NAME ) -linux-amd64 .
254-
255- # Linux ARM64
256- CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build $(LDFLAGS ) -o dist/$(BINARY_NAME ) -linux-arm64 .
257-
258- # Linux 386 (i386)
259- CGO_ENABLED=0 GOOS=linux GOARCH=386 go build $(LDFLAGS ) -o dist/$(BINARY_NAME ) -linux-386 .
260-
261- # Linux ARM (armv7)
262- CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build $(LDFLAGS ) -o dist/$(BINARY_NAME ) -linux-arm .
263-
264- # macOS AMD64
265- CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build $(LDFLAGS ) -o dist/$(BINARY_NAME ) -darwin-amd64 .
266-
267- # macOS ARM64 (Apple Silicon)
268- CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build $(LDFLAGS ) -o dist/$(BINARY_NAME ) -darwin-arm64 .
269-
270- # Windows AMD64
271- CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build $(LDFLAGS ) -o dist/$(BINARY_NAME ) -windows-amd64.exe .
272-
273- # Windows ARM64
274- CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build $(LDFLAGS ) -o dist/$(BINARY_NAME ) -windows-arm64.exe .
275-
266+ @echo " Build matrix: $( BUILD_MATRIX) "
267+ @echo " "
268+ $(foreach entry,$(BUILD_MATRIX ) ,\
269+ $(eval platform := $(entry ) ) \
270+ $(eval ext := $(word 2,$(subst :, ,$(entry ) ) ) ) \
271+ $(eval platform_clean := $(word 1,$(subst :, ,$(entry ) ) ) ) \
272+ $(eval os := $(word 1,$(subst -, ,$(platform_clean ) ) ) ) \
273+ $(eval arch := $(word 2,$(subst -, ,$(platform_clean ) ) ) ) \
274+ echo " Building $( platform_clean) ..." ; \
275+ CGO_ENABLED=0 GOOS=$(os ) GOARCH=$(arch ) \
276+ go build $(LDFLAGS ) \
277+ -o dist/$(platform_clean )$(or $(ext ) ,) . ; \
278+ )
279+ @echo " "
276280 @echo " Release binaries built in dist/"
277281 @ls -la dist/
278282
@@ -353,14 +357,14 @@ quality: validate-lint-tools fmt lint-all test-coverage-check security-scan
353357 @echo " Quality check complete!"
354358
355359# Packaging targets
356- .PHONY : package-deb package-deb-arm64 package-deb-386 package-deb- arm package-rpm package-rpm-arm64 package-rpm-386 package-rpm-arm packages packages-local validate-packages
360+ .PHONY : package-deb package-deb-arm64 package-deb-arm package-rpm package-rpm-arm64 package-rpm-arm packages packages-local validate-packages
357361
358362# Build DEB package for amd64
359363package-deb :
360364 @echo " Building DEB package for amd64..."
361365 @mkdir -p dist
362366 @echo " Building Linux amd64 binary..."
363- @GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS ) -o dist/$( BINARY_NAME ) - linux-amd64 .
367+ @GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS ) -o dist/linux-amd64 .
364368 @export GOARCH=amd64 ARCH=amd64 VERSION=$(PKG_VERSION ) ; \
365369 envsubst ' $$GOARCH $$ARCH $$VERSION' < nfpm.yaml > nfpm-temp.yaml; \
366370 GOARCH=$(shell go env GOARCH) $(NFPM_CMD ) pkg --config nfpm-temp.yaml --packager deb --target dist/$(BINARY_NAME ) _$(PKG_VERSION ) _amd64.deb; \
@@ -370,39 +374,20 @@ package-deb:
370374# Build DEB package for arm64
371375package-deb-arm64 : release
372376 @echo " Building DEB package for arm64..."
373- @test -f dist/$( BINARY_NAME ) - linux-arm64 || { echo " ❌ Linux ARM64 binary not found. Run 'make release' first." ; exit 1; }
377+ @test -f dist/linux-arm64 || { echo " ❌ Linux ARM64 binary not found. Run 'make release' first." ; exit 1; }
374378 @export GOARCH=arm64 ARCH=arm64 VERSION=$(PKG_VERSION ) ; \
375379 envsubst ' $$GOARCH $$ARCH $$VERSION' < nfpm.yaml > nfpm-temp.yaml; \
376380 GOARCH=$(shell go env GOARCH) $(NFPM_CMD ) pkg --config nfpm-temp.yaml --packager deb --target dist/$(BINARY_NAME ) _$(PKG_VERSION ) _arm64.deb; \
377381 rm nfpm-temp.yaml
378382 @echo " ✅ DEB package created: dist/$( BINARY_NAME) _$( PKG_VERSION) _arm64.deb"
379383
380- # Build DEB package for 386 (i386)
381- package-deb-386 : release
382- @echo " Building DEB package for 386..."
383- @test -f dist/$(BINARY_NAME ) -linux-386 || { echo " ❌ Linux 386 binary not found. Run 'make release' first." ; exit 1; }
384- @export GOARCH=386 ARCH=386 VERSION=$(PKG_VERSION ) ; \
385- envsubst ' $$GOARCH $$ARCH $$VERSION' < nfpm.yaml > nfpm-temp.yaml; \
386- GOARCH=$(shell go env GOARCH) $(NFPM_CMD ) pkg --config nfpm-temp.yaml --packager deb --target dist/$(BINARY_NAME ) _$(PKG_VERSION ) _i386.deb; \
387- rm nfpm-temp.yaml
388- @echo " ✅ DEB package created: dist/$( BINARY_NAME) _$( PKG_VERSION) _i386.deb"
389-
390- # Build DEB package for arm (armhf)
391- package-deb-arm : release
392- @echo " Building DEB package for arm..."
393- @test -f dist/$(BINARY_NAME ) -linux-arm || { echo " ❌ Linux ARM binary not found. Run 'make release' first." ; exit 1; }
394- @export GOARCH=arm ARCH=arm VERSION=$(PKG_VERSION ) ; \
395- envsubst ' $$GOARCH $$ARCH $$VERSION' < nfpm.yaml > nfpm-temp.yaml; \
396- GOARCH=$(shell go env GOARCH) $(NFPM_CMD ) pkg --config nfpm-temp.yaml --packager deb --target dist/$(BINARY_NAME ) _$(PKG_VERSION ) _armhf.deb; \
397- rm nfpm-temp.yaml
398- @echo " ✅ DEB package created: dist/$( BINARY_NAME) _$( PKG_VERSION) _armhf.deb"
399384
400385# Build RPM package for amd64
401386package-rpm :
402387 @echo " Building RPM package for amd64..."
403388 @mkdir -p dist
404389 @echo " Building Linux amd64 binary..."
405- @GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS ) -o dist/$( BINARY_NAME ) - linux-amd64 .
390+ @GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS ) -o dist/linux-amd64 .
406391 @export GOARCH=amd64 ARCH=amd64 VERSION=$(PKG_VERSION ) RPM_RELEASE=$(RPM_RELEASE ) ; \
407392 envsubst ' $$GOARCH $$ARCH $$VERSION $$RPM_RELEASE' < nfpm.yaml > nfpm-temp.yaml; \
408393 GOARCH=$(shell go env GOARCH) $(NFPM_CMD ) pkg --config nfpm-temp.yaml --packager rpm --target dist/$(BINARY_NAME ) _$(PKG_VERSION ) -$(RPM_RELEASE ) _x86_64.rpm; \
@@ -412,35 +397,17 @@ package-rpm:
412397# Build RPM package for arm64
413398package-rpm-arm64 : release
414399 @echo " Building RPM package for arm64..."
415- @test -f dist/$( BINARY_NAME ) - linux-arm64 || { echo " ❌ Linux ARM64 binary not found. Run 'make release' first." ; exit 1; }
400+ @test -f dist/linux-arm64 || { echo " ❌ Linux ARM64 binary not found. Run 'make release' first." ; exit 1; }
416401 @export GOARCH=arm64 ARCH=arm64 VERSION=$(PKG_VERSION ) RPM_RELEASE=$(RPM_RELEASE ) ; \
417402 envsubst ' $$GOARCH $$ARCH $$VERSION $$RPM_RELEASE' < nfpm.yaml > nfpm-temp.yaml; \
418403 GOARCH=$(shell go env GOARCH) $(NFPM_CMD ) pkg --config nfpm-temp.yaml --packager rpm --target dist/$(BINARY_NAME ) _$(PKG_VERSION ) -$(RPM_RELEASE ) _aarch64.rpm; \
419404 rm nfpm-temp.yaml
420405 @echo " ✅ RPM package created: dist/$( BINARY_NAME) _$( PKG_VERSION) -$( RPM_RELEASE) _aarch64.rpm"
421406
422- # Build RPM package for 386 (i386/i686)
423- package-rpm-386 : release
424- @echo " Building RPM package for 386..."
425- @test -f dist/$(BINARY_NAME ) -linux-386 || { echo " ❌ Linux 386 binary not found. Run 'make release' first." ; exit 1; }
426- @export GOARCH=386 ARCH=386 VERSION=$(PKG_VERSION ) RPM_RELEASE=$(RPM_RELEASE ) ; \
427- envsubst ' $$GOARCH $$ARCH $$VERSION $$RPM_RELEASE' < nfpm.yaml > nfpm-temp.yaml; \
428- GOARCH=$(shell go env GOARCH) $(NFPM_CMD ) pkg --config nfpm-temp.yaml --packager rpm --target dist/$(BINARY_NAME ) _$(PKG_VERSION ) -$(RPM_RELEASE ) _i386.rpm; \
429- rm nfpm-temp.yaml
430- @echo " ✅ RPM package created: dist/$( BINARY_NAME) _$( PKG_VERSION) -$( RPM_RELEASE) _i386.rpm"
431407
432- # Build RPM package for arm (armv7hl)
433- package-rpm-arm : release
434- @echo " Building RPM package for arm..."
435- @test -f dist/$(BINARY_NAME ) -linux-arm || { echo " ❌ Linux ARM binary not found. Run 'make release' first." ; exit 1; }
436- @export GOARCH=arm ARCH=arm VERSION=$(PKG_VERSION ) RPM_RELEASE=$(RPM_RELEASE ) ; \
437- envsubst ' $$GOARCH $$ARCH $$VERSION $$RPM_RELEASE' < nfpm.yaml > nfpm-temp.yaml; \
438- GOARCH=$(shell go env GOARCH) $(NFPM_CMD ) pkg --config nfpm-temp.yaml --packager rpm --target dist/$(BINARY_NAME ) _$(PKG_VERSION ) -$(RPM_RELEASE ) _armv7hl.rpm; \
439- rm nfpm-temp.yaml
440- @echo " ✅ RPM package created: dist/$( BINARY_NAME) _$( PKG_VERSION) -$( RPM_RELEASE) _armv7hl.rpm"
441408
442409# Build all packages (requires release binaries)
443- packages : release package-deb package-rpm package-deb-arm64 package-rpm-arm64 package-deb-386 package-rpm-386 package-deb-arm package-rpm-arm
410+ packages : dev-setup release package-deb package-rpm package-deb-arm64 package-rpm-arm64 package-deb-arm package-rpm-arm
444411 @echo " "
445412 @echo " =========================================="
446413 @echo " All packages built successfully!"
@@ -452,23 +419,23 @@ validate-packages:
452419 @echo " Validating binary and package architectures..."
453420 @echo " "
454421 @echo " === Linux Binary Architecture Verification ==="
455- @for binary in dist/gh-app-auth- linux-* ; do \
422+ @for binary in dist/linux-* ; do \
456423 if [ -f " $$ binary" ]; then \
457424 echo -n " $$ binary: " ; \
458425 file $$ binary | grep -oP ' (x86-64|ARM aarch64|Intel 80386|ARM EABI)' ; \
459426 fi ; \
460427 done
461428 @echo " "
462429 @echo " === macOS Binary Architecture Verification ==="
463- @for binary in dist/gh-app-auth- darwin-* ; do \
430+ @for binary in dist/darwin-* ; do \
464431 if [ -f " $$ binary" ]; then \
465432 echo -n " $$ binary: " ; \
466433 file $$ binary | grep -oP ' (x86-64|arm64)' ; \
467434 fi ; \
468435 done
469436 @echo " "
470437 @echo " === Windows Binary Architecture Verification ==="
471- @for binary in dist/gh-app-auth- windows-* .exe; do \
438+ @for binary in dist/windows-* .exe; do \
472439 if [ -f " $$ binary" ]; then \
473440 echo -n " $$ binary: " ; \
474441 file $$ binary | grep -oP ' (x86-64|Aarch64)' ; \
@@ -498,7 +465,7 @@ packages-local:
498465 @echo " Building packages for local architecture ($( shell go env GOARCH) )..."
499466 @mkdir -p dist
500467 @echo " Building Linux binary for local architecture..."
501- @GOOS=linux GOARCH=$(shell go env GOARCH) CGO_ENABLED=0 go build $(LDFLAGS ) -o dist/$( BINARY_NAME ) - linux-$(shell go env GOARCH) .
468+ @GOOS=linux GOARCH=$(shell go env GOARCH) CGO_ENABLED=0 go build $(LDFLAGS ) -o dist/linux-$(shell go env GOARCH) .
502469ifeq ($(shell go env GOARCH) ,amd64)
503470 @export GOARCH=amd64 ARCH=amd64 VERSION=$(PKG_VERSION) RPM_RELEASE=$(RPM_RELEASE); \
504471 envsubst '$$GOARCH $$ARCH $$VERSION $$RPM_RELEASE' < nfpm.yaml > nfpm-temp.yaml; \
0 commit comments