diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index bc60f0d6c0..8217fb3254 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 ebb842ba86..a63280d1ef 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 04c71af42e..fc6ed536a8 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 b0105931a1..67cccafe4c 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 6ce3e5d908..dbe1c798a6 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 diff --git a/scripts/opkg-query-helper.py b/scripts/opkg-query-helper.py index fa6c44fa8b..2fb1a78970 100755 --- a/scripts/opkg-query-helper.py +++ b/scripts/opkg-query-helper.py @@ -28,6 +28,7 @@ import re archmode = False filemode = False +vermode = False args = [] for arg in sys.argv[1:]: @@ -35,6 +36,8 @@ for arg in sys.argv[1:]: archmode = True elif arg == '-f': filemode = True + elif arg == '-v': + vermode = True else: args.append(arg) @@ -60,6 +63,12 @@ for line in fileinput.input(args): elif line.startswith("Architecture:"): arch = line.split(": ")[1] print("%s %s_%s_%s.ipk %s" % (pkg,pkg,ver,arch,arch)) + elif vermode: + if line.startswith("Version:"): + ver = line.split(": ")[1] + elif line.startswith("Architecture:"): + arch = line.split(": ")[1] + print("%s %s %s" % (pkg,arch,ver)) else: if line.startswith("Depends:"): depval = line.split(": ")[1]