From d4baf92e50da3545f80c87d12e4e3827febcc4fa Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 15 Aug 2012 01:53:40 +0200 Subject: build-sys: expand paths at make time autoconf docs about *dir variables (e.g bindir): ... A corollary is that you should not use these variables except in makefiles... ...you should not rely on AC_CONFIG_FILES to replace bindir and friends in your shell scripts and other files; instead, let make manage their replacement. Signed-off-by: Karel Zak --- Makefile.am | 37 +++++++++++++++++++++++++++++++++++++ configure.ac | 12 ++++-------- libblkid/Makemodule.am | 3 ++- libmount/Makemodule.am | 3 ++- libuuid/Makemodule.am | 3 ++- misc-utils/Makemodule.am | 7 +------ 6 files changed, 48 insertions(+), 17 deletions(-) diff --git a/Makefile.am b/Makefile.am index e22dad339..a540f0eeb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -43,6 +43,8 @@ ruman1_DATA = check_PROGRAMS = TESTS = +PATHFILES = + INSTALL_EXEC_HOOKS = UNINSTALL_HOOKS = INSTALL_DATA_HOOKS = @@ -86,6 +88,41 @@ include fdisks/Makemodule.am include tests/Makemodule.am +# +# Don't rely on configure.ac AC_CONFIG_FILES for install paths. +# +# The paths should be expanded at make time rather than configure: +# - to support 'make install prefix=/foo DESTDIR=/foo' +# - to recursively expands the paths (e.g. AC_CONFIG_FILES expands +# '@usrsbin_execdir@' to ${exec_prefix}/sbin') +# +edit_cmd = sed \ + -e 's|@prefix[@]|$(prefix)|g' \ + -e 's|@exec_prefix[@]|$(exec_prefix)|g' \ + -e 's|@sysconfdir[@]|$(sysconfdir)|g' \ + -e 's|@datadir[@]|$(datadir)|g' \ + -e 's|@sbindir[@]|$(sbindir)|g' \ + -e 's|@bindir[@]|$(bindir)|g' \ + -e 's|@includedir[@]|$(includedir)|g' \ + -e 's|@localstatedir[@]|$(localstatedir)|g' \ + -e 's|@usrlib_execdir[@]|$(usrlib_execdir)|g' \ + -e 's|@usrbin_execdir[@]|$(usrbin_execdir)|g' \ + -e 's|@usrsbin_execdir[@]|$(usrsbin_execdir)|g' \ + -e 's|@VERSION[@]|$(VERSION)|g' \ + -e 's|@LIBUUID_VERSION[@]|$(LIBUUID_VERSION)|g' \ + -e 's|@LIBMOUNT_VERSION[@]|$(LIBMOUNT_VERSION)|g' \ + -e 's|@LIBBLKID_VERSION[@]|$(LIBBLKID_VERSION)|g' + +CLEANFILES += $(PATHFILES) +EXTRA_DIST += $(PATHFILES:=.in) + +$(PATHFILES): Makefile + @ rm -f $@ $@.tmp + $(AM_V_GEN) srcdir=''; \ + test -f ./$@.in || srcdir=$(srcdir)/; \ + $(edit_cmd) $${srcdir}$@.in >$@.tmp + @ mv $@.tmp $@ + # Arrange so that .tarball-version appears only in the distribution # tarball, and never in a checked-out repository. dist-hook: diff --git a/configure.ac b/configure.ac index edb2d7851..1a1967204 100644 --- a/configure.ac +++ b/configure.ac @@ -1324,22 +1324,18 @@ LIBS="" AC_CONFIG_HEADERS(config.h) - +# +# Don't use configure.ac to replace install paths! See Makefile PATHFILES for +# more details. +# AC_CONFIG_FILES([ Makefile -libblkid/blkid.pc libblkid/docs/Makefile libblkid/docs/version.xml libblkid/src/blkid.h libmount/docs/Makefile libmount/docs/version.xml -libmount/mount.pc libmount/src/libmount.h -libuuid/uuid.pc -misc-utils/uuidd.8 -misc-utils/uuidd.rc -misc-utils/uuidd.service -misc-utils/uuidd.socket po/Makefile.in ]) diff --git a/libblkid/Makemodule.am b/libblkid/Makemodule.am index 6df008533..b4f6f9c4e 100644 --- a/libblkid/Makemodule.am +++ b/libblkid/Makemodule.am @@ -9,7 +9,8 @@ SUBDIRS += libblkid/docs endif pkgconfig_DATA += libblkid/blkid.pc +PATHFILES += libblkid/blkid.pc dist_man_MANS += libblkid/libblkid.3 -EXTRA_DIST += libblkid/blkid.pc.in libblkid/libblkid.3 libblkid/COPYING +EXTRA_DIST += libblkid/libblkid.3 libblkid/COPYING endif # BUILD_LIBBLKID diff --git a/libmount/Makemodule.am b/libmount/Makemodule.am index 164e2cdd9..81d550a47 100644 --- a/libmount/Makemodule.am +++ b/libmount/Makemodule.am @@ -8,7 +8,8 @@ SUBDIRS += libmount/docs endif pkgconfig_DATA += libmount/mount.pc -EXTRA_DIST += libmount/mount.pc.in libmount/COPYING +PATHFILES += libmount/mount.pc +EXTRA_DIST += libmount/COPYING endif # BUILD_LIBMOUNT diff --git a/libuuid/Makemodule.am b/libuuid/Makemodule.am index 5ccb5080b..166be5c26 100644 --- a/libuuid/Makemodule.am +++ b/libuuid/Makemodule.am @@ -4,6 +4,7 @@ include libuuid/man/Makemodule.am include libuuid/src/Makemodule.am pkgconfig_DATA += libuuid/uuid.pc -EXTRA_DIST += libuuid/uuid.pc.in libuuid/COPYING +PATHFILES += libuuid/uuid.pc +EXTRA_DIST += libuuid/COPYING endif # BUILD_LIBUUID diff --git a/misc-utils/Makemodule.am b/misc-utils/Makemodule.am index e2faea655..910e4285d 100644 --- a/misc-utils/Makemodule.am +++ b/misc-utils/Makemodule.am @@ -106,12 +106,7 @@ systemdsystemunit_DATA += \ endif endif # BUILD_UUIDD -EXTRA_DIST += \ - misc-utils/uuidd.8.in \ - misc-utils/uuidd.rc.in \ - misc-utils/uuidd.service.in \ - misc-utils/uuidd.socket.in -CLEANFILES += \ +PATHFILES += \ misc-utils/uuidd.8 \ misc-utils/uuidd.rc \ misc-utils/uuidd.service \ -- cgit v1.2.3-55-g7522