Package: dpkg-dev
Followup-For: Bug #872381

Hello.
It is good to see the main suggestion merged. Thanks!

You have not applied
  0001-scripts-mk-stop-hard-coding-dpkg_datadir.patch
probably because you prefer the related parts in
  f1175056 (build: Rework subst handling for built or installed artifacts).

Ironically, f1175056 seems to introduce the exact kind of human error
that dynamic generation would prevent.
0001-build-spare-an-unneeded-subst-handling-in-pkg-info.m.patch
>From 36e98fdd10b1896f8fa89733b5e0c1781c0cce4c Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <nico...@debian.org>
Date: Mon, 6 May 2024 10:52:49 +0200
Subject: [PATCH] build: spare an unneeded subst handling in pkg-info.mk

This commits follows f1175056.
---
 scripts/mk/Makefile.am | 1 -
 1 file changed, 1 deletion(-)

diff --git a/scripts/mk/Makefile.am b/scripts/mk/Makefile.am
index be6076b2c..5f086ef49 100644
--- a/scripts/mk/Makefile.am
+++ b/scripts/mk/Makefile.am
@@ -18,5 +18,4 @@ include $(top_srcdir)/build-aux/subst.am
 install-data-hook:
 	$(subst_make_file) $(DESTDIR)$(pkgdatadir)/default.mk
 	$(subst_make_file) $(DESTDIR)$(pkgdatadir)/buildtools.mk
-	$(subst_make_file) $(DESTDIR)$(pkgdatadir)/pkg-info.mk
 	$(subst_make_file) $(DESTDIR)$(pkgdatadir)/vendor.mk
-- 
2.39.2

>From 7daa3aca068d997c6895757cb58ba91d66bd6842 Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <nico...@debian.org>
Date: Mon, 6 May 2024 11:37:14 +0200
Subject: [PATCH] scripts/mk: stop hard-coding dpkg_datadir

This path differ during tests and after installation.  Instead of
rewriting the file with a hardcoded path, compute it within Make.
---
 build-aux/subst.am       |  8 --------
 scripts/mk/Makefile.am   | 10 ----------
 scripts/mk/buildtools.mk |  4 +++-
 scripts/mk/default.mk    |  2 +-
 scripts/mk/vendor.mk     |  4 +++-
 5 files changed, 7 insertions(+), 21 deletions(-)

diff --git a/build-aux/subst.am b/build-aux/subst.am
index 7785e4af7..9c96e5ce0 100644
--- a/build-aux/subst.am
+++ b/build-aux/subst.am
@@ -45,11 +45,3 @@ SUFFIXES += .pl
 	@test -d `dirname $@` || $(MKDIR_P) `dirname $@`
 	$(AM_V_GEN) $(subst_perl_filter) <$< >$@
 	$(AM_V_at) chmod +x $@
-
-# Makefile support.
-
-subst_make_rules = "\
-	s{dpkg_datadir\s*=\s*[^\s]*}{dpkg_datadir = $(pkgdatadir)}; \
-	"
-
-subst_make_file = $(PERL) -i -p -e $(subst_make_rules)
diff --git a/scripts/mk/Makefile.am b/scripts/mk/Makefile.am
index be6076b2c..6e85e17b9 100644
--- a/scripts/mk/Makefile.am
+++ b/scripts/mk/Makefile.am
@@ -10,13 +10,3 @@ dist_pkgdata_DATA = \
 	pkg-info.mk \
 	vendor.mk \
 	# EOL
-
-SUFFIXES =
-
-include $(top_srcdir)/build-aux/subst.am
-
-install-data-hook:
-	$(subst_make_file) $(DESTDIR)$(pkgdatadir)/default.mk
-	$(subst_make_file) $(DESTDIR)$(pkgdatadir)/buildtools.mk
-	$(subst_make_file) $(DESTDIR)$(pkgdatadir)/pkg-info.mk
-	$(subst_make_file) $(DESTDIR)$(pkgdatadir)/vendor.mk
diff --git a/scripts/mk/buildtools.mk b/scripts/mk/buildtools.mk
index 6ce9642cd..e93319e00 100644
--- a/scripts/mk/buildtools.mk
+++ b/scripts/mk/buildtools.mk
@@ -28,7 +28,9 @@
 ifndef dpkg_buildtools_mk_included
 dpkg_buildtools_mk_included = yes
 
-dpkg_datadir = $(srcdir)/mk
+ifndef dpkg_datadir
+  dpkg_datadir := $(patsubst %/buildtools.mk,%,$(lastword $(MAKEFILE_LIST)))
+endif
 include $(dpkg_datadir)/architecture.mk
 
 # We set the TOOL_FOR_BUILD variables to the specified value, and the TOOL
diff --git a/scripts/mk/default.mk b/scripts/mk/default.mk
index c4e408b01..e1b812222 100644
--- a/scripts/mk/default.mk
+++ b/scripts/mk/default.mk
@@ -4,7 +4,7 @@
 ifndef dpkg_default_mk_included
 dpkg_default_mk_included = yes
 
-dpkg_datadir = $(srcdir)/mk
+dpkg_datadir := $(patsubst %/default.mk,%,$(lastword $(MAKEFILE_LIST)))
 include $(dpkg_datadir)/architecture.mk
 include $(dpkg_datadir)/buildapi.mk
 ifeq ($(call dpkg_build_api_ge,1),yes)
diff --git a/scripts/mk/vendor.mk b/scripts/mk/vendor.mk
index 746503a33..3cd1eed3e 100644
--- a/scripts/mk/vendor.mk
+++ b/scripts/mk/vendor.mk
@@ -36,7 +36,9 @@
 ifndef dpkg_vendor_mk_included
 dpkg_vendor_mk_included = yes
 
-dpkg_datadir = $(srcdir)/mk
+ifndef dpkg_datadir
+  dpkg_datadir := $(patsubst %/vendor.mk,%,$(lastword $(MAKEFILE_LIST)))
+endif
 include $(dpkg_datadir)/buildapi.mk
 
 dpkg_lazy_eval ?= $(eval $(1) = $(2)$$($(1)))
-- 
2.39.2

Reply via email to