From 13c379e5c6e37b3822bf6e4e18cc6317e5b40fbb Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Wed, 6 Mar 2019 14:45:15 +0100
Subject: [PATCH] ib: display whether profile comes with image metadata

Having image metadata (and signature) appended is a condition for
semi-automated sysupgrade, hence IB needs to be able to tell which
images will end up with metadata.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 include/image.mk                   | 1 +
 scripts/metadata.pm                | 2 ++
 scripts/target-metadata.pl         | 1 +
 target/imagebuilder/files/Makefile | 2 +-
 4 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/include/image.mk b/include/image.mk
index 5268f0bdb78..62e3af9e4f6 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -557,6 +557,7 @@ define Device/DumpInfo
 Target-Profile: DEVICE_$(1)
 Target-Profile-Name: $(DEVICE_TITLE)
 Target-Profile-Packages: $(DEVICE_PACKAGES)
+Target-Profile-hasImageMetadata: $(if $(foreach image,$(IMAGES),$(findstring append-metadata,$(IMAGE/$(image)))),1,0)
 Target-Profile-Description:
 $(DEVICE_DESCRIPTION)
 @@
diff --git a/scripts/metadata.pm b/scripts/metadata.pm
index 5300e293e7b..d9804f8dc38 100644
--- a/scripts/metadata.pm
+++ b/scripts/metadata.pm
@@ -139,6 +139,7 @@ sub parse_target_metadata($) {
 			$profile = {
 				id => $1,
 				name => $1,
+				has_image_metadata => 0,
 				priority => 999,
 				packages => []
 			};
@@ -146,6 +147,7 @@ sub parse_target_metadata($) {
 			push @{$target->{profiles}}, $profile;
 		};
 		/^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1;
+		/^Target-Profile-hasImageMetadata:\s*(\d+)\s*$/ and $profile->{has_image_metadata} = $1;
 		/^Target-Profile-Priority:\s*(\d+)\s*$/ and do {
 			$profile->{priority} = $1;
 			$target->{sort} = 1;
diff --git a/scripts/target-metadata.pl b/scripts/target-metadata.pl
index ef0a34eb4ff..2f045eb3798 100755
--- a/scripts/target-metadata.pl
+++ b/scripts/target-metadata.pl
@@ -422,6 +422,7 @@ sub gen_profile_mk() {
 		print "PROFILE_NAMES = ".join(" ", map { $_->{id} } @{$cur->{profiles}})."\n";
 		foreach my $profile (@{$cur->{profiles}}) {
 			print $profile->{id}.'_NAME:='.$profile->{name}."\n";
+			print $profile->{id}.'_HAS_IMAGE_METADATA:='.$profile->{has_image_metadata}."\n";
 			print $profile->{id}.'_PACKAGES:='.join(' ', @{$profile->{packages}})."\n";
 		}
 	}
diff --git a/target/imagebuilder/files/Makefile b/target/imagebuilder/files/Makefile
index 76ea19028ed..1370ec27dfe 100644
--- a/target/imagebuilder/files/Makefile
+++ b/target/imagebuilder/files/Makefile
@@ -73,7 +73,7 @@ include $(INCLUDE_DIR)/target.mk
 
 USER_PROFILE ?= $(firstword $(PROFILE_NAMES))
 PROFILE_LIST = $(foreach p,$(PROFILE_NAMES), \
-	echo '$(patsubst DEVICE_%,%,$(p)):'; $(if $($(p)_NAME),echo '    $(subst ','"'"',$($(p)_NAME))'; ) echo '    Packages: $($(p)_PACKAGES)'; \
+	echo '$(patsubst DEVICE_%,%,$(p)):'; $(if $($(p)_NAME),echo '    $(subst ','"'"',$($(p)_NAME))'; ) echo '    Packages: $($(p)_PACKAGES)'; echo '    hasImageMetadata: $($(p)_HAS_IMAGE_METADATA)';\
 )
 
 .profiles.mk: .targetinfo
-- 
GitLab