On 8/1/11 8:06 AM, Richard Purdie wrote:
> On Mon, 2011-08-01 at 00:36 -0700, Saul Wold wrote:
>> From: Mark Hatle <[email protected]>
>>
>> The sdknative packages were not being introduced into the list of available
>> packages properly.  Fix this by always introducing it and avoiding a sed of
>> one type to another.
>>
>> Also fix a number of minor issues with the RPM behavior when building sdk
>> images.
> 
> I'm afraid this change looks wrong to me. Firstly, all arch packages are
> "all", not "all-nativesdk". You're also cutting down the arch list to a
> single sdk entry rather than the intended package_archs list.
> 
> "all" == "all-nativesdk" as things stand might be wrong for various
> other reasons I can think of but it is what would currently be
> generated.

No, that's not what is happening at all.  The original sed was completely broken
and wouldn't always work.

The arch list being processed is the target arch list.. typically it's something
like:

all any noarch powerpc ppc603e qemuppc

Before the system was trying to do a search/replace on "HOST_ARCH" and replace
it with SDK_ARCH..  this is kind of insane.. because there is no guaranty that
HOST_ARCH will even be in the arch list.  So instead the patch simply adds
SDK_ARCH-nativesdk, and then processes the list as normal.. the result is:

x86_64-nativesdk all any noarch powerpc ppc603e qemuppc

before it would have been (assuming the sed even worked)

all any noarch x86_64-nativesdk ppc603e qemuppc

so any packages with arch of "powerpc" would have been missed and the install
failed..  (or if powerpc didn't exist, it would end up without x86_64-nativesdk
even in the list.. which is how I found the problem.)

