diff options
Diffstat (limited to 'meta/classes/package_rpm.bbclass')
-rw-r--r-- | meta/classes/package_rpm.bbclass | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass index b84c0441b4..d5406c21a8 100644 --- a/meta/classes/package_rpm.bbclass +++ b/meta/classes/package_rpm.bbclass @@ -182,6 +182,7 @@ rpm_update_pkg () { # been run by now, so don't have to run them(preun, postun, etc.) when # erase the pkg if [ -s ${target_rootfs}/install/remove.manifest ]; then + echo "# Remove manifest padding...." >> ${target_rootfs}/install/remove.manifest rpm_common_comand --noscripts --nodeps \ -e `cat ${target_rootfs}/install/remove.manifest` fi @@ -249,7 +250,7 @@ package_install_internal_rpm () { # Setup manifest of packages to install... mkdir -p ${target_rootfs}/install - echo "# Install manifest" > ${target_rootfs}/install/install.manifest + rm -f ${target_rootfs}/install/install.manifest # Uclibc builds don't provide this stuff... if [ x${TARGET_OS} = "xlinux" ] || [ x${TARGET_OS} = "xlinux-gnueabi" ] ; then @@ -309,12 +310,15 @@ package_install_internal_rpm () { # Generate an install solution by doing a --justdb install, then recreate it with # an actual package install! - ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ - --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ - -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}-base_archs.macro`" \ - -D "__dbi_txn create nofsync" \ - -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ - ${target_rootfs}/install/install.manifest + if [ -s ${target_rootfs}/install/install.manifest ]; then + echo "# Install manifest padding" >> ${target_rootfs}/install/install.manifest + ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ + --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ + -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}-base_archs.macro`" \ + -D "__dbi_txn create nofsync" \ + -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ + ${target_rootfs}/install/install.manifest + fi if [ ! -z "${package_attemptonly}" ]; then echo "Adding attempt only packages..." @@ -407,8 +411,9 @@ package_install_internal_rpm () { touch ${target_rootfs}/install/install_multilib_solution.manifest - if [ -e "${target_rootfs}/install/install_multilib.manifest" ]; then + if [ -s "${target_rootfs}/install/install_multilib.manifest" ]; then # multilib package installation + echo "# Install multilib manifest padding" >> ${target_rootfs}/install/install_multilib.manifest # Generate an install solution by doing a --justdb install, then recreate it with # an actual package install! @@ -493,33 +498,37 @@ EOF if [ "${INC_RPM_IMAGE_GEN}" = "1" -a -f "$pre_btmanifest" ]; then echo "Skipping pre install due to exisitng image" else - echo "# Initial Install manifest" > ${target_rootfs}/install/initial_install.manifest + rm -f ${target_rootfs}/install/initial_install.manifest echo "Installing base dependencies first (base-passwd, base-files and shadow) since rpm is special" grep /base-passwd-[0-9] ${target_rootfs}/install/total_solution.manifest >> ${target_rootfs}/install/initial_install.manifest || true grep /base-files-[0-9] ${target_rootfs}/install/total_solution.manifest >> ${target_rootfs}/install/initial_install.manifest || true grep /shadow-[0-9] ${target_rootfs}/install/total_solution.manifest >> ${target_rootfs}/install/initial_install.manifest || true - # Generate an install solution by doing a --justdb install, then recreate it with - # an actual package install! - mkdir -p ${target_rootfs}/initial + if [ -s ${target_rootfs}/install/initial_install.manifest ]; then + echo "# Initial Install manifest padding..." >> ${target_rootfs}/install/initial_install.manifest - ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ - --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ - -D "_dbpath ${target_rootfs}/initial" -D "`cat ${confbase}.macro`" \ - -D "__dbi_txn create nofsync" \ - -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ - ${target_rootfs}/install/initial_install.manifest + # Generate an install solution by doing a --justdb install, then recreate it with + # an actual package install! + mkdir -p ${target_rootfs}/initial - ${RPM} -D "_dbpath ${target_rootfs}/initial" -qa --qf "%{packageorigin}\n" \ - -D "__dbi_txn create nofsync private" \ - > ${target_rootfs}/install/initial_solution.manifest + ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ + --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ + -D "_dbpath ${target_rootfs}/initial" -D "`cat ${confbase}.macro`" \ + -D "__dbi_txn create nofsync" \ + -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ + ${target_rootfs}/install/initial_install.manifest + + ${RPM} -D "_dbpath ${target_rootfs}/initial" -qa --qf "%{packageorigin}\n" \ + -D "__dbi_txn create nofsync private" \ + > ${target_rootfs}/install/initial_solution.manifest - rpm_update_pkg ${target_rootfs}/install/initial_solution.manifest + rpm_update_pkg ${target_rootfs}/install/initial_solution.manifest - grep -Fv -f ${target_rootfs}/install/initial_solution.manifest ${target_rootfs}/install/total_solution.manifest > ${target_rootfs}/install/total_solution.manifest.new - mv ${target_rootfs}/install/total_solution.manifest.new ${target_rootfs}/install/total_solution.manifest + grep -Fv -f ${target_rootfs}/install/initial_solution.manifest ${target_rootfs}/install/total_solution.manifest > ${target_rootfs}/install/total_solution.manifest.new + mv ${target_rootfs}/install/total_solution.manifest.new ${target_rootfs}/install/total_solution.manifest - rm -rf ${target_rootfs}/initial + rm -rf ${target_rootfs}/initial + fi fi echo "Installing main solution manifest (${target_rootfs}/install/total_solution.manifest)" |