Discussion:
Release goal: Getting rid of unneeded *.la / emptying dependency_libs
(too old to reply)
Andreas Barth
2009-08-23 09:07:12 UTC
Permalink
(followup from -release, text from there is reused, so if you read
-release things are not too new for you)

Hi,


from time to time we have "funny" RC bugs thanks to dependencies
hidden in .la-files. Also these files lead to unneeded dependencies
between packages (in the case package A needs lib B which needs lib C,
in the normal case A would link B, B would link C; with libtools
*.la-files however A would also directly link C, meaning A need
binNMUs in case C changes soname, but the A binnmu can only happen
after B is binnmued successfully).


I would like to get rid of these unnecessary dependencies, and reduce
the number of potential RC bugs.


One week ago we had (ignoring any files in /usr/lib/kde3, as they are
unfortunatly necessary, and always counting source packages even
though of course looked into binary packages on sid/i386) 1098
packages that contain *.la-files, where 856 have dependency_libs not
empty, and 421 packages are referenced by other *.la-files, i.e. 672
packages only contain leaf *.la-files (i.e. not referenced by any
dependency_libs). It might happen that we come to the conclusion that
we need to keep a few la-files around, as they might be a help for
static compiling, but static compiling is at best "not the default",
so I would be quite surprised if that's more than 5-10 files (and then
that's the exception that confirms the rule).


The idea is to ask all maintainers of the 672 packages to drop their
*.la-file unless really needed, and any maintainer of any package to
empty the dependency_libs. "Asking" starts with a mail to d-d-a and
individual bug reports (not all bug reports at the same time
obviously). After the first packages have their *.la-file dropped /
dependency_libs removed, more packages can drop their *.la-file, and
we should end up only with the cases where we really need the file.
(If you maintain a package with an *.la-file, please do not just drop
the la-file. Empty the dependency_libs is good, dropping the is only
ok if no other package depends on it.)


If this discussion ends with "do it" I will file an wishlist bug for a
new lintian check (first only to check if dependency_libs is empty),
send a mail to d-d-a with "how to do it" and a list of affected
packages, and then step-by-step file the appropriate bug reports
(only for packages which can dump their la-file).



About "how to do it", for debhelper the cleanup is part of the
dh_devlibs-script proposed as bug #534966, for cdbs there seems to be
a gnome-rule as /usr/share/gnome-pkg-tools/1/rules/clean-la.mk but in
any case it should be easy to do an
sed "s,^dependency_libs=.*,dependency_libs=''," $la-file
as part of debian/rules but before building the deb-files.


Comments / Suggestions are welcome.


Cheers,
Andi
Julien BLACHE
2009-08-23 09:52:57 UTC
Permalink
Andreas Barth <***@not.so.argh.org> wrote:

Hi Aba,
Post by Andreas Barth
send a mail to d-d-a with "how to do it" and a list of affected
packages, and then step-by-step file the appropriate bug reports
(only for packages which can dump their la-file).
Please go ahead with that. It's going to be much much easier to remove
the .la files if we have a coordinated effort and it'll greatly reduce
the potential for breakages.

I plan to take a look at what's needed to remove the .la files in my
packages RSN, and it looks painful from where I stand right now.

JB.
--
Julien BLACHE - Debian & GNU/Linux Developer - <***@debian.org>

Public key available on <http://www.jblache.org> - KeyID: F5D6 5169
GPG Fingerprint : 935A 79F1 C8B3 3521 FD62 7CC7 CD61 4FD7 F5D6 5169
Andreas Barth
2009-08-23 10:36:33 UTC
Permalink
Post by Julien BLACHE
Post by Andreas Barth
send a mail to d-d-a with "how to do it" and a list of affected
packages, and then step-by-step file the appropriate bug reports
(only for packages which can dump their la-file).
Please go ahead with that. It's going to be much much easier to remove
the .la files if we have a coordinated effort and it'll greatly reduce
the potential for breakages.
I plan to take a look at what's needed to remove the .la files in my
packages RSN, and it looks painful from where I stand right now.
I'll try to have an updated automatic list at least for i386 on one of
my pages. I also think the debhelper inclusion is a pre-dependency for
sending out the mails on d-d-a.


Cheers,
Andi
Andreas Barth
2009-08-24 20:25:17 UTC
Permalink
Post by Julien BLACHE
Please go ahead with that. It's going to be much much easier to remove
the .la files if we have a coordinated effort and it'll greatly reduce
the potential for breakages.
So, I have now a first list of affected packages (see below). This
list is i386-only, and ignoring any files in /usr/lib/kde3 (I might
got one or two kde-applications wrong, that needs to be fixed before I
do the final list for d-d-a).

"depended-on" means: you must not drop the .la-files at this time, or
you will break another package.
"dependency_libs" means: please empty your dependency_libs right now
(or drop the la-files unless depended-on is set as well).
no flag means: just drop your la-file. Now. But you're not blocking
anyone else.


So I'd recommend maintainers of packages with:

1. "no flag" to remove the la-file on next occasion

2. only "dependency_libs" to remove their la-file RSN, because they
block removal of the la-files on another package (this flag can be
wrongly hit if a package depends only on itself - but well,
dropping the la-file is recommended as well here as with 1.)

3. only "depended-on" to do nothing at this time

4. with both "dependency_libs depended-on" to use
sed -i "s,^dependency_libs=.*,dependency_libs='',"
on all their la-files (I took care that self-dependencies don't
appear in this category, but rather in 1 or 2).


Next actions would be to send a mail to d-d-a with that list, together
with maintainer names (and make the list generation dynamic and put it
on a website), and then start to file bug reports (in this order) on
packages in 2, 4, 1 with the appropriate actions. Feel free to start
fixing your packages even now, as this will remove your package from
the list below.



Cheers,
Andi


