On Mon, Aug 13, 2012 at 1:00 PM, Olivier Blin <[email protected]> wrote: > Guillaume Rousse <[email protected]> writes: > >> Le 13/08/2012 13:02, Colin Guthrie a écrit : >>> 'Twas brillig, and Pascal Terjan at 13/08/12 11:44 did gyre and gimble: >>>> On Sun, Jul 22, 2012 at 12:00 AM, Iurt the rebuild bot >>>> <[email protected]> wrote: >>>>> Name : coreutils Relocations: (not relocatable) >>>>> Version : 8.17 Vendor: Mageia.Org >>>>> Release : 2.mga3 Build Date: Sat 21 Jul 2012 >>>>> 09:49:45 PM CEST > > [...] > >>>>> colin <colin> 8.17-2.mga3: >>>>> + Revision: 273158 >>>>> - Update for usrmove >>>> >>>> This broke a few packages requiring /bin/rm or /bin/ln which are no >>>> longer provided by coreutils >>>> >>>> apache-portlet-1.0-api-javadoc (from apache-portlet-1.0-api) >>>> esmska-javadoc (from esmska) >>>> mx4j >>>> regexp-javadoc (from regexp) >>>> rt >>>> tomcat5-admin-webapps (from tomcat5) >>> >>> Hmm, indeed. How are these things "Provided" anyway? I mean they are not >>> in the list of the --provides, so how is this resolved? Does rpm have a >>> special mode for detecting these kind of provides? If so how does it >>> resolve it with urpmi? >> Unless something changed, files dependencies are resolved at >> hdlist-generation time as soon as another package requires them. > > Yes, using the file-deps file. > >> For instance, the following line in RT spec file will make genhdlist >> map /bin/rm to coreutils in the hdlist.cz: >> Requires(postun): /bin/rm > > IIRC, if a package contains files listed in file-deps, these files are > added to its "provides" list by genhdlist. > > $ zcat > /distrib/mageia/distrib/2/x86_64/media/core/release/media_info/synthesis.hdlist.cz > | grep -A 6 '^\@provides.*\@/bin/rm' > @provides@mktemp[== 8.15]@stat[== > 8.15]@/usr/bin/env@/bin/[email protected]()(64bit)@coreutils[== > 8.15-1.mga2]@coreutils(x86-64)[== > 8.15-1.mga2]@/bin/rm@/bin/ls@/bin/stty@/usr/bin/tr@/bin/ln@/bin/cp > @conflicts@tetex[< 1.0.7-49] > @obsoletes@mktemp[< 8.15]@base64 > @requires@pam[>= > 0.66-12]@libacl.so.1()(64bit)@libattr.so.1()(64bit)@libc.so.6()(64bit)@libc.so.6(GLIBC_2.14)(64bit)@libc.so.6(GLIBC_2.2.5)(64bit)@libc.so.6(GLIBC_2.3)(64bit)@libc.so.6(GLIBC_2.3.4)(64bit)@libc.so.6(GLIBC_2.4)(64bit)@libc.so.6(GLIBC_2.6)(64bit)@libc.so.6(GLIBC_2.7)(64bit)@libcap.so.2()(64bit)@libgmp.so.10()(64bit)@libpam.so.0()(64bit)@libpam_misc.so.0()(64bit)@libpthread.so.0()(64bit)@libpthread.so.0(GLIBC_2.2.5)(64bit)@libpthread.so.0(GLIBC_2.3.2)(64bit)@librt.so.1()(64bit)@librt.so.1(GLIBC_2.2.5)(64bit)@librt.so.1(GLIBC_2.3.3)(64bit)@rtld(GNU_HASH) > @summary@The GNU core utilities: a set of tools commonly used in shell > scripts > @filesize@1803563 > @[email protected]_64@0@12798923@System/Base > >> I don't know how this work at rpm level, tough, in order to make 'rpm >> -Uvh rt-4.0.6-1.mga3.noarch" work without urpmi support. Probably >> checking in the list of files available in the target rpm. > > rpm is likely using the list of files from its db > > $ rpm -q --provides coreutils | grep /bin/rm > $ rpm -q --whatprovides /bin/rm > coreutils-8.17-3.mga3
Yes rpm uses the list of files to satisfy provides, urpmi does not when using synthesis as synthesis does not contain the list of files
