From d1035a35f2a2ff21390b8e617f98d847421eb880 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=A4iv=C3=A4rinta?= Date: Tue, 2 Sep 2025 08:38:12 +0200 Subject: [PATCH 1/2] Automatically include MO files in dist file --- Makefile.PL | 7 +++++++ share/GNUmakefile | 3 +++ 2 files changed, 10 insertions(+) diff --git a/Makefile.PL b/Makefile.PL index 75e3e39e..a05ed0f8 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -54,6 +54,11 @@ sub MY::postamble { my $docker = <<'END_DOCKER'; +.PHONY: mydist +mydist: + $(MAKE) -C share mo + $(MAKE) tardist + docker-build: docker build --tag zonemaster/cli:local --build-arg version=$(VERSION) . @@ -73,4 +78,6 @@ END_DOCKER install_script 'zonemaster-cli'; install_share; +makemaker_args( macro => { DIST_DEFAULT => 'mydist' } ); + WriteAll; diff --git a/share/GNUmakefile b/share/GNUmakefile index 182cb046..9d9b5c9e 100644 --- a/share/GNUmakefile +++ b/share/GNUmakefile @@ -15,6 +15,9 @@ tidy-po: trap 'rm -rf "$$tmpdir"' EXIT ;\ for f in $(POFILES) ; do msgcat $$f -o $$tmpdir/$$f && mv -f $$tmpdir/$$f $$f ; done +.PHONY: mo +mo: $(MOFILES) + update-po: extract-pot @for f in $(POFILES) ; do msgmerge --update --backup=none --quiet --no-location $(MSGMERGE_OPTS) $$f $(POTFILE) ; done From a35224e78dd6cf7d94cc23a75d0d6bcdb11853cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=A4iv=C3=A4rinta?= Date: Wed, 3 Sep 2025 11:50:43 +0200 Subject: [PATCH 2/2] Refactor Makefile.PL postamble * Avoid reimplementing the share/Makefile mechanism * Use `make -C share` instead of `cd share && make` * Declare phony targets as such * Tidy Makefile.PL according to .perltidyrc --- Makefile.PL | 43 ++++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index a05ed0f8..f20cd207 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -23,8 +23,8 @@ requires( 'JSON::XS' => 0, 'Locale::TextDomain' => 1.23, 'Try::Tiny' => 0, - 'Zonemaster::LDNS' => 5.000000, # v5.0.0 - 'Zonemaster::Engine' => 8.000000, # v8.0.0 + 'Zonemaster::LDNS' => 5.000000, # v5.0.0 + 'Zonemaster::Engine' => 8.000000, # v8.0.0 ); test_requires( @@ -34,46 +34,35 @@ test_requires( # Make all platforms include inc/Module/Install/External.pm requires_external_bin 'find'; -if ($^O eq "freebsd") { +if ( $^O eq "freebsd" ) { requires_external_bin 'gmake'; -}; +} sub MY::postamble { - my $pure_all; - my $sharemakefile = 'share/GNUmakefile'; - if ($^O eq "freebsd") { - # Make FreeBSD use gmake for share - $pure_all = "GMAKE ?= \"gmake\"\n" - . "pure_all :: $sharemakefile\n" - . "\tcd share && \$(GMAKE) all\n"; - } else { - # Here Linux and GNU Make is assumed - $pure_all = "pure_all :: $sharemakefile\n" - . "\tcd share && \$(MAKE) all\n"; - }; - - my $docker = <<'END_DOCKER'; + return <<'MAKE_END'; -.PHONY: mydist -mydist: - $(MAKE) -C share mo - $(MAKE) tardist +pure_all :: share/GNUmakefile + $(MAKE) -C share all +.PHONY: docker-build docker-build: docker build --tag zonemaster/cli:local --build-arg version=$(VERSION) . +.PHONY: docker-tag-version docker-tag-version: docker tag zonemaster/cli:local zonemaster/cli:$(VERSION) +.PHONY: docker-tag-latest docker-tag-latest: docker tag zonemaster/cli:local zonemaster/cli:latest -END_DOCKER - - return $pure_all . $docker; -}; - +.PHONY: mydist +mydist: + $(MAKE) -C share mo + $(MAKE) tardist +MAKE_END +} ## end sub MY::postamble install_script 'zonemaster-cli'; install_share;