coin-or-tools / BuildTools

Macros and patches for GNU autotools
https://coin-or-tools.github.io/BuildTools/
Other
3 stars 7 forks source link

version checks #138

Closed kibaekkim closed 4 years ago

kibaekkim commented 4 years ago

I have installed autotools with the recommended versions. The installed location is added to PATH. But, run_autotools still finds the wrong version. I am on mac.

kibaekkim@Kibaeks-MacBook-Pro [13:46:26] [~/Documents/REPOS/BuildTools] [master]
-> % ./run_autotools -h
Using COIN_AUTOTOOLS_DIR=/Users/kibaekkim/bin/..
usage: run_autotools [-h] [-[n]r] [-ni] [-f] [ directory directory ... ]

  -h  | --help           print help message and exit
  -r  | --recursion      do recursive search for configure.ac files
  -nr | --no-recursion   do not do recursive search for configure.ac files
  -ni | --dependent      do not install scripts necessary for an independent unit
  -f  | --foreign        process foreign configuration files (configure.ac
                         does not contain COIN configuration macros).
  -d  | --dryrun         exit immediately after determining the list of
                         directories to be processed

  Default is no recursion, install scripts for an independent unit.

  If no directories and -r are specified, the tree rooted at the current
  directory is searched recursively for directories with configure.ac
  files containing COIN configuration macros (AC_COIN_*) and autotools
  is run in those directories. Directories listed in COIN_SKIP_PROJECTS
  are skipped.  If directories are specified on the command line, the
  search for configure.ac files is restricted to the specified directories.
  In each directory where a configure.ac file is found, this script will
  refresh a set of autotools scripts (listed below) necessary for a unit that
  will be installed independently.

  The -ni (--dependent) option will suppress refresh of the autotools scripts
  (but will not delete existing scripts). This will be suppressed in *all*
  directories processed.

  The most common scenario for run_autotools is to process a project with a
  configure.ac file in the top-level directory of the project and no nested
  configure.ac files. Hence the default of no recursion and install autotools
  scripts.  The -r option is useful if you have multiple COIN projects in
  sibling directories and want to do a batch run of autotools on all of them.

  The -f (--foreign) option causes run_autotools to process any configure.ac,
  even if it contains no COIN macros. Occasionally useful for adapting
  ThirdParty native configuration for COIN. Be sure you know what you're
  doing.

  The environment variable COIN_AUTOTOOLS_DIR can be used to point to an alternate
  installation of the autotools (current location /Users/kibaekkim/bin/..)

  Default autotools versions:
    autoconf: 2.69
    automake: 1.16.2
    libtool:  2.4.6

  Autotools scripts: config.guess config.sub depcomp install-sh ltmain.sh missing compile ar-lib

kibaekkim@Kibaeks-MacBook-Pro [13:48:46] [~/Documents/REPOS/BuildTools] [master]
-> % autoconf --version
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie and Akim Demaille.

Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

kibaekkim@Kibaeks-MacBook-Pro [13:49:04] [~/Documents/REPOS/BuildTools] [master]
-> % automake --version
Useless use of /d modifier in transliteration operator at /Users/kibaekkim/share/automake-1.9/Automake/Wrap.pm line 60.
automake (GNU automake) 1.9.6
Written by Tom Tromey <tromey@redhat.com>.

Copyright 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

kibaekkim@Kibaeks-MacBook-Pro [13:49:07] [~/Documents/REPOS/BuildTools] [master]
-> % libtool --version
ltmain.sh (GNU libtool) 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)

Copyright (C) 2005  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

