#730124 doesn't include colamd functions, needs extra -lcolamd

Package:
liblpsolve55-dev
Source:
lp-solve
Description:
Solve (mixed integer) linear programming problems - library
Submitter:
Florian Lohoff
Date:
2013-11-26 15:48:04 UTC
Severity:
minor
#730124#5
Date:
2013-11-21 18:18:23 UTC
From:
To:
Hi,
i am trying to build murka 1) against the debian wheezy version of
lpsolve - I get a link error. With a self build 5.5.2.0 everything
is fine ....

flo@p2:~/Downloads/p/p/murka-1.3.1b-src$ make
Making all in murka
make[1]: Entering directory `/home/flo/Downloads/p/p/murka-1.3.1b-src/murka'
g++  -w -O2 -g0 -ldl -lpthread -s  -o murka murka.o nwerr.o args.o getopt.o misc.o nwclient.o nwst.o fformat.o lp_solve/lpsolve55/bin/ux64/liblpsolve55.a
lp_solve/lpsolve55/bin/ux64/liblpsolve55.a(lp_MDO.o): In function `getMDO':
(.text+0x5ad): undefined reference to `colamd_recommended'
lp_solve/lpsolve55/bin/ux64/liblpsolve55.a(lp_MDO.o): In function `getMDO':
(.text+0x5ef): undefined reference to `colamd_set_defaults'
lp_solve/lpsolve55/bin/ux64/liblpsolve55.a(lp_MDO.o): In function `getMDO':
(.text+0x63c): undefined reference to `colamd'
lp_solve/lpsolve55/bin/ux64/liblpsolve55.a(lp_MDO.o): In function `getMDO':
(.text+0x6b4): undefined reference to `symamd'
collect2: error: ld returned 1 exit status
make[1]: *** [murka] Error 1
make[1]: Leaving directory `/home/flo/Downloads/p/p/murka-1.3.1b-src/murka'
make: *** [all-recursive] Error 1

#730124#10
Date:
2013-11-22 08:21:30 UTC
From:
To:
severity 730124 minor
retitle 730124 doesn't include colamd dunctions, needs extra -lcolamd
tag 730124 + wontfix
thanks

Because that version is broken.

Because in Debian that .a doesn't include those stuff but we do link with
system-colamd. If you used the .so (which exists but is hidden due
to not being SONAMEd) it should have worked fine(tm).

So just install libsuitesparse-dev and link with -lcolamd (and the same for
whatever is symamd)

Regards,

Rene

#730124#23
Date:
2013-11-22 11:56:05 UTC
From:
To:
Hi,

http://packages.debian.org/wheezy/liblpsolve55-dev

FWIW, For exactly that reason liblpsolve55-dev already depends on
libsuitesparse-dev.

Regards,

Rene

#730124#28
Date:
2013-11-26 15:28:11 UTC
From:
To:
So how would i use the "hidden" dynamic so? If i link any application
against it the dynamic linker aka ld.so wont find it.

I had a quick grep and i could find any package in the debian
repository dynamically linking against lpsolve.

Sounds broken for me and compiling my own lpsolve is way easier than
using the debian packages which sounds strange even more.

Flo

#730124#33
Date:
2013-11-26 15:44:37 UTC
From:
To:
Hi,

See e.g. http://anonscm.debian.org/gitweb/?p=pkg-openoffice/libreoffice.git;a=blob;f=patches/fix-system-lpsolve-build.diff;h=504d206b2e8e232363e271341b32c8dc93713800;hb=HEAD:


.. except you set a rpath, yes.

How? Note the shared lib is *of course* not in liblpsolve55-dev.

A liblpsolve55 package would be buggy (because no SONAME etc..), so
it's hidden in /usr/lib/lp_solve in lp_solve.
The lp_solve binary itself (why linking a whole static liblpsolve55.a in?
Should be dynamically linked).

libreoffice-calc does.

Both lp_solve (lp-solved) and libsolverlo.so (libreoffice-calc) have said
rpath.

No, including a third-party lib into liblpsolve55.a is broken imho.
If you need colamd you need -lcolamd.

We should get rid of such internal code copies (in this case of even a
(quite) unknown version.)

The root cause here is that lpsolve is such a badly library upstream,
if it had e.g. a pkg-config file we could just add -lcolamd there and be
done -> no problem. I could invent one, but that would only help on Debian...

Regards,

Rene