瀏覽代碼

metadata.pl: add support for forcing sorting of profiles

Used to mix device profiles (specified in the image makefile) with
regular target profiles.

Signed-off-by: Felix Fietkau <[email protected]>
Felix Fietkau 9 年之前
父節點
當前提交
1189af85fd
共有 3 個文件被更改,包括 12 次插入1 次删除
  1. 2 0
      include/target.mk
  2. 4 0
      scripts/metadata.pl
  3. 6 1
      scripts/metadata.pm

+ 2 - 0
include/target.mk

@@ -59,6 +59,7 @@ extra_packages = $(if $(filter wpad-mini wpad nas,$(1)),iwinfo)
 
 define ProfileDefault
   NAME:=
+  PRIORITY:=
   PACKAGES:=
 endef
 
@@ -70,6 +71,7 @@ define Profile
   dumpinfo : $(call shexport,Profile/$(1)/Description)
   DUMPINFO += \
 	echo "Target-Profile: $(1)"; \
+	$(if $(PRIORITY), echo "Target-Profile-Priority: $(PRIORITY)"; ) \
 	echo "Target-Profile-Name: $(NAME)"; \
 	echo "Target-Profile-Packages: $(PACKAGES) $(call extra_packages,$(DEFAULT_PACKAGES) $(PACKAGES))"; \
 	if [ -f ./config/profile-$(1) ]; then \

+ 4 - 0
scripts/metadata.pl

@@ -282,6 +282,10 @@ EOF
 
 	foreach my $target (@target) {
 		my $profiles = $target->{profiles};
+		$target->{sort} and @$profiles = sort {
+			$a->{priority} <=> $b->{priority} or
+			$a->{name} cmp $b->{name};
+		} @$profiles;
 
 		foreach my $profile (@$profiles) {
 			print <<EOF;

+ 6 - 1
scripts/metadata.pm

@@ -84,11 +84,16 @@ sub parse_target_metadata($) {
 			$profile = {
 				id => $1,
 				name => $1,
+				priority => 999,
 				packages => []
 			};
 			push @{$target->{profiles}}, $profile;
 		};
-		/^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1;
+		/^Target-Profile-Name:\s*(.+)\s*$/ and do {
+			$target->{sort} = 1;
+			$profile->{name} = $1;
+		};
+		/^Target-Profile-Priority:\s*(\d+)\s*$/ and $profile->{priority} = $1;
 		/^Target-Profile-Packages:\s*(.*)\s*$/ and $profile->{packages} = [ split(/\s+/, $1) ];
 		/^Target-Profile-Description:\s*(.*)\s*/ and $profile->{desc} = get_multiline(*FILE);
 		/^Target-Profile-Config:/ and $profile->{config} = get_multiline(*FILE, "\t");