Ok. I have been looking for something like this for some time now :)


On Monday, August 5, 2019 at 7:38:31 PM UTC+5:30, Q. Gylstorff wrote:
From: Quirin Gylstorff <quirin....@siemens.com>

To create products it is necessary to have a list
of used packages for clearance and to security monitoring.
To get a simple list of packages use dpkg-query and generate
a list with the following pattern:

source name| source version | binary package name | binary version

To use it add following line to the local.conf:
ISAR_DO_PACKAGE_LIST ?= "1"

Signed-off-by: Quirin Gylstorff <quirin....@siemens.com>
---
 meta-isar/conf/local.conf.sample                 |  4 ++++
 .../classes/image-package-list-extension.bbclass | 16 ++++++++++++++++
 meta/classes/image.bbclass                       |  1 +
 3 files changed, 21 insertions(+)
 create mode 100644 meta/classes/image-package-list-extension.bbclass

diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
index 5b3a0a1..d188051 100644
--- a/meta-isar/conf/local.conf.sample
+++ b/meta-isar/conf/local.conf.sample
@@ -170,6 +170,10 @@ IMAGE_INSTALL = "hello-isar example-raw example-module-${KERNEL_NAME} enable-fsc
 # NOTE: this works on build host >= stretch for armhf, arm64 and amd64 targets for now.
 ISAR_CROSS_COMPILE ?= "0"
 
+#
+# Generate package list
+ISAR_DO_PACKAGE_LIST ?= "1"
+
 #
 # Uncomment this to enable use of cached base repository
 #ISAR_USE_CACHED_BASE_REPO ?= "1"
diff --git a/meta/classes/image-package-list-extension.bbclass b/meta/classes/image-package-list-extension.bbclass
new file mode 100644
index 0000000..558922e
--- /dev/null
+++ b/meta/classes/image-package-list-extension.bbclass
@@ -0,0 +1,16 @@
+# This software is a part of ISAR.
+# Copyright (C) Siemens AG, 2019
+#
+# SPDX-License-Identifier: MIT
+
+ISAR_DO_PACKAGE_LIST ??= "0"
+image_package_list[dirs] = "${DEPLOY_DIR_IMAGE}"
+image_package_list() {
+    if [ "${@repr(bb.utils.to_boolean(d.getVar('ISAR_DO_PACKAGE_LIST')))}" = 'True' ]; then
+      dpkg-query --admindir=${IMAGE_ROOTFS}/var/lib/dpkg/ \
+          -f '${source:Package}|${source:Version}|${binary:Package}|${Version}\n' -W > \
+          ${DEPLOY_DIR_IMAGE}/${IMAGE_FULLNAME}.packages.lst

May be we could format and sort this a bit.

dpkg-query --admindir=${IMAGE_ROOTFS}/var/lib/dpkg/ \
              -f '${source:Package}|${source:Version}|${binary:Package}|${Version}\n' -W | column -t | sort

You could add column headers as well.

+    fi
+}
+ROOTFS_POSTPROCESS_COMMAND =+ "image_package_list"
+
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index ec6bd39..85bab64 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -68,6 +68,7 @@ inherit image-tools-extension
 inherit image-postproc-extension
 inherit image-locales-extension
 inherit image-account-extension
+inherit image-package-list-extension
 
 # Extra space for rootfs in MB
 ROOTFS_EXTRA ?= "64"
--
2.20.1

Thanks,
Vijai Kumar K