[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Diffing the results of conifgure
From: |
Stefano Lattarini |
Subject: |
Re: Diffing the results of conifgure |
Date: |
Sun, 25 Jul 2010 22:53:15 +0200 |
User-agent: |
KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; ) |
At Sunday 25 July 2010, Philip Prindeville wrote:
> Hi.
>
> We're passing a lot of information into configure manually because
> a lot of packages didn't used to handle cross-compilation
> correctly, but lately those packages have been getting better.
>
> We'd like to start to peel away options that we pass to configure.
>
> But, to ensure that the results are still correct, we'd want to
> capture the summary of results and diff files together, a "before"
> and "after" changes to our build infrastructure to make sure that
> the outputs are now discovered as the correct values, rather than
> being "forced" from the command line or environment.
>
> confdefs.h is one idea, but I'm not sure it captures *all* of the
> state. Does it?
>
> config.log and config.status are too wordy, and their output can
> vary (based on autoconf versions) yet still come up with the
> correct final result, so those seem unlikely (unless we just
> extract the relevant portions of these).
>
> What's the collective wisdom of the group?
Hello Philip.
I'm not sure how much what I'm going to suggest will be useful to you, but
anyway... have you tried taking a look at the temporary file `subs.awk'
created by config.status, at least when a "recent" (post-2006) autoconf
version is used? It might be a nice complement for confdefs.h/config.h.
(Note that you can force config.status not to delete its temporary files
with the `--debug' option).
For example, running autoconf's own config.status on my machine, I
get (more or less):
$ ./config.status --version
GNU Autoconf config.status 2.66.1-f2a8-dirty
configured by ./configure, generated by GNU Autoconf 2.65.75-9c27,
with options ""
Copyright (C) 2010 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
$ ./config.status --debug
config.status: creating tests/Makefile
config.status: creating tests/atlocal
config.status: creating man/Makefile
config.status: creating lib/emacs/Makefile
config.status: creating Makefile
config.status: creating doc/Makefile
config.status: creating lib/Makefile
config.status: creating lib/Autom4te/Makefile
config.status: creating lib/autoscan/Makefile
config.status: creating lib/m4sugar/Makefile
config.status: creating lib/autoconf/Makefile
config.status: creating lib/autotest/Makefile
config.status: creating bin/Makefile
config.status: executing tests/atconfig commands
$ cat conf??????/subs.awk
BEGIN {
S["LTLIBOBJS"]=""
S["LIBOBJS"]=""
S["MAKE_CASE_SENSITIVE_FALSE"]="#"
S["MAKE_CASE_SENSITIVE_TRUE"]=""
S["SED"]="/bin/sed"
S["EGREP"]="/bin/grep -E"
S["GREP"]="/bin/grep"
S["lispdir"]="${datarootdir}/emacs/site-lisp"
S["EMACSLOADPATH"]=""
S["EMACS"]="emacs"
S["TEST_EMACS"]="emacs"
S["PERL_FLOCK"]="yes"
S["PERL"]="/usr/bin/perl"
S["HELP2MAN"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run
help2man"
S["M4_DEBUGFILE"]="--debugfile"
S["M4_GNU"]="--gnu"
S["M4"]="/usr/bin/m4"
S["EXPR"]="/usr/bin/expr"
S["ac_cv_dir_trailing_space"]="yes"
S["ac_cv_unsupported_fs_chars"]=""
S["ac_cv_sh_n_works"]="yes"
S["am__untar"]="${AMTAR} xf -"
S["am__tar"]="${AMTAR} chof - \"$$tardir\""
S["AMTAR"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run tar"
S["am__leading_dot"]="."
S["SET_MAKE"]=""
S["AWK"]="gawk"
S["mkdir_p"]="/bin/mkdir -p"
S["MKDIR_P"]="/bin/mkdir -p"
S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s"
S["STRIP"]=""
S["install_sh"]="${SHELL} /home/stefano/src/autoconf/build-aux/install-sh"
S["MAKEINFO"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run
makeinfo"
S["AUTOHEADER"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run
autoheader"
S["AUTOMAKE"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run
automake-1.11"
S["AUTOCONF"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run
autoconf"
S["ACLOCAL"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run
aclocal-1.11"
S["VERSION"]="2.66.1-f2a8-dirty"
S["PACKAGE"]="autoconf"
S["CYGPATH_W"]="echo"
S["am__isrc"]=""
S["INSTALL_DATA"]="${INSTALL} -m 644"
S["INSTALL_SCRIPT"]="${INSTALL}"
S["INSTALL_PROGRAM"]="${INSTALL}"
S["target_alias"]=""
S["host_alias"]=""
S["build_alias"]=""
S["LIBS"]=""
S["ECHO_T"]=""
S["ECHO_N"]="-n"
S["ECHO_C"]=""
S["DEFS"]="-DPACKAGE_NAME=\\\"GNU\\ Autoconf\\\" ... [CUT]
S["mandir"]="${datarootdir}/man"
S["localedir"]="${datarootdir}/locale"
S["libdir"]="${exec_prefix}/lib"
S["psdir"]="${docdir}"
S["pdfdir"]="${docdir}"
S["dvidir"]="${docdir}"
S["htmldir"]="${docdir}"
S["infodir"]="${datarootdir}/info"
S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}"
S["oldincludedir"]="/usr/include"
S["includedir"]="${prefix}/include"
S["localstatedir"]="${prefix}/var"
S["sharedstatedir"]="${prefix}/com"
S["sysconfdir"]="${prefix}/etc"
S["datadir"]="${datarootdir}"
S["datarootdir"]="${prefix}/share"
S["libexecdir"]="${exec_prefix}/libexec"
S["sbindir"]="${exec_prefix}/sbin"
S["bindir"]="${exec_prefix}/bin"
S["program_transform_name"]="s,x,x,"
S["prefix"]="/usr/local"
S["exec_prefix"]="${prefix}"
S["PACKAGE_URL"]="http://www.gnu.org/software/autoconf/"
S["PACKAGE_BUGREPORT"]="address@hidden"
S["PACKAGE_STRING"]="GNU Autoconf 2.66.1-f2a8-dirty"
S["PACKAGE_VERSION"]="2.66.1-f2a8-dirty"
S["PACKAGE_TARNAME"]="autoconf"
S["PACKAGE_NAME"]="GNU Autoconf"
S["PATH_SEPARATOR"]=":"
S["SHELL"]="/bin/sh"
for (key in S) S_is_set[key] = 1
FS = ""
... (MORE AWK CODE)
Hope that helps; if not, maybe someone more knowledgeable than
me will jump in.
Regards,
Stefano