You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Mark Hindess <ma...@googlemail.com> on 2008/06/16 09:10:16 UTC

[classlib] AWT dependencies on linux x86/x86_64

I think we should stop linking static lib{png,jpeg,lcms} on linux
32-bit (and any ports that also use this by default).  We link these
dynamically on linux/x86_64 and if it is good enough for that platform I
don't see why it wouldn't be good enough for any other platforms.  The
APIs for all three libraries are very stable and making the dependencies
consistent would help simplify the depends.xml.

Furthermore, I'd be tempted to by-pass the symlinking process altogether
and just checking that the headers/libraries are available at
depends.xml time and then link against them directly with -lpng etc.

Comments?
-Mark.


Re: [classlib] AWT dependencies on linux x86/x86_64

Posted by Nathan Beyer <nb...@gmail.com>.
On Mon, Jun 16, 2008 at 4:57 AM, Mark Hindess <ma...@googlemail.com>
wrote:

>
> In message <48...@apache.org>, Gregory Shimansky writes:
> >
> > Mark Hindess said the following on 16.06.2008 11:10:
> > > I think we should stop linking static lib{png,jpeg,lcms} on linux
> > > 32-bit (and any ports that also use this by default).  We link these
> > > dynamically on linux/x86_64 and if it is good enough for that platform
> I
> > > don't see why it wouldn't be good enough for any other platforms.  The
> > > APIs for all three libraries are very stable and making the
> dependencies
> > > consistent would help simplify the depends.xml.
> > >
> > > Furthermore, I'd be tempted to by-pass the symlinking process
> altogether
> > > and just checking that the headers/libraries are available at
> > > depends.xml time and then link against them directly with -lpng etc.
> > >
> > > Comments?
> >
> > It was Geir who insisted on static linking. He said that for
> > certification it is necessary to have a binary with all of its
> > dependencies inside of it. I don't know if it is true, but Sun seems to
> > be using static libraries...
>
> Thanks for refreshing my memory.
>
> This reasoning is/was flawed (and I'm sure I would have said so at
> the time).  We don't statically link libc, libX11, etc. or indeed
> several libraries (font-related ones for example) with much less stable
> APIs/implementations and which could have much broader impact on the
> ability to pass the jck.  I think we should define some criteria so that
> we are clear what the benefits are and so that we make this decision
> consistently/consciously.


This seems solid enough reasoning and seems to fit with the experience I've
had with other non-Sun JREs. As I recall, installing the IBM JRE/JDK on
linux requires specific libraries to be installed from the particular
distribution. I believe it's libstdc++ and an xorg library.

-Nathan


>
>
> > On x86 Linux it is usually possible to create a shared library and link
> > it against a static library that was not built with -fPIC. But on x86_64
> > static library that wasn't built with -fPIC cannot be linked to a shared
> > library. Also not all of the distros provide static versions of
> > libraries at all and none of them provide static libraries that are
> > built with -fPIC option. That is why we use dynamic ones for classlib
> > dependencies.
>
> Yes.  I vaguely remembered this part.
>
> Regards,
>  Mark.
>
>

Re: [classlib] AWT dependencies on linux x86/x86_64

Posted by Mark Hindess <ma...@googlemail.com>.
In message <48...@apache.org>, Gregory Shimansky writes:
>
> Mark Hindess said the following on 16.06.2008 11:10:
> > I think we should stop linking static lib{png,jpeg,lcms} on linux
> > 32-bit (and any ports that also use this by default).  We link these
> > dynamically on linux/x86_64 and if it is good enough for that platform I
> > don't see why it wouldn't be good enough for any other platforms.  The
> > APIs for all three libraries are very stable and making the dependencies
> > consistent would help simplify the depends.xml.
> > 
> > Furthermore, I'd be tempted to by-pass the symlinking process altogether
> > and just checking that the headers/libraries are available at
> > depends.xml time and then link against them directly with -lpng etc.
> > 
> > Comments?
> 
> It was Geir who insisted on static linking. He said that for 
> certification it is necessary to have a binary with all of its 
> dependencies inside of it. I don't know if it is true, but Sun seems to 
> be using static libraries...

Thanks for refreshing my memory.

This reasoning is/was flawed (and I'm sure I would have said so at
the time).  We don't statically link libc, libX11, etc. or indeed
several libraries (font-related ones for example) with much less stable
APIs/implementations and which could have much broader impact on the
ability to pass the jck.  I think we should define some criteria so that
we are clear what the benefits are and so that we make this decision
consistently/consciously.

> On x86 Linux it is usually possible to create a shared library and link 
> it against a static library that was not built with -fPIC. But on x86_64 
> static library that wasn't built with -fPIC cannot be linked to a shared 
> library. Also not all of the distros provide static versions of 
> libraries at all and none of them provide static libraries that are 
> built with -fPIC option. That is why we use dynamic ones for classlib 
> dependencies.

Yes.  I vaguely remembered this part.

Regards,
 Mark.


Re: [classlib] AWT dependencies on linux x86/x86_64

Posted by Gregory Shimansky <gs...@apache.org>.
Mark Hindess said the following on 16.06.2008 11:10:
> I think we should stop linking static lib{png,jpeg,lcms} on linux
> 32-bit (and any ports that also use this by default).  We link these
> dynamically on linux/x86_64 and if it is good enough for that platform I
> don't see why it wouldn't be good enough for any other platforms.  The
> APIs for all three libraries are very stable and making the dependencies
> consistent would help simplify the depends.xml.
> 
> Furthermore, I'd be tempted to by-pass the symlinking process altogether
> and just checking that the headers/libraries are available at
> depends.xml time and then link against them directly with -lpng etc.
> 
> Comments?

It was Geir who insisted on static linking. He said that for 
certification it is necessary to have a binary with all of its 
dependencies inside of it. I don't know if it is true, but Sun seems to 
be using static libraries...

On x86 Linux it is usually possible to create a shared library and link 
it against a static library that was not built with -fPIC. But on x86_64 
static library that wasn't built with -fPIC cannot be linked to a shared 
library. Also not all of the distros provide static versions of 
libraries at all and none of them provide static libraries that are 
built with -fPIC option. That is why we use dynamic ones for classlib 
dependencies.

-- 
Gregory


Re: [classlib] AWT dependencies on linux x86/x86_64

Posted by Mark Hindess <ma...@googlemail.com>.
In message <20...@d06av03.portsmouth.uk.ibm.com>,
"Mark Hindess" writes:
> 
> I think we should stop linking static lib{png,jpeg,lcms} on linux
> 32-bit (and any ports that also use this by default).  We link these
> dynamically on linux/x86_64 and if it is good enough for that platform I
> don't see why it wouldn't be good enough for any other platforms.  The
> APIs for all three libraries are very stable and making the dependencies
> consistent would help simplify the depends.xml.
> 
> Furthermore, I'd be tempted to by-pass the symlinking process altogether
> and just checking that the headers/libraries are available at
> depends.xml time and then link against them directly with -lpng etc.

There seemed to be vague consensus on this so I'd like to apply the
patch (currently attached to HARMONY-5871) to make this change.  Speak
up if you object.

-Mark.