From b2e589c7d0d661f98f1af4b01d9b56d0e4535dc5 Mon Sep 17 00:00:00 2001 From: Nicolas MASSE Date: Mon, 1 Dec 2025 10:11:53 +0100 Subject: [PATCH] refactor Makefiles --- Makefile | 71 +++++++++++++++++++++++++++++++++++++++++++ nginx/Makefile | 65 ++-------------------------------------- postgresql/Makefile | 73 ++------------------------------------------- 3 files changed, 75 insertions(+), 134 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..443bb2b --- /dev/null +++ b/Makefile @@ -0,0 +1,71 @@ +.PHONY: all install uninstall pre-requisites clean dryrun + +PROJECT_NAME := $(shell basename "$${PWD}") +QUADLETS_FILES = $(wildcard *.container *.volume *.network *.pod *.build) +SYSTEMD_FILES = $(wildcard *.service *.target *.timer) +SYSTEMD_UNIT_NAMES := $(wildcard *.service *.target *.timer) +SYSTEMD_MAIN_UNIT_NAMES := $(wildcard *.target) +QUADLET_UNIT_NAMES := $(patsubst %.container, %.service, $(wildcard *.container)) \ + $(patsubst %.volume, %-volume.service, $(wildcard *.volume)) \ + $(patsubst %.network, %-network.service, $(wildcard *.network)) \ + $(patsubst %.pod, %-pod.service, $(wildcard *.pod)) \ + $(patsubst %.build, %-build.service, $(wildcard *.build)) +CONFIG_FILES = $(wildcard config/*) +TARGET_QUADLETS_FILES = $(addprefix /etc/containers/systemd/, $(QUADLETS_FILES)) +TARGET_SYSTEMD_FILES = $(addprefix /etc/systemd/system/, $(SYSTEMD_FILES)) +TARGET_CONFIG_FILES = $(patsubst config/%, /etc/quadlets/$(PROJECT_NAME)/%, $(CONFIG_FILES)) + +pre-requisites: + @test "$$(id -u)" -eq 0 || (echo "This Makefile must be run as root" >&2; exit 1) + +all: install + +dryrun: + QUADLET_UNIT_DIRS="$$PWD" /usr/lib/systemd/system-generators/podman-system-generator -dryrun > /dev/null + +/etc/containers/systemd/%.container: %.container + install -D -m 0644 -o root -g root $< $@ + +/etc/containers/systemd/%.volume: %.volume + install -D -m 0644 -o root -g root $< $@ + +/etc/containers/systemd/%.network: %.network + install -D -m 0644 -o root -g root $< $@ + +/etc/containers/systemd/%.pod: %.pod + install -D -m 0644 -o root -g root $< $@ + +/etc/containers/systemd/%.build: %.build + install -D -m 0644 -o root -g root $< $@ + +/etc/systemd/system/%.service: %.service + install -D -m 0644 -o root -g root $< $@ + +/etc/systemd/system/%.target: %.target + install -D -m 0644 -o root -g root $< $@ + +/etc/systemd/system/%.timer: %.timer + install -D -m 0644 -o root -g root $< $@ + +/etc/quadlets/$(PROJECT_NAME)/%: config/% + @run() { echo $$*; "$$@"; }; \ + if [ -x $< ]; then \ + run install -D -m 0755 -o root -g root $< $@; \ + else \ + run install -D -m 0644 -o root -g root $< $@; \ + fi + +install: pre-requisites dryrun $(TARGET_QUADLETS_FILES) $(TARGET_SYSTEMD_FILES) $(TARGET_CONFIG_FILES) + systemctl daemon-reload + systemd-analyze --generators=true verify $(QUADLET_UNIT_NAMES) $(SYSTEMD_UNIT_NAMES) + systemctl enable $(SYSTEMD_UNIT_NAMES) + systemctl start $(SYSTEMD_MAIN_UNIT_NAMES) + +uninstall: pre-requisites + systemctl --no-block disable $(SYSTEMD_UNIT_NAMES) || true + systemctl --no-block stop $(SYSTEMD_UNIT_NAMES) $(QUADLET_UNIT_NAMES) || true + rm -f $(TARGET_QUADLETS_FILES) $(TARGET_SYSTEMD_FILES) $(TARGET_CONFIG_FILES) + systemctl daemon-reload + +clean: + rm -rf /var/lib/quadlets/$(PROJECT_NAME)/ /var/run/quadlets/$(PROJECT_NAME)/ /etc/quadlets/$(PROJECT_NAME)/ diff --git a/nginx/Makefile b/nginx/Makefile index 6406454..4ab7f23 100644 --- a/nginx/Makefile +++ b/nginx/Makefile @@ -1,63 +1,2 @@ -.PHONY: all install uninstall pre-requisites clean dryrun - -PROJECT_NAME := $(shell basename "$${PWD}") -QUADLET_FILES = $(wildcard *.container *.volume *.network *.pod *.build) -SYSTEMD_FILES = $(wildcard *.service *.target *.timer) -SYSTEMD_UNIT_NAMES := $(wildcard *.service *.target *.timer) -SYSTEMD_MAIN_UNIT_NAMES := $(wildcard *.target) -QUADLET_UNIT_NAMES := $(patsubst %.container, %.service, $(wildcard *.container)) \ - $(patsubst %.volume, %-volume.service, $(wildcard *.volume)) \ - $(patsubst %.network, %-network.service, $(wildcard *.network)) \ - $(patsubst %.pod, %-pod.service, $(wildcard *.pod)) \ - $(patsubst %.build, %-build.service, $(wildcard *.build)) -CONFIG_FILES = $(wildcard config/*) -TARGET_QUADLET_FILES = $(addprefix /etc/containers/systemd/, $(QUADLET_FILES)) -TARGET_SYSTEMD_FILES = $(addprefix /etc/systemd/system/, $(SYSTEMD_FILES)) -TARGET_CONFIG_FILES = $(patsubst config/%, /etc/quadlets/$(PROJECT_NAME)/%, $(CONFIG_FILES)) - -pre-requisites: - @test "$$(id -u)" -eq 0 || (echo "This Makefile must be run as root" >&2; exit 1) - -all: install - -dryrun: - QUADLET_UNIT_DIRS="$$PWD" /usr/lib/systemd/system-generators/podman-system-generator -dryrun > /dev/null - -/etc/containers/systemd/%.container: %.container - install -D -m 0644 -o root -g root $< $@ - -/etc/containers/systemd/%.volume: %.volume - install -D -m 0644 -o root -g root $< $@ - -/etc/containers/systemd/%.network: %.network - install -D -m 0644 -o root -g root $< $@ - -/etc/containers/systemd/%.pod: %.pod - install -D -m 0644 -o root -g root $< $@ - -/etc/containers/systemd/%.build: %.build - install -D -m 0644 -o root -g root $< $@ - -/etc/systemd/system/%.service: %.service - install -D -m 0644 -o root -g root $< $@ - -/etc/systemd/system/%.target: %.target - install -D -m 0644 -o root -g root $< $@ - -/etc/quadlets/$(PROJECT_NAME)/%: config/% - install -D -m 0644 -o root -g root $< $@ - -install: pre-requisites dryrun $(TARGET_QUADLET_FILES) $(TARGET_SYSTEMD_FILES) $(TARGET_CONFIG_FILES) - systemctl daemon-reload - systemd-analyze --generators=true verify $(QUADLET_UNIT_NAMES) $(SYSTEMD_UNIT_NAMES) - systemctl enable $(SYSTEMD_UNIT_NAMES) - systemctl start $(SYSTEMD_MAIN_UNIT_NAMES) - -uninstall: pre-requisites - systemctl --no-block disable $(SYSTEMD_UNIT_NAMES) - systemctl --no-block stop $(SYSTEMD_UNIT_NAMES) $(QUADLET_UNIT_NAMES) - rm -f $(TARGET_QUADLET_FILES) $(TARGET_SYSTEMD_FILES) $(TARGET_CONFIG_FILES) - systemctl daemon-reload - -clean: - rm -rf /var/lib/quadlets/$(PROJECT_NAME)/ /etc/quadlets/$(PROJECT_NAME)/ +PARENT_DIR := .. +include $(PARENT_DIR)/Makefile diff --git a/postgresql/Makefile b/postgresql/Makefile index 443bb2b..4ab7f23 100644 --- a/postgresql/Makefile +++ b/postgresql/Makefile @@ -1,71 +1,2 @@ -.PHONY: all install uninstall pre-requisites clean dryrun - -PROJECT_NAME := $(shell basename "$${PWD}") -QUADLETS_FILES = $(wildcard *.container *.volume *.network *.pod *.build) -SYSTEMD_FILES = $(wildcard *.service *.target *.timer) -SYSTEMD_UNIT_NAMES := $(wildcard *.service *.target *.timer) -SYSTEMD_MAIN_UNIT_NAMES := $(wildcard *.target) -QUADLET_UNIT_NAMES := $(patsubst %.container, %.service, $(wildcard *.container)) \ - $(patsubst %.volume, %-volume.service, $(wildcard *.volume)) \ - $(patsubst %.network, %-network.service, $(wildcard *.network)) \ - $(patsubst %.pod, %-pod.service, $(wildcard *.pod)) \ - $(patsubst %.build, %-build.service, $(wildcard *.build)) -CONFIG_FILES = $(wildcard config/*) -TARGET_QUADLETS_FILES = $(addprefix /etc/containers/systemd/, $(QUADLETS_FILES)) -TARGET_SYSTEMD_FILES = $(addprefix /etc/systemd/system/, $(SYSTEMD_FILES)) -TARGET_CONFIG_FILES = $(patsubst config/%, /etc/quadlets/$(PROJECT_NAME)/%, $(CONFIG_FILES)) - -pre-requisites: - @test "$$(id -u)" -eq 0 || (echo "This Makefile must be run as root" >&2; exit 1) - -all: install - -dryrun: - QUADLET_UNIT_DIRS="$$PWD" /usr/lib/systemd/system-generators/podman-system-generator -dryrun > /dev/null - -/etc/containers/systemd/%.container: %.container - install -D -m 0644 -o root -g root $< $@ - -/etc/containers/systemd/%.volume: %.volume - install -D -m 0644 -o root -g root $< $@ - -/etc/containers/systemd/%.network: %.network - install -D -m 0644 -o root -g root $< $@ - -/etc/containers/systemd/%.pod: %.pod - install -D -m 0644 -o root -g root $< $@ - -/etc/containers/systemd/%.build: %.build - install -D -m 0644 -o root -g root $< $@ - -/etc/systemd/system/%.service: %.service - install -D -m 0644 -o root -g root $< $@ - -/etc/systemd/system/%.target: %.target - install -D -m 0644 -o root -g root $< $@ - -/etc/systemd/system/%.timer: %.timer - install -D -m 0644 -o root -g root $< $@ - -/etc/quadlets/$(PROJECT_NAME)/%: config/% - @run() { echo $$*; "$$@"; }; \ - if [ -x $< ]; then \ - run install -D -m 0755 -o root -g root $< $@; \ - else \ - run install -D -m 0644 -o root -g root $< $@; \ - fi - -install: pre-requisites dryrun $(TARGET_QUADLETS_FILES) $(TARGET_SYSTEMD_FILES) $(TARGET_CONFIG_FILES) - systemctl daemon-reload - systemd-analyze --generators=true verify $(QUADLET_UNIT_NAMES) $(SYSTEMD_UNIT_NAMES) - systemctl enable $(SYSTEMD_UNIT_NAMES) - systemctl start $(SYSTEMD_MAIN_UNIT_NAMES) - -uninstall: pre-requisites - systemctl --no-block disable $(SYSTEMD_UNIT_NAMES) || true - systemctl --no-block stop $(SYSTEMD_UNIT_NAMES) $(QUADLET_UNIT_NAMES) || true - rm -f $(TARGET_QUADLETS_FILES) $(TARGET_SYSTEMD_FILES) $(TARGET_CONFIG_FILES) - systemctl daemon-reload - -clean: - rm -rf /var/lib/quadlets/$(PROJECT_NAME)/ /var/run/quadlets/$(PROJECT_NAME)/ /etc/quadlets/$(PROJECT_NAME)/ +PARENT_DIR := .. +include $(PARENT_DIR)/Makefile