# Makefile for constructing RPMs. SHELL := bash .SHELLFLAGS := -eu -o pipefail -c NAME = cephadm DIST ?= el8 BASE := "https://github.com/ceph/ceph" BRANCH := "octopus" VERSION ?= $(shell cat SPECS/cephadm.spec.in | awk '/Version/ { print $$2}') LOCALHASH := $(shell cat SPECS/cephadm.spec.in | awk '/Source0/ { print $$2}' | cut -d'/' -f7) RELEASE ?= $(shell cat SPECS/cephadm.spec.in | awk '/Release/ {print $$2}' | cut -d'%' -f1) # TODO: Make remote hash parametric REMOTEHASH := $(shell git ls-remote "https://github.com/ceph/ceph" "octopus" | awk '{print $$1}') SPECTOOL :=$(shell which spectool) RPMBUILD :=$(shell which rpmbuild) NVR := $(NAME)-$(VERSION)-$(RELEASE).$(DIST) all: spec src srpm pre: echo: ## Print the passed (or computed) parameters echo PWD $(PWD)/SOURCES echo BASE $(BASE) echo BRANCH $(BRANCH) echo CURRENT VERSION $(VERSION) echo REMOTE HASH $(REMOTEHASH) echo LOCAL HASH $(LOCALHASH) $(eval RELEASE=$(shell echo $$(($(RELEASE)+1)))) echo RELEASE $(RELEASE) spec: ## Patch and build the cephadm spec file sed SPECS/cephadm.spec.in \ -e "s/$(LOCALHASH)/$(REMOTEHASH)/" \ -e 's/@VERSION@/$(VERSION)/' \ -e 's/@RELEASE@/$(RELEASE)/' \ > SPECS/cephadm.spec cp SPECS/cephadm.spec SPECS/cephadm.spec.in src: ## Download the cephadm sources according to the last hash $(SPECTOOL) -g SPECS/cephadm.spec -C SOURCES -f srpm: ## Build the srpm rpmbuild -bs $(PWD)/SPECS/cephadm.spec \ --define "_sourcedir $(PWD)/SOURCES" \ --define "_srcrpmdir $(PWD)" \ --define "dist .$(DIST)" clean: ## Clean the workdir rm -f $(NVR).src.rpm rm -f SPECS/cephadm.spec help: ## Print the Help @grep -E '^[a-zA-Z_-]+:.*?## .*$$' Makefile | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' .PHONY: all