bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: megatest fallout


From: Ralf Wildenhues
Subject: Re: megatest fallout
Date: Mon, 25 Sep 2006 22:02:22 +0200
User-agent: Mutt/1.5.13 (2006-08-11)

A bootstrapped megatest directory enables more kinds of tests.
Let's look at these builds:

0) configure CC='gcc -Wall -Werror -fno-builtin'  # as seen earlier
1) configure
2) configure -C
3) pre-seed config.cache with the file resulting from (2), then
   configure -C
4) create a config.cache from only running the ALL test:
   ../../ALL/configure -C
5) pre-seed config.cache with the file resulting from (4), then
   configure -C

6) for each of the sub-configure scripts, do a
   configure -C
   ./config.status --recheck
   and check that neither of the files
     config.status config.cache config.h
   changed between runs.

To compare the results, see the script below.  Ideally, they should
all produce the same results, at least (1)-(6), so any differences are
indication of some bug.  I should note that the order of substitutions
done in config.status for config headers is not stable, so typically,
as soon as there is at least one difference in the file, several more
may appear spuriously.

Actually, most of the differences observed were due to CVS gettext
having a nonzero diff to the respective macro files in gnulib.  It
would be nice to see that reconciled (though I guess I shouldn't
complain, not being in the position to post patches to this end ;-)


Remaining issues (patches in followup messages):

(a) comparing (0) and (1):
error.o in LIBOBJS only in (0); will be fixed in Autoconf's
AC_FUNC_ERROR_AT_LINE.

(b) comparing (1) and (2):
getlogin_r declared in the glob test, but not in the getlogin_r test.

(c) HOST_OPERATING_SYSTEM is set to empty in (2).

(d) While we're at it, the stdout log of these tests also gives a nice
hint as to which tests are worthy of being cached:
  grep \^checking logfile | grep -v cached | sort | uniq -c | sort -k1n

shows
      7 checking whether this system has an arbitrary file name length limit... 
yes
     21 checking for SIZE_MAX... yes

as the top gnulib candidates.  The SIZE_MAX test is cheap on systems
that have it (one AC_EGREP_CPP); the other one has a caching bug, see
followup.

FYI, the Autoconf and Automake tests that show up here:
     39 checking for AIX... no
    351 checking for a BSD-compatible install... /usr/bin/install -c
    351 checking for C compiler default output file name... a.out
    351 checking for style of include used by make... GNU
    351 checking for suffix of executables...
    351 checking whether the C compiler works... yes
    351 checking whether we are cross compiling... no
    352 checking whether build environment is sane... yes

either do employ some sort of (unannounced) caching (install, compiler
tests), or don't do so for good reasons: the C compiler tests are a bit
intricate, and also must obey some backward-compatibility constraints to
older Autoconf versions, the sane-build test may be rather unstable in
time, so is better not cached.  The `make include style' test is quick,
and the old AIX test is not cached in order to discourage its use.

Cheers,
Ralf

#! /bin/bash
set -e

dir1=${1-build2}
dir2=${2-build3}
: ${egrep='grep -E'}

# These lines contain differences (path names, different options;
# ignore LTLIBOBJS because LIBOBJS reveals enough already):
egrep_omit_lines='with options|exec /bin/sh|ac_pwd=|echo..running 
|s,@(ac_ct_CC|CC|CPP|LTLIBOBJS)@,'
# Let's not look at bugs we know about again and again:
sed_ignore_diffs='s| \${LIBOBJDIR}error\$U.o||'

dirs=`ls -1 "$dir1"`
for dir in $dirs
do
  file1=$dir1/$dir/config.status
  file2=$dir2/$dir/config.status
  if test -f "$file1" && test -f "$file2"; then
    output=`diff <( $egrep -v "$egrep_omit_lines" "$file1" | sed 
"$sed_ignore_diffs" ) \
                 <( $egrep -v "$egrep_omit_lines" "$file2" | sed 
"$sed_ignore_diffs" ) || :`
    if test -n "$output"; then
      echo "comparing $file1 and $file2:"
      echo "$output"
    fi
  fi
done




reply via email to

[Prev in Thread] Current Thread [Next in Thread]