> All things considered, this issue needs more work.
> 
> Cheers,
> 
> Richard
> 
> 
> 
>> Signed-off-by: Mark Hatle <[email protected]>
>> ---
>>  meta/classes/package_rpm.bbclass      |   19 +++++++++----------
>>  meta/classes/populate_sdk_deb.bbclass |   11 ++---------
>>  meta/classes/populate_sdk_rpm.bbclass |   11 ++---------
>>  3 files changed, 13 insertions(+), 28 deletions(-)
>>
>> diff --git a/meta/classes/package_rpm.bbclass 
>> b/meta/classes/package_rpm.bbclass
>> index 0377100..856dfb0 100644
>> --- a/meta/classes/package_rpm.bbclass
>> +++ b/meta/classes/package_rpm.bbclass
>> @@ -32,14 +32,12 @@ package_update_index_rpm () {
>>              eval archs=\${${archvar}}
>>              packagedirs=""
>>              packagedirs_sdk=""
>> -            for arch in $archs; do
>> -                    sdkarch=`echo $arch | sed -e 
>> 's/${HOST_ARCH}/${SDK_ARCH}/'`
>> -                    extension="-nativesdk"
>> -                    if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o 
>> "$sdkarch" = "noarch" ]; then
>> -                        extension=""
>> -                    fi
>> +            if [ "${SDK_ARCH}-nativesdk" != "-nativesdk" ]; then
>> +                    
>> packagedirs_sdk="${DEPLOY_DIR_RPM}/${SDK_ARCH}-nativesdk"
>> +            fi
>> +            for arch in $archs ; do
>>                      packagedirs="${DEPLOY_DIR_RPM}/$arch $packagedirs"
>> -                    packagedirs_sdk="${DEPLOY_DIR_RPM}/$sdkarch$extension 
>> $packagedirs_sdk"
>> +                    packagedirs_sdk="${DEPLOY_DIR_RPM}/$arch 
>> $packagedirs_sdk"
>>  
>>                      rm -rf ${DEPLOY_DIR_RPM}/$arch/solvedb
>>                      rm -rf ${DEPLOY_DIR_RPM}/$sdkarch$extension/solvedb
>> @@ -95,6 +93,7 @@ package_update_index_rpm () {
>>  #
>>  package_generate_rpm_conf () {
>>      printf "_solve_dbpath " > ${RPMCONF_TARGET_BASE}.macro
>> +    printf "_solve_dbpath " > ${RPMCONF_HOST_BASE}.macro
>>      o_colon_t=false
>>      o_colon_h=false
>>  
>> @@ -238,7 +237,7 @@ package_install_internal_rpm () {
>>                                      echo "Unable to find package $pkg 
>> ($ml_pkg)!"
>>                                      exit 1
>>                              fi
>> -                            echo $pkg_name >> 
>> ${IMAGE_ROOTFS}/install/install.manifest
>> +                            echo $pkg_name >> 
>> ${target_rootfs}/install/install.manifest
>>                      done
>>              fi
>>      fi
>> @@ -258,7 +257,7 @@ package_install_internal_rpm () {
>>                              echo "Unable to find package $pkg ($ml_pkg)!"
>>                              exit 1
>>                      fi
>> -                    echo $pkg_name >> 
>> ${IMAGE_ROOTFS}/install/install.manifest
>> +                    echo $pkg_name >> 
>> ${target_rootfs}/install/install.manifest
>>              done
>>      fi
>>  
>> @@ -303,7 +302,7 @@ package_install_internal_rpm () {
>>              # Dump the full set of recommends...
>>              ${RPM} --predefine "_rpmds_sysinfo_path 
>> ${target_rootfs}/etc/rpm/sysinfo" \
>>                      --predefine "_rpmrc_platform_path 
>> ${target_rootfs}/etc/rpm/platform" \
>> -                    -D "_dbpath ${IMAGE_ROOTFS}/install" -D "`cat 
>> ${confbase}.macro`" \
>> +                    -D "_dbpath ${target_rootfs}/install" -D "`cat 
>> ${confbase}.macro`" \
>>                      -D "__dbi_txn create nofsync private" \
>>                      -qa --qf "[%{RECOMMENDS}\n]" | sort -u > 
>> ${target_rootfs}/install/recommend
>>              # Did we add more to the list?
>> diff --git a/meta/classes/populate_sdk_deb.bbclass 
>> b/meta/classes/populate_sdk_deb.bbclass
>> index a5b6384..9acc52d 100644
>> --- a/meta/classes/populate_sdk_deb.bbclass
>> +++ b/meta/classes/populate_sdk_deb.bbclass
>> @@ -34,16 +34,9 @@ fakeroot populate_sdk_deb () {
>>      export INSTALL_ROOTFS_DEB="${SDK_OUTPUT}"
>>      export INSTALL_BASEARCH_DEB="${SDK_ARCH}"
>>      export INSTALL_PACKAGES_NORMAL_DEB="${TOOLCHAIN_HOST_TASK}"
>> -    INSTALL_ARCHS_DEB=""
>> +    INSTALL_ARCHS_DEB="${SDK_ARCH}-nativesdk"
>>      for arch in ${PACKAGE_ARCHS}; do
>> -            sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
>> -            extension="-nativesdk"
>> -            if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = 
>> "noarch" ]; then
>> -                extension=""
>> -            fi
>> -            if [ -e ${DEPLOY_DIR_DEB}/$sdkarch$extension ]; then
>> -                    INSTALL_ARCHS_DEB="$INSTALL_ARCHS_DEB 
>> $sdkarch$extension"
>> -            fi
>> +            INSTALL_ARCHS_DEB="$INSTALL_ARCHS_DEB $arch"
>>      done
>>      export INSTALL_ARCHS_DEB
>>  
>> diff --git a/meta/classes/populate_sdk_rpm.bbclass 
>> b/meta/classes/populate_sdk_rpm.bbclass
>> index da308c1..8196542 100644
>> --- a/meta/classes/populate_sdk_rpm.bbclass
>> +++ b/meta/classes/populate_sdk_rpm.bbclass
>> @@ -53,16 +53,9 @@ fakeroot populate_sdk_rpm () {
>>      export INSTALL_PLATFORM_RPM="${SDK_ARCH}"
>>      export INSTALL_CONFBASE_RPM="${RPMCONF_HOST_BASE}"
>>      export INSTALL_PACKAGES_NORMAL_RPM="${TOOLCHAIN_HOST_TASK}"
>> -    export INSTALL_PLATFORM_EXTRA_RPM=""
>> +    export INSTALL_PLATFORM_EXTRA_RPM="${SDK_ARCH}-nativesdk"
>>      for arch in ${PACKAGE_ARCHS}; do
>> -            sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
>> -            extension="-nativesdk"
>> -            if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = 
>> "noarch" ]; then
>> -                extension=""
>> -            fi
>> -            if [ -e ${DEPLOY_DIR_RPM}/$sdkarch$extension ]; then
>> -                    INSTALL_PLATFORM_EXTRA_RPM="$sdkarch 
>> $INSTALL_PLATFORM_EXTRA_RPM"
>> -            fi
>> +            INSTALL_PLATFORM_EXTRA_RPM="$arch $INSTALL_PLATFORM_EXTRA_RPM"
>>      done
>>      export INSTALL_PLATFORM_EXTRA_RPM
>>  
> 
> 
> 
> _______________________________________________
> Openembedded-core mailing list
> [email protected]
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core


_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Reply via email to