I’ve just replaced my little shell script that was helping me to update the hash files inside my postfix configuration. While before I had hardcoded the paths/names, they are now simply fetched by means of find
. In addition to the old capabilities, the new make file will also copy any files required inside the chrooted /etc, if they aren’t up-do-date. Since make works by means of timestamps of the targets, this is easily achieved.
Here’s how it looks (stripped the “intro” of the make file, though).
config-files := $(shell find /var/spool/postfix/etc/ -type f) hash-files := $(shell find $(CURDIR) -name '*.hash') hashdb-files := $(addsuffix .db,$(hash-files)) .PHONY: all all: $(hashdb-files) $(config-files) newaliases postfix check postfix reload /var/spool/postfix/etc/%: /etc/% cp --preserve=timestamps $(patsubst /var/spool/postfix%,%,$@) $@ %.hash.db: %.hash postmap $(patsubst %.db,%,$@) @chown root:postfix $@ $(patsubst %.db,%,$@) @chmod u=rwX,g=r,o= $@ $(patsubst %.db,%,$@) ifeq ($(filter $(MAKECMDGOALS),all rebuild),) postfix check postfix reload endif .PHONY: info info: -@echo "config-files = $(config-files)" -@echo "hash-files = $(hash-files)" -@echo "hashdb-files = $(hashdb-files)" .PHONY: rebuild rebuild: clean all .PHONY: clean clean: -@echo "Cleaning $(CURDIR) ..." -@rm -f $(hashdb-files)
You can download it here.
// Oliver