[OE-core] [PATCH 8/9] package_rpm: Verify that the package manifests are not empty
Khem Raj
raj.khem at gmail.com
Mon Jun 11 19:56:30 UTC 2012
On Monday, June 11, 2012, Mark Hatle <mark.hatle at windriver.com> wrote:
> An empty manifest will cause a failure condition. We ensure that any
install
> actions occur only with a manifest larger then size 0. Also ensure that
padding
> is added to the end of the manifest, instead of the beginning to enable
this
> size check. (Padding is required for very small manifest files..)
>
> Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
> ---
> 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 b84c044..bb9aa1a 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 "# Removal manifest padding...." >>
${target_rootfs}/install/remove.manifest
Should this be just 'remove'
> 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)"
> --
> 1.7.3.4
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20120611/27ec276c/attachment-0002.html>
More information about the Openembedded-core
mailing list