Restructure for packaging
This commit is contained in:
84
Makefile
Normal file
84
Makefile
Normal file
@@ -0,0 +1,84 @@
|
||||
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/
|
||||
Reference in New Issue
Block a user