IDAES / idaes-ext

IDAES developer repo for those building the idaes binary solvers and related tools.
Other
8 stars 11 forks source link

Distribute /include as part of solvers #204

Closed jsiirola closed 1 year ago

jsiirola commented 2 years ago

Can we update the idaes-ext to also distribute the /include directory from the solver builds (in particular for the COIN solvers)? I am trying to build other things (SCIP) against the idaes-ext distribution, and not having the includes is breaking the build.

This may cause us to re-think the tarballs that we distribute...?

eslickj commented 1 year ago

@jsiirola, As far as I know we only include AMPL executable versions of the COIN solvers, except for Ipopt where we also include a shared library version. I only build static libraries for everything else, and don't distribute them. Do you just need the Ipopt headers?

I install the COIN solvers to their own directory when building them. Then I copy the executables from there to make the binary distribution. That means I have the /include, /libs, and /lib64 directories, I could easily include them, but we'd need to sort out the HSL.

jsiirola commented 1 year ago

Ipopt headers for sure. The others might be useful (even if we are only distributing the static libraries). The use case I was running into was I was trying to build the new version of SCIP (which looks for the COIN headers ... although I think it is only for getting the Ipopt headers). I expect I will run into the same challenge when building cyipopt against the IDAES ipopt library.

eslickj commented 1 year ago

Headers are no problem. I'll just kick out the HSL headers. I don't distribute the static libraries because I don't really know which ones link the HSL (so if used would result in a linking error). I didn't really see the non-ipopt headers as useful, but I may be wrong.

I will include them in the next release. The best way for a person to use them is another matter. I can put an "include" directory in the IDAES directory.

jsiirola commented 1 year ago

An /include would certainly be good. We might consider a longer-term solution of restructuring the ~/.idaes directory to have a "closer to sttandard" layout, with /bin, /lib, /include, and /share. Windows is a bit of a question, though - because it doesn't really support LD_LIBRARY_PATH. Maybe architecture-specific?

eslickj commented 1 year ago

@jsiirola, I for sure could do that and make it arch specific. I'd just have bin be both lib and bin on Windows and the proper structure on Linux and macOS. I guess I can include the libraries too and kick out the HSL library. Sure sometimes you may need to provide the HSL yourself depending on what you want to do, but it could still be pretty useful.

I'm working on a new version of the Helmholtz EoS functions, so I'll have to make a new release hopefully in the next month or so.

eslickj commented 1 year ago

They are now in the solvers package in another tar.gz file. Now the issue of updating the install methods can go the ideas-pse repo. This is done with the 3.0.0 release