diff options
| author | Robert Yang <liezhi.yang@windriver.com> | 2012-06-21 10:30:00 +0800 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-06-21 13:03:03 +0100 |
| commit | 9b8daa906f860846fb6e87cdb5a7a9aa009bd4d6 (patch) | |
| tree | 400368d8d00e408c55c599131793397b868faf01 | |
| parent | 97dd7e14c6cf42d61a4e592d2b2316418a53a3c8 (diff) | |
| download | poky-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.bbclass | 16 |
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 |
