Просмотр исходного кода

meta: Fix conflicting name of image manifest and dpkg_status

Features `generate-manifest` and `export-dpkg-status` should
consider multiconfigs for different distro/machine versions
of the same architecture running in parallel.

Before, only the most recent manifest and dpkg_status files were
stored in deploy directory because they overwrote existing files.

Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
Uladzimir Bely 3 лет назад
Родитель
Сommit
5f8ae34bed
3 измененных файлов с 13 добавлено и 2 удалено
  1. 8 0
      RECIPE-API-CHANGELOG.md
  2. 1 0
      meta/classes/image.bbclass
  3. 4 2
      meta/classes/rootfs.bbclass

+ 8 - 0
RECIPE-API-CHANGELOG.md

@@ -314,3 +314,11 @@ The "NAME" used to be rather static and the TAG was always "latest", now the val
 ### Renamed variable CONTAINER_FORMATS to CONTAINER_IMAGE_FORMATS
 
 The meaning remains the same, just the name changed.
+
+### Changed location of deployed *.dpkg_status and *.manifest files
+
+Now, parallel multiconfigs for different machines with same architectures don't
+share the same location for image *.manifest and *.dpkg_status files, so they
+are not owerwritten by last build ones anymore.
+
+Output file names now include distro name and architecture/machine name parts.

+ 1 - 0
meta/classes/image.bbclass

@@ -74,6 +74,7 @@ ROOTFS_FEATURES += "clean-package-cache generate-manifest export-dpkg-status cle
 ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
 ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
 ROOTFS_DPKGSTATUS_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
+ROOTFS_PACKAGE_SUFFIX ?= "${PN}-${DISTRO}-${MACHINE}"
 
 ROOTFS_POSTPROCESS_COMMAND_prepend = "${@bb.utils.contains('BASE_REPO_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)} "
 

+ 4 - 2
meta/classes/rootfs.bbclass

@@ -19,6 +19,8 @@ ROOTFS_APT_ARGS="install --yes -o Debug::pkgProblemResolver=yes"
 
 ROOTFS_CLEAN_FILES="/etc/hostname /etc/resolv.conf"
 
+ROOTFS_PACKAGE_SUFFIX ?= "${PN}-${DISTRO}-${DISTRO_ARCH}"
+
 # Useful environment variables:
 export E = "${@ isar_export_proxies(d)}"
 export DEBIAN_FRONTEND = "noninteractive"
@@ -231,14 +233,14 @@ rootfs_generate_manifest () {
     sudo -E chroot --userspec=$(id -u):$(id -g) '${ROOTFSDIR}' \
         dpkg-query -W -f \
             '${source:Package}|${source:Version}|${binary:Package}|${Version}\n' > \
-        ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
+        '${ROOTFS_MANIFEST_DEPLOY_DIR}'/'${ROOTFS_PACKAGE_SUFFIX}'.manifest
 }
 
 ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'export-dpkg-status', 'rootfs_export_dpkg_status', '', d)}"
 rootfs_export_dpkg_status() {
     mkdir -p ${ROOTFS_DPKGSTATUS_DEPLOY_DIR}
     cp '${ROOTFSDIR}'/var/lib/dpkg/status \
-       '${ROOTFS_DPKGSTATUS_DEPLOY_DIR}'/'${PF}'.dpkg_status
+       '${ROOTFS_DPKGSTATUS_DEPLOY_DIR}'/'${ROOTFS_PACKAGE_SUFFIX}'.dpkg_status
 }
 
 do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"