summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak2012-08-15 01:53:40 +0200
committerKarel Zak2012-08-15 02:06:53 +0200
commitd4baf92e50da3545f80c87d12e4e3827febcc4fa (patch)
tree2997b77f723a39977c671913654405a3afa06239
parentcolumn: --separator segfaults (diff)
downloadkernel-qcow2-util-linux-d4baf92e50da3545f80c87d12e4e3827febcc4fa.tar.gz
kernel-qcow2-util-linux-d4baf92e50da3545f80c87d12e4e3827febcc4fa.tar.xz
kernel-qcow2-util-linux-d4baf92e50da3545f80c87d12e4e3827febcc4fa.zip
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 <kzak@redhat.com>
-rw-r--r--Makefile.am37
-rw-r--r--configure.ac12
-rw-r--r--libblkid/Makemodule.am3
-rw-r--r--libmount/Makemodule.am3
-rw-r--r--libuuid/Makemodule.am3
-rw-r--r--misc-utils/Makemodule.am7
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 \