Date: Thu, 07 Aug 2014 19:13:25 +0200 From: Matthias Andree <matthias.andree@gmx.de> To: Vsevolod Stakhov <vsevolod@FreeBSD.org>, Tijl Coosemans <tijl@FreeBSD.org> Cc: svn-ports-head@freebsd.org, svn-ports-all@freebsd.org, ports-committers@freebsd.org Subject: Re: svn commit: r364287 - head/ports-mgmt/pkg-devel Message-ID: <53E3B3B5.9000104@gmx.de> In-Reply-To: <53E3AD09.2050000@FreeBSD.org> References: <53e39939.55bc.4ca5432c@svn.freebsd.org> <20140807172841.58633e63@kalimero.tijl.coosemans.org> <53E3A468.5050603@FreeBSD.org> <53E3AC0C.5020904@gmx.de> <53E3AD09.2050000@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Am 07.08.2014 um 18:44 schrieb Vsevolod Stakhov: > On 07/08/14 17:40, Matthias Andree wrote: >> Am 07.08.2014 um 18:08 schrieb Vsevolod Stakhov: >> >>> Due to mainly [2] there are a lot of broken deps, for example, libxml= 2 >>> provides libxml2.so.2.12, whilst all dependant ports requires >>> libxml2.so.2. Consequently, some weird packages, such as wine-i386-de= vel >>> are installed, since it pretends to provide libxml2.so.2 and due to [= 3] >>> and [1] wine is treated as a provide candidate. >> >> The library's SONAME should be the canonical name because that gets >> recorded in another library's or executable's NEEDED tag, and pkg migh= t >> be able to check at package creation, and again before install, if a >> file installing a library also installs a file that matches the SONAME= . > > That is how it works for shared lib requires. But that is not how it > works for shared lib provides. And this ambiguity is the source of [3]. (I hope I can still make myself clear after a crazy working day... if not or anything is unclear/incomprehensible, please ask.) There is no ambiguity, as Tijl's followup also points out. No matter how many symlinks you create, the ELF SONAME is invariant, and is a part of the .so file's content and is the one text you are after for dealing with provides and requires. Try: readelf -d /path/to/some.so | grep SONAME Perhaps I'm being na=EFve, but I think that libelf might be good to get a hold of this tag, but I've never done that myself. Dropping so library versions altogether is going in the wrong direction, because it actually suppresses required reinstallations. >>> shared libraries requires. Of course, that doesn't save us from false >>> positives but fixing of [1] - [4] issues is hard and it would likely >>> require full rebuild and re-installation of all packages. >> >> Aren't we doing that weekly anyways? > > Do all users reinstall all their packages weekly? No, they don't I suppose. <SARCASM> They might have stopped doing that because a) pkg 1.3.X unlearnt how to update the pkg repository automatically (pkg upgrade doesn't do that any more), and b) before that with pkg 1.2.X they only did if forced to because the thrashing in the pkg repos caused a weekly full reinstall... </SARCASM> More seriously, I appreciate if people in the pkg maintainer community finally start considering compatibility rather than burning each and every bridge they have crossed, but from the admin and quality POV I think a reinstallation of a known-working package (which might happen if you handle .so correctly, by its identifying ELF SONAME) is better than leaving non-working library users in place because pkg 1.4-alpha-foo unlearnt to tell libmumble.so.4 apart from libmumble.so.5. Which is what will happen if you strip the versions from the requires. We can't add a SAT solver and then deliberately deprive it of essential information... Please reconsider/revert that change, and instead snatch the embedded ELF SONAME from all libraries and use that for shared object (=3D dynamic library) requires/provides. Thank you.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53E3B3B5.9000104>