# 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