On Apr 11, 2011, at 12:29 AM, Per Øyvind Karlsen wrote: > wrong sender.. fgrf > > ---------- Forwarded message ---------- > From: Per Øyvind Karlsen <peroyv...@mandriva.org> > Date: 2011/4/11 > Subject: Re: [CVS] RPM: rpm/ CHANGES rpm/lib/ librpm.vers rpmds.c > rpmds.h rpmfc.c > To: rpm-devel@rpm5.org > > > 2011/4/11 Jeff Johnson <n3...@mac.com>: >> I knew I'd seen this symlink patch before: >> >> >> https://lists.dulug.duke.edu/pipermail/rpm-devel/2006-April/001037.html >> >> I did not like the patch the first time, and I don't like it 5 years later. >> >> I will rework the issue under #if RPM_VENDOR_MANDRIVA across the board. >> >> Note that the rule (already implemented except you've turned it off) >> All symlinks depend on their end-point. >> not only covers the special case of ELF libraries (when the symlink is >> explicitly "owned" by a package), but all other cases of symlinks to >> end-points in other packages. Yes you will need to teach URPMI and other >> depsolvers about symlink end-points constructed from RPMTAG_FILELINKTOS >> data, very not hard. >> >> The only remaining "feature" is the explicit >> Requires: devel(whatever) >> added to metadata. I fully realize the difficulties >> of transitive closure in "dependency hell", but hey, lets not >> go around in circles all over again. >> >> Note that the rule I've stated requires zero additional metadata, >> the linkto dependency is constructed on the install box from the symlink >> end-points that are already in metadata (but you're likely choosing to >> disable that functionality some 4? 5? years after being implemented). >> > Hm, I suspect you're misunderstanding the purpose of the devel() > dependencies..
See the link where Stefan advocated. > > They're not in place for adding dependencies on where symlinks points at, > but rather as an identifier for where 'symlink to SONAME ending with > .so in filename' You will need to give me an explicitly worked example because there can be multiple symlinks like here: lrwxrwxrwx 1 root root 13 Feb 22 18:11 /usr/lib/libz.so -> libz.so.1.2.5* lrwxrwxrwx 1 root root 13 Feb 14 12:33 /usr/lib/libz.so.1 -> libz.so.1.2.5* lrwxrwxrwx 1 root root 23 Feb 14 12:33 /usr/lib/libz.so.1.2.5 -> ../../lib/libz.so.1.2.5* The DT_SONAME is actually: $ readelf -a /usr/lib/libz.so.1.2.5 | grep SONAME 0x0000000e (SONAME) Library soname: [libz.so.1] And so I see $ rpm -q --provides libzlib-devel libz-devel = 1.2.5-3mdv2011.0 libzlib-devel = 1.2.5-3mdv2011.0 zlib-devel = 1.2.5-3mdv2011.0 uClibc-zlib-devel = 1.2.5-3mdv2011.0 uClibc-zlib1-devel = 1.2.5-3mdv2011.0 pkgconfig(zlib) = 1.2.5 ==> devel(libz) libzlib-devel = 1.2.5-3mdv2011.0 libzlib-devel(x86-32) = 1.2.5-3mdv2011.0 and "devel(libz)" isn't an SONAME at all but rather something that you are calling a SONAME. And I don't know what you mean by "identifier" since I haven't any idea what is being identified (except de facto what Mandriva wants and what Stefan wanted etc). > is considered as being part of a devel package, hence the > devel(soname) provides, > with requires added for all devel(SONAME) found under DT_REQUIRED (so it's > more > dependencies related to what libraries linked at rather than symlinks > endpoints to). > And so the DT_NEEDED (there is no DT_REQUIRED afaik) is actually: $ readelf -a /usr/lib/librpmio-5.3.so | grep NEEDED ... 0x00000001 (NEEDED) Shared library: [libz.so.1] or if you prefer $ ldd /usr/bin/rpm ... libz.so.1 => /lib/libz.so.1 (0xb65a7000) All of which appear consistently to claim "libz.so.1" as the SONAME. And "libz.so.1" does _NOT_ appear in Requires: devel(libz) > These are actually quite convenient dependencies added, as it prevents having > to > manually add dependencies on other -devel packages in the -devel package that > it usually tends to depend on. > Um, I do not see "convenient" whatsoever. I see yet more confusion. > I'm okay with the helper beng disabled by default, but I really don't > see any good > reason for moving it under #ifdef mandriva, that would be a step away from > any attempts at vendor neutral approach IMO. > WHo else but the Mandriva monoculture uses Requires: devel(foo) WHy SHOULDNT the code be under #ifdef RPM_VENDOR_MANDRIVA if only Mandriva uses? And I don't see how a half assed patch checked in yesterday and examined today is a step away from anything whatsoever, including being "vendor neutral". > The devel() dependencies are way more useful in real world cooker usage than > ie. > the pkgconfig() etc. dependencies at least to my experienec.. I'm not in a position to say useful because I'm hearing no engineering argument, just cooker! convenient! DT_REQUIRED! and none of it makes any engineering sense. The original patch that was posted (which Stefan advocated) was an attempt to use only primary.xml and avoid having to download filelists.xml. I understand that original intent to minimize bandwidth (didn't and doesn't work as anticipated, but whatever). I do not understand Requires: devel(libz) at all. For similar "primary.xml only download" reasons, Mandriva has chosen to do Provides: /path/to/file to populate synthesis files with paths. Rather silly and bizarre imho. In my world Provides: != Filepaths ... in fact "providing" file paths forces a more complex implementation in RPM because everything starting with a '/' might be in either place (or even both places) which muddies many dependency implementation issue. 73 de Jeff > -- > Regards, > Per Øyvind > ______________________________________________________________________ > RPM Package Manager http://rpm5.org > Developer Communication List rpm-devel@rpm5.org
smime.p7s
Description: S/MIME cryptographic signature