Evgeni Golov
2009-02-04 11:50:14 UTC
Hi,
I'm the Debian maintainer of orange and wanted to update the packages
to the current 0.4 release. While doing so, I noticed a annoying
breakage compared to the old 0.3.2 release:
building/linking liborange.so.0.0.0 does not honour LDFLAGS (it works
for the orange binary well).
I'm setting LDFLAGS="-Wl,-z,defs -Wl,--as-needed" in my build scripts,
so the resulting package has less dependencies and thus does not need
rebuilds when some other library changes. For orange that is libdbus
and libhal, which libsynce is linked against. When now libhal would
change it's soname, one only need to rebuild libsynce and not
liborange which does not use libhal directly (but gets linked against
it, because libsynce is). But as liborange does not honour my LDFLAGS,
it gets a dependency on libhal and would need a rebuild too.
I did some digging and came to the following:
1. liborange 0.4 with ltmain.sh and aclocal.m4 from the old 0.3.2
release honours the LDFLAGS fine and the resulting library isnt linked
against libdbus/libhal.
2. liborange 0.4 from SVN with ltmain.sh and aclocal.m4 generated by
the bootstrap script on my Debian Sid box does also honour the LDFLAGS.
3. Only the released version with no changes does not.
Can you reproduce this by building liborange with
LDFLAGS="-Wl,-z,defs -Wl,--as-needed"
and running
objdump -x liborange.so.0.0.0 |grep NEEDED
on the resulting .so?
What can we do for this?
1. Upload to Debian in the current state.
I'd like not to, because I'd like to have the list of direct
dependencies as small as possible.
2. Upload 0.4 with changed ltmain.sh/aclocal.m4.
Possible, but one usually wants to have the diff to the original
upstream release as small as possible.
3. You release 0.4.1 with fixed scripts.
IMHO the best way, as here everyone would have the benefit of less
direct dependencies, not only Debian/Ubuntu.
TIA & kind regards
Evgeni Golov
I'm the Debian maintainer of orange and wanted to update the packages
to the current 0.4 release. While doing so, I noticed a annoying
breakage compared to the old 0.3.2 release:
building/linking liborange.so.0.0.0 does not honour LDFLAGS (it works
for the orange binary well).
I'm setting LDFLAGS="-Wl,-z,defs -Wl,--as-needed" in my build scripts,
so the resulting package has less dependencies and thus does not need
rebuilds when some other library changes. For orange that is libdbus
and libhal, which libsynce is linked against. When now libhal would
change it's soname, one only need to rebuild libsynce and not
liborange which does not use libhal directly (but gets linked against
it, because libsynce is). But as liborange does not honour my LDFLAGS,
it gets a dependency on libhal and would need a rebuild too.
I did some digging and came to the following:
1. liborange 0.4 with ltmain.sh and aclocal.m4 from the old 0.3.2
release honours the LDFLAGS fine and the resulting library isnt linked
against libdbus/libhal.
2. liborange 0.4 from SVN with ltmain.sh and aclocal.m4 generated by
the bootstrap script on my Debian Sid box does also honour the LDFLAGS.
3. Only the released version with no changes does not.
Can you reproduce this by building liborange with
LDFLAGS="-Wl,-z,defs -Wl,--as-needed"
and running
objdump -x liborange.so.0.0.0 |grep NEEDED
on the resulting .so?
What can we do for this?
1. Upload to Debian in the current state.
I'd like not to, because I'd like to have the list of direct
dependencies as small as possible.
2. Upload 0.4 with changed ltmain.sh/aclocal.m4.
Possible, but one usually wants to have the diff to the original
upstream release as small as possible.
3. You release 0.4.1 with fixed scripts.
IMHO the best way, as here everyone would have the benefit of less
direct dependencies, not only Debian/Ubuntu.
TIA & kind regards
Evgeni Golov