This is the mail archive of the
cluster-cvs@sourceware.org
mailing list for the cluster.
master - build: fix several issues related to install and buildtargets
- From: "Fabio M. Di Nitto" <fabbione at fedoraproject dot org>
- To: cluster-cvs-relay at redhat dot com
- Date: Mon, 4 Aug 2008 04:00:39 +0000 (UTC)
- Subject: master - build: fix several issues related to install and buildtargets
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=565ee3fec31ecfb16b1984a2582f8cc962df4d78
Commit: 565ee3fec31ecfb16b1984a2582f8cc962df4d78
Parent: cae2ee8b73390bfa5cb25890800b5145cc277908
Author: Fabio M. Di Nitto <fdinitto@redhat.com>
AuthorDate: Thu Jul 31 08:55:32 2008 +0200
Committer: Fabio M. Di Nitto <fdinitto@redhat.com>
CommitterDate: Mon Aug 4 06:00:00 2008 +0200
build: fix several issues related to install and build targets
Several users have been reporting issues building and installing
our source from an nfs mount.
There are two related issues in this scenario (P = Problem):
P1) nfs servers often drops root privileges to nobody (very often required
for install:)
P2) our build system had issues in the past with linking against static
libraries.
the combination of the two ends with a user "nobody" trying to link
one of our tools at install time and of course it fails because the
nfs server would refuse "nobody" to access a directory/file that
the user owns.
We address this issue by doing a set of simple changes around
(A = Action):
A1) Remove all PHONY targets so that at install time we do not re-link
bits that are already updated.
A2) Introduce a more detailed dependecy tracker for static libraries by
using LDDEPS var within the affected Makefiles. This replaces the
requirement of PHONY targets in A1).
Note: changes to header files are already tracked by .d files,
LDDEPS tracks changes to the binaries.
A3) Make sure that all target that requires static libs are updated to
use LDDEPS.
Extra benefits from this change (B = Benefit):
B1) no relink at install time.
B2) install target does not require any devel library installed on the
target system because of B1
B3) install target can be executed in parallel from several machines.
For example when installing on N machines from the same nfs share.
This was an issue before because of a race condition now fixed by B1.
(two or more machine could try to link the same binary at the same
time and fail)
The only con is that A2 requires a bit more manual work on tracking
linking against static libraries, but the changes in that area are
not frequent enough to hold this fix.
Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
---
ccs/ccs_tool/Makefile | 5 ++---
ccs/ccsais/Makefile | 4 +++-
ccs/daemon/Makefile | 3 ---
config/tools/ldap/Makefile | 2 --
fence/fence_node/Makefile | 4 +++-
fence/fence_tool/Makefile | 4 +++-
fence/fenced/Makefile | 4 +++-
gfs/gfs_grow/Makefile | 5 ++---
gfs/gfs_jadd/Makefile | 5 ++---
gfs/gfs_mkfs/Makefile | 5 ++---
gfs2/convert/Makefile | 5 ++---
gfs2/edit/Makefile | 5 ++---
gfs2/fsck/Makefile | 7 +++----
gfs2/mkfs/Makefile | 5 ++---
gfs2/mount/Makefile | 4 +++-
gfs2/quota/Makefile | 5 ++---
gfs2/tool/Makefile | 5 ++---
group/dlm_controld/Makefile | 7 ++++---
group/gfs_control/Makefile | 4 +++-
group/gfs_controld/Makefile | 7 ++++---
group/tool/Makefile | 10 ++++++----
rgmanager/src/daemons/Makefile | 13 +++++++------
rgmanager/src/utils/Makefile | 14 +++++++-------
23 files changed, 67 insertions(+), 65 deletions(-)
diff --git a/ccs/ccs_tool/Makefile b/ccs/ccs_tool/Makefile
index be83217..f0c7587 100644
--- a/ccs/ccs_tool/Makefile
+++ b/ccs/ccs_tool/Makefile
@@ -29,12 +29,13 @@ CFLAGS += -I${incdir}
LDFLAGS += -L${cmanlibdir} -lcman
ifdef legacy_code
LDFLAGS += -L../libccscompat -lccscompat
+LDDEPS += ../libccscompat/libccscompat.a
else
LDFLAGS += -L${ccslibdir} -lccs
endif
LDFLAGS += `xml2-config --libs` -L${libdir}
-${TARGET1}: ${OBJS}
+${TARGET1}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
${TARGET2}: ${TARGET1}
@@ -47,6 +48,4 @@ endif
clean: generalclean
-.PHONY: all ${TARGET1}
-
-include $(OBJS:.o=.d)
diff --git a/ccs/ccsais/Makefile b/ccs/ccsais/Makefile
index f3eacc7..13090bc 100644
--- a/ccs/ccsais/Makefile
+++ b/ccs/ccsais/Makefile
@@ -17,9 +17,11 @@ CFLAGS += -I${incdir}
LDFLAGS += -L../libccscompat -lccscompat
+LDDEPS += ../libccscompat/libccscompat.a
+
OBJS= config.o
-${TARGET}: ${OBJS}
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -shared -Wl,-soname,$@ -o $@ $^ $(LDFLAGS)
depends:
diff --git a/ccs/daemon/Makefile b/ccs/daemon/Makefile
index e5bbbf4..a488dbd 100644
--- a/ccs/daemon/Makefile
+++ b/ccs/daemon/Makefile
@@ -25,12 +25,9 @@ LDFLAGS += -L${cmanlibdir} -lcman
LDFLAGS += -L${openaislibdir} -llogsys
LDFLAGS += -L${libdir} `xml2-config --libs` -lpthread
-
${TARGET}: ${OBJS}
$(CC) -o $@ $^ $(LDFLAGS)
clean: generalclean
-.PHONY: all ${TARGET}
-
-include $(OBJS:.o=.d)
diff --git a/config/tools/ldap/Makefile b/config/tools/ldap/Makefile
index 6e41017..8fc1de7 100644
--- a/config/tools/ldap/Makefile
+++ b/config/tools/ldap/Makefile
@@ -24,6 +24,4 @@ ${TARGET}: ${OBJS}
clean: generalclean
-.PHONY: all ${TARGET}
-
-include $(OBJS:.o=.d)
diff --git a/fence/fence_node/Makefile b/fence/fence_node/Makefile
index e4cfec4..fa6cefd 100644
--- a/fence/fence_node/Makefile
+++ b/fence/fence_node/Makefile
@@ -22,7 +22,9 @@ LDFLAGS += -L${ccslibdir} -L${fencelibdir} -lccs -lfence
LDFLAGS += -L${openaislibdir} -llogsys
LDFLAGS += -L../libfenced -lfenced
-${TARGET}: ${OBJS}
+LDDEPS += ../libfenced/libfenced.a
+
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
diff --git a/fence/fence_tool/Makefile b/fence/fence_tool/Makefile
index 721dd46..23dab29 100644
--- a/fence/fence_tool/Makefile
+++ b/fence/fence_tool/Makefile
@@ -20,7 +20,9 @@ CFLAGS += -I${incdir}
LDFLAGS += -L${ccslibdir} -L${cmanlibdir} -lccs -lcman
LDFLAGS += -L../libfenced -lfenced
-${TARGET}: ${OBJS}
+LDDEPS += ../libfenced/libfenced.a
+
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
diff --git a/fence/fenced/Makefile b/fence/fenced/Makefile
index f4840c4..3e3534b 100644
--- a/fence/fenced/Makefile
+++ b/fence/fenced/Makefile
@@ -28,7 +28,9 @@ LDFLAGS += -L${fencelibdir} -lfence
LDFLAGS += -L${openaislibdir} -lcpg -llogsys -lpthread
LDFLAGS += -L../../group/lib -l group
-${TARGET}: ${OBJS}
+LDDEPS += ../../group/lib/libgroup.a
+
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
diff --git a/gfs/gfs_grow/Makefile b/gfs/gfs_grow/Makefile
index 1833b45..aba7d81 100644
--- a/gfs/gfs_grow/Makefile
+++ b/gfs/gfs_grow/Makefile
@@ -20,8 +20,9 @@ CFLAGS += -I${incdir}
LDFLAGS += -L../libgfs -lgfs
+LDDEPS += ../libgfs/libgfs.a
-${TARGET}: ${OBJS}
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
@@ -29,6 +30,4 @@ depends:
clean: generalclean
-.PHONY: all ${TARGET}
-
-include $(OBJS:.o=.d)
diff --git a/gfs/gfs_jadd/Makefile b/gfs/gfs_jadd/Makefile
index 901acef..2efca4a 100644
--- a/gfs/gfs_jadd/Makefile
+++ b/gfs/gfs_jadd/Makefile
@@ -20,8 +20,9 @@ CFLAGS += -I${incdir}
LDFLAGS += -L../libgfs -lgfs
+LDDEPS += ../libgfs/libgfs.a
-${TARGET}: ${OBJS}
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
@@ -29,6 +30,4 @@ depends:
clean: generalclean
-.PHONY: all ${TARGET}
-
-include $(OBJS:.o=.d)
diff --git a/gfs/gfs_mkfs/Makefile b/gfs/gfs_mkfs/Makefile
index 64aeb96..c3c67e7 100644
--- a/gfs/gfs_mkfs/Makefile
+++ b/gfs/gfs_mkfs/Makefile
@@ -27,8 +27,9 @@ CFLAGS += -I${incdir}
LDFLAGS += -L${volidlibdir} -lvolume_id
LDFLAGS += -L../libgfs -lgfs
+LDDEPS += ../libgfs/libgfs.a
-${TARGET1}: ${OBJS}
+${TARGET1}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
${TARGET2}: ${TARGET1}
@@ -39,6 +40,4 @@ depends:
clean: generalclean
-.PHONY: all ${TARGET1}
-
-include $(OBJS:.o=.d)
diff --git a/gfs2/convert/Makefile b/gfs2/convert/Makefile
index a792d5e..2219d3c 100644
--- a/gfs2/convert/Makefile
+++ b/gfs2/convert/Makefile
@@ -19,8 +19,9 @@ CFLAGS += -I${incdir}
LDFLAGS += -L../libgfs2 -lgfs2
+LDDEPS += ../libgfs2/libgfs2.a
-${TARGET}: ${OBJS}
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
@@ -28,6 +29,4 @@ depends:
clean: generalclean
-.PHONY: all ${TARGET}
-
-include $(OBJS:.o=.d)
diff --git a/gfs2/edit/Makefile b/gfs2/edit/Makefile
index 3d3d6b6..e4e63ff 100644
--- a/gfs2/edit/Makefile
+++ b/gfs2/edit/Makefile
@@ -23,8 +23,9 @@ CFLAGS += -I${incdir}
LDFLAGS += -L${ncurseslibdir} -lncurses
LDFLAGS += -L../libgfs2/ -lgfs2
+LDDEPS += ../libgfs2/libgfs2.a
-${TARGET}: ${OBJS}
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
@@ -32,6 +33,4 @@ depends:
clean: generalclean
-.PHONY: all ${TARGET}
-
-include $(OBJS:.o=.d)
diff --git a/gfs2/fsck/Makefile b/gfs2/fsck/Makefile
index 32713da..8420c9f 100644
--- a/gfs2/fsck/Makefile
+++ b/gfs2/fsck/Makefile
@@ -38,11 +38,12 @@ CFLAGS += -I${incdir}
LDFLAGS += -L../libgfs2 -lgfs2
+LDDEPS += ../libgfs2/libgfs2.a
-${TARGET1}: $(OBJS)
+${TARGET1}: $(OBJS) ../libgfs2/libgfs2.a
$(CC) -o $@ $^ $(LDFLAGS)
-${TARGET2}: ${TARGET1}
+${TARGET2}: ${TARGET1} ${LDDEPS}
ln -fs ${TARGET1} ${TARGET2}
depends:
@@ -63,5 +64,3 @@ ${TARGET1}.pot: $(OBJS:.o=.c)
--keyword=log_debug --keyword=log_err --keyword=log_print -d - $(OBJS:.o=.c) > ${TARGET1}.pot
-include $(OBJS:.o=.d)
-
-.PHONY: all ${TARGET1}
diff --git a/gfs2/mkfs/Makefile b/gfs2/mkfs/Makefile
index c1f64d8..3c7f74c 100644
--- a/gfs2/mkfs/Makefile
+++ b/gfs2/mkfs/Makefile
@@ -28,8 +28,9 @@ CFLAGS += -I${incdir}
LDFLAGS += -L${volidlibdir} -lvolume_id
LDFLAGS += -L../libgfs2 -lgfs2
+LDDEPS += ../libgfs2/libgfs2.a
-${TARGET1}: ${OBJS}
+${TARGET1}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
${TARGET2}: ${TARGET1}
@@ -46,6 +47,4 @@ depends:
clean: generalclean
-.PHONY: all ${TARGET1}
-
-include $(OBJS:.o=.d)
diff --git a/gfs2/mount/Makefile b/gfs2/mount/Makefile
index a1ec7d4..e02bf7b 100644
--- a/gfs2/mount/Makefile
+++ b/gfs2/mount/Makefile
@@ -20,7 +20,9 @@ CFLAGS += -I${incdir}
LDFLAGS += -L../../group/libgfscontrol -lgfscontrol
-${TARGET1}: ${OBJS1}
+LDDEPS += ../../group/libgfscontrol/libgfscontrol.a
+
+${TARGET1}: ${OBJS1} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
install: all
diff --git a/gfs2/quota/Makefile b/gfs2/quota/Makefile
index 6a9fc40..e6c914e 100644
--- a/gfs2/quota/Makefile
+++ b/gfs2/quota/Makefile
@@ -21,8 +21,9 @@ CFLAGS += -I${incdir}
LDFLAGS += -L../libgfs2 -lgfs2
+LDDEPS += ../libgfs2/libgfs2.a
-${TARGET}: ${OBJS}
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
@@ -30,6 +31,4 @@ depends:
clean: generalclean
-.PHONY: all ${TARGET}
-
-include $(OBJS:.o=.d)
diff --git a/gfs2/tool/Makefile b/gfs2/tool/Makefile
index c6dd9a0..459eb01 100644
--- a/gfs2/tool/Makefile
+++ b/gfs2/tool/Makefile
@@ -25,8 +25,9 @@ CFLAGS += -I${incdir}
LDFLAGS += -L../libgfs2 -lgfs2
+LDDEPS += ../libgfs2/libgfs2.a
-${TARGET}: ${OBJS}
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
@@ -34,6 +35,4 @@ depends:
clean: generalclean
-.PHONY: all ${TARGET}
-
-include $(OBJS:.o=.d)
diff --git a/group/dlm_controld/Makefile b/group/dlm_controld/Makefile
index fed6297..355f7a6 100644
--- a/group/dlm_controld/Makefile
+++ b/group/dlm_controld/Makefile
@@ -35,7 +35,10 @@ LDFLAGS += -L${openaislibdir} -lcpg -lSaCkpt -llogsys -lpthread
LDFLAGS += -L../../fence/libfenced/ -lfenced
LDFLAGS += -L../lib -lgroup
-${TARGET}: ${OBJS}
+LDDEPS += ../../fence/libfenced/libfenced.a
+LDDEPS += ../lib/libgroup.a
+
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
@@ -43,6 +46,4 @@ depends:
clean: generalclean
-.PHONY: all ${TARGET}
-
-include $(OBJS:.o=.d)
diff --git a/group/gfs_control/Makefile b/group/gfs_control/Makefile
index 142f6e4..54d4930 100644
--- a/group/gfs_control/Makefile
+++ b/group/gfs_control/Makefile
@@ -17,7 +17,9 @@ CFLAGS += -I${incdir}
LDFLAGS += -L../libgfscontrol -lgfscontrol
-${TARGET}: ${OBJS}
+LDDEPS += ../libgfscontrol/libgfscontrol.a
+
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
clean: generalclean
diff --git a/group/gfs_controld/Makefile b/group/gfs_controld/Makefile
index 6c68a7a..8d9241c 100644
--- a/group/gfs_controld/Makefile
+++ b/group/gfs_controld/Makefile
@@ -34,7 +34,10 @@ LDFLAGS += -L${openaislibdir} -lcpg -lSaCkpt -llogsys -lpthread
LDFLAGS += -L../../fence/libfenced/ -lfenced
LDFLAGS += -L../lib -lgroup
-${TARGET}: ${OBJS}
+LDDEPS += ../lib/libgroup.a
+LDDEPS += ../../fence/libfenced/libfenced.a
+
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
@@ -42,6 +45,4 @@ depends:
clean: generalclean
-.PHONY: all ${TARGET}
-
-include $(OBJS:.o=.d)
diff --git a/group/tool/Makefile b/group/tool/Makefile
index d2db6c1..7043044 100644
--- a/group/tool/Makefile
+++ b/group/tool/Makefile
@@ -19,17 +19,19 @@ CFLAGS += -I$(S)/../libgfscontrol
CFLAGS += -I${incdir}
CFLAGS += -I${KERNEL_SRC}/include/
-LDFLAGS += -L../lib -lgroup
LDFLAGS += -L${dlmcontrollibdir} -ldlmcontrol
+LDFLAGS += -L../lib -lgroup
LDFLAGS += -L../../fence/libfenced -lfenced
LDFLAGS += -L../libgfscontrol -lgfscontrol
-${TARGET}: ${OBJS}
+LDDEPS += ../lib/libgroup.a
+LDDEPS += ../libgfscontrol/libgfscontrol.a
+LDDEPS += ../../fence/libfenced/libfenced.a
+
+${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
depends:
$(MAKE) -C ../lib all
clean: generalclean
-
-.PHONY: all ${TARGET}
diff --git a/rgmanager/src/daemons/Makefile b/rgmanager/src/daemons/Makefile
index 49cf424..587273f 100644
--- a/rgmanager/src/daemons/Makefile
+++ b/rgmanager/src/daemons/Makefile
@@ -69,13 +69,16 @@ EXTRA_LDFLAGS += -lpthread
LOCAL_LDFLAGS += -llalloc
READLINE_LDFLAGS += -L${readlinelibdir} -lreadline
+LDDEPS += ../clulib/libclulib.a
-${TARGET1}: ${OBJS1}
+LOCAL_LDDEPS += ../clulib/liblalloc.a
+
+${TARGET1}: ${OBJS1} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS) $(CCS_LDFLAGS) $(CMAN_LDFLAGS) \
$(DLM_LDFLAGS) $(XML2_LDFLAGS) \
$(SLANG_LDFLAGS) $(EXTRA_LDFLAGS)
-${TARGET2}: ${OBJS2}
+${TARGET2}: ${OBJS2} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
#
@@ -92,11 +95,11 @@ ${TARGET2}: ${OBJS2}
# This is NOT meant to be an installed binary. Rather, RPMs and/or other
# packages should run 'make check' as part of the build process.
#
-${TARGET3}: ${SHAREDOBJS} ${OBJS3}
+${TARGET3}: ${SHAREDOBJS} ${OBJS3} ${LDDEPS} ${LOCAL_LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS) $(CMAN_LDFLAGS) \
$(LOCAL_LDFLAGS) $(EXTRA_LDFLAGS) $(XML2_LDFLAGS)
-${TARGET4}: ${SHAREDOBJS} ${OBJS4}
+${TARGET4}: ${SHAREDOBJS} ${OBJS4} ${LDDEPS} ${LOCAL_LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS) $(CCS_LDFLAGS) $(CMAN_LDFLAGS) \
$(LOCAL_LDFLAGS) $(EXTRA_LDFLAGS) $(XML2_LDFLAGS) \
$(READLINE_LDFLAGS)
@@ -110,8 +113,6 @@ depends:
clean: generalclean
rm -f tests/*.out*
-.PHONY: all ${TARGET1} ${TARGET2} ${TARGET3} ${TARGET4}
-
-include $(OBJS1:.o=.d)
-include $(OBJS2:.o=.d)
-include $(OBJS3:.o=.d)
diff --git a/rgmanager/src/utils/Makefile b/rgmanager/src/utils/Makefile
index c200140..2469032 100644
--- a/rgmanager/src/utils/Makefile
+++ b/rgmanager/src/utils/Makefile
@@ -25,6 +25,8 @@ CFLAGS += -I${incdir}
LDFLAGS += -L${libdir}
LDFLAGS += -L../clulib -lclulib
+LDDEPS += ../clulib/libclulib.a
+
CCS_LDFLAGS += -L${ccslibdir} -lccs
CMAN_LDFLAGS += -L${cmanlibdir} -lcman
NCURSES_LDFLAGS += -L${ncurseslibdir} -lncurses
@@ -36,20 +38,20 @@ OBJS3= $(TARGET3).o
OBJS4= $(TARGET4).o
OBJS5= $(TARGET5).o
-${TARGET1}: ${OBJS1}
+${TARGET1}: ${OBJS1} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
-${TARGET2}: ${OBJS2}
+${TARGET2}: ${OBJS2} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
-${TARGET3}: ${OBJS3}
+${TARGET3}: ${OBJS3} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS) $(CCS_LDFLAGS) $(CMAN_LDFLAGS) \
$(NCURSES_LDFLAGS) $(PTHREAD_LDFLAGS)
-${TARGET4}: ${OBJS4}
+${TARGET4}: ${OBJS4} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS) $(CMAN_LDFLAGS) $(PTHREAD_LDFLAGS)
-${TARGET5}: ${OBJS5}
+${TARGET5}: ${OBJS5} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS) $(CCS_LDFLAGS)
${TARGET6}:
@@ -61,8 +63,6 @@ depends:
clean: generalclean
-.PHONY: all ${TARGET1} ${TARGET2} ${TARGET3} ${TARGET4} ${TARGET5} ${TARGET6}
-
-include $(OBJS1:.o=.d)
-include $(OBJS2:.o=.d)
-include $(OBJS3:.o=.d)