diff options
| author | Mark Hatle <mark.hatle@windriver.com> | 2011-07-18 15:55:28 -0500 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-07-27 16:25:35 +0100 |
| commit | 44b3590509d7af2fe5a6c52a8bd2d1d7fb29ef7c (patch) | |
| tree | 25e397f9a1e997e4217713ef9e90f8c349090061 /meta | |
| parent | fae195515f5bb1beaff9bc2fde9135ff573facc4 (diff) | |
| download | poky-44b3590509d7af2fe5a6c52a8bd2d1d7fb29ef7c.tar.gz | |
package/rootfs_rpm: Implement RPM multilib package handling
This is a first pass at adding multilib support to the RPM package
and image handling code.
(From OE-Core rev: 1939a4395997098862912e013a2b13ed2f385f9f)
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
| -rw-r--r-- | meta/classes/package_rpm.bbclass | 229 | ||||
| -rw-r--r-- | meta/classes/rootfs_rpm.bbclass | 17 |
2 files changed, 160 insertions, 86 deletions
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass index 2cc57424c7..05f3929062 100644 --- a/meta/classes/package_rpm.bbclass +++ b/meta/classes/package_rpm.bbclass | |||
| @@ -21,67 +21,71 @@ RPMCONF_HOST_BASE = "${DEPLOY_DIR_RPM}/solvedb-sdk" | |||
| 21 | # Update the Packages depsolver db in ${DEPLOY_DIR_RPM} | 21 | # Update the Packages depsolver db in ${DEPLOY_DIR_RPM} |
| 22 | # | 22 | # |
| 23 | package_update_index_rpm () { | 23 | package_update_index_rpm () { |
| 24 | rpmarchs="${PACKAGE_ARCHS}" | ||
| 25 | |||
| 26 | if [ ! -z "${DEPLOY_KEEP_PACKAGES}" ]; then | 24 | if [ ! -z "${DEPLOY_KEEP_PACKAGES}" ]; then |
| 27 | return | 25 | return |
| 28 | fi | 26 | fi |
| 29 | 27 | ||
| 30 | packagedirs="" | 28 | base_package_archs="${PACKAGE_ARCHS}" |
| 31 | packagedirs_sdk="" | 29 | ml_package_archs="${MULTILIB_PACKAGE_ARCHS}" |
| 32 | for arch in $rpmarchs ; do | 30 | |
| 33 | sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'` | 31 | for archvar in base_package_archs ml_package_archs; do |
| 34 | extension="-nativesdk" | 32 | eval archs=\${${archvar}} |
| 35 | if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = "noarch" ]; then | 33 | packagedirs="" |
| 36 | extension="" | 34 | packagedirs_sdk="" |
| 37 | fi | 35 | for arch in $archs; do |
| 38 | packagedirs="${DEPLOY_DIR_RPM}/$arch $packagedirs" | 36 | sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'` |
| 39 | packagedirs_sdk="${DEPLOY_DIR_RPM}/$sdkarch$extension $packagedirs_sdk" | 37 | extension="-nativesdk" |
| 38 | if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = "noarch" ]; then | ||
| 39 | extension="" | ||
| 40 | fi | ||
| 41 | packagedirs="${DEPLOY_DIR_RPM}/$arch $packagedirs" | ||
| 42 | packagedirs_sdk="${DEPLOY_DIR_RPM}/$sdkarch$extension $packagedirs_sdk" | ||
| 40 | 43 | ||
| 41 | rm -rf ${DEPLOY_DIR_RPM}/$arch/solvedb | 44 | rm -rf ${DEPLOY_DIR_RPM}/$arch/solvedb |
| 42 | rm -rf ${DEPLOY_DIR_RPM}/$sdkarch$extension/solvedb | 45 | rm -rf ${DEPLOY_DIR_RPM}/$sdkarch$extension/solvedb |
| 43 | done | 46 | done |
| 44 | 47 | ||
| 45 | cat /dev/null > ${RPMCONF_TARGET_BASE}.conf | 48 | cat /dev/null > ${RPMCONF_TARGET_BASE}-${archvar}.conf |
| 46 | for pkgdir in $packagedirs; do | 49 | for pkgdir in $packagedirs; do |
| 47 | if [ -e $pkgdir/ ]; then | 50 | if [ -e $pkgdir/ ]; then |
| 48 | echo "Generating solve db for $pkgdir..." | 51 | echo "Generating solve db for $pkgdir..." |
| 49 | echo $pkgdir/solvedb >> ${RPMCONF_TARGET_BASE}.conf | 52 | echo $pkgdir/solvedb >> ${RPMCONF_TARGET_BASE}-${archvar}.conf |
| 50 | if [ -d $pkgdir/solvedb ]; then | 53 | if [ -d $pkgdir/solvedb ]; then |
| 51 | # We've already processed this and it's a duplicate | 54 | # We've already processed this and it's a duplicate |
| 52 | continue | 55 | continue |
| 56 | fi | ||
| 57 | mkdir -p $pkgdir/solvedb | ||
| 58 | echo "# Dynamically generated solve manifest" >> $pkgdir/solvedb/manifest | ||
| 59 | find $pkgdir -maxdepth 1 -type f >> $pkgdir/solvedb/manifest | ||
| 60 | ${RPM} -i --replacepkgs --replacefiles --oldpackage \ | ||
| 61 | -D "_dbpath $pkgdir/solvedb" --justdb \ | ||
| 62 | --noaid --nodeps --noorder --noscripts --notriggers --noparentdirs --nolinktos --stats \ | ||
| 63 | --ignoresize --nosignature --nodigest \ | ||
| 64 | -D "__dbi_txn create nofsync" \ | ||
| 65 | $pkgdir/solvedb/manifest | ||
| 53 | fi | 66 | fi |
| 54 | mkdir -p $pkgdir/solvedb | 67 | done |
| 55 | echo "# Dynamically generated solve manifest" >> $pkgdir/solvedb/manifest | ||
| 56 | find $pkgdir -maxdepth 1 -type f >> $pkgdir/solvedb/manifest | ||
| 57 | ${RPM} -i --replacepkgs --replacefiles --oldpackage \ | ||
| 58 | -D "_dbpath $pkgdir/solvedb" --justdb \ | ||
| 59 | --noaid --nodeps --noorder --noscripts --notriggers --noparentdirs --nolinktos --stats \ | ||
| 60 | --ignoresize --nosignature --nodigest \ | ||
| 61 | -D "__dbi_txn create nofsync" \ | ||
| 62 | $pkgdir/solvedb/manifest | ||
| 63 | fi | ||
| 64 | done | ||
| 65 | 68 | ||
| 66 | cat /dev/null > ${RPMCONF_HOST_BASE}.conf | 69 | cat /dev/null > ${RPMCONF_HOST_BASE}.conf |
| 67 | for pkgdir in $packagedirs_sdk; do | 70 | for pkgdir in $packagedirs_sdk; do |
| 68 | if [ -e $pkgdir/ ]; then | 71 | if [ -e $pkgdir/ ]; then |
| 69 | echo "Generating solve db for $pkgdir..." | 72 | echo "Generating solve db for $pkgdir..." |
| 70 | echo $pkgdir/solvedb >> ${RPMCONF_HOST_BASE}.conf | 73 | echo $pkgdir/solvedb >> ${RPMCONF_HOST_BASE}-${archvar}.conf |
| 71 | if [ -d $pkgdir/solvedb ]; then | 74 | if [ -d $pkgdir/solvedb ]; then |
| 72 | # We've already processed this and it's a duplicate | 75 | # We've already processed this and it's a duplicate |
| 73 | continue | 76 | continue |
| 74 | fi | 77 | fi |
| 75 | mkdir -p $pkgdir/solvedb | 78 | mkdir -p $pkgdir/solvedb |
| 76 | echo "# Dynamically generated solve manifest" >> $pkgdir/solvedb/manifest | 79 | echo "# Dynamically generated solve manifest" >> $pkgdir/solvedb/manifest |
| 77 | find $pkgdir -maxdepth 1 -type f >> $pkgdir/solvedb/manifest | 80 | find $pkgdir -maxdepth 1 -type f >> $pkgdir/solvedb/manifest |
| 78 | ${RPM} -i --replacepkgs --replacefiles --oldpackage \ | 81 | ${RPM} -i --replacepkgs --replacefiles --oldpackage \ |
| 79 | -D "_dbpath $pkgdir/solvedb" --justdb \ | 82 | -D "_dbpath $pkgdir/solvedb" --justdb \ |
| 80 | --noaid --nodeps --noorder --noscripts --notriggers --noparentdirs --nolinktos --stats \ | 83 | --noaid --nodeps --noorder --noscripts --notriggers --noparentdirs --nolinktos --stats \ |
| 81 | --ignoresize --nosignature --nodigest \ | 84 | --ignoresize --nosignature --nodigest \ |
| 82 | -D "__dbi_txn create nofsync" \ | 85 | -D "__dbi_txn create nofsync" \ |
| 83 | $pkgdir/solvedb/manifest | 86 | $pkgdir/solvedb/manifest |
| 84 | fi | 87 | fi |
| 88 | done | ||
| 85 | done | 89 | done |
| 86 | } | 90 | } |
| 87 | 91 | ||
| @@ -91,25 +95,43 @@ package_update_index_rpm () { | |||
| 91 | # | 95 | # |
| 92 | package_generate_rpm_conf () { | 96 | package_generate_rpm_conf () { |
| 93 | printf "_solve_dbpath " > ${RPMCONF_TARGET_BASE}.macro | 97 | printf "_solve_dbpath " > ${RPMCONF_TARGET_BASE}.macro |
| 94 | colon=false | 98 | o_colon_t=false |
| 95 | for each in `cat ${RPMCONF_TARGET_BASE}.conf` ; do | 99 | o_colon_h=false |
| 96 | if [ "$colon" == true ]; then | 100 | |
| 97 | printf ":" >> ${RPMCONF_TARGET_BASE}.macro | 101 | for archvar in base_package_archs ml_package_archs; do |
| 98 | fi | 102 | printf "_solve_dbpath " > ${RPMCONF_TARGET_BASE}-${archvar}.macro |
| 99 | printf "%s" $each >> ${RPMCONF_TARGET_BASE}.macro | 103 | colon=false |
| 100 | colon=true | 104 | for each in `cat ${RPMCONF_TARGET_BASE}-${archvar}.conf` ; do |
| 101 | done | 105 | if [ "$o_colon_t" == true ]; then |
| 102 | printf "\n" >> ${RPMCONF_TARGET_BASE}.macro | 106 | printf ":" >> ${RPMCONF_TARGET_BASE}.macro |
| 107 | fi | ||
| 108 | if [ "$colon" == true ]; then | ||
| 109 | printf ":" >> ${RPMCONF_TARGET_BASE}-${archvar}.macro | ||
| 110 | fi | ||
| 111 | printf "%s" $each >> ${RPMCONF_TARGET_BASE}.macro | ||
| 112 | o_colon_t=true | ||
| 113 | printf "%s" $each >> ${RPMCONF_TARGET_BASE}-${archvar}.macro | ||
| 114 | colon=true | ||
| 115 | done | ||
| 116 | printf "\n" >> ${RPMCONF_TARGET_BASE}-${archvar}.macro | ||
| 103 | 117 | ||
| 104 | printf "_solve_dbpath " > ${RPMCONF_HOST_BASE}.macro | 118 | printf "_solve_dbpath " > ${RPMCONF_HOST_BASE}-${archvar}.macro |
| 105 | colon=false | 119 | colon=false |
| 106 | for each in `cat ${RPMCONF_HOST_BASE}.conf` ; do | 120 | for each in `cat ${RPMCONF_HOST_BASE}-${archvar}.conf` ; do |
| 107 | if [ "$colon" == true ]; then | 121 | if [ "$o_colon_h" == true ]; then |
| 108 | printf ":" >> ${RPMCONF_HOST_BASE}.macro | 122 | printf ":" >> ${RPMCONF_HOST_BASE}.macro |
| 109 | fi | 123 | fi |
| 110 | printf "%s" $each >> ${RPMCONF_HOST_BASE}.macro | 124 | if [ "$colon" == true ]; then |
| 111 | colon=true | 125 | printf ":" >> ${RPMCONF_HOST_BASE}-${archvar}.macro |
| 126 | fi | ||
| 127 | printf "%s" $each >> ${RPMCONF_HOST_BASE}.macro | ||
| 128 | o_colon_h=true | ||
| 129 | printf "%s" $each >> ${RPMCONF_HOST_BASE}-${archvar}.macro | ||
| 130 | colon=true | ||
| 131 | done | ||
| 132 | printf "\n" >> ${RPMCONF_HOST_BASE}-${archvar}.macro | ||
| 112 | done | 133 | done |
| 134 | printf "\n" >> ${RPMCONF_TARGET_BASE}.macro | ||
| 113 | printf "\n" >> ${RPMCONF_HOST_BASE}.macro | 135 | printf "\n" >> ${RPMCONF_HOST_BASE}.macro |
| 114 | } | 136 | } |
| 115 | 137 | ||
| @@ -139,11 +161,11 @@ rpm_log_check() { | |||
| 139 | # resolve_pacakge <pkgname> <solvdb conffile> | 161 | # resolve_pacakge <pkgname> <solvdb conffile> |
| 140 | # | 162 | # |
| 141 | resolve_package_rpm () { | 163 | resolve_package_rpm () { |
| 142 | local pkg="$1" | 164 | local conffile="$1" |
| 143 | local conffile="$2" | 165 | shift |
| 144 | local pkg_name="" | 166 | local pkg_name="" |
| 145 | for solve in `cat ${conffile}`; do | 167 | for solve in `cat ${conffile}`; do |
| 146 | pkg_name=$(${RPM} -D "_dbpath $solve" -D "__dbi_txn create nofsync" -q --yaml $pkg | grep -i 'Packageorigin' | cut -d : -f 2) | 168 | pkg_name=$(${RPM} -D "_dbpath $solve" -D "__dbi_txn create nofsync" -q --yaml $@ | grep -i 'Packageorigin' | cut -d : -f 2) |
| 147 | if [ -n "$pkg_name" ]; then | 169 | if [ -n "$pkg_name" ]; then |
| 148 | break; | 170 | break; |
| 149 | fi | 171 | fi |
| @@ -178,10 +200,10 @@ package_install_internal_rpm () { | |||
| 178 | 200 | ||
| 179 | # Setup base system configuration | 201 | # Setup base system configuration |
| 180 | mkdir -p ${target_rootfs}/etc/rpm/ | 202 | mkdir -p ${target_rootfs}/etc/rpm/ |
| 181 | echo "${platform}-poky-linux-gnu" > ${target_rootfs}/etc/rpm/platform | 203 | echo "${platform}${TARGET_VENDOR}-${TARGET_OS}" > ${target_rootfs}/etc/rpm/platform |
| 182 | if [ ! -z "$platform_extra" ]; then | 204 | if [ ! -z "$platform_extra" ]; then |
| 183 | for pt in $platform_extra ; do | 205 | for pt in $platform_extra ; do |
| 184 | echo "$pt-.*-linux.*" >> ${target_rootfs}/etc/rpm/platform | 206 | echo "$pt-.*-${TARGET_OS}" >> ${target_rootfs}/etc/rpm/platform |
| 185 | done | 207 | done |
| 186 | fi | 208 | fi |
| 187 | 209 | ||
| @@ -204,9 +226,16 @@ package_install_internal_rpm () { | |||
| 204 | if [ ! -z "${package_lingusa}" ]; then | 226 | if [ ! -z "${package_lingusa}" ]; then |
| 205 | for pkg in ${package_lingusa}; do | 227 | for pkg in ${package_lingusa}; do |
| 206 | echo "Processing $pkg..." | 228 | echo "Processing $pkg..." |
| 207 | pkg_name=$(resolve_package_rpm $pkg ${confbase}.conf) | 229 | |
| 230 | archvar=base_package_archs | ||
| 231 | ml_pkg=$(echo ${pkg} | sed "s,^${MLPREFIX}\(.*\),\1,") | ||
| 232 | if [ "${ml_pkg}" != "${pkg}" ]; then | ||
| 233 | archvar=ml_package_archs | ||
| 234 | fi | ||
| 235 | |||
| 236 | pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg}) | ||
| 208 | if [ -z "$pkg_name" ]; then | 237 | if [ -z "$pkg_name" ]; then |
| 209 | echo "Unable to find package $pkg!" | 238 | echo "Unable to find package $pkg ($ml_pkg)!" |
| 210 | exit 1 | 239 | exit 1 |
| 211 | fi | 240 | fi |
| 212 | echo $pkg_name >> ${IMAGE_ROOTFS}/install/install.manifest | 241 | echo $pkg_name >> ${IMAGE_ROOTFS}/install/install.manifest |
| @@ -217,12 +246,19 @@ package_install_internal_rpm () { | |||
| 217 | if [ ! -z "${package_to_install}" ]; then | 246 | if [ ! -z "${package_to_install}" ]; then |
| 218 | for pkg in ${package_to_install} ; do | 247 | for pkg in ${package_to_install} ; do |
| 219 | echo "Processing $pkg..." | 248 | echo "Processing $pkg..." |
| 220 | pkg_name=$(resolve_package_rpm $pkg ${confbase}.conf) | 249 | |
| 250 | archvar=base_package_archs | ||
| 251 | ml_pkg=$(echo ${pkg} | sed "s,$^{MLPREFIX}\(.*\),\1,") | ||
| 252 | if [ "${ml_pkg}" != "${pkg}" ]; then | ||
| 253 | archvar=ml_package_archs | ||
| 254 | fi | ||
| 255 | |||
| 256 | pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg}) | ||
| 221 | if [ -z "$pkg_name" ]; then | 257 | if [ -z "$pkg_name" ]; then |
| 222 | echo "Unable to find package $pkg!" | 258 | echo "Unable to find package $pkg ($ml_pkg)!" |
| 223 | exit 1 | 259 | exit 1 |
| 224 | fi | 260 | fi |
| 225 | echo $pkg_name >> ${target_rootfs}/install/install.manifest | 261 | echo $pkg_name >> ${IMAGE_ROOTFS}/install/install.manifest |
| 226 | done | 262 | done |
| 227 | fi | 263 | fi |
| 228 | 264 | ||
| @@ -318,6 +354,21 @@ python write_specfile () { | |||
| 318 | import textwrap | 354 | import textwrap |
| 319 | import oe.packagedata | 355 | import oe.packagedata |
| 320 | 356 | ||
| 357 | # We need a simple way to remove the MLPREFIX from the package name, | ||
| 358 | # and dependency information... | ||
| 359 | def strip_multilib(name, d): | ||
| 360 | multilibs = d.getVar('MULTILIBS', True) or "" | ||
| 361 | for ext in multilibs.split(): | ||
| 362 | eext = ext.split(':') | ||
| 363 | if len(eext) > 1 and eext[0] == 'multilib' and name and name.find(eext[1] + '-') == 0: | ||
| 364 | name = (eext[1] + '-').join(name.split(eext[1] + '-', 1)[1:]) | ||
| 365 | return name | ||
| 366 | |||
| 367 | # ml = bb.data.getVar("MLPREFIX", d, True) | ||
| 368 | # if ml and name and len(ml) != 0 and name.find(ml) == 0: | ||
| 369 | # return ml.join(name.split(ml, 1)[1:]) | ||
| 370 | # return name | ||
| 371 | |||
| 321 | # In RPM, dependencies are of the format: pkg <>= Epoch:Version-Release | 372 | # In RPM, dependencies are of the format: pkg <>= Epoch:Version-Release |
| 322 | # This format is similar to OE, however there are restrictions on the | 373 | # This format is similar to OE, however there are restrictions on the |
| 323 | # characters that can be in a field. In the Version field, "-" | 374 | # characters that can be in a field. In the Version field, "-" |
| @@ -346,7 +397,7 @@ python write_specfile () { | |||
| 346 | pv = subd['PKGV'] | 397 | pv = subd['PKGV'] |
| 347 | reppv = pv.replace('-', '+') | 398 | reppv = pv.replace('-', '+') |
| 348 | ver = ver.replace(pv, reppv) | 399 | ver = ver.replace(pv, reppv) |
| 349 | newdeps_dict[dep] = ver | 400 | newdeps_dict[strip_multilib(dep, d)] = ver |
| 350 | depends = bb.utils.join_deps(newdeps_dict) | 401 | depends = bb.utils.join_deps(newdeps_dict) |
| 351 | bb.data.setVar(varname, depends.strip(), d) | 402 | bb.data.setVar(varname, depends.strip(), d) |
| 352 | 403 | ||
| @@ -394,7 +445,7 @@ python write_specfile () { | |||
| 394 | return | 445 | return |
| 395 | 446 | ||
| 396 | # Construct the SPEC file... | 447 | # Construct the SPEC file... |
| 397 | srcname = bb.data.getVar('PN', d, True) | 448 | srcname = strip_multilib(bb.data.getVar('PN', d, True), d) |
| 398 | srcsummary = (bb.data.getVar('SUMMARY', d, True) or bb.data.getVar('DESCRIPTION', d, True) or ".") | 449 | srcsummary = (bb.data.getVar('SUMMARY', d, True) or bb.data.getVar('DESCRIPTION', d, True) or ".") |
| 399 | srcversion = bb.data.getVar('PKGV', d, True).replace('-', '+') | 450 | srcversion = bb.data.getVar('PKGV', d, True).replace('-', '+') |
| 400 | srcrelease = bb.data.getVar('PKGR', d, True) | 451 | srcrelease = bb.data.getVar('PKGR', d, True) |
| @@ -405,7 +456,7 @@ python write_specfile () { | |||
| 405 | srchomepage = bb.data.getVar('HOMEPAGE', d, True) | 456 | srchomepage = bb.data.getVar('HOMEPAGE', d, True) |
| 406 | srcdescription = bb.data.getVar('DESCRIPTION', d, True) or "." | 457 | srcdescription = bb.data.getVar('DESCRIPTION', d, True) or "." |
| 407 | 458 | ||
| 408 | srcdepends = bb.data.getVar('DEPENDS', d, True) | 459 | srcdepends = strip_multilib(bb.data.getVar('DEPENDS', d, True), d) |
| 409 | srcrdepends = [] | 460 | srcrdepends = [] |
| 410 | srcrrecommends = [] | 461 | srcrrecommends = [] |
| 411 | srcrsuggests = [] | 462 | srcrsuggests = [] |
| @@ -448,7 +499,7 @@ python write_specfile () { | |||
| 448 | 499 | ||
| 449 | conffiles = (bb.data.getVar('CONFFILES', localdata, True) or "").split() | 500 | conffiles = (bb.data.getVar('CONFFILES', localdata, True) or "").split() |
| 450 | 501 | ||
| 451 | splitname = pkgname | 502 | splitname = strip_multilib(pkgname, d) |
| 452 | 503 | ||
| 453 | splitsummary = (bb.data.getVar('SUMMARY', localdata, True) or bb.data.getVar('DESCRIPTION', localdata, True) or ".") | 504 | splitsummary = (bb.data.getVar('SUMMARY', localdata, True) or bb.data.getVar('DESCRIPTION', localdata, True) or ".") |
| 454 | splitversion = (bb.data.getVar('PKGV', localdata, True) or "").replace('-', '+') | 505 | splitversion = (bb.data.getVar('PKGV', localdata, True) or "").replace('-', '+') |
| @@ -699,6 +750,14 @@ python write_specfile () { | |||
| 699 | python do_package_rpm () { | 750 | python do_package_rpm () { |
| 700 | import os | 751 | import os |
| 701 | 752 | ||
| 753 | # We need a simple way to remove the MLPREFIX from the package name, | ||
| 754 | # and dependency information... | ||
| 755 | def strip_multilib(name, d): | ||
| 756 | ml = bb.data.getVar("MLPREFIX", d, True) | ||
| 757 | if ml and name and len(ml) != 0 and name.find(ml) == 0: | ||
| 758 | return ml.join(name.split(ml, 1)[1:]) | ||
| 759 | return name | ||
| 760 | |||
| 702 | workdir = bb.data.getVar('WORKDIR', d, True) | 761 | workdir = bb.data.getVar('WORKDIR', d, True) |
| 703 | outdir = bb.data.getVar('DEPLOY_DIR_IPK', d, True) | 762 | outdir = bb.data.getVar('DEPLOY_DIR_IPK', d, True) |
| 704 | tmpdir = bb.data.getVar('TMPDIR', d, True) | 763 | tmpdir = bb.data.getVar('TMPDIR', d, True) |
| @@ -714,7 +773,7 @@ python do_package_rpm () { | |||
| 714 | return | 773 | return |
| 715 | 774 | ||
| 716 | # Construct the spec file... | 775 | # Construct the spec file... |
| 717 | srcname = bb.data.getVar('PN', d, True) | 776 | srcname = strip_multilib(bb.data.getVar('PN', d, True), d) |
| 718 | outspecfile = workdir + "/" + srcname + ".spec" | 777 | outspecfile = workdir + "/" + srcname + ".spec" |
| 719 | bb.data.setVar('OUTSPECFILE', outspecfile, d) | 778 | bb.data.setVar('OUTSPECFILE', outspecfile, d) |
| 720 | bb.build.exec_func('write_specfile', d) | 779 | bb.build.exec_func('write_specfile', d) |
diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass index b554bae34e..04c0483a2d 100644 --- a/meta/classes/rootfs_rpm.bbclass +++ b/meta/classes/rootfs_rpm.bbclass | |||
| @@ -93,7 +93,7 @@ EOF | |||
| 93 | 93 | ||
| 94 | # List must be prefered to least preferred order | 94 | # List must be prefered to least preferred order |
| 95 | INSTALL_PLATFORM_EXTRA_RPM="" | 95 | INSTALL_PLATFORM_EXTRA_RPM="" |
| 96 | for each_arch in ${PACKAGE_ARCHS} ; do | 96 | for each_arch in ${MULTILIB_PACKAGE_ARCHS} ${PACKAGE_ARCHS}; do |
| 97 | INSTALL_PLATFORM_EXTRA_RPM="$each_arch $INSTALL_PLATFORM_EXTRA_RPM" | 97 | INSTALL_PLATFORM_EXTRA_RPM="$each_arch $INSTALL_PLATFORM_EXTRA_RPM" |
| 98 | done | 98 | done |
| 99 | export INSTALL_PLATFORM_RPM | 99 | export INSTALL_PLATFORM_RPM |
| @@ -207,4 +207,19 @@ python () { | |||
| 207 | bb.data.setVarFlag('do_rootfs', 'recrdeptask', flags, d) | 207 | bb.data.setVarFlag('do_rootfs', 'recrdeptask', flags, d) |
| 208 | bb.data.setVar('RPM_PREPROCESS_COMMANDS', '', d) | 208 | bb.data.setVar('RPM_PREPROCESS_COMMANDS', '', d) |
| 209 | bb.data.setVar('RPM_POSTPROCESS_COMMANDS', '', d) | 209 | bb.data.setVar('RPM_POSTPROCESS_COMMANDS', '', d) |
| 210 | |||
| 211 | ml_package_archs = "" | ||
| 212 | multilibs = d.getVar('MULTILIBS', True) or "" | ||
| 213 | for ext in multilibs.split(): | ||
| 214 | eext = ext.split(':') | ||
| 215 | if len(eext) > 1 and eext[0] == 'multilib': | ||
| 216 | localdata = bb.data.createCopy(d) | ||
| 217 | overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + eext[1] | ||
| 218 | localdata.setVar("OVERRIDES", overrides) | ||
| 219 | # TEMP: OVERRIDES isn't working right | ||
| 220 | localdata.setVar("TUNENAME", localdata.getVar("TUNENAME_virtclass-multilib-" + eext[1], False) or "") | ||
| 221 | ml_package_archs += localdata.getVar("PACKAGE_ARCHS", True) or "" | ||
| 222 | bb.note("ML_PACKAGE_ARCHS %s %s %s" % (eext[1], localdata.getVar("PACKAGE_ARCHS", True) or "(none)", overrides)) | ||
| 223 | bb.data.setVar('MULTILIB_PACKAGE_ARCHS', ml_package_archs, d) | ||
| 224 | |||
| 210 | } | 225 | } |