a52dec: depended-on
aalib: depended-on
ace-of-penguins:
acl: dependency_libs depended-on
acovea:
acr38: dependency_libs
adasockets:
adolc:
adplug: dependency_libs
aeskulap: dependency_libs
agsync: dependency_libs
aiksaurus: dependency_libs depended-on
alltray:
alsa-lib: depended-on
alsa-oss: dependency_libs
alsaplayer:
alsa-tools: dependency_libs
amanda: dependency_libs
am-utils: dependency_libs
ann: dependency_libs
anthy: dependency_libs depended-on
apertium: dependency_libs
apmd:
apr: dependency_libs depended-on
apr-util: dependency_libs depended-on
apt-rpm: dependency_libs
argtable2:
argyll: dependency_libs
arpack++:
arts: dependency_libs depended-on
aspell: dependency_libs depended-on
atk1.0: depended-on
atlas-cpp: depended-on
attr: depended-on
aubio: dependency_libs depended-on
audiere: dependency_libs
audiofile: depended-on
audit: dependency_libs
autogen: dependency_libs
autotrace: dependency_libs
autounit: dependency_libs
avahi: depended-on
avifile: dependency_libs
ayttm: dependency_libs
babel: dependency_libs depended-on
bacula: dependency_libs
bakery2.4:
ball: dependency_libs depended-on
banshee: dependency_libs
barry: dependency_libs depended-on
basket: dependency_libs
bayonne: dependency_libs
beast: dependency_libs depended-on
beecrypt:
binutils-avr:
bio2jack: dependency_libs
blackbox:
blcr:
blitz++:
bluez: depended-on
bochs: dependency_libs
boolstuff:
bristol: dependency_libs
bse-alsa: dependency_libs
buddy:
cacao:
cairo: dependency_libs depended-on
cairomm: dependency_libs depended-on
cal3d: depended-on
capisuite:
cbflib:
ccfits:
cconv:
cddlib: dependency_libs
cegui-mk2: dependency_libs
cfengine2:
chasen:
cherokee: dependency_libs depended-on
chise-base:
chmlib:
clamav: dependency_libs
classpath: dependency_libs
cln: dependency_libs depended-on
clp: dependency_libs depended-on
cmph:
coin2: depended-on
coin3: depended-on
coinor-cgl: dependency_libs
coinor-dylp: depended-on
coinor-osi: dependency_libs depended-on
coinor-vol: depended-on
coinutils: depended-on
collectd:
comedilib: dependency_libs depended-on
concordance: dependency_libs
confuse: depended-on
console-tools: dependency_libs
coolkey: dependency_libs
courier-authlib: dependency_libs
cppunit: depended-on
cpu: dependency_libs
cpufreqd:
cpufrequtils:
crossfire:
cunit:
curl: dependency_libs depended-on
cvsnt: dependency_libs
cwidget: dependency_libs
cxxtools: depended-on
cyrus-sasl2: dependency_libs depended-on
cyrus-sasl2-heimdal: dependency_libs
dancer-xml:
dar: dependency_libs
db: dependency_libs depended-on
db4.2:
db4.5:
db4.6: depended-on
dballe: dependency_libs depended-on
dbmix: dependency_libs
ddccontrol: dependency_libs
denemo: dependency_libs
devil: dependency_libs depended-on
dia: dependency_libs depended-on
diagnostics:
dia-newcanvas: dependency_libs
dico: dependency_libs depended-on
dieharder:
diff-ext: dependency_libs
dime: depended-on
dirac:
discover: dependency_libs
djvulibre: dependency_libs depended-on
dlisp:
dmapi:
doodle:
dotconf:
dovecot: dependency_libs depended-on
dx: dependency_libs
dynamite:
e16:
eb: dependency_libs
ecasound2.2: dependency_libs
echoping: dependency_libs
ecryptfs-utils: dependency_libs depended-on
edac-utils:
editline:
elk: dependency_libs
emboss:
emcast: dependency_libs
enca: dependency_libs depended-on
encfs: dependency_libs
enchant: dependency_libs depended-on
eris: dependency_libs
esound: depended-on
eterm: dependency_libs
ettercap:
eventlog:
evolution-rss: dependency_libs
exiv2: dependency_libs depended-on
expat: dependency_libs depended-on
faad2: depended-on
facturalux:
fam: depended-on
ffcall:
fftw: dependency_libs depended-on
fftw3: depended-on
file: dependency_libs depended-on
flac: dependency_libs depended-on
flatzebra: dependency_libs
fl-cow:
flickcurl: dependency_libs
fluidsynth: dependency_libs depended-on
fluidsynth-dssi: dependency_libs
flumotion: dependency_libs
fontforge: dependency_libs
fox1.4: dependency_libs
fox1.6: dependency_libs
fplll: dependency_libs
freefem:
freehdl:
freej: dependency_libs
freetds: depended-on
freetype: depended-on
freewnn:
fribidi: depended-on
fstrcmp:
fuse: depended-on
g15daemon: dependency_libs
gaby: dependency_libs
gajim: dependency_libs
galan: dependency_libs
galib:
gambit:
gamin: depended-on
ganglia: dependency_libs
garmin-forerunner-tools:
gatos:
gcompris: dependency_libs
gconf: depended-on
gconfmm2.6: depended-on
gdal: dependency_libs
gdbm: dependency_libs depended-on
gdesklets: dependency_libs
gdl:
gdome2: dependency_libs depended-on
geany: dependency_libs
geany-plugins: dependency_libs
gearmand: dependency_libs
genders:
genius: dependency_libs
geoclue:
geomview:
geos: dependency_libs depended-on
gerris:
gettext: dependency_libs
gfccore: dependency_libs depended-on
gfcui: dependency_libs
ggobi: dependency_libs
ggz-client-libs: dependency_libs depended-on
ggz-grubby: dependency_libs
ggz-gtk-client: dependency_libs
ggz-server: dependency_libs depended-on
giblib: dependency_libs
giflib: depended-on
gift: dependency_libs depended-on
gift-gnutella: dependency_libs
gift-openft: dependency_libs
gigedit: dependency_libs
giggle: dependency_libs
gimp: dependency_libs
ginac: dependency_libs depended-on
ginspector: dependency_libs
gir-repository: dependency_libs
givaro: dependency_libs depended-on
gksu-polkit: dependency_libs
glib1.2: dependency_libs depended-on
glib2.0: depended-on
glibmm2.4: depended-on
glitz: dependency_libs depended-on
globus-xio-gsi-driver: dependency_libs
globus-xio-popen-driver: dependency_libs
gloox: dependency_libs
glrr: dependency_libs depended-on
glrr-widgets: dependency_libs depended-on
glui:
glusterfs: dependency_libs depended-on
gmerlin: dependency_libs
gmetadom: dependency_libs depended-on
gmime2.2: dependency_libs
gmp: dependency_libs depended-on
gnash:
gnet: dependency_libs
gnokii: dependency_libs depended-on
gnome-applets:
gnome-bluetooth: dependency_libs
gnome-commander: dependency_libs
gnome-do: dependency_libs
gnome-keyring:
gnome-panel:
gnome-pilot-conduits: dependency_libs
gnome-speech: dependency_libs
gnome-utils: dependency_libs
gnome-vfs: depended-on
gnome-vfsmm2.6:
gnomoradio: dependency_libs depended-on
gnucash: dependency_libs
gnuift: dependency_libs depended-on
gnumeric: dependency_libs
gnunet: dependency_libs depended-on
gnunet-gtk: dependency_libs
gnunet-qt: dependency_libs
gnuradio: dependency_libs depended-on
gnu-smalltalk:
gnutls26: dependency_libs depended-on
gobject-introspection: dependency_libs
goffice: dependency_libs
goffice0.4: dependency_libs
google-gadgets: dependency_libs depended-on
google-perftools:
gpcl:
gpe-expenses: dependency_libs depended-on
gpgme1.0: dependency_libs depended-on
gpointing-device-settings: dependency_libs
gpsd: depended-on
gpsim: dependency_libs
gpt:
gregorio: dependency_libs
gretl: dependency_libs
gringotts: dependency_libs
gromacs: dependency_libs
gsasl: dependency_libs depended-on
gsmlib:
gsnmp:
gss: dependency_libs
gst0.10-python: dependency_libs
gstreamer0.10: dependency_libs depended-on
gtask: dependency_libs
gtest: dependency_libs
gtk+2.0: dependency_libs depended-on
gtk2-engines-cleanice: dependency_libs
gtk2-engines-magicchicken: dependency_libs
gtk2-engines-murrine: dependency_libs
gtk+extra2: dependency_libs depended-on
gtkgl2: dependency_libs depended-on
gtkglext: dependency_libs depended-on
gtkglextmm: dependency_libs depended-on
gtkmathview: dependency_libs
gtkmm2.4: depended-on
gts: dependency_libs
guake: dependency_libs
guichan:
guifications: dependency_libs
guile-1.6: dependency_libs depended-on
guile-1.8: dependency_libs depended-on
guile-cairo: dependency_libs depended-on
guile-gnome-platform: dependency_libs depended-on
guile-pg: dependency_libs
gutenprint:
gwget2:
g-wrap: dependency_libs depended-on
gwyddion: dependency_libs
hamlib: dependency_libs
hdf5: dependency_libs depended-on
heartbeat: dependency_libs
heimdal: dependency_libs depended-on
hercules: dependency_libs
hexter: dependency_libs
hfsplus:
hk-classes: dependency_libs depended-on
hocr: dependency_libs
hplip: dependency_libs
htdig:
httrack: dependency_libs
hyantesite:
iax: dependency_libs
iaxclient: dependency_libs
icecc:
id3lib3.8.3: depended-on
idzebra: dependency_libs
ijs:
illuminator: dependency_libs
imagemagick: dependency_libs depended-on
iml: dependency_libs depended-on
imlib2: dependency_libs depended-on
im-sdk: dependency_libs depended-on
inotify-tools:
irssi:
isdnutils:
istanbul: dependency_libs
iterm: dependency_libs
jabberd2: dependency_libs
jags: dependency_libs
jamvm:
jasper: dependency_libs depended-on
jaula:
jcal:
jmp: dependency_libs
juman:
k3d: dependency_libs
kaffe: dependency_libs
kaffeine: dependency_libs
kaffeine-mozilla:
kakasi:
kamefu: dependency_libs
kbfx:
kbiff: dependency_libs
kdebluetooth: dependency_libs
kdelibs: dependency_libs depended-on
keynote:
kftpgrabber: dependency_libs
kino: dependency_libs
kmflcomp: depended-on
kmyfirewall: dependency_libs
knetworkmanager: dependency_libs
knoda: dependency_libs
kpowersave: dependency_libs
kradio: dependency_libs
ksimus-boolean:
ksimus-datarecorder:
ksimus-floatingpoint:
kst: dependency_libs depended-on
ktranslator:
kxl:
ladcca: depended-on
ladr:
lash: dependency_libs depended-on
lasso: dependency_libs
last-exit: dependency_libs
lcms: depended-on
lib3ds:
libaal: depended-on
libalberta2: dependency_libs
libannodex: dependency_libs
libao: dependency_libs depended-on
libapreq2: dependency_libs depended-on
libaqbanking: dependency_libs
libarchive: dependency_libs
libart-lgpl: depended-on
libassa:
libast: dependency_libs depended-on
libavc1394: dependency_libs depended-on
libavg: dependency_libs
libax25:
libbft:
libbind:
libbinio: depended-on
libbitmask: depended-on
libbonobo: depended-on
libbonoboui: depended-on
libbtparse:
libbuffy: dependency_libs
libbuffy-bindings: dependency_libs
libcaca: dependency_libs
libcapsinetwork:
libccaudio2: dependency_libs depended-on
libccrtp: dependency_libs depended-on
libccscript3: dependency_libs depended-on
libcdaudio: depended-on
libcddb: depended-on
libcdio: dependency_libs depended-on
libcgicc:
libchipcard: dependency_libs depended-on
libcmml: dependency_libs depended-on
libcommoncpp2: dependency_libs depended-on
libconfig:
libcontactsdb: dependency_libs
libcorelinux:
libcoyotl:
libcpuset: dependency_libs
libcroco: depended-on
libcrypto++:
libctl: dependency_libs
libcwd:
libcxgb3: dependency_libs
libdbi: dependency_libs depended-on
libdbi-drivers: dependency_libs
libdc0: dependency_libs
libdca:
libdebian-installer: dependency_libs
libdiscid:
libdmtx:
libdnsres:
libdrizzle: depended-on
libdshconfig:
libdumbnet:
libdv: depended-on
libdvbpsi4:
libdvbpsi5:
libengine-tpm-openssl:
libesmtp:
libetpan: dependency_libs
libevocosm:
libewf:
libexif: dependency_libs depended-on
libexif-gtk: dependency_libs
libexosip2: dependency_libs depended-on
libexplain:
libextractor: dependency_libs depended-on
libextractor-java: dependency_libs
libfann1:
libfcgi: dependency_libs depended-on
libftdi: dependency_libs depended-on
libfvm:
libg15: dependency_libs depended-on
libg15render: dependency_libs depended-on
libg3d: dependency_libs depended-on
libgarmin: depended-on
libgc: dependency_libs depended-on
libgcal: dependency_libs
libgcgi:
libgcrypt11: dependency_libs depended-on
libgd2: dependency_libs depended-on
libgda3: dependency_libs
libgeda: dependency_libs
libgeier: dependency_libs
libgenome:
libggi: dependency_libs depended-on
libggigcp: dependency_libs
libggimisc: dependency_libs
libggiwmh: dependency_libs
libggz: dependency_libs depended-on
libghttp:
libgig: depended-on
libgii: dependency_libs depended-on
libgiigic: dependency_libs
libglade2: depended-on
libglademm2.4: depended-on
libgnome: depended-on
libgnomecanvas: depended-on
libgnomecanvasmm2.6:
libgnomemm2.6:
libgnomeui: depended-on
libgnupdf: dependency_libs
libgpeschedule: dependency_libs
libgpg-error: depended-on
libgphoto2: dependency_libs
libgpod: dependency_libs depended-on
libgringotts: dependency_libs
libgtkdatabox: dependency_libs depended-on
libgwenhywfar: dependency_libs
libhandoff: dependency_libs
libhangul:
libhdate:
libhdf4: dependency_libs depended-on
libhid: dependency_libs depended-on
libhx:
libibtk:
libibverbs: depended-on
libicc: depended-on
libicns: dependency_libs
libid3tag: depended-on
libidl: dependency_libs depended-on
libidn: depended-on
libieee1284: depended-on
libifp: dependency_libs
libiodbc2: dependency_libs depended-on
libipathverbs: dependency_libs
libiphone: dependency_libs depended-on
libiptcdata:
libircclient:
libisoburn: dependency_libs
libisofs: depended-on
libitpp: dependency_libs
libjpeg6b: depended-on
libjpeg7: depended-on
libkate: dependency_libs depended-on
libkipi: dependency_libs
libkmfl: dependency_libs depended-on
libksba: dependency_libs
liblicense: dependency_libs
liblinebreak:
liblip:
liblo: depended-on
liblouis:
liblouisxml:
liblqr: dependency_libs depended-on
liblscp:
libm4ri:
libmad: depended-on
libmatchbox: dependency_libs
libmath++:
libmatheval:
libmatio: depended-on
libmcrypt: depended-on
libmemcache: dependency_libs
libmemcached: dependency_libs
libmicrohttpd:
libmikmod: depended-on
libmimedir: depended-on
libmlx4: dependency_libs
libmodelfile:
libmp3splt: dependency_libs
libmpcdec: depended-on
libmpd: dependency_libs
libmrss: dependency_libs
libmthca: dependency_libs
libmtp: dependency_libs
libmusclecard: dependency_libs
libmusicbrainz-2.1: dependency_libs depended-on
libnasl: dependency_libs
libnbio:
libnet:
libnjb: dependency_libs
libnoise:
libnotify: dependency_libs depended-on
libnova:
libntlm: depended-on
libnxml: dependency_libs depended-on
libnzb: dependency_libs
libofa: dependency_libs depended-on
libofx: dependency_libs depended-on
liboggz: depended-on
libopenraw: dependency_libs depended-on
libopensync-plugin-evolution2: dependency_libs
libopensync-plugin-file: dependency_libs
libopensync-plugin-gnokii: dependency_libs
libopensync-plugin-google-calendar: dependency_libs
libopensync-plugin-gpe: dependency_libs
libopensync-plugin-irmc: dependency_libs
libopensync-plugin-kdepim: dependency_libs
libopensync-plugin-opie: dependency_libs
libopensync-plugin-palm: dependency_libs
libopensync-plugin-python: dependency_libs
libopensync-plugin-sunbird: dependency_libs
libopensync-plugin-syncml: dependency_libs
liboping:
libopkele: dependency_libs
libosip2: dependency_libs depended-on
libotf: dependency_libs
libotr: dependency_libs
libp11: dependency_libs
libpano12: dependency_libs
libpano13: dependency_libs
libpar2: dependency_libs
libparagui1.1: dependency_libs
libpcl1:
libpcre++:
libphidgets: dependency_libs
libppd: dependency_libs
libpqxx:
libpqxx3:
libprelude: dependency_libs depended-on
libpreludedb: dependency_libs depended-on
libprinterconf:
libprintsys: dependency_libs
libquantum:
libranlip:
librapi2: dependency_libs depended-on
libraw1394: depended-on
librcc: dependency_libs
librcd:
librdmacm: dependency_libs
librep: dependency_libs depended-on
librest: dependency_libs
librra: dependency_libs depended-on
librsync: dependency_libs
librtfcomp:
libsamplerate: depended-on
libsdl1.2: depended-on
libsdl-sound1.2: dependency_libs
libsexymm: dependency_libs
libshout: dependency_libs
libsidplay:
libsieve:
libsigc++: depended-on
libsigc++-1.2: depended-on
libsigc++-2.0: depended-on
libsmi: depended-on
libsndfile: dependency_libs depended-on
libsoundgen: dependency_libs
libspectre:
libspf:
libspf2:
libspiro: depended-on
libsrs2:
libssh: dependency_libs
libstatgrab:
libstroke:
libsylph: dependency_libs
libsynce: dependency_libs depended-on
libtabe: depended-on
libtasn1-3: depended-on
libtcd:
libtextwrap:
libtheora: depended-on
libticables3: dependency_libs depended-on
libticalcs4: dependency_libs
libtifiles0: depended-on
libtomcrypt:
libtommath: depended-on
libtool: depended-on
libtorrent: dependency_libs
libtorrent-rasterbar:
libtrace3:
libtrain:
libtunepimp: dependency_libs
libuninameslist: depended-on
libuninum: dependency_libs
libunistring:
libupnp: dependency_libs depended-on
libupnp4: dependency_libs depended-on
libusb: dependency_libs depended-on
libusb-1.0:
libuser: dependency_libs
libview: dependency_libs
libvigraimpex: dependency_libs
libvmime: dependency_libs
libvoikko: dependency_libs depended-on
libvorbis: dependency_libs depended-on
libvorbisidec:
libvuurmuur:
libwfut: dependency_libs
libwmf: dependency_libs depended-on
libxbase: depended-on
libxcrypt:
libxdg-basedir:
libxklavier:
libxml++: dependency_libs depended-on
libxml2: depended-on
libxml++2.6: dependency_libs depended-on
libxsettings-client: depended-on
libxslt: dependency_libs depended-on
libyada: dependency_libs
libyahoo2: dependency_libs
libyaml:
libydpdict:
libytnef:
libzorpll: dependency_libs
libzrtpcpp: dependency_libs
licq: dependency_libs
liferea: dependency_libs
linbox: dependency_libs
lineakd: depended-on
lineak-defaultplugin: dependency_libs
lineak-kdeplugins: dependency_libs
lineak-xosdplugin: dependency_libs
link-grammar:
linphone: dependency_libs depended-on
linux-ntfs: dependency_libs depended-on
lirc: depended-on
lksctp-tools:
llvm:
llvm-gcc-4.2:
lnpd:
log4c: dependency_libs
log4cxx: dependency_libs
lpe:
lttoolbox: dependency_libs depended-on
lua5.1: depended-on
lua-bitop:
lua-curl: dependency_libs
lua-expat: dependency_libs
lua-filesystem:
lua-lpeg:
lua-md5:
lua-posix:
lua-rings:
lua-sec:
luasocket:
lua-sql: dependency_libs
lua-svn: dependency_libs
lua-wsapi: dependency_libs
lua-zip: dependency_libs
lwipv6: dependency_libs
lwp: depended-on
lxc:
lzo2:
mailutils: dependency_libs
malaga: dependency_libs depended-on
maloc:
mathgl: dependency_libs
mcpp:
mdbtools: dependency_libs depended-on
meanwhile: dependency_libs
mecab:
med-fichier: dependency_libs
menu-cache: dependency_libs
mercator: dependency_libs depended-on
mhash: depended-on
mimelib1:
mingw32:
minpack:
mirrordir:
mlview:
mm: dependency_libs depended-on
mnogosearch: dependency_libs depended-on
moc: dependency_libs
mod-bt: dependency_libs depended-on
modlogan: dependency_libs
modxslt: dependency_libs
mona: dependency_libs
moodbar: dependency_libs
mp4h:
mpclib: dependency_libs
mpeg2dec: depended-on
mpfi: dependency_libs
mpfr: dependency_libs depended-on
mpg123: dependency_libs
mpqc:
multisync: dependency_libs
munge: depended-on
muse: dependency_libs
music: dependency_libs depended-on
mysql-dfsg-5.1: depended-on
mysql-proxy: dependency_libs
namazu2:
nautilus-image-converter: dependency_libs
nautilus-python: dependency_libs
navit: dependency_libs
nco: dependency_libs
nekobee: dependency_libs
nel: dependency_libs
nemiver: dependency_libs
nepenthes: dependency_libs
nessus-libraries:
net6: dependency_libs depended-on
netatalk: dependency_libs
net-snmp: dependency_libs depended-on
network-manager-openconnect: dependency_libs
network-manager-strongswan: dependency_libs
newlib: dependency_libs
newmat:
newpki-lib: depended-on
newpki-server: dependency_libs
ng-spice-rework:
nilfs2-tools:
noteedit: dependency_libs
ntop: dependency_libs
nufw: dependency_libs
nut: dependency_libs depended-on
nvidia-graphics-drivers: depended-on
nvidia-graphics-drivers-legacy-173xx: depended-on
nvidia-graphics-drivers-legacy-71xx: depended-on
nvidia-graphics-drivers-legacy-96xx: depended-on
nxcl:
obby: dependency_libs
ogre: dependency_libs depended-on
ogre-contrib: dependency_libs
ois:
ontv: dependency_libs
openbabel: depended-on
openbox: dependency_libs
openc++: dependency_libs
opencascade: dependency_libs depended-on
open-cobol: dependency_libs
opencryptoki: dependency_libs
openct: dependency_libs depended-on
opencv: dependency_libs depended-on
openexr: depended-on
openipmi: dependency_libs
openjade:
openldap: dependency_libs
openmpi: dependency_libs depended-on
openocd: dependency_libs
opensc: dependency_libs depended-on
openscap: dependency_libs
openslp-dfsg:
opensp: depended-on
opensync: dependency_libs depended-on
openturns: dependency_libs depended-on
openvas-libnasl: dependency_libs
openvas-libraries: dependency_libs depended-on
open-vm-tools: dependency_libs
oprofile:
orbit2: dependency_libs depended-on
orsa: dependency_libs depended-on
osgal: dependency_libs
osgcal: dependency_libs
osptoolkit:
osspsa:
ossp-uuid:
ots: dependency_libs
paintlib: dependency_libs
pam-dbus: dependency_libs
pam-pkcs11: dependency_libs
pango1.0: depended-on
pangomm: depended-on
papaya: dependency_libs
parted:
pcsc-lite: depended-on
pcsx-df: dependency_libs
perdition: dependency_libs
pfqueue:
pfstools:
phat: dependency_libs
pidgin-blinklight:
pidgin-festival:
pidgin-hotkeys: dependency_libs
pidgin-libnotify: dependency_libs
pidgin-librvp: dependency_libs
pidgin-mpris: dependency_libs
pidgin-privacy-please: dependency_libs
pilot-link: dependency_libs depended-on
pilot-qof: dependency_libs
pinball: dependency_libs
player: dependency_libs depended-on
plib: dependency_libs depended-on
plotutils: depended-on
plptools:
popt: depended-on
portaudio: dependency_libs depended-on
portaudio19: dependency_libs depended-on
powerman:
prelude-lml:
prelude-manager: dependency_libs
privbind:
proftpd-dfsg: dependency_libs
proj: depended-on
protobuf: dependency_libs depended-on
protobuf-c:
proxychains:
psiconv: depended-on
pslib: dependency_libs
pspp: dependency_libs
psqlodbc: dependency_libs
pstoedit: dependency_libs depended-on
pth: depended-on
purelibc:
python-visual: dependency_libs
qd:
qfits:
qhull:
qingy:
qof: dependency_libs depended-on
qpdf:
qrencode:
qt-x11-free: depended-on
quagga:
quantlib:
quesoglc: dependency_libs
radiusclient:
radiusclient-ng:
rapidsvn: dependency_libs
raptor: depended-on
rasqal: dependency_libs
recode:
redland:
regina-normal: dependency_libs
reiser4progs: dependency_libs
remctl:
rep-gtk: dependency_libs
rlog: depended-on
rpc2: dependency_libs
rrdtool: dependency_libs depended-on
rss-glx:
rtai:
rubrica:
rudiments: depended-on
rvm: dependency_libs
rxtx:
sablotron: dependency_libs
sage: dependency_libs
sane-backends: dependency_libs depended-on
sane-backends-extras: dependency_libs
sary:
sawfish: dependency_libs
sbnc: dependency_libs depended-on
scanbuttond: dependency_libs
scilab: dependency_libs
scim: dependency_libs depended-on
scim-anthy: dependency_libs
scim-canna: dependency_libs
scim-kmfl-imengine: dependency_libs
scim-prime: dependency_libs
scim-skk: dependency_libs
sdate:
sdlgfx: dependency_libs
sdl-image1.2: dependency_libs depended-on
sdl-mixer1.2: dependency_libs depended-on
sdl-net1.2: dependency_libs
sdl-stretch: dependency_libs
sdl-ttf2.0: dependency_libs
sensors-applet: dependency_libs
serf: dependency_libs
sfst:
sg3-utils:
shibboleth-sp2: dependency_libs
shishi: dependency_libs depended-on
sidplay-libs: dependency_libs depended-on
sigcperl: dependency_libs
sigscheme: dependency_libs depended-on
simage: dependency_libs
simplelist:
siproxd: dependency_libs
skim:
skstream: depended-on
skyutils:
sleuthkit:
slurm-llnl: dependency_libs depended-on
smilutils: dependency_libs
smpeg: dependency_libs depended-on
snacc:
snappea:
snmpkit:
snort: dependency_libs
soci: dependency_libs
sofia-sip: dependency_libs
soqt: dependency_libs
soundtouch:
spandsp: dependency_libs
spatialindex:
spatialite: dependency_libs
speech-dispatcher: dependency_libs
sp-gxmlcpp: dependency_libs
sphinx2:
splashy: dependency_libs
sqlite: dependency_libs depended-on
sqlite3: depended-on
sqliteodbc: dependency_libs
sqlrelay: dependency_libs
sqlxx: dependency_libs
squeeze: dependency_libs
ssdeep:
staden-io-lib:
stage: dependency_libs depended-on
strongswan: dependency_libs
strutilsxx: depended-on
stunnel4:
styx: dependency_libs
subtitleeditor: dependency_libs depended-on
subversion: depended-on
sugar-artwork: dependency_libs
sugar-artwork-0.84: dependency_libs
sugar-base: dependency_libs
sugar-base-0.84: dependency_libs
sugar-datastore-0.84:
sugar-hulahop: dependency_libs
sugar-toolkit: dependency_libs
sugar-toolkit-0.84: dependency_libs
sugar-toolkit-0.86: dependency_libs
sundials:
swami: dependency_libs
swish-e:
sword: dependency_libs
sylpheed: dependency_libs
synce-multisync-plugin: dependency_libs
synce-trayicon: dependency_libs
synfig: dependency_libs depended-on
t1lib: dependency_libs depended-on
tablix2:
tagcoll2:
taktuk:
tangerine:
taskjuggler: dependency_libs
tclreadline:
tex-guy: dependency_libs
tidy: depended-on
tiff: dependency_libs depended-on
tijmp:
tntdb: dependency_libs
tntnet: dependency_libs depended-on
tomcat-native: dependency_libs
tork:
towitoko:
tpm-tools: dependency_libs
tqsllib: dependency_libs
tre: dependency_libs depended-on
treil:
trousers: depended-on
tslib: dependency_libs
tulip: dependency_libs depended-on
twolame:
ucl:
uim: dependency_libs depended-on
ultrastar-ng: dependency_libs
umview:
unac:
unbound:
unicap: dependency_libs depended-on
unixodbc: dependency_libs depended-on
unshield:
uptimed:
usbip:
usbprog: dependency_libs
userinfo:
util-vserver: dependency_libs
vamp-plugin-sdk:
vanessa-adt: dependency_libs depended-on
vanessa-logger: depended-on
vanessa-socket: dependency_libs depended-on
varconf: dependency_libs
varnish:
vcdimager: dependency_libs
vde2: depended-on
vdk2: dependency_libs depended-on
vdkbuilder2: dependency_libs
vdkxdb2: dependency_libs depended-on
verbiste: dependency_libs
vflib3: depended-on
vips: dependency_libs depended-on
virt-manager: dependency_libs
vls:
volpack:
v-sim: dependency_libs
vzctl:
w3c-libwww: dependency_libs depended-on
waili: dependency_libs
webauth:
wfmath: depended-on
wfnetobjs:
whysynth: dependency_libs
wireshark: dependency_libs
wmaker: dependency_libs
wordnet:
wsynth-dssi: dependency_libs
wzdftpd:
xapian-core:
xar:
xbae: dependency_libs
xbsql: dependency_libs depended-on
xchat: dependency_libs
xchat-guile: dependency_libs
xcin: dependency_libs
xdb: dependency_libs depended-on
xdelta: dependency_libs
xenomai:
xerces-c:
xfsprogs:
xmedcon: dependency_libs
xmlrpc-c:
xmlrpc-epi: dependency_libs
xmlsec1: dependency_libs depended-on
xmorph:
xosd: dependency_libs depended-on
xracer: dependency_libs
xsynth-dssi: dependency_libs
yaz: dependency_libs depended-on
zbar: dependency_libs depended-on
zinnia:
zorp: dependency_libs depended-on
zvbi:
zziplib: dependency_libs depended-on
Andreas Barth
2009-08-24 22:45:56 UTC
Permalink
Post by Andreas Barth
1. "no flag" to remove the la-file on next occasion
2. only "dependency_libs" to remove their la-file RSN, because they
block removal of the la-files on another package (this flag can be
wrongly hit if a package depends only on itself - but well,
dropping the la-file is recommended as well here as with 1.)
3. only "depended-on" to do nothing at this time
4. with both "dependency_libs depended-on" to use
sed -i "s,^dependency_libs=.*,dependency_libs='',"
on all their la-files (I took care that self-dependencies don't
appear in this category, but rather in 1 or 2).
Updated the list and put it on http://alius.ayous.org/~aba/la-view.txt
and updated in () the packages that depend on the current package.


