-
Notifications
You must be signed in to change notification settings - Fork 22
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
Installation help? #41
Comments
It looks like you try to build the last release or branch stable/1.8. The first one fails because the The second one fails because the flags to specify ASL libs and header directory are A lot has changed in the buildsystem for the master branch of Bonmin. The flags you use seem to correspond to that. |
As @svigerske pointed out, your flags are a bit mangled. I would definitely recommend building with One thing @svigerske didn't point out directly is that the reason you didn't get an executable is probably just that ASL is required in order to produce an executable, since Bonmin reads instances in Sorry for the README being a bit out of date. There are very few volunteers taking care of these projects and not much bandwidth to update, but I am trying to get to it. |
Thanks for your comments! I had been trying to use the configure file in the main directory (https://github.com/coin-or/Bonmin/blob/master/configure) indeed and took the flags out of there. I'm a bit confused about where to find the For the coinbrew installation, I had used the --no-third-party flag because when I ran it directly, it failed at installing blas: Once I fixed the ASL flags, when I run coinbrew with I think I'm failing to properly link openblas though, as when coinbrew gets to the Clp build, it gives me a Thanks again for your help! |
If you successfully linked to openblas with Ipopt, it should also work with other projects and yes, it is better to just use openblas if you have it.
[Edit: This is incorrect!] It's safest to uninstall everything after a failed build, before trying again, for this reason. The best practice to avoid this kind of issue is to first build and install in a separate temporary directory until you get everything working. You would do
(along with any other arguments needed). The If you build in a temporary directory, then once the build succeeds, you can re-build again without specifying a local build directory. Or it's also actually fine to just leave in a local directory and just add to your PATH and LD_LIBRARY_PATH variables. Anyway, to fix your current situation, it will most likely be OK to just delete the |
I triple checked and I made sure to delete the installation directory (as specified by In the configure output of CoinUtils, I see: Does that imply the CoinUtils did find the openblas installation, or should I check somewhere else as well? Note that I can't seem to give the Thanks! |
Looks like it found some BLAS installed, but it linked with As for the problem with the |
Oh hm, the In this build attempt, I shifted to building couenne instead of bonmin, as that is the final desired application for which bonmin is a dependency. I've also redacted the full paths to /path/. Here is the output; I directed both stdout and stderr to it: configure.txt Thanks again! |
OK, now things are clearer. I should have been able to see what was going on from what you'd already said, but I haven't been working much with these projects recently and I answered too quickly. The missing symbols are from Lapack, not Blas, and if you check the link line where the failure occurs, it is not in fact linking to Lapack, only Blas, so the failure makes sense. Because you specified To keep things simple and get something working, I would just leave off the |
Ah, I understand now! I feel like this is SO CLOSE now -- on the bonmin install step, I got the error:
I thought this might be because I was using an older version of ASL, but I just updated to ASL 1.4.4, and I got the same error. Do you know what might be causing this error? Just to recap, I am now using coinbrew with --no-third-party --tests none and linking in ASL and HSL, so coinbrew is handling both ipopt and bonmin installs. |
These symbols should be defined in Ipopt library |
Hmm, so I see that in libipoptamplinterface.so, it does seem to have those objects (or at least grep matches the names). I tried adding the lib folder of the install directory to $LD_LIBRARY_PATH, tried using the same build/install folder, and tried adding the lib folder as input to coinbrew in LDFLAGS ( I'm not sure what else to try... Could it be a version issue? Coinbrew seems to select Ipopt 3.12.12 and Bonmin 1.8.8. |
This shouldn't be hard to track down. What is the output of |
It doesn't seem to be looking for |
I kind of assumed you must not be linking to |
Here is the output: output.txt The command I was running was Thank you! |
I assume that the same thing happened? |
There is a misunderstanding what ASL means in Bonmin's configure:
The best would probably be to not name the ipoptamplinterface lib "ASL". |
- what we look for, is the Ipopt/ASL interface library - calling it ASL normally doesn't matter, unless a user specified --with-asl-* flags to find ASL (and not the Ipopt/ASL lib) - for #41
Could you try again with |
Wow, great catch @svigerske! I guess this was never triggered before because everyone is just using our third party package. |
In case it's unclear to @qih08, if you are going to build Couenne, you would need to do |
Ah, I may be missing something, but |
Hmm, that shouldn't be the case. The Dependencies for https://github.com/coin-or/Couenne/blob/stable/0.5/Dependencies and you can see |
Ah, after cleaning out the directory and rerunning it properly picked up the other bonmin release (though isn't it 1.8?). I got another ASL error ( But! I realized I had not tried to build However, in that case I run into an issue with ASL, where the certificates have expired on the website it pulls from. I resolved this in my manual build of ASL, by modifying (Side note: it worries me a little that I had to add --tests=none or CoinUtils hits the error
) So I guess to recap the current situation:
Thank you both so much for your help! |
Maybe I fixed that issue about asl.h not being found in Bonmin/stable/1.8. You could try that again. The get.ASL in the version you use falls back to ampl.com if www.coin-or.org doesn't work. If both fail with certificate issues, then that is strange. I guess you could first do a coinbrew fetch, then run the get.ASL with your modifications manually, and then do the coinbrew build. |
The failure of the CoinUtils unit test is a known issue that we should try to address, but given that all tests are passing on Github Actions, I'm not overly concerned. I would, however. do
This is the most trouble-free path. Almost everything you're running into is because of not using the ThirdParty wrappers. It would be helpful if you always paste in the exact coinbrew command for anything you try, since it'a not always clear from the description exactly what you did, which makes it hard to debug. I assume by this you mean you removed Once I get around to creating a
As @svigerske said, this is very strange, since it first tries to pull from Github, which certainly can't have an expired certificate. I just tried here and it works fine. Can you try running the unmodified script again and if it fails, post the output here?
I'm not 100 percent sure from what you said, but this is probably because |
SUCCESS!! Thanks both of you so much for all your help! Below are some details in case it is useful for anyone in the future / if you notice something I was doing non-recommended. If I run
It seems it does not try to pull from Github? I'm not sure why this would be. I've been using the I then cleaned the directory and did Just to note in case someone else wants to build with external ASL, with
So something on the couenne side seems like it needs an update. |
OK, yeah, the primary download URL in ASL 1.4 is our old download location on |
The Couenne error is probably the same issue as with Bonmin. Try now again, for The old ASL 1.4 should still work and I would hesitate to mix the new-buildsystem ASL 2.0 with the old-buildsystem Bonmin 1.8 (or Couenne 0.5). It seems to be rather a problem on the qih08's machine that Let's Encrypt certificates aren't accepted. Works for me. |
Hi!
I'm having some trouble installing bonmin, and I was wondering if anyone had advice.
I first tried installing from source, and linking our existing installations of ipopt and cbc, using a similar set of flags as I used for ipopt:
./configure --prefix /target/path --enable-static
--with-ipopt
--with-ipopt-cflags=-I/path/to/ipopt/include
--with-ipopt-lflags="-lipopt -L/path/to/ipopt/lib"
--with-cbc
--with-cbc-cflags=-I/path/to/cbc/include
--with-cbc-lflags="-lCbc -L/path/to/cbc/lib"
However, this results in:
checking for COIN-OR package CoinDepend... not given: No package 'cbc' found
No package 'osi-clp' found
No package 'ipopt' found
configure: error: Required package Cbc or Ipopt not available.
I tried various combinations of putting the -L flags into LDFLAGS, but it always seems to give this error.
I then tried using coinbrew:
./coinbrew build bonmin --prefix /target/path
--with-asl-cflags=-I/path/to/asl
--with-hsl-cflags=-I/path/to/hsl/include
--with-lapack-cflags=-I/path/to/openblas/include
--with-lapack-lflags=-lopenblas
--with-hsl-lflags="-lopenblas -lcoinhsl -ldl"
--with-asl-lflags=-lcoinasl
LDFLAGS="-L/path/to/hsl/lib -L/path/to/openblas/lib"
--no-third-party --static --tests none
(The CoinUtils unit test seemed to fail, so I tried tests none just to get the installation going.)
But oddly, this only produces cbc and clp executables.
Any advice or tips would be appreciated!
The text was updated successfully, but these errors were encountered: