[lvm-devel] [PATCH]: Added installcheck target in Makefiles
Petr Rockai
prockai at redhat.com
Mon May 24 15:11:07 UTC 2010
Hi,
a couple of issues, see comments inline.
> --- Makefile.in 13 Apr 2010 13:28:52 -0000 1.52
> +++ Makefile.in 21 May 2010 13:34:58 -0000
> @@ -75,9 +75,14 @@
> endif
> DISTCLEAN_TARGETS += cscope.out
>
> +.PHONY: check check_cluster check_local installcheck installcheck_cluster installcheck_local
> +
> check check_cluster check_local: all
> $(MAKE) -C test $(@)
>
[snip]
> --- test/Makefile.in 12 May 2010 11:59:46 -0000 1.42
> +++ test/Makefile.in 21 May 2010 13:34:59 -0000
> @@ -46,47 +46,63 @@
> $(MAKE) -C api vgtest
> endif
>
> -all check: init.sh
> - @echo Testing with locking_type 1
> - ./bin/harness $(RUN)
> - @echo Testing with locking_type 3
> - LVM_TEST_LOCKING=3 ./bin/harness $(RUN)
> +.PHONY: all \
> + check check_cluster check_local \
> + installcheck installcheck_cluster installcheck_local \
> + clean distclean
The .PHONY additions should be a separate patch, arguably. Not directly
related installcheck?
> -check_cluster: init.sh
> +all check: check_local check_cluster
> +
> +check_cluster: init.sh .bin-dir-stamp
> @echo Testing with locking_type 3
> - LVM_TEST_LOCKING=3 ./bin/harness $(RUN)
> + INSTALLCHECK= LVM_TEST_LOCKING=3 ./bin/harness $(RUN)
>
> -check_local: init.sh
> +check_local: init.sh .bin-dir-stamp
> @echo Testing with locking_type 1
> - LVM_TEST_LOCKING=1 ./bin/harness $(RUN)
> + INSTALLCHECK= LVM_TEST_LOCKING=1 ./bin/harness $(RUN)
> +
> +installcheck: installcheck_local installcheck_cluster
> +
> +installcheck_cluster: init.sh
> + @echo Testing installation with locking_type 3
> + INSTALLCHECK=1 LVM_TEST_LOCKING=3 ./bin/harness $(RUN)
> +
> +installcheck_local: init.sh
> + @echo Testing installation with locking_type 1
> + INSTALLCHECK=1 LVM_TEST_LOCKING=1 ./bin/harness $(RUN)
Since this is leaked into global environment, the name should start with
LVM_TEST_ like with other envvars that control the testsuite (probably
LVM_TEST_INSTALLED?). Another option is to use a different mechanism.
> +bin:
> + mkdir bin
>
> -bin/not: $(srcdir)/not.c .bin-dir-stamp
> - $(CC) -o bin/not $<
> +bin/not: $(srcdir)/not.c Makefile bin
> + $(CC) -o $@ $<
> ln -sf not bin/should
>
> -bin/harness: $(srcdir)/harness.c .bin-dir-stamp
> - $(CC) -o bin/harness $<
> +bin/harness: $(srcdir)/harness.c Makefile bin
> + $(CC) -o $@ $<
>
> -bin/check: $(srcdir)/check.sh .bin-dir-stamp
> - cp $< bin/check
> - chmod +x bin/check
> +bin/check: $(srcdir)/check.sh Makefile bin
> + cp $< $@
> + chmod +x $@
Why are those changes in this patch? Same as with PHONY above.
> -init.sh: $(srcdir)/Makefile.in .bin-dir-stamp bin/not bin/check bin/harness $(SCRIPTS)
> +init.sh: Makefile bin/not bin/check bin/harness $(SCRIPTS)
> rm -f $@-t $@
> echo 'top_srcdir=$(top_srcdir)' >> $@-t
> echo 'abs_top_builddir=$(abs_top_builddir)' >> $@-t
> echo 'abs_top_srcdir=$(abs_top_builddir)' >> $@-t
> + echo 'abs_srcdir=$(abs_srcdir)' >> $@-t
> + echo 'abs_builddir=$(abs_builddir)' >> $@-t
> echo 'PATH=$$abs_top_builddir/test/bin:$$PATH' >> $@-t
> + echo 'if test -z "$$INSTALLCHECK"; then' >> $@-t
> + echo ' PATH=$$abs_top_builddir/test/sbin:$$PATH' >> $@-t
Why sbin? Looks unrelated and superfluous.
> LDLPATH="\$$abs_top_builddir/libdm"; \
> LDLPATH="$$LDLPATH:\$$abs_top_builddir/tools"; \
> LDLPATH="$$LDLPATH:\$$abs_top_builddir/daemons/dmeventd"; \
> LDLPATH="$$LDLPATH:\$$abs_top_builddir/daemons/dmeventd/plugins/lvm2"; \
> LDLPATH="$$LDLPATH:\$$abs_top_builddir/daemons/dmeventd/plugins/mirror"; \
> LDLPATH="$$LDLPATH:\$$abs_top_builddir/daemons/dmeventd/plugins/snapshot"; \
> - echo "export LD_LIBRARY_PATH=\"$$LDLPATH\"" >> $@-t
> - echo 'top_srcdir=$(top_srcdir)' >> $@-t
> - echo 'abs_srcdir=$(abs_srcdir)' >> $@-t
> - echo 'abs_builddir=$(abs_builddir)' >> $@-t
> + echo " export LD_LIBRARY_PATH=\"$$LDLPATH\"" >> $@-t
> + echo 'fi' >> $@-t
> echo 'export PATH' >> $@-t
> echo 'export DM_UDEV_SYNCHRONISATION=$(dm_udev_synchronisation)' >> $@-t
> chmod a-w $@-t
Other than the sbin bit, this is the actual relevant change -- do not
override PATH and LD_LIBRARY_PATH for the tests if INSTALLCHECK is set
in the environment (see above wrt naming).
> @@ -95,16 +111,18 @@
>
> Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
> cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
> + echo 'Makefile rebuilt! Run again....' >&2
> + exit 1
This does not look very canonic. It is probably also quite superfluous.
>From GNU make manual, section 3.7:
| To this end, after reading in all makefiles, make will consider each
| as a goal target and attempt to update it. If a makefile has a rule
| which says how to update it (found either in that very makefile or in
| another one) or if an implicit rule applies to it (see Using Implicit
| Rules), it will be updated if necessary. After all makefiles have been
| checked, if any have actually been changed, make starts with a clean
| slate and reads all the makefiles over again. (It will also attempt to
| update each of them over again, but normally this will not change them
| again, since they are already up to date.)
> .bin-dir-stamp: lvm-wrapper
> - rm -rf bin
> - mkdir bin
> + rm -rf sbin
> + mkdir sbin
> for i in lvm $$(cat ../tools/.commands); do \
> - ln -s ../lvm-wrapper bin/$$i; \
> + ln -s ../lvm-wrapper sbin/$$i; \
> done
> - ln -s "$(abs_top_builddir)/tools/dmsetup" bin/dmsetup
> - ln -s "$(abs_top_builddir)/daemons/clvmd/clvmd" bin/clvmd
> - ln -s "$(abs_top_builddir)/daemons/dmeventd/dmeventd" bin/dmeventd
> + ln -s "$(abs_top_builddir)/tools/dmsetup" sbin/dmsetup
> + ln -s "$(abs_top_builddir)/daemons/clvmd/clvmd" sbin/clvmd
> + ln -s "$(abs_top_builddir)/daemons/dmeventd/dmeventd" sbin/dmeventd
Just bin -> sbin again.
> @@ -118,7 +136,7 @@
> mv $@-t $@
>
> clean:
> - rm -rf init.sh lvm-wrapper bin .bin-dir-stamp
> + rm -rf init.sh lvm-wrapper bin sbin .bin-dir-stamp
> if test "$(srcdir)" != . ; then rm -f $(subst $(srcdir)/, ,$(SCRIPTS)) lvm2app.sh ; fi
>
> distclean: clean
> diff -a -u -r1.9 t-000-basic.sh
> --- test/t-000-basic.sh 20 Apr 2010 15:19:36 -0000 1.9
> +++ test/t-000-basic.sh 21 May 2010 13:34:59 -0000
> @@ -18,7 +18,11 @@
> lvm pvmove --version|sed -n "1s/.*: *\([0-9][^ ]*\) .*/\1/p" > actual
>
> # ensure they are the same
> -diff -u actual expected
> +if test -z "$INSTALLCHECK"; then
> + diff -u actual expected
> +else
> + should diff -u actual expected
> +fi
Makes sense.
Please separate out the actual relevant changes and submit again. I
think that can go in. I don't see the reasoning behind "sbin", but I am
not opposed to the other refactors -- but please submit them separately.
Thanks,
Petr.
More information about the lvm-devel
mailing list