Also I was asked how I go the "dependend-on" information. I got it by
actually looking into the la-files (and of course there are also great
dependencies like on
/build/buildd-speech-dispatcher_0.6.7-4-i386-1NmUM9/speech-dispatcher-0.6.7/debian/speech-dispatcher/usr/lib/libspeechd.la
but well ...), so the information is mostly accurate (the bad thing on
*.la files is that we don't know which ones will really make us
trouble, until it is too late).



Cheers,
Andi
Emilio Pozuelo Monfort
2009-08-24 22:48:33 UTC
Permalink
Post by Andreas Barth
Updated the list and put it on http://alius.ayous.org/~aba/la-view.txt
and updated in () the packages that depend on the current package.
Can you also create a dd-list list?

Thanks,
Emilio
Kartik Mistry
2009-08-25 07:31:13 UTC
Permalink
On Tue, Aug 25, 2009 at 4:18 AM, Emilio Pozuelo
Post by Emilio Pozuelo Monfort
Post by Andreas Barth
Updated the list and put it on http://alius.ayous.org/~aba/la-view.txt
and updated in () the packages that depend on the current package.
Can you also create a dd-list list?
I have created it here:
http://people.debian.org/~kartik/docs/la-removal-dd-list.txt

If something is missing, blame it to me :)
--
Cheers,
Kartik Mistry | 0xD1028C8D | IRC: kart_
Debian GNU/Linux Developer
Blogs: {ftbfs, kartikm}.wordpress.com
Andreas Barth
2009-08-25 19:06:26 UTC
Permalink
Post by Andreas Barth
Post by Andreas Barth
1. "no flag" to remove the la-file on next occasion
2. only "dependency_libs" to remove their la-file RSN, because they
block removal of the la-files on another package (this flag can be
wrongly hit if a package depends only on itself - but well,
dropping the la-file is recommended as well here as with 1.)
3. only "depended-on" to do nothing at this time
4. with both "dependency_libs depended-on" to use
sed -i "s,^dependency_libs=.*,dependency_libs='',"
on all their la-files (I took care that self-dependencies don't
appear in this category, but rather in 1 or 2).
and updated in () the packages that depend on the current package.
Updated the list again, this time to http://ries.debian.org/~aba/la/
and will automatically update twice per day. A dd-list will follow
soon - not today though (will probably integrate it in the
~200-lines-python-script I'm running now)

I also added links-not-existing-la which means that this package
has la-files that reference to la-files that are not in Debian, at
least not in unstable on that architecture.

The lists are now generated for i386, amd64, armel, and triggering a
flag on one architecture triggers it in the final output.



Cheers,
Andi
Josselin Mouette
2009-08-25 08:27:54 UTC
Permalink
This is a false positive. xmodmap.la is about the “la” locale, it’s not
a libtool file.

Cheers,
--
.''`. Josselin Mouette
: :' :
`. `' “I recommend you to learn English in hope that you in
`- future understand things” -- Jörg Schilling
Andreas Barth
2009-08-25 09:05:44 UTC
Permalink
This is a false positive. xmodmap.la is about the “la” locale, it’s not
a libtool file.
Thanks. I think I'll exclude the directory /usr/share/xmodmap/ as
well.


Cheers,
Andi
--
To UNSUBSCRIBE, email to debian-devel-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Julien Cristau
2009-08-25 10:18:04 UTC
Permalink
Post by Andreas Barth
This is a false positive. xmodmap.la is about the “la” locale, it’s not
a libtool file.
Thanks. I think I'll exclude the directory /usr/share/xmodmap/ as
well.
You should exclude anything that isn't /usr/lib IMO.

Cheers,
Julien
--
To UNSUBSCRIBE, email to debian-devel-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Andreas Barth
2009-08-25 18:55:04 UTC
Permalink
Post by Julien Cristau
Post by Andreas Barth
This is a false positive. xmodmap.la is about the “la” locale, it’s not
a libtool file.
Thanks. I think I'll exclude the directory /usr/share/xmodmap/ as
well.
You should exclude anything that isn't /usr/lib IMO.
And not /lib and not /lib{32,64} and not /usr/lib{32,64}, ...

I'm not decided yet which route to take (exclude or include) -
probably after a few more false positives it will be include, but for
now it's still exclude.



Cheers,
Andi
--
To UNSUBSCRIBE, email to debian-devel-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Julien Cristau
2009-08-25 19:04:26 UTC
Permalink
Post by Andreas Barth
Post by Julien Cristau
You should exclude anything that isn't /usr/lib IMO.
And not /lib and not /lib{32,64} and not /usr/lib{32,64}, ...
/lib shouldn't contain any libtool file (just like it doesn't contain
the .so symlinks)
/usr/lib{32,64} are irrelevant IMO, but sure, why not...

