Re: [xslt] Release of libxslt-1.0.9



On Fri, Dec 07, 2001 at 07:33:58PM +0100, Geert Kloosterman wrote:
> OK, rpm -tb works fine on the tarball...  Problem fixed.

  Beware Jeff Johnson has threatened to remove rpm -t.. options

> Great work! 
> 
> What did you change to get it working?  I'm curious since I've spent
> so much time in tracking the problem down... 

  Makes sense for archiving purposes, though I firmly think it's libtool
being horribly broken !

<off-topic warning="ugly stuff coming">
  Okay, the problems comes from prelinking. Basically the goal is to
tell the OS that the shared library depends on another shared library without
doing the full binding before runtime or installation time. At the automake
level this is done with macros like libxslt_la_LIBADD = ....
  What it tells is to have ld record the dependancies given inside the
library. For example ldd /usr/lib/libxslt.so.1 lists libxml2.so.2 .
The big problem is when a library like libexslt depends on another library
produced by the same makefile. In theory, libtool supports the dependancy
and doesn't build the final shared library before the make install stage 
if passed a relative path dependancy. In practice 1/ it really doesn't
work most of the time 2/ if the make install uses a different prefix than
the configure it breaks 3/ any RPM build is done with a prefix which
will be different at configure e.g. /usr which is where the library actually
ends up than the install one -- usually a temporary tree build on purpose
for the packaging.
  I solved this by taking the extreme approach: don't try to activate
prelinking if it's likely to fail, i.e. if the shared lib used for the
prelink isn't already installed, in the configured prefix and with the
correct .la (I skipped that part in the explanation the presence is of
the .la is needed for libtool) is also present in the prefix then the 
prelinking dependancy is passed in the Makefile.am otherwise it's skipped.
  In a nutshell, prelinking for libexslt w.r.t. libxslt will only be
actived if libxslt and libxslt-devel packages are already present. Which
means that in your environment you will have to rpm -ta , rpm -i the
package and package-devel then rerun rpm -ta to build rpms with the 
prelinking dependancies.
  Figuring out the details how it's actually done is left as an exercise
to the reader.
</off-topic>

Daniel

P.S.: I will try to not make fun of Windows makefile and IDE for the next
      3 months ... 1 - 1 ... deuce

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]