PACKAGE_NAME := pgmon VERSION := 1.0 BUILD_DIR := build DEB_IMAGE := debian-package-builder RPM_IMAGE := rpm-package-builder SCRIPT := src/$(PACKAGE_NAME).py # Top-level targets .PHONY: all clean deb rpm all: deb rpm deb: mkdir -p $(BUILD_DIR)/deb docker run --rm \ -v .:/src:ro \ -v ./$(BUILD_DIR)/deb:/output \ $(DEB_IMAGE) rpm: mkdir -p $(BUILD_DIR)/rpm docker run --rm \ -v .:/src:ro \ -v ./$(BUILD_DIR)/rpm:/output \ $(RPM_IMAGE) clean: rm -rf $(BUILD_DIR) # Container targets .PHONY: docker deb-package-image rpm-package-image docker: deb-package-image rpm-package-image deb-package-image: Dockerfile.deb docker build -t $(DEB_IMAGE) -f Dockerfile.deb . rpm-package-image: Dockerfile.rpm docker build -t $(RPM_IMAGE) -f Dockerfile.rpm . # Inside-container targets .PHONY: package-deb package-rpm # Debian package creation logic package-deb: $(MAKE) install DESTDIT=/output cp -r DEBIAN /output/ dpkg-deb --build /output /output/$(PACKAGE_NAME)_$(VERSION).deb # RPM package creation logic package-rpm: mkdir -p /output/{BUILD,RPMS,SOURCES,SPECS,SRPMS} cp RPM/$(PACKAGE_NAME).spec /output/SPECS/ rpmbuild --define '_topdir /output' \ --define 'version $(VERSION)' \ -ba /output/SPECS/$(PACKAGE_NAME).spec cp /output/rpm/RPMS/x86_64/*.rpm /output/ # Install into the specified destination directory (used inside the packaging systems) .PHONY: install install: # Set up directories mkdir -p $(DESTDIR)/usr/bin mkdir -p $(DESTDIR)/usr/share/man/man1 mkdir -p $(DESTDIR)/etc/$(PACKAGE_NAME) mkdir -p $(DESTDIR)/lib/systemd/system # Install script cp script.py $(DESTDIR)/usr/bin/$(PACKAGE_NAME) chmod 755 $(DESTDIR)/usr/bin/$(PACKAGE_NAME) # Install manpage cp manpages/* $(DESTDIR)/usr/share/man/man1/ gzip -9 $(DESTDIR)/usr/share/man/man1/$(PACKAGE_NAME).1 # Install sample config cp sample-config/* $(DESTDIR)/etc/$(PACKAGE_NAME)/ # Install systemd unit files cp systemd/* $(DESTDIR)/lib/systemd/system/