Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Caml-list] Compiling the ocaml distribution under multiarched Debian/Ubuntu

8 views
Skip to first unread message

Philippe Veber

unread,
Jan 13, 2012, 7:02:37 AM1/13/12
to caml users
Dear camlers,

Debian and Ubuntu have not so recently switched to multiarch binaries
(including libs, see http://wiki.debian.org/Multiarch/Implementation). This
is an important change for ocaml C bindings since the libraries are now to
be found in /usr/lib/<arch description> instead of /usr/lib. I was just
bitten by this, when realizing that the ocaml configure script couldn't
find libX11.so and wouldn't install graphics. A similar problem was handled
by the people in charge of debian ocaml packages (
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=619344). Now my question
is the following: will this evolution be a problem for GODI/odb packages
(and more generally source distribution), and what is the advised fix for
it?

Cheers,
Philippe.

--
Caml-list mailing list. Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Gerd Stolpmann

unread,
Jan 13, 2012, 7:25:36 AM1/13/12
to Philippe Veber, caml users
Am Freitag, den 13.01.2012, 12:59 +0100 schrieb Philippe Veber:
> Dear camlers,
>
> Debian and Ubuntu have not so recently switched to multiarch binaries
> (including libs, see http://wiki.debian.org/Multiarch/Implementation).
> This is an important change for ocaml C bindings since the libraries
> are now to be found in /usr/lib/<arch description> instead
> of /usr/lib. I was just bitten by this, when realizing that the ocaml
> configure script couldn't find libX11.so and wouldn't install
> graphics. A similar problem was handled by the people in charge of
> debian ocaml packages
> (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=619344). Now my
> question is the following: will this evolution be a problem for
> GODI/odb packages (and more generally source distribution), and what
> is the advised fix for it?

Good question. For GODI it means that the automatic library search is
broken. You can set the library path in most cases manually, though. (So
far I overlook it, this is only a problem for the libs
in /usr/lib/<arch>/<pkg> but not for the ones in /usr/lib/<arch> because
the latter can be linked without -L switches.)

The question is how to generically work around this. GODI could provide
a variable $USR_LIB_ARCH for the architecture-specific path prefix
corresponding to /usr/lib/<arch>, which is set if "dpkg-architecture
-qDEB_HOST_MULTIARCH" returns something. All the conf packages would
need to be updated. In the future we will have many errors because not
all package developers will test on multiarch-enabled systems.

Don't know what else needs to be done.

Gerd

> Cheers,
> Philippe.
>

--
------------------------------------------------------------
Gerd Stolpmann, Darmstadt, Germany ge...@gerd-stolpmann.de
Creator of GODI and camlcity.org.
Contact details: http://www.camlcity.org/contact.html
Company homepage: http://www.gerd-stolpmann.de
*** Searching for new projects! Need consulting for system
*** programming in Ocaml? Gerd Stolpmann can help you.
------------------------------------------------------------

Philippe Veber

unread,
Jan 13, 2012, 7:47:59 AM1/13/12
to Gerd Stolpmann, caml users
2012/1/13 Gerd Stolpmann <in...@gerd-stolpmann.de>

> Am Freitag, den 13.01.2012, 12:59 +0100 schrieb Philippe Veber:
> > Dear camlers,
> >
> > Debian and Ubuntu have not so recently switched to multiarch binaries
> > (including libs, see http://wiki.debian.org/Multiarch/Implementation).
> > This is an important change for ocaml C bindings since the libraries
> > are now to be found in /usr/lib/<arch description> instead
> > of /usr/lib. I was just bitten by this, when realizing that the ocaml
> > configure script couldn't find libX11.so and wouldn't install
> > graphics. A similar problem was handled by the people in charge of
> > debian ocaml packages
> > (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=619344). Now my
> > question is the following: will this evolution be a problem for
> > GODI/odb packages (and more generally source distribution), and what
> > is the advised fix for it?
>
> Good question. For GODI it means that the automatic library search is
> broken. You can set the library path in most cases manually, though. (So
> far I overlook it, this is only a problem for the libs
> in /usr/lib/<arch>/<pkg> but not for the ones in /usr/lib/<arch> because
> the latter can be linked without -L switches.)
>
That's what I thought too, but I'm hurt even for libX11 which is in
/usr/lib/<arch>:

pveber@gesundheit:/usr/lib$ locate libX11.so
/usr/lib/x86_64-linux-gnu/libX11.so
/usr/lib/x86_64-linux-gnu/libX11.so.6
/usr/lib/x86_64-linux-gnu/libX11.so.6.3.0

This is related to ocaml configure script, which wants to see the lib
before trying to compile

for dir in \
$x11_lib_dir \
$x11_try_lib_dir \
\
/usr/X11R6/lib64 \
/usr/X11R6/lib \
/usr/lib/X11R6 \
/usr/local/X11R6/lib \
/usr/local/lib/X11R6 \
/opt/X11R6/lib \
\
/usr/X11/lib \
/usr/lib/X11 \
/usr/local/X11/lib \
/usr/local/lib/X11 \
/opt/X11/lib \
<SNIP>
; \
do
if test -f $dir/libX11.a || \
test -f $dir/libX11.so || \
test -f $dir/libX11.dll.a || \
test -f $dir/libX11.dylib || \
test -f $dir/libX11.sa; then

So basically it may be an issue in all cases ...


>
> The question is how to generically work around this.

right.


> GODI could provide
> a variable $USR_LIB_ARCH for the architecture-specific path prefix
> corresponding to /usr/lib/<arch>, which is set if "dpkg-architecture
> -qDEB_HOST_MULTIARCH" returns something. All the conf packages would
> need to be updated.

I've already noticed that godi's smart enough to suggest debian packages in
the bootstrap phase, so yes, probably your (optional, OS-specific) approach
is the way to go (although it might be some work). Also notice with the
example of graphics that many packages will have to be modified in order to
propagate the information. In this particular example, one would have to
add a --x11lib on the configure command.



> In the future we will have many errors because not
> all package developers will test on multiarch-enabled systems.
>
Just curious: are there many others than debian/ubuntu?


>
> Don't know what else needs to be done.
>
Thanks for your input on this.

ph.

Stéphane Glondu

unread,
Jan 13, 2012, 8:18:48 AM1/13/12
to Philippe Veber, caml users
Le 13/01/2012 12:59, Philippe Veber a écrit :
> Debian and Ubuntu have not so recently switched to multiarch binaries
> (including libs, see http://wiki.debian.org/Multiarch/Implementation).
> This is an important change for ocaml C bindings since the libraries are
> now to be found in /usr/lib/<arch description> instead of /usr/lib. I
> was just bitten by this, when realizing that the ocaml configure script
> couldn't find libX11.so and wouldn't install graphics. A similar problem
> was handled by the people in charge of debian ocaml packages
> (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=619344). Now my
> question is the following: will this evolution be a problem for GODI/odb
> packages (and more generally source distribution), and what is the
> advised fix for it?

My advice would be to rely on pkg-config (a kind of ocamlfind for C
libraries), or similar scripts (pcre-config, etc.) provided by the
libraries. Otherwise, there is no good, portable (I mean, not
Debian-specific) way to guess where a library is, and the packager will
give an explicit path in his call to the configure script in
debian/rules. By the way, this is what we did for ocaml [1].

[1]
http://anonscm.debian.org/gitweb/?p=pkg-ocaml-maint/packages/ocaml.git;a=commitdiff;h=1db9b654b7d8b702cddb44df5aea1982f3120883


Cheers,

--
Stéphane

Gerd Stolpmann

unread,
Jan 13, 2012, 8:58:57 AM1/13/12
to Stéphane Glondu, Philippe Veber, caml users
Am Freitag, den 13.01.2012, 14:18 +0100 schrieb Stéphane Glondu:
> Le 13/01/2012 12:59, Philippe Veber a écrit :
> > Debian and Ubuntu have not so recently switched to multiarch binaries
> > (including libs, see http://wiki.debian.org/Multiarch/Implementation).
> > This is an important change for ocaml C bindings since the libraries are
> > now to be found in /usr/lib/<arch description> instead of /usr/lib. I
> > was just bitten by this, when realizing that the ocaml configure script
> > couldn't find libX11.so and wouldn't install graphics. A similar problem
> > was handled by the people in charge of debian ocaml packages
> > (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=619344). Now my
> > question is the following: will this evolution be a problem for GODI/odb
> > packages (and more generally source distribution), and what is the
> > advised fix for it?
>
> My advice would be to rely on pkg-config (a kind of ocamlfind for C
> libraries), or similar scripts (pcre-config, etc.) provided by the
> libraries. Otherwise, there is no good, portable (I mean, not
> Debian-specific) way to guess where a library is, and the packager will
> give an explicit path in his call to the configure script in
> debian/rules. By the way, this is what we did for ocaml [1].
>
> [1]
> http://anonscm.debian.org/gitweb/?p=pkg-ocaml-maint/packages/ocaml.git;a=commitdiff;h=1db9b654b7d8b702cddb44df5aea1982f3120883

In GODI there is a library searcher for libs that do not support
pkg-config et al. It just tries a list of typical paths used by various
OS. The method works well if the library is not dependent on other
libraries, and is quite portable. Of course, you cannot be sure to find
the right library if several versions are installed (which is quite
common on non-open-source OS where the developer has to do it on its
own), but otherwise it is good enough for setting a default if the user
does not have special wishes.

So, e.g. for X11, there is no pkg-config, and GODI falls back to
searching. Btw, we don't rely here on what the Ocaml configure script
finds out, but have our own searcher, simply because this makes it
easier to respect users' wishes.

Gerd

>
> Cheers,
>
> --
> Stéphane
>

--
------------------------------------------------------------
Gerd Stolpmann, Darmstadt, Germany ge...@gerd-stolpmann.de
Creator of GODI and camlcity.org.
Contact details: http://www.camlcity.org/contact.html
Company homepage: http://www.gerd-stolpmann.de
*** Searching for new projects! Need consulting for system
*** programming in Ocaml? Gerd Stolpmann can help you.
------------------------------------------------------------



Philippe Veber

unread,
Jan 13, 2012, 9:20:13 AM1/13/12
to Gerd Stolpmann, Stéphane Glondu, caml users
2012/1/13 Gerd Stolpmann <in...@gerd-stolpmann.de>
'seems like pkg-config was updated:

pveber@gesundheit:~/usr/src/ocaml-3.12.1$ pkg-config --libs x11
-lX11

Richard W.M. Jones

unread,
Jan 13, 2012, 9:21:33 AM1/13/12
to Philippe Veber, Gerd Stolpmann, caml users
I think this is just an argument for using autoconf instead of
hand-coded shell scripts.

> > In the future we will have many errors because not
> > all package developers will test on multiarch-enabled systems.
> >
> Just curious: are there many others than debian/ubuntu?

It seems unlike that Fedora will implement multiarch like
this, since Fedora has done its own thing for a long time
(and it's broken too, but in a different way).

Rich.

--
Richard Jones
Red Hat

Gerd Stolpmann

unread,
Jan 13, 2012, 10:25:12 AM1/13/12
to Philippe Veber, Stéphane Glondu, caml users
Traditionally, X11 came with its own system called imake, which is a
preprocessor for makefiles. If there is now pkg-config support, this is
very new, or an extension by the distributor.

Gerd

--
------------------------------------------------------------
Gerd Stolpmann, Darmstadt, Germany ge...@gerd-stolpmann.de
Creator of GODI and camlcity.org.
Contact details: http://www.camlcity.org/contact.html
Company homepage: http://www.gerd-stolpmann.de
*** Searching for new projects! Need consulting for system
*** programming in Ocaml? Gerd Stolpmann can help you.
------------------------------------------------------------



Adrien

unread,
Jan 13, 2012, 11:13:27 AM1/13/12
to Gerd Stolpmann, Philippe Veber, Stéphane Glondu, caml users
On 13/01/2012, Gerd Stolpmann <in...@gerd-stolpmann.de> wrote:
> Am Freitag, den 13.01.2012, 15:17 +0100 schrieb Philippe Veber:
>> pveber@gesundheit:~/usr/src/ocaml-3.12.1$ pkg-config --libs x11
>> -lX11
>
> Traditionally, X11 came with its own system called imake, which is a
> preprocessor for makefiles. If there is now pkg-config support, this is
> very new, or an extension by the distributor.

I don't know how old this would be but it's upstream at least in libX11-1.4.2.

Regards,
Adrien Nader

Gerd Stolpmann

unread,
Jan 13, 2012, 11:47:47 AM1/13/12
to Adrien, Philippe Veber, Stéphane Glondu, caml users
Am Freitag, den 13.01.2012, 17:13 +0100 schrieb Adrien:
> On 13/01/2012, Gerd Stolpmann <in...@gerd-stolpmann.de> wrote:
> > Am Freitag, den 13.01.2012, 15:17 +0100 schrieb Philippe Veber:
> >> pveber@gesundheit:~/usr/src/ocaml-3.12.1$ pkg-config --libs x11
> >> -lX11
> >
> > Traditionally, X11 came with its own system called imake, which is a
> > preprocessor for makefiles. If there is now pkg-config support, this is
> > very new, or an extension by the distributor.
>
> I don't know how old this would be but it's upstream at least in libX11-1.4.2.

So far I can trace it the file x11.pc appeared in xorg's version of X.
So quite a time ago. Note that especially commercial OS are behind when
it comes to renewing X11. E.g. I saw complaints that MacOS 10.4 did not
ship it, and it was first available in 10.5 (2007). OpenSolaris fixed it
in 2008. The commercial Solaris probably still misses it.

Anyway, I think we should use pkg-config if available.

Philippe: Did you already file a bug?

Gerd

> Regards,
> Adrien Nader
>

--
------------------------------------------------------------
Gerd Stolpmann, Darmstadt, Germany ge...@gerd-stolpmann.de
Creator of GODI and camlcity.org.
Contact details: http://www.camlcity.org/contact.html
Company homepage: http://www.gerd-stolpmann.de
*** Searching for new projects! Need consulting for system
*** programming in Ocaml? Gerd Stolpmann can help you.
------------------------------------------------------------


Philippe Veber

unread,
Jan 13, 2012, 11:56:24 AM1/13/12
to Gerd Stolpmann, Adrien, Stéphane Glondu, caml users
Le 13 janvier 2012 17:47, Gerd Stolpmann <in...@gerd-stolpmann.de> a écrit :

> Am Freitag, den 13.01.2012, 17:13 +0100 schrieb Adrien:
> > On 13/01/2012, Gerd Stolpmann <in...@gerd-stolpmann.de> wrote:
> > > Am Freitag, den 13.01.2012, 15:17 +0100 schrieb Philippe Veber:
> > >> pveber@gesundheit:~/usr/src/ocaml-3.12.1$ pkg-config --libs x11
> > >> -lX11
> > >
> > > Traditionally, X11 came with its own system called imake, which is a
> > > preprocessor for makefiles. If there is now pkg-config support, this is
> > > very new, or an extension by the distributor.
> >
> > I don't know how old this would be but it's upstream at least in
> libX11-1.4.2.
>
> So far I can trace it the file x11.pc appeared in xorg's version of X.
> So quite a time ago. Note that especially commercial OS are behind when
> it comes to renewing X11. E.g. I saw complaints that MacOS 10.4 did not
> ship it, and it was first available in 10.5 (2007). OpenSolaris fixed it
> in 2008. The commercial Solaris probably still misses it.
>
> Anyway, I think we should use pkg-config if available.
>
> Philippe: Did you already file a bug?
>
Not yet, but I'd be happy to. Do you mean ocaml or godi's bug tracker? I
must say I'm not exactly an expert on these issues so I'd understand if
you'd rather file the bug yourself, for clarity's sake.

ph.

Philippe Veber

unread,
Jan 14, 2012, 10:10:21 AM1/14/12
to Gerd Stolpmann, Adrien, Stéphane Glondu, caml users
Reported by Gerd:

http://caml.inria.fr/mantis/view.php?id=5477


Le 13 janvier 2012 17:53, Philippe Veber <philipp...@gmail.com> a écrit
:
0 new messages