summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2013-11-26 12:09:52 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-11-26 23:01:32 +0000
commit960e305d9abbbeed0ed2d5251ff94cf1719e5159 (patch)
treef87d43abb5a24f12b58d73e934ee2bb05456fa75 /meta
parentbbbd6fc1d1342936b583289c6dcaf7b4ea60eb5c (diff)
downloadast2050-yocto-poky-960e305d9abbbeed0ed2d5251ff94cf1719e5159.zip
ast2050-yocto-poky-960e305d9abbbeed0ed2d5251ff94cf1719e5159.tar.gz
classes/image: write image manifest
Write a list of installed packages to a .manifest file next to the image, so we can find out what went into the image after it has been constructed without necessarily having to have buildhistory enabled (although that will provide more detail.) We can make use of this for example in the testimage class associated code that checks for installed packages for determining whether or not to run specific tests. Note: this replaces the previous ipk-specific manifest code with something that works for ipk, rpm and deb, and instead of a pruned status file, packages are listed one per line, in the following format: <packagename> <packagearch> <version> Tests for all three backends have shown that the performance impact of this change is negligible (about 1.5s max). Implements [YOCTO #5410] (From OE-Core rev: 2978d1f2617a33e2e3a77e249d73e998d79b4ec9) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/image.bbclass15
-rw-r--r--meta/classes/populate_sdk_deb.bbclass2
-rw-r--r--meta/classes/populate_sdk_ipk.bbclass2
-rw-r--r--meta/classes/populate_sdk_rpm.bbclass2
-rw-r--r--meta/classes/rootfs_ipk.bbclass14
5 files changed, 15 insertions, 20 deletions
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index bc60f0d..8217fb3 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -179,6 +179,9 @@ ROOTFS_POSTPROCESS_COMMAND_prepend = "run_intercept_scriptlets; "
ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("IMAGE_FEATURES", "debug-tweaks", "ssh_allow_empty_password; ", "",d)}'
# Enable postinst logging if debug-tweaks is enabled
ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("IMAGE_FEATURES", "debug-tweaks", "postinst_enable_logging; ", "",d)}'
+# Write manifest
+IMAGE_MANIFEST = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.manifest"
+ROOTFS_POSTPROCESS_COMMAND =+ "write_image_manifest ; "
# Set default postinst log file
POSTINST_LOGFILE ?= "${localstatedir}/log/postinstall.log"
@@ -381,6 +384,11 @@ fakeroot do_rootfs () {
${IMAGE_POSTPROCESS_COMMAND}
${MACHINE_POSTPROCESS_COMMAND}
+
+ if [ -n "${IMAGE_LINK_NAME}" -a -f "${IMAGE_MANIFEST}" ]; then
+ rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.manifest
+ ln -s ${IMAGE_NAME}.rootfs.manifest ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.manifest
+ fi
}
insert_feed_uris () {
@@ -602,12 +610,7 @@ make_zimage_symlink_relative () {
}
write_image_manifest () {
- rootfs_${IMAGE_PKGTYPE}_write_manifest
-
- if [ -n "${IMAGE_LINK_NAME}" ]; then
- rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.manifest
- ln -s ${IMAGE_NAME}.rootfs.manifest ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.manifest
- fi
+ list_installed_packages ver | sort > ${IMAGE_MANIFEST}
}
# Make login manager(s) enable automatic login.
diff --git a/meta/classes/populate_sdk_deb.bbclass b/meta/classes/populate_sdk_deb.bbclass
index ebb842b..a63280d 100644
--- a/meta/classes/populate_sdk_deb.bbclass
+++ b/meta/classes/populate_sdk_deb.bbclass
@@ -84,6 +84,8 @@ list_installed_packages() {
echo "$pkg $fullpath $pkgarch"
fi
done
+ elif [ "$1" = "ver" ] ; then
+ ${DPKG_QUERY_COMMAND} -W -f='${Package} ${PackageArch} ${Version}\n'
else
${DPKG_QUERY_COMMAND} -W -f='${Package}\n'
fi
diff --git a/meta/classes/populate_sdk_ipk.bbclass b/meta/classes/populate_sdk_ipk.bbclass
index 04c71af..fc6ed53 100644
--- a/meta/classes/populate_sdk_ipk.bbclass
+++ b/meta/classes/populate_sdk_ipk.bbclass
@@ -70,6 +70,8 @@ list_installed_packages() {
echo "$pkg $fullpath $pkgarch"
fi
done
+ elif [ "$1" = "ver" ] ; then
+ opkg-cl ${OPKG_ARGS} status | opkg-query-helper.py -v
else
opkg-cl ${OPKG_ARGS} list_installed | awk '{ print $1 }'
fi
diff --git a/meta/classes/populate_sdk_rpm.bbclass b/meta/classes/populate_sdk_rpm.bbclass
index b010593..67cccaf 100644
--- a/meta/classes/populate_sdk_rpm.bbclass
+++ b/meta/classes/populate_sdk_rpm.bbclass
@@ -162,6 +162,8 @@ list_installed_packages() {
${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{ARCH}\n]" | translate_smart_to_oe arch
elif [ "$1" = "file" ]; then
${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{ARCH} %{PACKAGEORIGIN}\n]" | translate_smart_to_oe file
+ elif [ "$1" = "ver" ]; then
+ ${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{ARCH} %{VERSION}\n]" | translate_smart_to_oe arch
else
${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{ARCH}\n]" | translate_smart_to_oe
fi
diff --git a/meta/classes/rootfs_ipk.bbclass b/meta/classes/rootfs_ipk.bbclass
index 6ce3e5d..dbe1c79 100644
--- a/meta/classes/rootfs_ipk.bbclass
+++ b/meta/classes/rootfs_ipk.bbclass
@@ -118,20 +118,6 @@ save_postinsts () {
done
}
-rootfs_ipk_write_manifest() {
- manifest=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.manifest
- cp ${IMAGE_ROOTFS}${OPKGLIBDIR}/opkg/status $manifest
-
- sed '/Depends/d' -i $manifest
- sed '/Status/d' -i $manifest
- sed '/Architecture/d' -i $manifest
- sed '/Installed-Time/d' -i $manifest
- sed '/Auto-Installed/d' -i $manifest
- sed '/Recommends/d' -i $manifest
- sed '/Provides/d' -i $manifest
- sed '/Conflicts/d' -i $manifest
-}
-
remove_packaging_data_files() {
rm -rf ${IMAGE_ROOTFS}${OPKGLIBDIR}/opkg
# We need the directory for the package manager lock
OpenPOWER on IntegriCloud