From 436c5f4716bae47bf9ddddfe0cbaf595a3de46c7 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Thu, 6 Nov 2008 16:23:32 +0000 Subject: classes: Add mechanism to install packages into images only if they've been built --- meta/classes/image.bbclass | 2 ++ meta/classes/rootfs_deb.bbclass | 14 +++++++++++--- meta/classes/rootfs_ipk.bbclass | 4 ++++ meta/classes/rootfs_rpm.bbclass | 4 ++++ 4 files changed, 21 insertions(+), 3 deletions(-) (limited to 'meta') diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 8407cdd56..35b7e1249 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -9,6 +9,7 @@ INHIBIT_DEFAULT_DEPS = "1" # "export IMAGE_BASENAME" not supported at this time IMAGE_BASENAME[export] = "1" export PACKAGE_INSTALL ?= "${IMAGE_INSTALL}" +PACKAGE_INSTALL_ATTEMPTONLY ?= "" # We need to recursively follow RDEPENDS and RRECOMMENDS for images do_rootfs[recrdeptask] += "do_deploy do_populate_staging" @@ -36,6 +37,7 @@ python () { bb.data.setVarFlag('do_rootfs', 'depends', deps, d) runtime_mapping_rename("PACKAGE_INSTALL", d) + runtime_mapping_rename("PACKAGE_INSTALL_ATTEMPTONLY", d) } # diff --git a/meta/classes/rootfs_deb.bbclass b/meta/classes/rootfs_deb.bbclass index 55d2b920b..411a6c4e7 100644 --- a/meta/classes/rootfs_deb.bbclass +++ b/meta/classes/rootfs_deb.bbclass @@ -81,12 +81,20 @@ fakeroot rootfs_deb_do_rootfs () { if [ $? -ne 0 ]; then exit 1 fi - find ${IMAGE_ROOTFS} -name \*.dpkg-new | for i in `cat`; do - mv $i `echo $i | sed -e's,\.dpkg-new$,,'` - done done fi + rm ${WORKDIR}/temp/log.do_$target-attemptonly.${PID} + if [ ! -z "${PACKAGE_INSTALL_ATTEMPTONLY}" ]; then + for i in ${PACKAGE_INSTALL_ATTEMPTONLY}; do + apt-get install $i --force-yes --allow-unauthenticated >> ${WORKDIR}/temp/log.do_$target-attemptonly.${PID} || true + done + fi + + find ${IMAGE_ROOTFS} -name \*.dpkg-new | for i in `cat`; do + mv $i `echo $i | sed -e's,\.dpkg-new$,,'` + done + install -d ${IMAGE_ROOTFS}/${sysconfdir} echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version diff --git a/meta/classes/rootfs_ipk.bbclass b/meta/classes/rootfs_ipk.bbclass index ce6dd797e..07f418adb 100644 --- a/meta/classes/rootfs_ipk.bbclass +++ b/meta/classes/rootfs_ipk.bbclass @@ -42,6 +42,10 @@ fakeroot rootfs_ipk_do_rootfs () { opkg-cl ${IPKG_ARGS} install ${PACKAGE_INSTALL} fi + if [ ! -z "${PACKAGE_INSTALL_ATTEMPTONLY}" ]; then + opkg-cl ${IPKG_ARGS} install ${PACKAGE_INSTALL_ATTEMPTONLY} > "${WORKDIR}/temp/log.do_rootfs_attemptonly.${PID}" || true + fi + export D=${IMAGE_ROOTFS} export OFFLINE_ROOT=${IMAGE_ROOTFS} export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS} diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass index e3697cb12..dcdd37c8e 100644 --- a/meta/classes/rootfs_rpm.bbclass +++ b/meta/classes/rootfs_rpm.bbclass @@ -110,6 +110,10 @@ EOF fakechroot yum ${YUMARGS} -y install ${PACKAGE_INSTALL} fi + if [ ! -z "${PACKAGE_INSTALL_ATTEMPTONLY}" ]; then + fakechroot yum ${YUMARGS} -y install ${PACKAGE_INSTALL_ATTEMPTONLY} > ${WORKDIR}/temp/log.do_$target-attemptonly.${PID} || true + fi + # Add any recommended packages to the image # (added as an extra script since yum itself doesn't support this) yum-install-recommends.py ${IMAGE_ROOTFS} "fakechroot yum ${YUMARGS} -y install" -- cgit v1.2.3