Gentoo Logo
Gentoo Spaceship




Note: Due to technical difficulties, the Archives are currently not up to date. GMANE provides an alternative service for most mailing lists.
c.f. bug 424647
List Archive: gentoo-alt
Navigation:
Lists: gentoo-alt: < Prev By Thread Next > < Prev By Date Next >
Headers:
To: gentoo-alt@g.o
From: Michael Haubenwallner <michael.haubenwallner@...>
Subject: Re: AIX: libiconv issues still ?
Date: Wed, 23 May 2007 23:58:48 +0200
On Wed, 2007-05-23 at 20:51 +0200, Fabian Groffen wrote:
> On 07-05-2007 13:25:48 +0200, Michael Haubenwallner wrote:
> > > What if a relative link is given?
> > 
> > Valid point: then this is resolved to a file which is unlikely to exist,
> > because it is started relative to $D, and the check will abort.
> > 
> > OTOH, gen_usr_ldscript() generates absolute symlinks, and this check
> > ensures that: if there is no usr/lib/lib.so, there must not be a
> > lib/lib.so.
> > 
> > But ok - what about this followup-patch:
> > 
> >     for a in "${ED}"usr/lib*/*.a ; do
> a = usr/lib/libfoo.a

better to be more exact here:
a = /D/prefix/usr/lib/libfoo.a

> >         s=${a%.a}.so
> s = usr/lib/libfoo.so

s = /D/prefix/usr/lib/libfoo.so

> > -       if [[ -L ${s} ]] ; then
> > -           s=${D}$(readlink "${s}") || s=${a%.a}.so
> > +       if [[ -L ${s} ]] && rs=$(readlink "${s}"); then
> rs = ../lib/libfoo.so.1

err, need to get out of usr/lib/:

rs = ../../lib/libfoo.so      (if relative symlink)
or
rs = /prefix/lib/libfoo.so    (if absolute symlink)

> > +           [[ ${rs} == /* ]] && s="${D}${rs}" || s="${ED}usr/lib/${rs}"
> s = lib/libfoo.so.1

s = /D/prefix/usr/lib/../../lib/libfoo.so    (if relative symlink)
or
s = /D/prefix/lib/libfoo.so                  (if absolute symlink)

> >         fi

s = /D/prefix/usr/lib/../../lib/libfoo.so   (if relative symlink)
 or
s = /D/prefix/lib/libfoo.so                 (if absolute symlink)
 or
s = /D/prefix/usr/lib/libfoo.so             (if ld script)
 or
s = /D/prefix/usr/lib/libfoo.so             (if nonexistent)

> >         if [[ ! -e ${s} ]] ; then

s = /D/prefix/usr/lib/libfoo.so             (the nonexistent one only)

way to result: missing usr/lib/libfoo.so

> > +           s=${a%.a}.so
> s = lib/libfoo.so.1.so
> or
> s = usr/lib/libfoo.so.so
> I think this is wrong.  Is the replacement really necessary?  I think .a
> has always been replaced in this case.

err, s is recreated from (still initial) $a, not (current) $s:

s = /D/prefix/usr/lib/libfoo.so

> >             s=${s%usr/*}${s##*/usr/}
> s = lib/libfoo.so(.so)

s = /D/prefix/lib/libfoo.so

> > +           if [[ -L ${s} ]] && rs=$(readlink "${s}"); then

lib/libfoo.so could be a symlink '-> libfoo.so.1'.

rs = libfoo.so.1

Hmm, could this also be a symlink to somewhere outside lib/ ?
Or even '-> /prefix/lib/libfoo.so.1' ?
If not, we might not need to resolve symlinks (to $D) again here at all,
as [[ -e ]] succeeds if symlink is resolveable.

> > +               [[ ${rs} == /* ]] && s="${D}${rs}" || s="${ED}usr/lib/${rs}"
> Hmmm... if s is a link, and it is relative, should it start from
> ${ED}lib in that case?

oops, you're right, should read:
+               [[ ${rs} == /* ]] && s="${D}${rs}" || s="${ED}lib/${rs}"

s = /D/prefix/lib/libfoo.so.1

> > +           fi

s = /D/prefix/lib/libfoo.so.1   (if versioning-symlink)
or
s = /D/prefix/lib/libfoo.so     (if normal file)
or
s = /D/prefix/lib/libfoo.so     (if we do not resolve symlinks again)
or
s = /D/prefix/lib/libfoo.so     (if nonexistent)

> >             if [[ -e ${s} ]] ; then

way to result: but existing lib/libfoo.so

> >                 vecho -ne '\a\n'
> >                 eqawarn "QA Notice: Missing gen_usr_ldscript for ${s##*/}"
> >                 abort="yes"
> >             fi
> >         fi
> >     done
> 
> Really difficult stuff...

and this around midnight...

/haubi/
> 
> > > Apparently an invalid symlink makes -e (existence test) fail?
> > 
> > Exactly.
> > The symlink ${ED}usr/lib/lib.so points to ${EPREFIX}/lib/lib.so, which
> > does not exist because the package is not merged yet. Thus, 'test -e'
> > fails on that symlink.
> > 
> > /haubi/
> 
> -- 
> Fabian Groffen
> Gentoo on a different level


-- 
gentoo-alt@g.o mailing list


Replies:
Re: AIX: libiconv issues still ?
-- Fabian Groffen
References:
Re: AIX: libiconv issues still ?
-- Michael Haubenwallner
Re: AIX: libiconv issues still ?
-- Marshall McMullen
Re: AIX: libiconv issues still ?
-- Marshall McMullen
Re: AIX: libiconv issues still ?
-- Marshall McMullen
Re: AIX: libiconv issues still ?
-- Michael Haubenwallner
Re: AIX: libiconv issues still ?
-- Marshall McMullen
Re: AIX: libiconv issues still ?
-- Fabian Groffen
Re: AIX: libiconv issues still ?
-- Michael Haubenwallner
Re: AIX: libiconv issues still ?
-- Fabian Groffen
Re: AIX: libiconv issues still ?
-- Michael Haubenwallner
Re: AIX: libiconv issues still ?
-- Fabian Groffen
Navigation:
Lists: gentoo-alt: < Prev By Thread Next > < Prev By Date Next >
Previous by thread:
Re: AIX: libiconv issues still ?
Next by thread:
Re: AIX: libiconv issues still ?
Previous by date:
Re: AIX: libiconv issues still ?
Next by date:
[prefix] net-libs/libwww-5.4.0-r7 fails to build on i386


Updated Jun 17, 2009

Summary: Archive of the gentoo-alt mailing list.

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.