Cheers,
Julien
Andreas Barth
2009-08-25 19:09:12 UTC
Permalink
Post by Julien Cristau
Post by Andreas Barth
Post by Julien Cristau
You should exclude anything that isn't /usr/lib IMO.
And not /lib and not /lib{32,64} and not /usr/lib{32,64}, ...
/lib shouldn't contain any libtool file (just like it doesn't contain
the .so symlinks)
Just that alone 37 packages depend on /lib/libacl.la. That's why I'm
not feeling so happy to restrict to /usr/lib.


Cheers,
Andi
Yves-Alexis Perez
2009-08-25 08:26:05 UTC
Permalink
Post by Andreas Barth
2. only "dependency_libs" to remove their la-file RSN, because they
block removal of the la-files on another package (this flag can be
wrongly hit if a package depends only on itself - but well,
dropping the la-file is recommended as well here as with 1.)
I have a package (gtk2-engine-murrine) present there (with a
dependency_libs: and which is present in depended_on of other packages)
but doesn't ship any .la file. What's the problem and how can I solve
it?

Cheers,
--
Yves-Alexis
Andreas Barth
2009-08-25 09:04:46 UTC
Permalink
Post by Yves-Alexis Perez
Post by Andreas Barth
2. only "dependency_libs" to remove their la-file RSN, because they
block removal of the la-files on another package (this flag can be
wrongly hit if a package depends only on itself - but well,
dropping the la-file is recommended as well here as with 1.)
I have a package (gtk2-engine-murrine) present there (with a
dependency_libs: and which is present in depended_on of other packages)
but doesn't ship any .la file. What's the problem and how can I solve
it?
Looking at the package, /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.la
looks like an la-file to me. As your package is only with
dependency_libs, you could drop that file on building the package
(depending on your installation method remove it from the debhelper
install file, just remove it in debian/rules, or whatever else is
needed).


