MeetingNotes080309 - coin-or-foundation/tlc GitHub Wiki

August 3, 2009

The TLC will meet by teleconference on August 3, 2009 at 5:00 PM EST. To join the teleconference, call 877-421-0038 and use passcode 2646852 (COINTLC).

Agenda

  1. CoinAll 1.3: Could it be?

  2. Switching to using releases as externals

  3. Switching to using libtool version info (BuildTools/stable/0.6)

  4. Next steps in implementing --with-proj capabilities.

Notes

  1. Finally, there is a set of releases sufficient to make a release of CoinAll 1.3, but one final roadblock remains and that is that the build tools versions are now out of sync. Most projects user version 0.5.27, but Ipopt will now only work with versions >= 0.5.28. The only way to move forward quickly is to relax the requirement that all releases use the same version of build tools. It was decided that this is what should be done.

  2. A number of issues have been raised with the policy of pointing externals to releases. Primarily, the issue is with projects whose development is closely linked, such as Osi and Clp, for example. Despite these issues, it still seems like a good idea to encourage the practice. A carefully worded e-mail will be sent to PMs to ask them to try to do this. Of course, there will be exceptions on a case-by-case basis.

  3. There was a brief discussion of the plan to move towards using the lib tool version info capability. A new stable version of the build tools has been created that includes the capability. Sometime in the next few weeks, we will try to create new stable versions of all projects that depend on this new stable version of the build tools.

  4. Stefan reported on the changed he did over the last days:

    • The trunk versions of ThirdParty/Blas, ThirdParty/Lapack, ThirdParty/Glpk, Data/Sample, and Data/Netlib now create simple pkg-config configuration file (short: .pc files). E.g., for ThirdParty/Blas, two files blas-uninstalled.pc and blas.pc are created, from which only blas.pc is installed. These files contain the necessary information to build code that uses such a library (compiler flags), to link against such a library (linker flags), and the location of data (data directory). You can obtain a base directory that contains these third-party projects by doing

      svn checkout https://projects.coin-or.org/svn/BuildTools/ThirdParty/All/trunk ThirdParty-all
      svn checkout https://projects.coin-or.org/svn/Data/trunk Data-trunk
      

      (due to some lazyness, you will get every Data project twice - sorry)

    • In BuildTools/stable/BSPsplit, he added macros that could replace the macros AC_COIN_MAIN_SUBDIR and AC_COIN_HAS_PROJECT (https://projects.coin-or.org/BuildTools/changeset/1398). These macros identify projects via their .pc file and setup corresponding variables that provide compiler and linker flags to a makefile. Variables like PROJSRCDIR and PROJOBJDIR are obsolete in this setting.

    • In this setting, there are several ways how a project is located by configure: a. The user specifies an options like --with-blas-lib=LLL or --with-blas-incdir=III. Then the values of these options are used as linker and compiler flags. This would leave pkg-config out. b. The user specifies an option like --with-blas=DIR. Then this directory is added to the search path for the blas.pc file. c. The user specifies an option --with-coin-instdir=DIR. Then this directory is added to the search path for the project .pc file. d. If the user does not specify --with-blas or --with-coin-instdir, then a directory similar to ../projname is added to the search path for .pc files. This option accomodates the current setting where a series of coin projects located under the same base directory is build together. e. After the pkg-config search path has been setup, pkg-config is invoked to request the compiler and linker flags, and the location of a data directory.

    • He attempted to use this method for building CoinUtils/stable/BSPsplit, which has dependencies on Blas, Lapack, Glpk, Sample, and Netlib. You can obtain this setup by doing

      svn checkout https://projects.coin-or.org/svn/CoinUtils/stable/BSPsplit
      
    • There has been some discussion on how to attack open problems. Here are the next steps:

    • In Stefans current setup, a project .pc file does not list dependencies on other projects in the .pc file, but only accumulates the linker flags in its own .pc file. This is a workaround for the case where .pc files are located in nonstandard locations. However, Andreas suggested a better solution that also allows to use dependencies:

      • The --with-proj=DIR option will be removed, and only an option like --with-coin-instdir will be kept to specify paths that are added to the pkg-config search path. This allows to use installed versions of projects, which are located in some central location.
      • Further, we will do something to also support the classic setup where a sequence of projects is built, thereby one depending on an uninstalled version of another one.
    • Currently, configure does not recognize blas and lapack libs that are installed in the system (without .pc files), or included in libraries like mkl. It should not be difficult to get this feature back.

    • Currently, pkg-config is not optional. We will think about an easy way for the user to install pkg-config if it is not available. Kipp reported some difficulties when trying to use or compile pkg-config in Windows. Thus, especially Windows needs to be investigated further.

    • Also most platforms have note been tested. It seem to work on Linux so far, and Kipp also reported success on Mac OS X.