Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compiling Cbc@master with coinbrew@master fails #74

Open
kbrix2000 opened this issue May 31, 2022 · 2 comments
Open

Compiling Cbc@master with coinbrew@master fails #74

kbrix2000 opened this issue May 31, 2022 · 2 comments

Comments

@kbrix2000
Copy link

Dear coinbrew developers,

currently compiling the master branch of Cbc with the master branch version of coinbrew following these instructions fails on a Debian GNU/Linux 11 system. There is an error while building Clp master using MPI, namely

[...]

##################################################
### Building Clp master
##################################################

Clp/src/ClpCholeskyMumps.cpp:22:10: fatal error: mpi.h: No such file or directory
   22 | #include "mpi.h"
      |          ^~~~~~~
compilation terminated.
make[2]: *** [Makefile:1017: ClpCholeskyMumps.lo] Error 1
make[1]: *** [Makefile:732: all] Error 2
make: *** [Makefile:459: all-recursive] Error 1

Error: Build failed, see error output above
$

In contrast, compiling older versions of Cbc, e.g. version 2.10.5 or 2.10.8, works fine using the master branch version of coinbrew.

Moreover, the old version 1.0 of coinbrew works well for the current master of Cbc besides the known incompatibility of MUMPS and a gcc newer than version 10, see e.g. #47 and the references therein (fix: add option ADD_FFLAGS=-fallow-argument-mismatch).

Could you please check? Thanks in advance!

@svigerske
Copy link
Member

You may want to look in the log what version of ThirdParty-Mumps is build here.
ThirdParty-Mumps should define COIN_USE_MUMPS_MPI_H, either via the cflags in the coinmumps.pc or the mumps_compat.h that it builds. This should tell Clp to include mumps_mpi.h instead of mpi.h. Apparently that doesn't work.

The ADD_FFLAGS=-fallow-argument-mismatch should also not be necessary anymore. ThirdParty-Mumps should do this automatically, for years already.

@tkralphs
Copy link
Member

tkralphs commented May 31, 2022

The difference between coinbrew 1.0 and 2.0 is that coinbrew 1.0 gets the dependencies by parsing the .coin-or/Dependencies file, whereas in coinbrew 2.0, parsing .coin-or/config.yml became the default. While the actual dependencies are the same in both files, .coin-or/config.yml allows some dependencies to be listed as optional. Such dependencies are not built by default. Mumps is listed as optional. This should not cause a problem unless you happen to have first built with coinbrew 1.0 and then tried to re-build with 2.0 or something like that. Can you try from a fresh checkout or in a different build directory?

Alternatively if you add the flag --enable-optional, then 2.0 should behave in the same way as 1.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants