Giter VIP home page Giter VIP logo

Comments (16)

colbec avatar colbec commented on July 17, 2024 1

Just confirming that delete of src and usr for CoinOptServices followed by Pkg.build() fixed the load problem. Back to working status. Thank you for your help and not a problem doing testing, it's my contribution to the effort.

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

Great, thanks. So the reason Ipopt.jl rebuilds (the reference) blas is that it needs 32 bit integers (vs the default Julia build on 64 bit machines uses 64 bit integers in its internal copy of openblas), and it actually only uses a fairly small part of blas - libcoinblas only has real double-precision functions in it IIRC.

Can you gist the file at /home/colin/.julia/v0.6/Ipopt/deps/src/Ipopt-3.12.1/ThirdParty/Mumps/config.log ? That will contain a more detailed error output.

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

Also what is ls -al /home/colin/.julia/v0.6/Ipopt/deps/usr/lib/ and ls -al /home/colin/.julia/v0.6/Ipopt/deps/usr/ ?

from ipopt.jl.

colbec avatar colbec commented on July 17, 2024

Gist here:
mumps config: https://gist.github.com/colbec/50b0e7b64628bfb463053dfea4db4f5c

Requested usr/lib does not exist, directory usr/lib64 exists:

> ls -al /home/colin/.julia/v0.6/Ipopt/deps/usr/ 
total 0
drwxr-xr-x 3 colin users  19 Aug 25 05:19 .
drwxr-xr-x 5 colin users  61 Aug 25 05:19 ..
drwxr-xr-x 3 colin users 113 Aug 25 05:21 lib64

> ls -al /home/colin/.julia/v0.6/Ipopt/deps/usr/lib64/
total 1216
drwxr-xr-x 3 colin users    113 Aug 25 05:21 .
drwxr-xr-x 3 colin users     19 Aug 25 05:19 ..
-rw-r--r-- 1 colin users 253774 Aug 25 05:21 libcoinblas.a
-rwxr-xr-x 1 colin users    782 Aug 25 05:21 libcoinblas.la
-rw-r--r-- 1 colin users 979298 Aug 25 05:21 libcoinlapack.a
-rwxr-xr-x 1 colin users    795 Aug 25 05:21 libcoinlapack.la
drwxr-xr-x 2 colin users     46 Aug 25 05:21 pkgconfig

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

Yep, that explains it. It's the opensuse environment variable that tells autoconf/automake to build into lib64. Let me find where the Julia makefiles unset it, so we can try that here.

Not really needed this time, but just to share. The trick to reading config.log files when something goes wrong in a configure script is to search for the ## Cache variables. ## section and look right above that. In this case it said:

configure:21960: checking whether user supplied BLASLIB="/home/colin/.julia/v0.6/Ipopt/deps/usr/lib/libcoinblas.a -lgfortran" works
configure:22077: gcc -o conftest -O3 -pipe -DNDEBUG    -DMUMPS_BUILD   conftest.c /home/colin/.julia/v0.6/Ipopt/deps/usr/lib/libcoinblas.a -lgfortran  >&5
gcc: error: /home/colin/.julia/v0.6/Ipopt/deps/usr/lib/libcoinblas.a: No such file or directory

...

Okay, found it. The environment variable is CONFIG_SITE. First, what is the value of ENV["CONFIG_SITE"] for you? Second, try

withenv(filter(x->x[1]!="CONFIG_SITE", collect(ENV))...) do
    Pkg.build("Ipopt")
end

You may need to rm(Pkg.dir("Ipopt","deps","usr"); recursive=true) first.

edit: you may also need to rm(Pkg.dir("Ipopt","deps","src"); recursive=true)

from ipopt.jl.

colbec avatar colbec commented on July 17, 2024
> echo $CONFIG_SITE
/usr/share/site/x86_64-unknown-linux-gnu

Suggestion to rm(...) followed by withenv(...) resulted in same error as above.

FWIW, as an ugly hack I made a symbolic link from new usr/lib to usr/lib64 and the build works correctly.

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

Oh that's how that works, /usr/share/site/x86_64-unknown-linux-gnu is a file that will have a bunch of content in it. Worth gisting maybe?

I made an edit and you might need to also rm(Pkg.dir("Ipopt","deps","src"); recursive=true) - the first time when you still got the error, how much of building the library did it re-do? It might have started from cached content in src, I'm not sure.

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

Or since I might be mistaken with what withenv will do for unset-ing certain environment variables, just

pop!(ENV, "CONFIG_SITE")
Pkg.build("Ipopt")

remembering to re-set it if you'd like (or just restart Julia to get it back to the default).

from ipopt.jl.

colbec avatar colbec commented on July 17, 2024

x86_64-unknown-linux-gnu is actually a bash script which is invoked. Here is the gist:
https://gist.github.com/colbec/681dd307d48d73bc6033d1f8640c19ed
I just completed an optimization problem to check that all was in place and it worked well. Now I will try the steps you suggest.

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

I think #63 should fix this - if your manual tests with pop!(ENV, "CONFIG_SITE") work, would you mind clearing out the deps/src and deps/usr again and do

Pkg.checkout("Ipopt")
Pkg.checkout("Ipopt", "tk/fix62")
ENV["MAKEFLAGS"] = "-j4" # save some time
Pkg.build("Ipopt")
Pkg.test("Ipopt")
# and eventually go back to release once a new version of the package gets tagged
Pkg.free("Ipopt")

from ipopt.jl.

colbec avatar colbec commented on July 17, 2024

Just finished the pop!(ENV, "CONFIG_SITE") exercise and it worked. Previously had tried removing src and usr followed by Pkg.update() but that step failed. Now running latest.

Edit: INFO: Ipopt tests passed

from ipopt.jl.

colbec avatar colbec commented on July 17, 2024

@tkelman As a result of the new setup I am now no longer able to load AmplNLWriter which had worked before. I have tried to rebuild AmplNLWriter and restarted Julia according to standard instructions but no load. Is this related to this issue or should I be cleaning out my cache perhaps?

Edit: looks like it is related to CoinOptServices which also fails on rebuild.

ERROR: LoadError: LoadError: LoadError: Unable to load 

libOS (/home/colin/.julia/v0.6/CoinOptServices/deps/usr/lib64/libOS.so)

Please re-run Pkg.build(package), and restart Julia.
 in include_from_node1(::String) at ./loading.jl:481 (repeats 2 times)
 in eval(::Module, ::Any) at ./boot.jl:234
 in require(::Symbol) at ./loading.jl:409
 in include_from_node1(::String) at ./loading.jl:481
 in eval(::Module, ::Any) at ./boot.jl:234
 in require(::Symbol) at ./loading.jl:409
while loading /home/colin/.julia/v0.6/CoinOptServices/src/../deps/deps.jl, in expression starting on line 12
while loading /home/colin/.julia/v0.6/CoinOptServices/src/CoinOptServices.jl, in expression starting on line 20
while loading /home/colin/.julia/v0.6/AmplNLWriter/src/AmplNLWriter.jl, in expression starting on line 28

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

Hm, interesting. It's possible that CoinOptServices needs the same change as #63, or maybe you'd need to delete deps/usr and deps/src from CoinOptServices as well. Apologies about all the recompilation you're doing, I appreciate the willingness to test. I feel like I would have tested these things when I was booting into my OpenSUSE partition more regularly, but now I can't remember for sure.

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

Great! Just to confirm, by "Now running latest" you mean post-Pkg.checkout("Ipopt", "tk/fix62"), right? We'll get that merged and tagged soon then, once one of the other maintainers gets a chance to review it.

from ipopt.jl.

colbec avatar colbec commented on July 17, 2024

In Julia 0.6

julia> Pkg.status("Ipopt")
 - Ipopt                         0.2.4+             tk/fix62

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

oh yeah i still need to tag this i think. let's see if #66 needs any changes to be made first

from ipopt.jl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.