Message ID | yddwrj9c21k.fsf@manam.CeBiTec.Uni-Bielefeld.DE |
---|---|
State | New |
Headers | show |
* Rainer Orth wrote on Mon, Apr 04, 2011 at 08:19:19PM CEST: > To avoid this mess, I'm instead setting LD_LIBRARY_PATH in CHECK. While > this isn't exactly portable (some platforms, especially Darwin and > HP-UX, use different variables), it's at least more widespread than -R. Toplevel configure computes RPATH_ENVVAR for the host, and toplevel Makefile passes that. If you need it for the target, it should be easy to repeat those five lines of code somewhere. > +check-tail: check-recursive check-multi > + @lib=`${PWD_COMMAND} | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \ > + for dir in . $(MULTIDIRS); do \ > + mv ../$${dir}/$${lib}/libgo.sum ../$${dir}/$${lib}/libgo.sum.sep; \ > + mv ../$${dir}/$${lib}/libgo.log ../$${dir}/$${lib}/libgo.log.sep; \ > + done; \ > + mv libgo.head libgo.sum; \ > + cp libgo.sum libgo.log; \ > + echo "Schedule of variations:" >> libgo.sum; \ > + for dir in . $(MULTIDIRS); do \ > + multidir=../$${dir}/$${lib}; \ > + multivar=`cat $${multidir}/libgo.var`; \ > + echo " $${multivar}" >> libgo.sum; \ > + done; \ > + echo >> libgo.sum; \ > + pass=0; fail=0; untested=0; \ > + for dir in . $(MULTIDIRS); do \ > + multidir=../$${dir}/$${lib}; \ > + multivar=`cat $${multidir}/libgo.var`; \ > + echo "Running target $${multivar}" >> libgo.sum; \ > + echo "Running $(srcdir)/libgo.exp ..." >> libgo.sum; \ > + cat $${multidir}/libgo.sum.sep >> libgo.sum; \ > + cat $${multidir}/libgo.log.sep >> libgo.log; \ > + echo " === libgo Summary for $${multivar} ===" >> libgo.sum; \ > + echo >> libgo.sum; \ > + p=`grep -c PASS $${multidir}/libgo.sum.sep`; \ > + if test "$$p" != "0"; then \ I'd use -ne instead of != here and below. > + echo "# of expected passes $$p" >> libgo.sum; \ > + fi; \ > + pass=`expr $$pass + $$p`; \ > + p=`grep -c FAIL $${multidir}/libgo.sum.sep`; \ > + if test "$$p" != "0"; then \ > + echo "# of unexpected failures $$p" >> libgo.sum; \ > + fi; \ > + fail=`expr $$fail + $$p`; \ > + p=`grep -c UNTESTED libgo.sum`; \ > + if test "$$p" != "0"; then \ > + echo "# of untested testcases $$p" >> libgo.tail; \ > + fi; \ > + untested=`expr $$untested + $$p`; \ > + done; \ > + echo >> libgo.sum; \ > + echo " === libgo Summary ===" >> libgo.sum; \ > + echo >> libgo.sum; \ > + if test "$$pass" != "0"; then \ > + echo "# of expected passes $$pass" >> libgo.sum; \ > + fi; \ > + if test "$$fail" != "0"; then \ > + echo "# of unexpected failures $$fail" >> libgo.sum; \ > + fi; \ > + if test "$$untested" != "0"; then \ > + echo "# of untested testcases $$untested" >> libgo.sum; \ > + fi; \ > + echo `echo $(GOC) | sed -e 's/ .*//'` `$(GOC) -v 2>&1 | grep " version" | sed -n -e 's/.* \(version.*$$\)/\1/p'` >> libgo.sum; \ This line: echo `echo $(GOC) | sed -e 's/ .*//'` ... is equivalent to: echo $(GOC) ... as the shell squashes unquoted multiple adjacent white space. > + echo >> libgo.log; \ > + echo "runtest completed at `date`" >> libgo.log > + > check-am: > @rm -f libgo.sum libgo.log libgo.tail > - @echo "Test Run By $${USER} on `date`" > libgo.sum > - @echo "Native configuration is $(host_triplet)" >> libgo.sum > - @echo >> libgo.sum > - @echo " === libgo tests ===" >> libgo.sum > - @echo >> libgo.sum > - @echo "Schedule of variations:" >> libgo.sum > - @echo " unix" >> libgo.sum > - @echo >> libgo.sum > - @echo "Running target unix" >> libgo.sum > - @echo "Running $(srcdir)/libgo.exp ..." >> libgo.sum > - @cp libgo.sum libgo.log > - @echo > libgo.tail > - @echo " === libgo summary ===" >> libgo.tail > - @echo >> libgo.tail > + @multivar="unix"; \ > + [ -z "$(MULTIFLAGS)" ] || multivar="$${multivar}/$(MULTIFLAGS)"; \ > + echo "$${multivar}" > libgo.var > @for f in $(TEST_PACKAGES); do \ > rm -f $$f-testsum $$f-testlog; \ > done > - @$(MAKE) -k $(TEST_PACKAGES); \ > - status=$$?; \ > + -@$(MAKE) -k $(TEST_PACKAGES) > for f in $(TEST_PACKAGES); do \ > if test -f $$f-testsum; then \ > cat $$f-testsum >> libgo.sum; \ > @@ -3095,27 +3153,12 @@ check-am: > if test -f $$f-testlog; then \ > cat $$f-testlog >> libgo.log; \ > fi; \ > - done; \ > - p=`grep -c PASS libgo.sum`; \ > - if test "$$p" != "0"; then \ > - echo "# of expected passes $$p" >> libgo.tail; \ > - fi; \ > - p=`grep -c FAIL libgo.sum`; \ > - if test "$$p" != "0"; then \ > - echo "# of unexpected failures $$p" >> libgo.tail; \ > - fi; \ > - p=`grep -c UNTESTED libgo.sum`; \ > - if test "$$p" != "0"; then \ > - echo "# of untested testcases $$p" >> libgo.tail; \ > - fi; \ > - cat libgo.tail >> libgo.sum; \ > - cat libgo.tail >> libgo.log; \ > - echo `echo $(GOC) | sed -e 's/ .*//'` `$(GOC) -v 2>&1 | grep " version" | sed -n -e 's/.* \(version.*$$\)/\1/p'` >> libgo.sum; \ > - echo >> libgo.log; \ > - echo "runtest completed at `date`" >> libgo.log; \ > - exit $$status > - > -MOSTLYCLEAN_FILES = libgo.tail > + done > + > +check-multi: > + $(MULTIDO) $(AM_MAKEFLAGS) DO=check-am multi-do # $(MAKE) > + > +MOSTLYCLEAN_FILES = libgo.head libgo.sum.sep libgo.log.sep > > mostlyclean-local: > find . -name '*.lo' -print | xargs $(LIBTOOL) --mode=clean rm -f Cheers, Ralf
diff --git a/libgo/Makefile.am b/libgo/Makefile.am --- a/libgo/Makefile.am +++ b/libgo/Makefile.am @@ -1547,12 +1547,15 @@ GOTESTFLAGS = # Check a package. CHECK = \ - GC="$(GOC) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs -Wl,-R,`${PWD_COMMAND}`/.libs"; \ + GC="$(GOC) $(GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \ export GC; \ RUNTESTFLAGS="$(RUNTESTFLAGS)"; \ export RUNTESTFLAGS; \ MAKE="$(MAKE)"; \ export MAKE; \ + libgcc=`${GOC} ${GOCFLAGS} -print-libgcc-file-name`; \ + LD_LIBRARY_PATH="`${PWD_COMMAND}`/.libs:`dirname $${libgcc}`:${LD_LIBRARY_PATH}"; \ + export LD_LIBRARY_PATH; \ rm -f $@-testsum $@-testlog; \ prefix=`if test "$(@D)" = "regexp"; then echo regexp-test; else dirname $(@D); fi`; \ test "$${prefix}" != "." || prefix="$(@D)"; \ @@ -3067,27 +3070,82 @@ TEST_PACKAGES = \ testing/quick/check \ testing/script/check +check: check-tail +check-recursive: check-head + +check-head: + @echo "Test Run By $${USER} on `date`" > libgo.head + @echo "Native configuration is $(host_triplet)" >> libgo.head + @echo >> libgo.head + @echo " === libgo tests ===" >> libgo.head + @echo >> libgo.head + +check-tail: check-recursive check-multi + @lib=`${PWD_COMMAND} | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \ + for dir in . $(MULTIDIRS); do \ + mv ../$${dir}/$${lib}/libgo.sum ../$${dir}/$${lib}/libgo.sum.sep; \ + mv ../$${dir}/$${lib}/libgo.log ../$${dir}/$${lib}/libgo.log.sep; \ + done; \ + mv libgo.head libgo.sum; \ + cp libgo.sum libgo.log; \ + echo "Schedule of variations:" >> libgo.sum; \ + for dir in . $(MULTIDIRS); do \ + multidir=../$${dir}/$${lib}; \ + multivar=`cat $${multidir}/libgo.var`; \ + echo " $${multivar}" >> libgo.sum; \ + done; \ + echo >> libgo.sum; \ + pass=0; fail=0; untested=0; \ + for dir in . $(MULTIDIRS); do \ + multidir=../$${dir}/$${lib}; \ + multivar=`cat $${multidir}/libgo.var`; \ + echo "Running target $${multivar}" >> libgo.sum; \ + echo "Running $(srcdir)/libgo.exp ..." >> libgo.sum; \ + cat $${multidir}/libgo.sum.sep >> libgo.sum; \ + cat $${multidir}/libgo.log.sep >> libgo.log; \ + echo " === libgo Summary for $${multivar} ===" >> libgo.sum; \ + echo >> libgo.sum; \ + p=`grep -c PASS $${multidir}/libgo.sum.sep`; \ + if test "$$p" != "0"; then \ + echo "# of expected passes $$p" >> libgo.sum; \ + fi; \ + pass=`expr $$pass + $$p`; \ + p=`grep -c FAIL $${multidir}/libgo.sum.sep`; \ + if test "$$p" != "0"; then \ + echo "# of unexpected failures $$p" >> libgo.sum; \ + fi; \ + fail=`expr $$fail + $$p`; \ + p=`grep -c UNTESTED libgo.sum`; \ + if test "$$p" != "0"; then \ + echo "# of untested testcases $$p" >> libgo.tail; \ + fi; \ + untested=`expr $$untested + $$p`; \ + done; \ + echo >> libgo.sum; \ + echo " === libgo Summary ===" >> libgo.sum; \ + echo >> libgo.sum; \ + if test "$$pass" != "0"; then \ + echo "# of expected passes $$pass" >> libgo.sum; \ + fi; \ + if test "$$fail" != "0"; then \ + echo "# of unexpected failures $$fail" >> libgo.sum; \ + fi; \ + if test "$$untested" != "0"; then \ + echo "# of untested testcases $$untested" >> libgo.sum; \ + fi; \ + echo `echo $(GOC) | sed -e 's/ .*//'` `$(GOC) -v 2>&1 | grep " version" | sed -n -e 's/.* \(version.*$$\)/\1/p'` >> libgo.sum; \ + echo >> libgo.log; \ + echo "runtest completed at `date`" >> libgo.log + check-am: @rm -f libgo.sum libgo.log libgo.tail - @echo "Test Run By $${USER} on `date`" > libgo.sum - @echo "Native configuration is $(host_triplet)" >> libgo.sum - @echo >> libgo.sum - @echo " === libgo tests ===" >> libgo.sum - @echo >> libgo.sum - @echo "Schedule of variations:" >> libgo.sum - @echo " unix" >> libgo.sum - @echo >> libgo.sum - @echo "Running target unix" >> libgo.sum - @echo "Running $(srcdir)/libgo.exp ..." >> libgo.sum - @cp libgo.sum libgo.log - @echo > libgo.tail - @echo " === libgo summary ===" >> libgo.tail - @echo >> libgo.tail + @multivar="unix"; \ + [ -z "$(MULTIFLAGS)" ] || multivar="$${multivar}/$(MULTIFLAGS)"; \ + echo "$${multivar}" > libgo.var @for f in $(TEST_PACKAGES); do \ rm -f $$f-testsum $$f-testlog; \ done - @$(MAKE) -k $(TEST_PACKAGES); \ - status=$$?; \ + -@$(MAKE) -k $(TEST_PACKAGES) for f in $(TEST_PACKAGES); do \ if test -f $$f-testsum; then \ cat $$f-testsum >> libgo.sum; \ @@ -3095,27 +3153,12 @@ check-am: if test -f $$f-testlog; then \ cat $$f-testlog >> libgo.log; \ fi; \ - done; \ - p=`grep -c PASS libgo.sum`; \ - if test "$$p" != "0"; then \ - echo "# of expected passes $$p" >> libgo.tail; \ - fi; \ - p=`grep -c FAIL libgo.sum`; \ - if test "$$p" != "0"; then \ - echo "# of unexpected failures $$p" >> libgo.tail; \ - fi; \ - p=`grep -c UNTESTED libgo.sum`; \ - if test "$$p" != "0"; then \ - echo "# of untested testcases $$p" >> libgo.tail; \ - fi; \ - cat libgo.tail >> libgo.sum; \ - cat libgo.tail >> libgo.log; \ - echo `echo $(GOC) | sed -e 's/ .*//'` `$(GOC) -v 2>&1 | grep " version" | sed -n -e 's/.* \(version.*$$\)/\1/p'` >> libgo.sum; \ - echo >> libgo.log; \ - echo "runtest completed at `date`" >> libgo.log; \ - exit $$status - -MOSTLYCLEAN_FILES = libgo.tail + done + +check-multi: + $(MULTIDO) $(AM_MAKEFLAGS) DO=check-am multi-do # $(MAKE) + +MOSTLYCLEAN_FILES = libgo.head libgo.sum.sep libgo.log.sep mostlyclean-local: find . -name '*.lo' -print | xargs $(LIBTOOL) --mode=clean rm -f