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

Marinescu, Bogdan A bogdan.a.marinescu at intel.com
Mon Apr 22 12:00:44 UTC 2013


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/67fe8016/attachment-0002.html>


More information about the Openembedded-core mailing list