[OE-core] [PATCH] package_rpm.bbclass: fix /etc/rpm/platform generation

Marinescu, Bogdan A bogdan.a.marinescu at intel.com
Mon Apr 22 14:34:07 UTC 2013


Further investigation reveals the fact that the problem is connected to the
value returned by "rpm.archscore", which changes with the value of the
first line of /etc/rpm/platform. I'm testing under qemux86 and editing
/etc/rpm/platform by hand. I've traced the code to backends/rpm/base.py
which contains the function getArchScore (which basically calls
rpm.archscore). With this /etc/rpm/platform:

i586-poky-linux
core2-.*-linux
qemux86-.*-linux
i586-.*-linux
.......

I get a score of 2 for arch core2 and 1 for i586. If I remove the first
line (i586-poky-linux) and rerun smart without chaning anything else, I get
a score of 1 for arch core2 and a score of 3 for i586. So that line
definiteley matters, which should be a bug, if I understood Mark's e-mails
correctly.

Thanks,
Bogdan



On Mon, Apr 22, 2013 at 3:00 PM, Marinescu, Bogdan A <
bogdan.a.marinescu at intel.com> wrote:

> On Thu, Apr 18, 2013 at 5:46 PM, Mark Hatle <mark.hatle at windriver.com>wrote:
>
>> On 4/18/13 9:27 AM, Bogdan Marinescu wrote:
>>
>>> For some platforms (for example emenlow) the RPM installer prefers
>>> an invalid package architecture (for example i586 over core2) because
>>> /etc/rpm/platform is not properly generated (for example, i586 is
>>> listed before core2 in /etc/rpm/platform).
>>>
>>> [YOCTO #3864]
>>>
>>> Signed-off-by: Bogdan Marinescu <bogdan.a.marinescu at intel.com>
>>> ---
>>>   meta/classes/package_rpm.**bbclass |    1 -
>>>   1 file changed, 1 deletion(-)
>>>
>>> diff --git a/meta/classes/package_rpm.**bbclass
>>> b/meta/classes/package_rpm.**bbclass
>>> index 3a29976..1bee4b1 100644
>>> --- a/meta/classes/package_rpm.**bbclass
>>> +++ b/meta/classes/package_rpm.**bbclass
>>> @@ -276,7 +276,6 @@ package_install_internal_rpm () {
>>>                 # Setup base system configuration
>>>                 echo "Note: configuring RPM platform settings"
>>>                 mkdir -p ${target_rootfs}/etc/rpm/
>>> -               echo "$INSTALL_PLATFORM_RPM" > ${target_rootfs}/etc/rpm/
>>> **platform
>>>
>>
>> I think this is wrong.  The /etc/rpm/platform file's first line is
>> supposed to be the equivalent of: [uname -m]-vendor-os.   While uname -m
>> doesn't match our tune namings, the concept is the same.  The first line
>> simply defines the "tune" of the platform, subsequent lines define
>> alternative names that will run on this system.
>>
>> The INSTALL_PLATFORM_RPM value should be the expected value for the
>> platform as a whole, as it's the default tune value.  (Default tune value
>> is expected to be the most accurate value.
>>
>> Looking at the defect:
>>
>> i586-poky-linux
>> emenlow-.*-linux
>> core2-.*-linux
>> i686-.*-linux
>> i586-.*-linux
>> i486-.*-linux
>> i386-.*-linux
>> x86-.*-linux
>> noarch-.*-linux.*
>> any-.*-linux.*
>> all-.*-linux.*
>>
>> The default tune value for that machine was set to i586 by "something".
>>
>> INSTALL_PLATFORM_RPM="$(echo ${TARGET_ARCH} | tr -
>> _)${TARGET_VENDOR}-${TARGET_**OS}"
>>
>> ${TARGET_ARCH} is similar to the output of uname -m.  The error is that
>> this particular BSP should have returned 'core2' as the TARGET_ARCH from
>> what I can tell.
>>
>> Default for TARGET_ARCH is: TARGET_ARCH = "${TUNE_ARCH}"
>>
>> So the TUNE_ARCH is being set to i586.  So the end result is..  Is
>> 'TUNE_ARCH' set to i586 appropriate?  It probably is, because the majority
>> of the system seems to have a limited set of expected values for
>> TARGET_ARCH.
>>
>> So, perhaps the right fix is instead of using 'TARGET_ARCH' in
>> INSTALL_PLATFORM_RPM, 'TUNE_PKGARCH_${DEFAULTTUNE}' may be more appropriate.
>>
>> I'd suggest trying that.  (But the first line is the system architecture,
>> following lines are alternative packages that are considered compatible.)
>>
>>
>>
>>>                 if [ ! -z "$INSTALL_PLATFORM_EXTRA_RPM" ]; then
>>>                         for pt in $INSTALL_PLATFORM_EXTRA_RPM ; do
>>>
>>>
>>
> On my qemux86 image, /etc/rpm/platform looks like this:
>
> qemux86-.*-linux
> i586-.*-linux
> i486-.*-linux
>  i386-.*-linux
> x86-.*-linux
> noarch-.*-linux.*
> any-.*-linux.*
> all-.*-linux.*
>
> The first line is not fully expanded and smart seems to make the correct
> choice of packages in this case.
>
> Thanks,
> Bogdan
>
>
>>
>> ______________________________**_________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.**openembedded.org<Openembedded-core at lists.openembedded.org>
>> http://lists.linuxtogo.org/**cgi-bin/mailman/listinfo/**openembedded-core<http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20130422/6fb8369c/attachment-0002.html>


More information about the Openembedded-core mailing list