libtool-patches
[Top][All Lists]
Advanced

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

Re: proposed autobuild_mode naming scheme (was: autobuild logs for Libto


From: Gary V. Vaughan
Subject: Re: proposed autobuild_mode naming scheme (was: autobuild logs for Libtool)
Date: Mon, 23 Aug 2010 09:45:24 +0700

Hallo Ralf,

I think this is an excellent idea... and not a moment too soon :)

On 23 Aug 2010, at 01:44, Ralf Wildenhues wrote:
> * Ralf Wildenhues wrote on Sun, Aug 22, 2010 at 08:38:19PM CEST:
>> configure: autobuild mode... default
> [...]
> 
> Autobuild uses a few strings to categorize log results: package version,
> $build, $host, hostname, time and date, and a so-called "mode" which my
> patch sets with the $autobuild_mode variable.
> 
> I will be using something like the following values for $autobuild_mode.
> Suggestions and additions welcome, I think we could profit from a
> common, recognizable scheme: that way, when different people all mail
> their results to the autobuild site, results become more easily
> comparable.
> 
> Here's the scheme:
> 
> $autobuild_mode is
> 
> - either 'default' (when the user forgets, or knows no better ;-)
> 
> or a hyphen-separated string denoting:
> 
> - the compiler vendor (gcc, llvm, clang, xl, hp, sun, sgi, dec, intel, pgi,
>  msvc),

Is the compiler version number interesting?  (or the os release number for
native compilers with a hard to extract version string)

> - the binutils vendor (bfd or gold, native),
> 
> and then zero or more features from the following list, in that order,
> and denoting that configure was passed the respective arguments:
> 
> - shared     --disable-static
> - static     --disable-shared
> - pic        --with-pic
> - nonpic     --without-pic
> - fast       --enable-fast-install
> - nofast     --disable-fast-install
> - rtl        runtimelinking on AIX (LDFLAGS=-Wl,-brtl)
> - c++        CC=g++

I often run on machines with no f77,gfortran,gcj etc:

 - nof77        test -z "${F77}"
 - nofc         test -z "${FC}"
 - nogcj        test -z "${GCJ}"
 - rc           test -n "${RC}"

(picking the "no"-ness to minimize the mode string length in the common case)

> - lto        CC='gcc -flto' CXX='gcc -flto' FC='gfortran -flto' F77='gfortran 
> -flto'
> - lto-plugin same as lto with gold, but also LDFLAGS=-fuse-linker-plugin
>             (or '-O4 -use-gold-plugin' with llvm)
> - ksh/ksh93/dash/...
>             CONFIG_SHELL=/bin/ksh was set in the environment and
>             /bin/ksh was used to call configure
> - debian-X.Y/gentoo-X.Y/rhel-X.Y/ubuntu-X.Y/...
>             distribution (maybe including version) that was used
>             (for those systems where $host is not distinguishing)
> - ac-X.Y/am-X.Z
>             Autoconf and Automake versions used (if interesting)
> - pmake/gmake
>             setting MAKE=pmake and running the build with $MAKE rather
>             than the native make.

Instead of using 'default' as the default, we can make things a lot more
accurate with something along the lines of (off the top of my head, and
completely untested!):

  : ${autobuild_mode=$host}
  case $enable_shared,$enable_static,-$autobuild_mode- in
    *,*,*-static-*) ;;
    no,yes,*) autobuild_mode="$autobuild_mode-static" ;;
  esac
  case $enable_shared,$enable_static,-$autobuild_mode- in
    *,*,*-shared-*) ;;
    yes,no,*) autobuild_mode="$autobuild_mode-shared" ;;
  esac
  case $pic_mode,-$autobuild_mode- in
    *,*-pic-*|*,*-nonpic-*) ;;
    yes,*) autobuild_mode="$autobuild_mode-pic" ;;
    no,*) autobuild_mode="$autobuild_mode-nonpic ;;
  esac
  case $enable_fast_install,-$autobuild_mode- in
    *,*-fast-*|*,*-nofast-*) ;;
    yes,*) autobuild_mode="$autobuild_mode-fast" ;;
    no,*) autobuild_mode="$autobuild_mode-nofast" ;;
  esac
  case $LDFLAGS,-$autobuild_mode- in
    *,*-rtl-*) ;;
    *" -Wl,-brtl "*,*) autobuild_mode="$autobuild_mode-rtl" ;;
  esac
  case $CC,-$autobuild_mode- in
    *,*-c++-*) ;;
    g++*,*|c++*,*|xlC*,*|cxx*,*|CC*,*) # a list of all the C++ compiler we 
support
        autobuild_mode="$autobuild_mode-c++" ;;
  esac
  case $F77,-$autobuild_mode- in
    ,*-nof77-*) ;;
    ,*) autobuild_mode="$autobuild_mode-nof77" ;;
  esac
  case $FC,-$autobuild_mode- in
    ,*-nofc-*) ;;
    ,*) autobuild_mode="$autobuild_mode-nofc" ;;
  esac
  case $GCJ,-$autobuild_mode- in
    ,*-nogcj-*) ;;
    ,*) autobuild_mode="$autobuild_mode-nogcj" ;;
  esac
  case -$RC-,-$autobuild_mode- in
    --,*|*,*-rc-*) ;;
    -?*-,*) autobuild_mode="$autobuild_mode-rc" ;;
  esac
  case $CC ,-$autobuild_mode- in
    *,*-lto-*) ;;
    *" -flto ",*) autobuild_mode="$autobuild_mode-lto" ;;
  esac

... and so on.

This is long-wined enough too, I think, that putting it in a new
m4 macro rather than hard-coding into configure.ac seems worthwhile.

> So, for example, using GCC on AIX 5.2 with the system ld and
> runtimelinking, $host would be powerpc-aix53-.., my autobuild_mode would
> be
>  gcc-native-rtl
> 
> I'm not yet sure whether and when to leave out the compiler and binutils
> vendor strings; on some systems there is one canonical choice and there
> would be no need to distinguish.  Not sure if the vendor one would
> always be the best default though.

Considering the amount of data we (or at least the autoconf and gnulib
list) collects about bugs in particular vendor compiler patch levels,
I think that it would be useful to capture this information too -- and
then we can take note of trends in test failures caused by particular
releases.

> Additions welcome.

HTH,
-- 
Gary V. Vaughan (address@hidden)

Attachment: PGP.sig
Description: This is a digitally signed message part


reply via email to

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