kibaekkim@Kibaeks-MacBook-Pro [13:49:22] [~/Documents/REPOS/BuildTools] [master]
-> % COIN_AUTOTOOLS_DIR=$HOME/bin ./run_autotools -h
Using COIN_AUTOTOOLS_DIR=/Users/kibaekkim/bin
usage: run_autotools [-h] [-[n]r] [-ni] [-f] [ directory directory ... ]

  -h  | --help           print help message and exit
  -r  | --recursion      do recursive search for configure.ac files
  -nr | --no-recursion   do not do recursive search for configure.ac files
  -ni | --dependent      do not install scripts necessary for an independent unit
  -f  | --foreign        process foreign configuration files (configure.ac
                         does not contain COIN configuration macros).
  -d  | --dryrun         exit immediately after determining the list of
                         directories to be processed

  Default is no recursion, install scripts for an independent unit.

  If no directories and -r are specified, the tree rooted at the current
  directory is searched recursively for directories with configure.ac
  files containing COIN configuration macros (AC_COIN_*) and autotools
  is run in those directories. Directories listed in COIN_SKIP_PROJECTS
  are skipped.  If directories are specified on the command line, the
  search for configure.ac files is restricted to the specified directories.
  In each directory where a configure.ac file is found, this script will
  refresh a set of autotools scripts (listed below) necessary for a unit that
  will be installed independently.

  The -ni (--dependent) option will suppress refresh of the autotools scripts
  (but will not delete existing scripts). This will be suppressed in *all*
  directories processed.

  The most common scenario for run_autotools is to process a project with a
  configure.ac file in the top-level directory of the project and no nested
  configure.ac files. Hence the default of no recursion and install autotools
  scripts.  The -r option is useful if you have multiple COIN projects in
  sibling directories and want to do a batch run of autotools on all of them.

  The -f (--foreign) option causes run_autotools to process any configure.ac,
  even if it contains no COIN macros. Occasionally useful for adapting
  ThirdParty native configuration for COIN. Be sure you know what you're
  doing.

  The environment variable COIN_AUTOTOOLS_DIR can be used to point to an alternate
  installation of the autotools (current location /Users/kibaekkim/bin)

  Default autotools versions:
    autoconf: 2.69
    automake: 1.16.2
    libtool:  2.4.6

  Autotools scripts: config.guess config.sub depcomp install-sh ltmain.sh missing compile ar-lib
tkralphs commented 4 years ago

Can you post the output of the command you actually ran? Make sure that the version of autoconf you installed is the one found by which autoconf.

svigerske commented 4 years ago

I think it should be COIN_AUTOTOOLS_DIR=$HOME

tkralphs commented 4 years ago

Oh, sorry, I missed that you had actually posted output!

kibaekkim commented 4 years ago

I think it should be COIN_AUTOTOOLS_DIR=$HOME

No, that does not work either.

kibaekkim@Kibaeks-MacBook-Pro [13:51:41] [~/Documents/REPOS/BuildTools] [master]
-> % COIN_AUTOTOOLS_DIR=$HOME ./run_autotools -h
Using COIN_AUTOTOOLS_DIR=/Users/kibaekkim
usage: run_autotools [-h] [-[n]r] [-ni] [-f] [ directory directory ... ]

  -h  | --help           print help message and exit
  -r  | --recursion      do recursive search for configure.ac files
  -nr | --no-recursion   do not do recursive search for configure.ac files
  -ni | --dependent      do not install scripts necessary for an independent unit
  -f  | --foreign        process foreign configuration files (configure.ac
                         does not contain COIN configuration macros).
  -d  | --dryrun         exit immediately after determining the list of
                         directories to be processed

  Default is no recursion, install scripts for an independent unit.

  If no directories and -r are specified, the tree rooted at the current
  directory is searched recursively for directories with configure.ac
  files containing COIN configuration macros (AC_COIN_*) and autotools
  is run in those directories. Directories listed in COIN_SKIP_PROJECTS
  are skipped.  If directories are specified on the command line, the
  search for configure.ac files is restricted to the specified directories.
  In each directory where a configure.ac file is found, this script will
  refresh a set of autotools scripts (listed below) necessary for a unit that
  will be installed independently.

  The -ni (--dependent) option will suppress refresh of the autotools scripts
  (but will not delete existing scripts). This will be suppressed in *all*
  directories processed.

  The most common scenario for run_autotools is to process a project with a
  configure.ac file in the top-level directory of the project and no nested
  configure.ac files. Hence the default of no recursion and install autotools
  scripts.  The -r option is useful if you have multiple COIN projects in
  sibling directories and want to do a batch run of autotools on all of them.

  The -f (--foreign) option causes run_autotools to process any configure.ac,
  even if it contains no COIN macros. Occasionally useful for adapting
  ThirdParty native configuration for COIN. Be sure you know what you're
  doing.

  The environment variable COIN_AUTOTOOLS_DIR can be used to point to an alternate
  installation of the autotools (current location /Users/kibaekkim)

  Default autotools versions:
    autoconf: 2.69
    automake: 1.16.2
    libtool:  2.4.6

  Autotools scripts: config.guess config.sub depcomp install-sh ltmain.sh missing compile ar-lib
