Skip to content

Commit 815eceb

Browse files
author
Waldek Herka
committed
WIP
1 parent 7b98442 commit 815eceb

File tree

2 files changed

+43
-76
lines changed

2 files changed

+43
-76
lines changed

Makefile

Lines changed: 42 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,9 @@ help:
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
248263
release: 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
359363
package-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
371375
package-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
401386
package-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
413398
package-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) .
502469
ifeq ($(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; \

nfpm.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ depends:
2020
recommends:
2121
- gh
2222
contents:
23-
- src: ./dist/gh-app-auth-linux-${GOARCH}
23+
- src: ./dist/linux-${GOARCH}
2424
dst: /usr/bin/gh-app-auth
2525
file_info:
2626
mode: 0755

0 commit comments

Comments
 (0)