1- COMMIT := $(shell git rev-parse --short HEAD)
2- DATE := $(shell date "+% Y% m% d")
3- VERSION := git$(DATE ) .$(COMMIT )
4- PROJECT := go-fdo-client
5-
6- SOURCEDIR := $(CURDIR ) /build/package/rpm
7- SPEC_FILE_NAME := $(PROJECT ) .spec
8- SPEC_FILE := $(SOURCEDIR ) /$(SPEC_FILE_NAME )
9- GO_VENDOR_TOOLS_FILE := $(SOURCEDIR ) /go-vendor-tools.toml
1+ PROJECT := go-fdo-client
2+ RPM_BASE_DIR := $(CURDIR ) /build/package/rpm
3+ SPEC_FILE_NAME := $(PROJECT ) .spec
4+ SPEC_FILE := $(RPM_BASE_DIR ) /$(SPEC_FILE_NAME )
5+ COMMIT_SHORT := $(shell git rev-parse --short HEAD)
6+ VERSION := $(shell bash -c "set -o pipefail; git describe --tags | sed -e 's/^v//' -e 's/-.* //'")
7+ ifeq ($(VERSION ) ,)
8+ VERSION := $(shell grep 'Version:' $(SPEC_FILE ) | awk '{printf "% s", $$2}')
9+ endif
10+
11+ ARCH := $(shell uname -m)
12+
13+ SOURCEDIR := $(CURDIR ) /build/package/rpm
14+ SPEC_FILE_NAME := $(PROJECT ) .spec
15+ SPEC_FILE := $(SOURCEDIR ) /$(SPEC_FILE_NAME )
1016GO_VENDOR_TOOLS_FILE_NAME := go-vendor-tools.toml
17+ GO_VENDOR_TOOLS_FILE := $(SOURCEDIR ) /$(GO_VENDOR_TOOLS_FILE_NAME )
1118
1219SOURCE_TARBALL := $(SOURCEDIR ) /$(PROJECT ) -$(VERSION ) .tar.gz
13- VENDOR_TARBALL := $(SOURCEDIR ) /$(PROJECT ) -$(VERSION ) -vendor.tar.gz
20+ VENDOR_TARBALL := $(SOURCEDIR ) /$(PROJECT ) -$(VERSION ) -vendor.tar.bz2
1421
1522# Build the Go project
16- .PHONY : all build tidy fmt vet test
23+ .PHONY : all
1724all : build test
1825
26+ .PHONY : build
1927build : tidy fmt vet
20- go build -ldflags=" -X github.com/fido-device-onboard/go-fdo-client/internal/version.VERSION=${ VERSION} "
28+ go build -ldflags=" -X github.com/fido-device-onboard/go-fdo-client/internal/version.VERSION=$( VERSION) "
2129
30+ .PHONY : tidy
2231tidy :
2332 go mod tidy
2433
34+ .PHONY : fmt
2535fmt :
2636 go fmt ./...
2737
38+ .PHONY : vet
2839vet :
2940 go vet ./...
3041
42+ .PHONY : test
3143test :
3244 go test -v ./...
3345
34- # Packit helpers
35- .PHONY : vendor-tarball packit-create-archive vendor-licenses
36-
46+ .PHONY : vendor-tarball
3747vendor-tarball : $(VENDOR_TARBALL )
3848
3949$(VENDOR_TARBALL ) :
4050 rm -rf vendor; \
4151 command -v go_vendor_archive || sudo dnf install -y go-vendor-tools python3-tomlkit; \
42- go_vendor_archive create --compression gz -- config $(GO_VENDOR_TOOLS_FILE ) --write-config --output $(VENDOR_TARBALL ) . ; \
52+ go_vendor_archive create --config $(GO_VENDOR_TOOLS_FILE ) --write-config --output $(VENDOR_TARBALL ) . ; \
4353 rm -rf vendor;
4454
45- packit-create-archive : $( SOURCE_TARBALL ) $( VENDOR_TARBALL )
46- @ls -1 " $( SOURCE_TARBALL) " | head -n1
55+ .PHONY : source-tarball
56+ source-tarball : $(SOURCE_TARBALL )
4757
4858$(SOURCE_TARBALL ) :
4959 mkdir -p " $( SOURCEDIR) "
5060 git archive --format=tar --prefix=" $( PROJECT) -$( VERSION) /" HEAD | gzip > " $( SOURCE_TARBALL) "
5161
62+ .PHONY : vendor-licenses
5263vendor-licenses :
5364 go_vendor_license --config " $( GO_VENDOR_TOOLS_FILE) " .
5465
@@ -64,10 +75,6 @@ vendor-licenses:
6475# ./rpmbuild, using rpmbuild's usual directory structure (in lowercase).
6576#
6677
67- RPM_BASE_DIR := $(CURDIR ) /build/package/rpm
68- SPEC_FILE_NAME := $(PROJECT ) .spec
69- SPEC_FILE := $(RPM_BASE_DIR ) /$(SPEC_FILE_NAME )
70-
7178RPMBUILD_TOP_DIR := $(CURDIR ) /rpmbuild
7279RPMBUILD_BUILD_DIR := $(RPMBUILD_TOP_DIR ) /build
7380RPMBUILD_RPMS_DIR := $(RPMBUILD_TOP_DIR ) /rpms
@@ -79,14 +86,15 @@ RPMBUILD_BUILDROOT_DIR := $(RPMBUILD_TOP_DIR)/buildroot
7986RPMBUILD_GOLANG_VENDOR_TOOLS_FILE := $(RPMBUILD_SOURCES_DIR ) /$(GO_VENDOR_TOOLS_FILE_NAME )
8087RPMBUILD_SPECFILE := $(RPMBUILD_SPECS_DIR ) /$(PROJECT ) -$(VERSION ) .spec
8188RPMBUILD_TARBALL := $(RPMBUILD_SOURCES_DIR ) /$(PROJECT ) -$(VERSION ) .tar.gz
82- RPMBUILD_VENDOR_TARBALL := $(RPMBUILD_SOURCES_DIR ) /$(PROJECT ) -$(VERSION ) -vendor.tar.gz
89+ RPMBUILD_VENDOR_TARBALL := $(RPMBUILD_SOURCES_DIR ) /$(PROJECT ) -$(VERSION ) -vendor.tar.bz2
90+ RPMBUILD_SRPM_FILE := $(RPMBUILD_SRPMS_DIR ) /$(PROJECT ) -$(VERSION ) -git$(COMMIT_SHORT ) .src.rpm
91+ RPMBUILD_RPM_FILE := $(RPMBUILD_RPMS_DIR ) /$(ARCH ) /$(PROJECT ) -$(VERSION ) -git$(COMMIT_SHORT ) .$(ARCH ) .rpm
8392
8493# Render a versioned spec into ./rpmbuild/specs (keeps source spec pristine)
8594$(RPMBUILD_SPECFILE ) :
8695 mkdir -p $(RPMBUILD_SPECS_DIR )
87- sed -e " s|^Version:.*|Version: $( VERSION) |;" \
88- -e " s|^Source0:.*|Source0: $( PROJECT) -$( VERSION) .tar.gz|;" \
89- -e " s|^Source1:.*|Source1: $( PROJECT) -$( VERSION) -vendor.tar.gz|;" \
96+ sed -e " s/^Version:\(\s*\).*/Version:\1$( VERSION) /;" \
97+ -e " s/^Release:\(\s*\).*/Release:\1git$( COMMIT_SHORT) /;" \
9098 $(SPEC_FILE ) > $(RPMBUILD_SPECFILE )
9199
92100# Copy sources into ./rpmbuild/sources
@@ -100,9 +108,7 @@ $(RPMBUILD_GOLANG_VENDOR_TOOLS_FILE):
100108 mkdir -p $(RPMBUILD_SOURCES_DIR )
101109 cp -f $(GO_VENDOR_TOOLS_FILE ) $(RPMBUILD_GOLANG_VENDOR_TOOLS_FILE )
102110
103- # Build SRPM locally (outputs under ./rpmbuild)
104- .PHONY : srpm
105- srpm : $(RPMBUILD_SPECFILE ) $(RPMBUILD_TARBALL ) $(RPMBUILD_GOLANG_VENDOR_TOOLS_FILE )
111+ $(RPMBUILD_SRPM_FILE ) : $(RPMBUILD_SPECFILE ) $(RPMBUILD_TARBALL ) $(RPMBUILD_GOLANG_VENDOR_TOOLS_FILE )
106112 command -v rpmbuild > /dev/null || { echo " rpmbuild missing" ; exit 1; }
107113 rpmbuild -bs \
108114 --define " _topdir $( RPMBUILD_TOP_DIR) " \
@@ -114,9 +120,7 @@ srpm: $(RPMBUILD_SPECFILE) $(RPMBUILD_TARBALL) $(RPMBUILD_GOLANG_VENDOR_TOOLS_FI
114120 --define " _buildrootdir $( RPMBUILD_BUILDROOT_DIR) " \
115121 $(RPMBUILD_SPECFILE )
116122
117- # Build binary RPM locally (optional)
118- .PHONY : rpm
119- rpm : $(RPMBUILD_SPECFILE ) $(RPMBUILD_TARBALL ) $(RPMBUILD_GOLANG_VENDOR_TOOLS_FILE )
123+ $(RPMBUILD_RPM_FILE ) : $(RPMBUILD_SPECFILE ) $(RPMBUILD_TARBALL ) $(RPMBUILD_GOLANG_VENDOR_TOOLS_FILE )
120124 command -v rpmbuild > /dev/null || { echo " rpmbuild missing" ; exit 1; }
121125 # Uncomment to auto-install build deps on your host:
122126 # sudo dnf builddep -y $(RPMBUILD_SPECFILE)
@@ -129,3 +133,11 @@ rpm: $(RPMBUILD_SPECFILE) $(RPMBUILD_TARBALL) $(RPMBUILD_GOLANG_VENDOR_TOOLS_FIL
129133 --define " _builddir $( RPMBUILD_BUILD_DIR) " \
130134 --define " _buildrootdir $( RPMBUILD_BUILDROOT_DIR) " \
131135 $(RPMBUILD_SPECFILE )
136+
137+ # Build SRPM locally (outputs under ./rpmbuild)
138+ .PHONY : srpm
139+ srpm : $(RPMBUILD_SRPM_FILE )
140+
141+ # Build binary RPM locally (optional)
142+ .PHONY : rpm
143+ rpm : $(RPMBUILD_RPM_FILE )
0 commit comments