tkralphs commented 4 years ago

Hmm, I guess I still don't really understand what you're doing and what you're expecting to happen. When you run it with -h, all it's ever going to do is to dump out the help. If you want it to do something, you need to give the directory in which you want it to run as an argument. I usually just run it from the directory I want to generate the configure file in, as follows

cd <dir/where/proj/lives>
COIN_AUTOTOOLS_DIR=$HOME ./run_autotools .

It should also work to do

PATH=$HOME/bin:$PATH ./run_autotools .

as all it does with that variable is just to prepend the PATH with the directory per here.

kibaekkim commented 4 years ago

Sorry, I was not clear about the description of my issue report.

I was expecting that run_autotools detected the correct (and also required) versions of autotools: 2.59, 1.9.6, and 1.5.22, resp., as described here. But, run_autotools finds other versions (probably somewhere in my machine) as:

Default autotools versions:
    autoconf: 2.69
    automake: 1.16.2
    libtool:  2.4.6

So, running ./run_autotools in my project directory complains this:

kibaekkim@Kibaeks-MacBook-Pro [17:13:41] [~/Documents/REPOS/Osi] [master *]
-> % COIN_AUTOTOOLS_DIR=$HOME ../BuildTools/run_autotools .
Using COIN_AUTOTOOLS_DIR=/Users/kibaekkim
You are not using the required version 2.69 of autoconf ( /Users/kibaekkim/bin/autoconf )

kibaekkim@Kibaeks-MacBook-Pro [17:13:47] [~/Documents/REPOS/Osi] [master *]
-> % COIN_AUTOTOOLS_DIR=$HOME/bin ../BuildTools/run_autotools .
Using COIN_AUTOTOOLS_DIR=/Users/kibaekkim/bin
You are not using the required version 2.69 of autoconf ( /Users/kibaekkim/bin/autoconf )
tkralphs commented 4 years ago

Ah, OK, I see. The problem is that you are using run_autotools from the master branch of BuildTools, but the versions of the autotools you've installed are the ones compatible with the stable/0.8 branch of BuildTools. We have just rolled out the version of BuildTools in the master branch and the documentation is not up-to-date yet, as only the master branches of a subset of the projects have so far been migrated to the new version of the BuildTools (which should eventually finally be a 1.0 version).

So... since the master branch of Osi (which I think is what you're playing with) is one of the projects that has been migrated already, you need to install the later versions of the autotools that are used by the master branch of BuildTools. Fortunately, there is a script (install_autotools.sh) that just downloads and installs all the correct versions in a specified directory ($COIN_AUTOTOOLS_DIR) in one go. I would actually install those to another directory (not $HOME) and leave the older versions installed in $HOME, since you will need them if you want to execute the version of run_autotools in BuildTools stable/0.8, which is used by Osi stable/0.108 later.

kibaekkim commented 4 years ago

Yes, that works. Thanks!