# Customise the following variable as Make parameters
# to produce a yum.repo for a VENDOR distribution
# Default values are pointing to GerritForge (www.gerritforge.com)
VERSION=1
RELEASE=3
VENDOR=GerritForge
VENDOR_LC=$(shell echo $(VENDOR) | tr A-Z a-z)
WEB_URL=http://$(VENDOR_LC).com
MIRROR_URL=http://mirrorlist.$(VENDOR_LC).com/yum

# Vendor PGP Certificate (default GerritForge)
PGP_USER=info@$(VENDOR_LC).com

### END OF VARIABLES THAT CAN BE OVERRIDDEN ###

# Yum repo definition
define YUM_REPO
[$(VENDOR_LC)]
name=$(VENDOR) repository for Gerrit Code Review
mirrorlist=$(MIRROR_URL)
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-$(VENDOR)
endef
export YUM_REPO

CATEGORY=Development
SUMMARY=$(VENDOR) repository
BUILD_ARCH=noarch
LICENSE=Apache 2.0
NAME=$(VENDOR_LC)-repo
RPM_OUT=client/$(VENDOR_LC)-repo-$(VERSION)-$(RELEASE).$(BUILD_ARCH).rpm

all: client server

client: $(RPM_OUT)

prepare:
	-mkdir -p client etc/yum.repos.d etc/pki/rpm-gpg server
	echo "$$YUM_REPO" > etc/yum.repos.d/$(VENDOR).repo
	gpg --yes --armor --output etc/pki/rpm-gpg/RPM-GPG-KEY-$(VENDOR) --export $(PGP_USER)

clean:
	-rm -Rf client etc server

$(RPM_OUT): $(SRCS) prepare
	fpm -t rpm -p $@ -s dir \
	-f -n $(NAME) -v $(VERSION) --iteration $(RELEASE) --category $(CATEGORY) \
	--description "$(SUMMARY)" --url $(WEB_URL) --license "$(LICENSE)" --vendor "$(VENDOR)" \
	--rpm-user root --rpm-group root \
	--verbose etc

server:
	echo "%_signature gpg" > ~/.rpmmacros
	echo "%_gpg_name  $(PGP_USER)" >> ~/.rpmmacros
	echo '%__gpg_sign_cmd %{__gpg} \
 gpg --force-v3-sigs --digest-algo=sha1 --batch --no-verbose --no-armor \
 --passphrase-fd 3 --no-secmem-warning -u "%{_gpg_name}" \
 -sbo %{__signature_filename} %{__plaintext_filename}' >>  ~/.rpmmacros
	rpm --addsign server/*rpm
	createrepo --checksum sha server/.

.PHONY: clean prepare server
