[Cluster-devel] gfs2-utils "make install" failure and fix

Jim Meyering jim at meyering.net
Mon Jun 29 09:24:59 UTC 2009


With an explicit --prefix, "make install" would install into /sbin regardless:

  $ ./configure --prefix=/p/p/coro
  ...
  $ make install
  make[1]: Entering directory `/h/meyering/w/co/gfs2-utils/gfs2/mkfs'
  /p/bin/install -c -d /sbin
  make[1]: Nothing to be done for `install-data-am'.
  /p/bin/install -c -m 755 mkfs.gfs2 /sbin
  /p/bin/install: cannot create regular file `/sbin/mkfs.gfs2': Permission denied
  make[1]: *** [install-exec-local] Error 1
  make[1]: Leaving directory `/h/meyering/w/co/gfs2-utils/gfs2/mkfs'
  make: *** [install-am] Error 2

Along the way I noticed the Makefile.am files
were using noinst_PROGRAMS and adding their own install rules.
It's easier/cleaner/etc. to use sbin_PROGRAMS.
Here's the patch:

>From d794b4e7948741f5d6767970a2fde2c5fce15947 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Mon, 29 Jun 2009 11:23:09 +0200
Subject: [PATCH gfs2-utils] Use automake's sbin_PROGRAMS, rather than writing our own rules.

This also fixes a "make install" failure to honor --prefix.
* gfs2/mount/Makefile.am (sbin_PROGRAMS): Use sbin_PROGRAMS,
not noinst_PROGRAMS.
(install-exec-local, uninstall-local): Remove rules.
Automake automates this when you define sbin_PROGRAMS.
* gfs2/fsck/Makefile.am (sbin_PROGRAMS): Likewise.
(install-exec-local, uninstall-local): Remove rules.
* gfs2/mkfs/Makefile.am (sbin_PROGRAMS): Likewise.
(install-exec-local, uninstall-local): Remove rules.
(install-exec-hook, uninstall-hook): Remove unnecessary sub-shells.
---
 gfs2/fsck/Makefile.am  |   10 +---------
 gfs2/mkfs/Makefile.am  |   16 ++++------------
 gfs2/mount/Makefile.am |   10 +---------
 3 files changed, 6 insertions(+), 30 deletions(-)

diff --git a/gfs2/fsck/Makefile.am b/gfs2/fsck/Makefile.am
index 15a5b1d..1667df3 100644
--- a/gfs2/fsck/Makefile.am
+++ b/gfs2/fsck/Makefile.am
@@ -1,6 +1,6 @@
 MAINTAINERCLEANFILES	= Makefile.in

-noinst_PROGRAMS		= fsck.gfs2
+sbin_PROGRAMS		= fsck.gfs2

 noinst_HEADERS		= eattr.h fs_bits.h fsck.h fs_recovery.h hash.h \
 			  inode_hash.h link.h lost_n_found.h metawalk.h util.h
@@ -15,11 +15,3 @@ fsck_gfs2_CPPFLAGS	= -D_FILE_OFFSET_BITS=64 -DHELPER_PROGRAM \
 			  -I$(top_srcdir)/gfs2/libgfs2

 fsck_gfs2_LDADD		= $(top_builddir)/gfs2/libgfs2/libgfs2.la
-
-install-exec-local:
-	$(INSTALL) -d $(DESTDIR)/sbin
-	$(INSTALL) -m 755 fsck.gfs2 $(DESTDIR)/sbin
-
-uninstall-local:
-	cd $(DESTDIR)/sbin && \
-		rm -f fsck.gfs2
diff --git a/gfs2/mkfs/Makefile.am b/gfs2/mkfs/Makefile.am
index 9f156ba..ba4f851 100644
--- a/gfs2/mkfs/Makefile.am
+++ b/gfs2/mkfs/Makefile.am
@@ -1,6 +1,6 @@
 MAINTAINERCLEANFILES	= Makefile.in

-noinst_PROGRAMS		= mkfs.gfs2
+sbin_PROGRAMS		= mkfs.gfs2

 noinst_HEADERS		= gfs2_mkfs.h

@@ -15,20 +15,12 @@ mkfs_gfs2_LDADD		= $(top_builddir)/gfs2/libgfs2/libgfs2.la

 relative_sbin		= $(shell perl -MFile::Spec -le 'print File::Spec->abs2rel("/sbin", "$(sbindir)")')

-install-exec-local:
-	$(INSTALL) -d $(DESTDIR)/sbin
-	$(INSTALL) -m 755 mkfs.gfs2 $(DESTDIR)/sbin
-
-uninstall-local:
-	cd $(DESTDIR)/sbin && \
-		rm -f mkfs.gfs2
-
 install-exec-hook:
 	$(INSTALL) -d $(DESTDIR)/$(sbindir)
-	(cd $(DESTDIR)/$(sbindir) && \
+	cd $(DESTDIR)/$(sbindir) && \
 		rm -f gfs2_grow gfs2_jadd && \
 		$(LN_S) $(relative_sbin)/mkfs.gfs2 gfs2_grow && \
-		$(LN_S) $(relative_sbin)/mkfs.gfs2 gfs2_jadd)
+		$(LN_S) $(relative_sbin)/mkfs.gfs2 gfs2_jadd

 uninstall-hook:
-	(cd $(DESTDIR)/$(sbindir) && rm -f gfs2_jadd gfs2_grow)
+	cd $(DESTDIR)/$(sbindir) && rm -f gfs2_jadd gfs2_grow
diff --git a/gfs2/mount/Makefile.am b/gfs2/mount/Makefile.am
index fd927b6..a82970e 100644
--- a/gfs2/mount/Makefile.am
+++ b/gfs2/mount/Makefile.am
@@ -1,6 +1,6 @@
 MAINTAINERCLEANFILES	= Makefile.in

-noinst_PROGRAMS		= mount.gfs2
+sbin_PROGRAMS		= mount.gfs2

 noinst_HEADERS		= gfs_ondisk.h util.h

@@ -12,11 +12,3 @@ mount_gfs2_CPPFLAGS	= -D_FILE_OFFSET_BITS=64 -DHELPER_PROGRAM \
 			  -I$(top_srcdir)/group/libgfscontrol

 mount_gfs2_LDADD	= $(top_builddir)/group/libgfscontrol/libgfscontrol.la
-
-install-exec-local:
-	$(INSTALL) -d $(DESTDIR)/sbin
-	$(INSTALL) -m 755 mount.gfs2 $(DESTDIR)/sbin
-
-uninstall-local:
-	cd $(DESTDIR)/sbin && \
-		rm -f mount.gfs2
--
1.6.3.3.420.gd4b46




More information about the Cluster-devel mailing list