]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
build-sys: expand paths at make time
authorKarel Zak <kzak@redhat.com>
Tue, 14 Aug 2012 23:53:40 +0000 (01:53 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 15 Aug 2012 00:06:53 +0000 (02:06 +0200)
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 <kzak@redhat.com>
Makefile.am
configure.ac
libblkid/Makemodule.am
libmount/Makemodule.am
libuuid/Makemodule.am
misc-utils/Makemodule.am

index e22dad339143db0a090d1a1a62e1798041f3e7c0..a540f0eeb1d22dd3633141cfd22984368c4125ed 100644 (file)
@@ -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:
index edb2d78517c8ec99d787d5be3165dd2a7c0cca6f..1a196720477ab56713ed1ad548b4d507839a23a8 100644 (file)
@@ -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
 ])
 
index 6df0085336708ed0443b813230f720409aa7712c..b4f6f9c4e8b728228326c37068a78f98b04a4f38 100644 (file)
@@ -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
index 164e2cdd96f50b464b4c0c01fd377b3ebd1e8e42..81d550a474e54288caabcb033efb5930d2b16498 100644 (file)
@@ -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
index 5ccb5080bb84a34f8c352158c78c093c93494d25..166be5c26ad9eabb6432012c806ff93cd0435080 100644 (file)
@@ -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
index e2faea655c3beca671968edd97813c89a340f1ab..910e4285da7c9bee3f9397ee382cb64de94ebadc 100644 (file)
@@ -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 \