From 086df91f23d1f3486725353ffe1630da8f9c8f5c Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 27 Mar 2018 19:44:34 -0400 Subject: Makefile: Use files.groups instead of nested.subdirs to split the package --- Makefile | 43 +++++---------------------- build-aux/Makefile.each.head/20-libretools.mk | 2 ++ build-aux/Makefile.each.tail/20-libretools.mk | 36 ++++++++++++---------- build-aux/Makefile.once.head/00-libretools.mk | 7 ++++- po/Makefile | 2 +- po/subdir.mk | 8 +++-- src/Makefile | 14 ++++++--- src/chroot-tools/Makefile | 2 +- src/devtools/Makefile | 2 +- src/gitget/Makefile | 2 ++ src/lib/Makefile | 2 ++ src/xbs-abs/Makefile | 5 ++-- src/xbs-abslibre/Makefile | 1 + src/xbs/Makefile | 1 + 14 files changed, 65 insertions(+), 62 deletions(-) diff --git a/Makefile b/Makefile index 9992d49..1252b64 100644 --- a/Makefile +++ b/Makefile @@ -1,29 +1,15 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -# these are the resulting packages -pkgs=libretools librelib gitget xbs -# and which directories they contain -pkg.libretools=\ - src \ - src/abslibre-tools \ - src/chroot-tools \ - src/devtools \ - src/librefetch \ - src/toru -pkg.librelib=src/lib -pkg.gitget=src/gitget -pkg.xbs=\ - src/xbs \ - src/xbs-abs \ - src/xbs-abslibre +libretools.out.mans = +libretools.out.bins = +libretools.out.libexecs = +libretools.out.libs = +libretools.out.docs = +libretools.out.confs = -define _pkg_rule -%(verb)-%(pkg): $(addsuffix /%(verb),$(pkg.%(pkg))) -.PHONY: %(verb)-%(pkg) -endef -$(eval $(foreach verb,$(nested.targets),$(foreach pkg,$(pkgs),\ - $(subst %(verb),$(verb),$(subst %(pkg),$(pkg),$(value _pkg_rule)))$(at.nl)))) +files.src.gen += .srcversion-libretools.mk .srcversion-devtools.mk +nested.subdirs = src po $(outdir)/check: cd $(@D)/test && ./testenv $(TESTENVFLAGS) roundup @@ -39,17 +25,4 @@ $(outdir)/shellcheck: private shellcheck.prune += -o -type f -name source.sh.gen $(outdir)/shellcheck: cd $(@D)/test && ./testenv $(TESTENVFLAGS) 'cd "$$TMPDIR/destdir" && find \( $(shellcheck.prune) \) -prune -o -not -type d -exec shellcheck $(shellcheck.flags) {} +' -$(eval $(foreach pkg,$(pkgs),\ - $(call at.path,$(srcdir)/po/$(pkg).pot): $(call at.addprefix,$(topsrcdir),$(addsuffix /dir.pot,$(pkg.$(pkg))))$(at.nl))) - -libretools.out.mans = -libretools.out.bins = -libretools.out.libexecs = -libretools.out.libs = -libretools.out.docs = -libretools.out.confs = - -files.src.gen += .srcversion-libretools.mk .srcversion-devtools.mk -nested.subdirs = $(foreach pkg,$(pkgs),$(pkg.$(pkg))) po - include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/build-aux/Makefile.each.head/20-libretools.mk b/build-aux/Makefile.each.head/20-libretools.mk index 470db51..22f59ba 100644 --- a/build-aux/Makefile.each.head/20-libretools.mk +++ b/build-aux/Makefile.each.head/20-libretools.mk @@ -19,6 +19,8 @@ pkglibdir = $(libdir)/libretools # Auto-detect ######################################################## +libretools.pkg = libretools + libretools.src.devtools = libretools.out.mans = $(patsubst %.ronn,%,$(libretools.src.ronn)) diff --git a/build-aux/Makefile.each.tail/20-libretools.mk b/build-aux/Makefile.each.tail/20-libretools.mk index 945b0ea..9b1a6e3 100644 --- a/build-aux/Makefile.each.tail/20-libretools.mk +++ b/build-aux/Makefile.each.tail/20-libretools.mk @@ -21,23 +21,28 @@ endif # Connect with `files` module ######################################## files.src.gen += $(libretools.src.devtools) -files.out.all += $(filter-out $(files.src),$(libretools.out)) \ - $(if $(strip $(libretools.pots)),dir.pot) -files.sys.all += $(addprefix $(bindir)/,$(libretools.out.bins)) \ - $(addprefix $(pkgconfdir)/,$(libretools.out.confs)) \ - $(addprefix $(pkglibdir)/,$(libretools.out.libs)) \ - $(addprefix $(pkglibexecdir)/,$(libretools.out.libexecs)) \ - $(addprefix $(docdir)/,$(libretools.out.docs)) \ - $(addprefix $(mandir)/man1/,$(filter %.1,$(libretools.out.mans))) \ - $(addprefix $(mandir)/man2/,$(filter %.2,$(libretools.out.mans))) \ - $(addprefix $(mandir)/man3/,$(filter %.3,$(libretools.out.mans))) \ - $(addprefix $(mandir)/man4/,$(filter %.4,$(libretools.out.mans))) \ - $(addprefix $(mandir)/man5/,$(filter %.5,$(libretools.out.mans))) \ - $(addprefix $(mandir)/man6/,$(filter %.6,$(libretools.out.mans))) \ - $(addprefix $(mandir)/man7/,$(filter %.7,$(libretools.out.mans))) \ - $(addprefix $(mandir)/man8/,$(filter %.8,$(libretools.out.mans))) +files.out.$(libretools.pkg) += \ + $(filter-out $(files.src),$(libretools.out)) \ + $(if $(strip $(libretools.pots)),dir.pot) +files.sys.$(libretools.pkg) += \ + $(addprefix $(bindir)/,$(libretools.out.bins)) \ + $(addprefix $(pkgconfdir)/,$(libretools.out.confs)) \ + $(addprefix $(pkglibdir)/,$(libretools.out.libs)) \ + $(addprefix $(pkglibexecdir)/,$(libretools.out.libexecs)) \ + $(addprefix $(docdir)/,$(libretools.out.docs)) \ + $(addprefix $(mandir)/man1/,$(filter %.1,$(libretools.out.mans))) \ + $(addprefix $(mandir)/man2/,$(filter %.2,$(libretools.out.mans))) \ + $(addprefix $(mandir)/man3/,$(filter %.3,$(libretools.out.mans))) \ + $(addprefix $(mandir)/man4/,$(filter %.4,$(libretools.out.mans))) \ + $(addprefix $(mandir)/man5/,$(filter %.5,$(libretools.out.mans))) \ + $(addprefix $(mandir)/man6/,$(filter %.6,$(libretools.out.mans))) \ + $(addprefix $(mandir)/man7/,$(filter %.7,$(libretools.out.mans))) \ + $(addprefix $(mandir)/man8/,$(filter %.8,$(libretools.out.mans))) files.out.int += *.pot *.ugly *.rej *.orig +files.out.all += $(foreach pkg,$(filter-out all,$(files.groups)),$(files.out.$(pkg))) +files.sys.all += $(foreach pkg,$(filter-out all,$(files.groups)),$(files.sys.$(pkg))) + # Generate rules ##################################################### $(srcdir)/%.in: $(devtoolsdir)/%.in cp -T '$<' '$@' @@ -57,6 +62,7 @@ $(srcdir)/%.pot: $(srcdir)/% $(topsrcdir)/src/lib/librexgettext cd $( $(@F) $(srcdir)/dir.pot: $(addprefix $(outdir)/,$(addsuffix .pot,$(libretools.pots))) cat $^ | $(libretools.pofmt) > '$@' +$(call at.path,$(topsrcdir)/po/$(libretools.pkg).pot): $(srcdir)/dir.pot # Install rules ###################################################### $(DESTDIR)$(pkgconfdir)/% : $(outdir)/% ; install -T -Dm644 '$<' '$@' diff --git a/build-aux/Makefile.once.head/00-libretools.mk b/build-aux/Makefile.once.head/00-libretools.mk index f3462d5..eb73476 100644 --- a/build-aux/Makefile.once.head/00-libretools.mk +++ b/build-aux/Makefile.once.head/00-libretools.mk @@ -1,4 +1,4 @@ -# Copyright (C) 2015, 2017 Luke Shumaker +# Copyright (C) 2015, 2017-2018 Luke Shumaker # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by @@ -38,6 +38,7 @@ define mod.libretools.doc # - `libretools.edit` # - `libretools.pofmt` # - Source information +# - Directory variable : `libretools.pkg = libretools` # - Directory variable : `libretools.src` # - Directory variable : `libretools.src.exec` # - Directory variable : `libretools.src.conf` @@ -51,8 +52,11 @@ define mod.libretools.doc # - Global variable : `DEVTOOLS_VERSION` # - Global variable : `DEVTOOLS_COMMIT` # - Primary outputs: +# - Global variable : `files.groups` # - Directory variable : `files.src.gen` +# - Directory variable : `files.out.$(libretools.pkg)` # - Directory variable : `files.out.all` +# - Directory variable : `files.sys.$(libretools.pkg)` # - Directory variable : `files.sys.all` # - Directory variable : `files.out.int` # - Target : `$(srcdir)/%.in: $(devtoolsdir)/%.in` @@ -76,6 +80,7 @@ mod.quote.doc := $(value mod.quote.doc) # Configure how Autothing modules work ############################### gitfiles.file = .srcfiles.mk +files.groups = all libretools librelib gitget xbs # Boilerplate ######################################################## .PHONY: FORCE diff --git a/po/Makefile b/po/Makefile index b27844c..d1d72a0 100644 --- a/po/Makefile +++ b/po/Makefile @@ -1,7 +1,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk -domains = libretools librelib gitget xbs +domains = $(filter-out all,$(files.groups)) locales := $(filter-out .,$(sort $(patsubst %/,%,$(dir $(files.src.src))))) files.src.gen += $(addsuffix .pot,$(domains)) diff --git a/po/subdir.mk b/po/subdir.mk index b9a2575..9d07d3c 100644 --- a/po/subdir.mk +++ b/po/subdir.mk @@ -11,8 +11,12 @@ $(outdir)/%.mo: $(srcdir)/%.po $(call at.path,$(srcdir)/../%.pot) $(DESTDIR)$(localedir)/$(locale)/LC_MESSAGES/%.mo: $(outdir)/%.mo install -T -Dm644 '$<' '$@' -files.out.all += $(addsuffix .mo,$(domains)) -files.sys.all += $(foreach domain,$(domains),$(localedir)/$(locale)/LC_MESSAGES/$(domain).mo) +define _domain_rule +files.out.$(domain) += $(domain).mo +files.sys.$(domain) += $(localedir)/$(locale)/LC_MESSAGES/$(domain).mo +endef +$(eval $(foreach domain,$(domains),$(_domain_rule)$(at.nl))) + at.subdirs += .. include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/Makefile b/src/Makefile index 2ba9534..e148732 100644 --- a/src/Makefile +++ b/src/Makefile @@ -3,9 +3,15 @@ include $(topsrcdir)/build-aux/Makefile.head.mk pkgconfdir = $(sysconfdir) -# Because against all common sense, the subdirectories of this -# directory aren't `nested.subdirs`, gitfiles includes the files in -# them in `files.src.src`. So, filter-out everything with a slash. -files.src.src := $(foreach f,$(files.src.src),$(if $(findstring /,$f),, $f )) +nested.subdirs += abslibre-tools +nested.subdirs += chroot-tools +nested.subdirs += devtools +nested.subdirs += gitget +nested.subdirs += lib +nested.subdirs += librefetch +nested.subdirs += toru +nested.subdirs += xbs +nested.subdirs += xbs-abs +nested.subdirs += xbs-abslibre include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/chroot-tools/Makefile b/src/chroot-tools/Makefile index 412ebb5..de79819 100644 --- a/src/chroot-tools/Makefile +++ b/src/chroot-tools/Makefile @@ -9,7 +9,7 @@ libretools.out.bins = librechroot libremakepkg libretools.out.libexecs = arch-nspawn chcleanup distcc-tool indent mkarchroot libretools.out.libs = $(libretools.src.sh) makechrootpkg.sh files.out.int += chcleanup.lib -files.sys.all += $(bindir)/chcleanup # not in libretools.out.bins because explicit rule +files.sys.libretools += $(bindir)/chcleanup # not in libretools.out.bins because explicit rule $(srcdir)/makechrootpkg.sh.in: $(srcdir)/makechrootpkg.in sed -e '1s^.*^#!/hint/bash -euE^' -e '/^\s*main "$$@"\s*$$/d' < $< > $@ diff --git a/src/devtools/Makefile b/src/devtools/Makefile index 4b7af11..f904406 100644 --- a/src/devtools/Makefile +++ b/src/devtools/Makefile @@ -3,7 +3,7 @@ include $(topsrcdir)/build-aux/Makefile.head.mk libretools.out.bins = checkpkg find-libdeps finddeps lddd libretools.src.devtools = $(addsuffix .in,$(libretools.out.bins)) -files.sys.all += $(bindir)/find-libprovides +files.sys.libretools += $(bindir)/find-libprovides $(DESTDIR)$(bindir)/find-libprovides: $(MKDIR_P) $(@D) diff --git a/src/gitget/Makefile b/src/gitget/Makefile index a1b7765..a846b09 100644 --- a/src/gitget/Makefile +++ b/src/gitget/Makefile @@ -1,4 +1,6 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +libretools.pkg = gitget + include $(topsrcdir)/build-aux/Makefile.tail.mk diff --git a/src/lib/Makefile b/src/lib/Makefile index 515f856..1871e19 100644 --- a/src/lib/Makefile +++ b/src/lib/Makefile @@ -1,6 +1,8 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +libretools.pkg = librelib + libretools.src.devtools = common.sh.in archroot.sh.in libretools.out.libs += common.sh archroot.sh conf.sh diff --git a/src/xbs-abs/Makefile b/src/xbs-abs/Makefile index c2d6bc9..907b3d0 100644 --- a/src/xbs-abs/Makefile +++ b/src/xbs-abs/Makefile @@ -1,6 +1,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +libretools.pkg = xbs pkgconfdir = $(sysconfdir)/xbs pkglibexecdir = $(libexecdir)/xbs @@ -13,8 +14,8 @@ libretools.out.bins = libretools.out.libexecs = helper-abs libretools.out.libs = valid-tags.sh -files.out.all += $(_helpers) -files.sys.all += $(addprefix $(pkglibexecdir)/helper-abs.d/,$(_helpers)) +files.out.xbs += $(_helpers) +files.sys.xbs += $(addprefix $(pkglibexecdir)/helper-abs.d/,$(_helpers)) $(outdir)/commitpkg: $(srcdir)/commitpkg.in @echo "OUT $@" diff --git a/src/xbs-abslibre/Makefile b/src/xbs-abslibre/Makefile index a86b958..068e6e4 100644 --- a/src/xbs-abslibre/Makefile +++ b/src/xbs-abslibre/Makefile @@ -1,6 +1,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +libretools.pkg = xbs pkglibexecdir = $(libexecdir)/xbs libretools.out.bins = diff --git a/src/xbs/Makefile b/src/xbs/Makefile index bc9f4c8..6a39658 100644 --- a/src/xbs/Makefile +++ b/src/xbs/Makefile @@ -1,6 +1,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk include $(topsrcdir)/build-aux/Makefile.head.mk +libretools.pkg = xbs pkgconfdir = $(sysconfdir)/xbs include $(topsrcdir)/build-aux/Makefile.tail.mk -- cgit v1.2.2