Cheers,
Andi
Yves-Alexis Perez
2009-08-25 09:07:14 UTC
Permalink
Post by Andreas Barth
Looking at the package, /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.la
looks like an la-file to me. As your package is only with
dependency_libs, you could drop that file on building the package
(depending on your installation method remove it from the debhelper
install file, just remove it in debian/rules, or whatever else is
needed).
Correct, I missed the fact that you were looking on i386. I used amd64
and there is no .la file in the package I built, but there is one on the
packages buildd did.

Cheers,
--
Yves-Alexis
Peter Samuelson
2009-08-25 03:28:04 UTC
Permalink
[Andreas Barth]
Post by Andreas Barth
The idea is to ask all maintainers of the 672 packages to drop their
*.la-file unless really needed, and any maintainer of any package to
empty the dependency_libs.
As far as I know, there are 3 ways to handle static linking:
1) Document somehow what a real link line will look like, or let people
figure it out on their own;
2) libtool;
3) pkg-config.

So, my upstream does not ship .pc files. I've thought about creating
my own .pc files and trying to push them upstream, but haven't got
around to it yet. Therefore, if I empty dependency_libs, anyone
wanting static linking of my library will have to know, a priori, what
its dependent libraries are. Is this OK, or should I wait until I have
time to produce .pc files?
--
Peter Samuelson | org-tld!p12n!peter | http://p12n.org/
Russ Allbery
2009-08-25 03:42:40 UTC
Permalink
Post by Peter Samuelson
1) Document somehow what a real link line will look like, or let people
figure it out on their own;
2) libtool;
3) pkg-config.
So, my upstream does not ship .pc files. I've thought about creating
my own .pc files and trying to push them upstream, but haven't got
around to it yet. Therefore, if I empty dependency_libs, anyone
wanting static linking of my library will have to know, a priori, what
its dependent libraries are. Is this OK, or should I wait until I have
time to produce .pc files?
It depends somewhat on the library, but for the average library these
days, I suspect no one is bothering with static linking. There are a few
special exceptions, but it's been quite some time since anyone's asked me
about static linking for any of the libraries I maintain as upstream.

