summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2012-06-21 10:30:00 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-06-21 13:03:03 +0100
commit9b8daa906f860846fb6e87cdb5a7a9aa009bd4d6 (patch)
tree400368d8d00e408c55c599131793397b868faf01
parent97dd7e14c6cf42d61a4e592d2b2316418a53a3c8 (diff)
downloadpoky-9b8daa906f860846fb6e87cdb5a7a9aa009bd4d6.tar.gz
package_rpm.bbclass: fix incremental rpm generation
Fixes: * Remove the "echo '# Remove manifest padding....' > remove.manifest, The remove.manifest would be used via "rpm -e `remove.manifest`", there would be error since there is no pkg called: Remove, manifest or padding * The incremental.manifest can't be null when used by rpm, so check it before use. * The rpm needs: --root "${target_rootfs}/install" when use: -D "_dbpath ${target_rootfs}/install" Otherwise it would use the ${target_rootfs} as the root, and use the ${target_rootfs}/var/lib/rpm as the dbpath, this is OK in a fresh installation, but there would be errors when increment rpm generation. [YOCTO #2617] (From OE-Core rev: 7d702c637b84c028c9763246b3ac355d10083ea3) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/package_rpm.bbclass16
1 files changed, 13 insertions, 3 deletions
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
index d5406c21a8..5559a4671f 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -182,14 +182,15 @@ rpm_update_pkg () {
182 # been run by now, so don't have to run them(preun, postun, etc.) when 182 # been run by now, so don't have to run them(preun, postun, etc.) when
183 # erase the pkg 183 # erase the pkg
184 if [ -s ${target_rootfs}/install/remove.manifest ]; then 184 if [ -s ${target_rootfs}/install/remove.manifest ]; then
185 echo "# Remove manifest padding...." >> ${target_rootfs}/install/remove.manifest
186 rpm_common_comand --noscripts --nodeps \ 185 rpm_common_comand --noscripts --nodeps \
187 -e `cat ${target_rootfs}/install/remove.manifest` 186 -e `cat ${target_rootfs}/install/remove.manifest`
188 fi 187 fi
189 188
190 # Attempt to install the incremental pkgs 189 # Attempt to install the incremental pkgs
191 rpm_common_comand --nodeps --replacefiles --replacepkgs \ 190 if [ -s ${target_rootfs}/install/incremental.manifest ]; then
192 -Uvh ${target_rootfs}/install/incremental.manifest 191 rpm_common_comand --nodeps --replacefiles --replacepkgs \
192 -Uvh ${target_rootfs}/install/incremental.manifest
193 fi
193 else 194 else
194 # Attempt to install 195 # Attempt to install
195 rpm_common_comand --replacepkgs -Uhv $manifest 196 rpm_common_comand --replacepkgs -Uhv $manifest
@@ -314,6 +315,7 @@ package_install_internal_rpm () {
314 echo "# Install manifest padding" >> ${target_rootfs}/install/install.manifest 315 echo "# Install manifest padding" >> ${target_rootfs}/install/install.manifest
315 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ 316 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
316 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ 317 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \
318 --root "${target_rootfs}/install" \
317 -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}-base_archs.macro`" \ 319 -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}-base_archs.macro`" \
318 -D "__dbi_txn create nofsync" \ 320 -D "__dbi_txn create nofsync" \
319 -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ 321 -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
@@ -343,6 +345,7 @@ package_install_internal_rpm () {
343 echo "Attempting $pkg_name..." >> "${WORKDIR}/temp/log.do_${task}_attemptonly.${PID}" 345 echo "Attempting $pkg_name..." >> "${WORKDIR}/temp/log.do_${task}_attemptonly.${PID}"
344 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ 346 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
345 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ 347 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \
348 --root "${target_rootfs}/install" \
346 -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \ 349 -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \
347 -D "__dbi_txn create nofsync private" \ 350 -D "__dbi_txn create nofsync private" \
348 -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ 351 -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
@@ -363,6 +366,7 @@ package_install_internal_rpm () {
363 # Dump the full set of recommends... 366 # Dump the full set of recommends...
364 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ 367 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
365 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ 368 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \
369 --root "${target_rootfs}/install" \
366 -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \ 370 -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \
367 -D "__dbi_txn create nofsync private" \ 371 -D "__dbi_txn create nofsync private" \
368 -qa --qf "[%{RECOMMENDS}\n]" | sort -u > ${target_rootfs}/install/recommend 372 -qa --qf "[%{RECOMMENDS}\n]" | sort -u > ${target_rootfs}/install/recommend
@@ -392,6 +396,7 @@ package_install_internal_rpm () {
392 echo "Attempting $pkg_name..." >> "${WORKDIR}/temp/log.do_{task}_recommend.${PID}" 396 echo "Attempting $pkg_name..." >> "${WORKDIR}/temp/log.do_{task}_recommend.${PID}"
393 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ 397 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
394 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ 398 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \
399 --root "${target_rootfs}/install" \
395 -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \ 400 -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \
396 -D "__dbi_txn create nofsync private" \ 401 -D "__dbi_txn create nofsync private" \
397 -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ 402 -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
@@ -406,6 +411,7 @@ package_install_internal_rpm () {
406 # Now that we have a solution, pull out a list of what to install... 411 # Now that we have a solution, pull out a list of what to install...
407 echo "Manifest: ${target_rootfs}/install/install.manifest" 412 echo "Manifest: ${target_rootfs}/install/install.manifest"
408 ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --qf "%{packageorigin}\n" \ 413 ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --qf "%{packageorigin}\n" \
414 --root "${target_rootfs}/install" \
409 -D "__dbi_txn create nofsync private" \ 415 -D "__dbi_txn create nofsync private" \
410 > ${target_rootfs}/install/install_solution.manifest 416 > ${target_rootfs}/install/install_solution.manifest
411 417
@@ -419,6 +425,7 @@ package_install_internal_rpm () {
419 # an actual package install! 425 # an actual package install!
420 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ 426 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
421 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ 427 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \
428 --root "${target_rootfs}/install" \
422 -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}-ml_archs.macro`" \ 429 -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}-ml_archs.macro`" \
423 -D "__dbi_txn create nofsync" \ 430 -D "__dbi_txn create nofsync" \
424 -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ 431 -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
@@ -427,6 +434,7 @@ package_install_internal_rpm () {
427 # Now that we have a solution, pull out a list of what to install... 434 # Now that we have a solution, pull out a list of what to install...
428 echo "Manifest: ${target_rootfs}/install/install_multilib.manifest" 435 echo "Manifest: ${target_rootfs}/install/install_multilib.manifest"
429 ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --qf "%{packageorigin}\n" \ 436 ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --qf "%{packageorigin}\n" \
437 --root "${target_rootfs}/install" \
430 -D "__dbi_txn create nofsync private" \ 438 -D "__dbi_txn create nofsync private" \
431 > ${target_rootfs}/install/install_multilib_solution.manifest 439 > ${target_rootfs}/install/install_multilib_solution.manifest
432 440
@@ -513,6 +521,7 @@ EOF
513 521
514 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ 522 ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
515 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ 523 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \
524 --root "${target_rootfs}/install" \
516 -D "_dbpath ${target_rootfs}/initial" -D "`cat ${confbase}.macro`" \ 525 -D "_dbpath ${target_rootfs}/initial" -D "`cat ${confbase}.macro`" \
517 -D "__dbi_txn create nofsync" \ 526 -D "__dbi_txn create nofsync" \
518 -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ 527 -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
@@ -520,6 +529,7 @@ EOF
520 529
521 ${RPM} -D "_dbpath ${target_rootfs}/initial" -qa --qf "%{packageorigin}\n" \ 530 ${RPM} -D "_dbpath ${target_rootfs}/initial" -qa --qf "%{packageorigin}\n" \
522 -D "__dbi_txn create nofsync private" \ 531 -D "__dbi_txn create nofsync private" \
532 --root "${target_rootfs}/install" \
523 > ${target_rootfs}/install/initial_solution.manifest 533 > ${target_rootfs}/install/initial_solution.manifest
524 534
525 rpm_update_pkg ${target_rootfs}/install/initial_solution.manifest 535 rpm_update_pkg ${target_rootfs}/install/initial_solution.manifest