From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12767 invoked by alias); 4 Aug 2008 04:01:50 -0000 Received: (qmail 12749 invoked by alias); 4 Aug 2008 04:01:49 -0000 X-Spam-Status: No, hits=-0.7 required=5.0 tests=AWL,BAYES_50,KAM_MX,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on bastion.fedora.phx.redhat.com X-Spam-Level: Subject: master - build: fix several issues related to install and build targets To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: cae2ee8b73390bfa5cb25890800b5145cc277908 X-Git-Newrev: 565ee3fec31ecfb16b1984a2582f8cc962df4d78 From: "Fabio M. Di Nitto" Message-Id: <20080804040039.BB62B12003F@lists.fedorahosted.org> Date: Mon, 04 Aug 2008 04:01:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2008-q3/txt/msg00209.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=565ee3fec31ecfb16b1984a2582f8cc962df4d78 Commit: 565ee3fec31ecfb16b1984a2582f8cc962df4d78 Parent: cae2ee8b73390bfa5cb25890800b5145cc277908 Author: Fabio M. Di Nitto AuthorDate: Thu Jul 31 08:55:32 2008 +0200 Committer: Fabio M. Di Nitto 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 --- 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)