I know of upstreams that have dropped static linking entirely, including
MIT Kerberos. That wasn't a completely uncontroversial decision, and they
may introduce it down the road, but the number of people objecting wasn't
that high and I believe it was entirely people using non-Linux systems.
--
Russ Allbery (***@debian.org) <http://www.eyrie.org/~eagle/>
Paul Wise
2009-08-25 03:59:07 UTC
Permalink
I've just sent libtool upstream a mail referencing this thread and
also my dependency_libs_shared idea:

http://lists.debian.org/debian-release/2009/08/msg00218.html

Hopefully they will implement something useful so that static linking
with libtool is still viable.
--
bye,
pabs

http://wiki.debian.org/PaulWise
Paul Wise
2009-08-26 04:16:46 UTC
Permalink
Post by Paul Wise
I've just sent libtool upstream a mail referencing this thread and
http://lists.debian.org/debian-release/2009/08/msg00218.html
Hopefully they will implement something useful so that static linking
with libtool is still viable.
Summarizing the upstream thread, it seems the solution they prefer is
to just ignore dependency_libs when linking dynamically. Is there any
situation where that wouldn't work in Debian? pkg-config has both
Libs/Requires and Libs.private/Requires.private so there must be some
kind of use-case where stuff linking to shared-lib libfoo also has to
link with libbar?
--
bye,
pabs

