devel/gettext further update

Alexander Leidinger Alexander at Leidinger.net
Sat Jun 5 21:31:38 UTC 2010


On Fri, 4 Jun 2010 09:20:48 +0000 "b. f." <bf1783 at googlemail.com> wrote:

> Alexander Leidinger wrote:
> >Quoting Doug Barton <dougb at FreeBSD.org> (from Thu, 03 Jun 2010
> 11:29:01 -0700):
> >
> >> On 06/03/10 05:39, Matthias Andree wrote:
> >>> Am 03.06.2010 13:30, schrieb Andrey Chernov:
> >>>
> >>>> security/libksba
> >>>> security/libgcrypt
> >>>> (they use libgpg-error)
> >>
> >> So libgpg-error needs to be bumped, but why do things that don't
> >> like directly with gettext need it? One of the major benefits of
> >> shared libraries is to avoid pointless recompiling.
> >
> >The reason (for those interested) is explained here:
> http://www.leidinger.net/blog/2010/06/03/direct-indirect-and-explicit-dependencies-in-progamsports/
> 
> Just for the record, the useful
> ports/Tools/scripts/explicit_lib_depends.sh, described and used in
> your link above, may _not_ find libraries that:
> 
> -- are needed, but were intended to be statically linked;

Correct. If you are of a way how to detect it after the fact, feel free
to share the info here.

> -- are needed, but loaded via dlopen(3) and friends (this is noted in
> a comment in ports/Tools/scripts/neededlibs.sh );

Correct.

The goal for the scripts are to find entries for LIB_DEPENDS. A static
lib is a BUILD_DEPEND, not a LIB_DEPEND, and something which is opened
via dlopen() is typically not a LIB_DEPEND but a RUN_DEPEND (it is the
other way around and the stuff which is dlopen()en depends upon what
is dlopen()ing it). Additionally if a something is using dlopen(), it
should give sensible error messages when it does not work, so instead
of a cryptic error message which not everyone understands, there should
be (yes, I know, this is an idealistic POV) an error message even your
mother can understand.

I have to tell that those scripts are far from finished, the heuristic
of files to look at needs to be improved, and the translation into
ports-framework variable (like GNOME and X11 ones) needs to be written.
I didn't continue with this back when I was committing those scripts,
as the 3rd party software was far away from a state which would made it
really useful (indirect dependencies show up in runs of the scripts,
but they are not really welcome in our ports).

> -- are needed, and dynamically linked in the usual way, but are not
> referenced in any ELF DT_NEEDED tags.  These tags are optional, not
> mandatory, in the System V ABI, and they can be missing for a number
> of reasons.  They may not be present in a pre-compiled binary.  Or,
> for example. because some ports make shared libraries by converting
> static archives into shared libraries with the linker, the tags can
> sometimes be missing for those libraries.  Also, some ports use a
> version of gcc4* wired to devel/binutils, but then directly invoke
> some portion of the older base system binutils.  I've seen this lead
> to missing tags in the past.

Apart from the fact that I did not know that, do you know which ports in
the FreeBSD ports collection show this problem? Is there another way to
find this info in then?

Bye,
Alexander.


More information about the freebsd-ports mailing list