http://wiki.debian.org/PaulWise
Steve Langasek
2009-08-26 04:37:50 UTC
Permalink
Post by Paul Wise
Summarizing the upstream thread, it seems the solution they prefer is
to just ignore dependency_libs when linking dynamically.
That should be reasonable.
Post by Paul Wise
Is there any situation where that wouldn't work in Debian? pkg-config has
both Libs/Requires and Libs.private/Requires.private so there must be some
kind of use-case where stuff linking to shared-lib libfoo also has to
link with libbar?
Mostly to accomodate gtk+ upstream, who insist that it's reasonable for
software to #include <gtk.h> and then use glib types in their code. I don't
think this has an analogue in the libtool world.
--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer http://www.debian.org/
***@ubuntu.com ***@debian.org
Felipe Sateler
2009-08-26 04:53:06 UTC
Permalink
Post by Steve Langasek
Post by Paul Wise
Summarizing the upstream thread, it seems the solution they prefer is
to just ignore dependency_libs when linking dynamically.
That should be reasonable.
Post by Paul Wise
Is there any situation where that wouldn't work in Debian? pkg-config has
both Libs/Requires and Libs.private/Requires.private so there must be
some kind of use-case where stuff linking to shared-lib libfoo also has
to link with libbar?
Mostly to accomodate gtk+ upstream, who insist that it's reasonable for
software to #include <gtk.h> and then use glib types in their code. I
don't think this has an analogue in the libtool world.
But:
% objdump -p /usr/lib/libgtk-x11-2.0.so.0.1600.5 | grep glib
NEEDED libglib-2.0.so.0

If gkt+ encourages using glib types, there is no problem while gtk itself
uses glib types, as far as I can see. Or is there something I'm missing?

Saludos,
Felipe Sateler
Russ Allbery
2009-08-26 05:33:34 UTC
Permalink
Post by Felipe Sateler
% objdump -p /usr/lib/libgtk-x11-2.0.so.0.1600.5 | grep glib
NEEDED libglib-2.0.so.0
If gkt+ encourages using glib types, there is no problem while gtk itself
uses glib types, as far as I can see. Or is there something I'm missing?
The application that uses glib types has to link directly against glib, or
if the SONAME of glib changes and gtk's doesn't, the application will fail
in some nasty ways. (It may be that the library management practices of
those two projects ensures this doesn't happen, but it really should be
enforced technically.)
--
Russ Allbery (***@debian.org) <http://www.eyrie.org/~eagle/>
Felipe Sateler
2009-08-26 06:08:40 UTC
Permalink
Post by Russ Allbery
Post by Felipe Sateler
% objdump -p /usr/lib/libgtk-x11-2.0.so.0.1600.5 | grep glib
NEEDED libglib-2.0.so.0
If gkt+ encourages using glib types, there is no problem while gtk itself
uses glib types, as far as I can see. Or is there something I'm missing?
The application that uses glib types has to link directly against glib, or
if the SONAME of glib changes and gtk's doesn't, the application will fail
in some nasty ways. (It may be that the library management practices of
those two projects ensures this doesn't happen, but it really should be
enforced technically.)
But this will cause trouble anyway. Imagine this case: glib changes SONAME,
both app and library depend on glib. app is recompiled, gtk isn't yet.So
then app NEEDED libglib-2.0.so.1, gtk NEEDED libglib-2.0.so.0. Kaboom! The
only real solution is to make gtk's SONAME dependent on glib's, eg libgtk-
x11-2.0.so.0-glib-1 (a la boost upstream with gcc versions).
--
Felipe Sateler
Russ Allbery
2009-08-26 06:24:37 UTC
Permalink
Post by Felipe Sateler
But this will cause trouble anyway. Imagine this case: glib changes
SONAME, both app and library depend on glib. app is recompiled, gtk
isn't yet.So then app NEEDED libglib-2.0.so.1, gtk NEEDED
libglib-2.0.so.0. Kaboom!
That's what symbol versioning is for, in the general case. Provided that
each library provides its own functions for accessing its own objects and
doesn't let you look under the hood into objects that are directly based
on underlying library ABIs, this normally works. The specific case of gtk
and glib is incestuous in ways that makes it hard to come up with a robust
solution.
--
Russ Allbery (***@debian.org) <http://www.eyrie.org/~eagle/>
Josselin Mouette
2009-08-26 08:41:05 UTC
Permalink
Post by Russ Allbery
That's what symbol versioning is for, in the general case. Provided that
each library provides its own functions for accessing its own objects and
doesn't let you look under the hood into objects that are directly based
on underlying library ABIs, this normally works. The specific case of gtk
and glib is incestuous in ways that makes it hard to come up with a robust
solution.
This is the reason why GLib/GObject has the strongest API/ABI stability
requirements of all libraries from the GNOME platform. When it changes
in an incompatible way, we will need new versions for all libraries
using the GLib types or GObject system.
--
.''`. Josselin Mouette
: :' :
`. `' “I recommend you to learn English in hope that you in
`- future understand things” -- Jörg Schilling
Steve Langasek
2009-08-26 06:26:42 UTC
Permalink
Post by Felipe Sateler
But this will cause trouble anyway. Imagine this case: glib changes SONAME,
both app and library depend on glib. app is recompiled, gtk isn't yet.So
then app NEEDED libglib-2.0.so.1, gtk NEEDED libglib-2.0.so.0. Kaboom! The
only real solution is to make gtk's SONAME dependent on glib's, eg libgtk-
x11-2.0.so.0-glib-1 (a la boost upstream with gcc versions).
That's what symbol versioning is for.
--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer http://www.debian.org/
***@ubuntu.com ***@debian.org
Felipe Sateler
2009-08-26 07:46:36 UTC
Permalink
Post by Steve Langasek
Post by Felipe Sateler
But this will cause trouble anyway. Imagine this case: glib changes
SONAME, both app and library depend on glib. app is recompiled, gtk isn't
yet.So then app NEEDED libglib-2.0.so.1, gtk NEEDED libglib-2.0.so.0.
Kaboom! The only real solution is to make gtk's SONAME dependent on
glib's, eg libgtk- x11-2.0.so.0-glib-1 (a la boost upstream with gcc
versions).
I think I should have added that the app does not have to link directly with
glib.
Post by Steve Langasek
That's what symbol versioning is for.
struct _GtkTextChildAnchor
{
GObject parent_instance;

gpointer GSEAL (segment);
};

You lost anyway. If GObject or gpointer changes, symbol versioning doesn't
save you because _GtkTextChildAnchor is a public type (granted, GObject or
gpointer aren't likely to change incompatibly, but I'm sure you can find
other examples where changes are more likely).

Saludos,
Felipe Sateler
Peter Samuelson
2009-09-03 14:17:36 UTC
Permalink
[Paul Wise]
Post by Paul Wise
Summarizing the upstream thread, it seems the solution they prefer is
to just ignore dependency_libs when linking dynamically.
Sounds good to me. I can't comment on the Libs/Libs.private split,
except that if Steve is right and this is mostly for Gtk, they're
already pretty married to pkg-config, so I wouldn't think libtool would
have to support this.

Does upstream have a timeline? After they make the change, how long
before we in Debian can assume our issues are all addressed? I ask
because most upstreams include a private copy of libtool, and I don't
know if we'd feel as though we need to accommodate that.
--
Peter Samuelson | org-tld!p12n!peter | http://p12n.org/
Continue reading on narkive:
Loading...