build: allow overriding default selection state for devices

Allow overriding the default selection state for Devices, similar to
setting a default for packages.

E.g. by setting DEFAULT to n, they won't be selected by default anymore
when enabling all device in the multi device profile.

This allows preventing images being built by the default config for
known broken devices, devices without enough RAM/flash, or devices not
working with a certain kernel versions.

This does not prevent the devices from being manually selected or images
being built by the ImageBuilder. These devices often still have worth
with a reduced package-set, or as a device for regression testing, when
no better device is available.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
master
Jonas Gorski 2019-08-13 12:33:47 +02:00
parent dfe99645db
commit 7546be6007
3 changed files with 7 additions and 2 deletions

View File

@ -416,6 +416,8 @@ define Device/Init
FILESYSTEMS := $(TARGET_FILESYSTEMS) FILESYSTEMS := $(TARGET_FILESYSTEMS)
UBOOT_PATH := $(STAGING_DIR_IMAGE)/uboot-$(1) UBOOT_PATH := $(STAGING_DIR_IMAGE)/uboot-$(1)
DEFAULT :=
endef endef
DEFAULT_DEVICE_VARS := \ DEFAULT_DEVICE_VARS := \
@ -593,6 +595,7 @@ Target-Profile-Name: $(DEVICE_TITLE)
Target-Profile-Packages: $(DEVICE_PACKAGES) Target-Profile-Packages: $(DEVICE_PACKAGES)
Target-Profile-hasImageMetadata: $(if $(foreach image,$(IMAGES),$(findstring append-metadata,$(IMAGE/$(image)))),1,0) Target-Profile-hasImageMetadata: $(if $(foreach image,$(IMAGES),$(findstring append-metadata,$(IMAGE/$(image)))),1,0)
Target-Profile-SupportedDevices: $(SUPPORTED_DEVICES) Target-Profile-SupportedDevices: $(SUPPORTED_DEVICES)
$(if $(DEFAULT),Target-Profile-Default: $(DEFAULT))
Target-Profile-Description: Target-Profile-Description:
$(DEVICE_DESCRIPTION) $(DEVICE_DESCRIPTION)
@@ @@

View File

@ -143,7 +143,8 @@ sub parse_target_metadata($) {
has_image_metadata => 0, has_image_metadata => 0,
supported_devices => [], supported_devices => [],
priority => 999, priority => 999,
packages => [] packages => [],
default => "y if TARGET_ALL_PROFILES"
}; };
$1 =~ /^DEVICE_/ and $target->{has_devices} = 1; $1 =~ /^DEVICE_/ and $target->{has_devices} = 1;
push @{$target->{profiles}}, $profile; push @{$target->{profiles}}, $profile;
@ -157,6 +158,7 @@ sub parse_target_metadata($) {
}; };
/^Target-Profile-Packages:\s*(.*)\s*$/ and $profile->{packages} = [ split(/\s+/, $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-Description:\s*(.*)\s*/ and $profile->{desc} = get_multiline(*FILE);
/^Target-Profile-Default:\s*(.+)\s*$/ and $profile->{default} = $1;
} }
close FILE; close FILE;
foreach my $target (@target) { foreach my $target (@target) {

View File

@ -296,7 +296,7 @@ EOF
menuconfig TARGET_DEVICE_$target->{conf}_$profile->{id} menuconfig TARGET_DEVICE_$target->{conf}_$profile->{id}
bool "$profile->{name}" bool "$profile->{name}"
depends on TARGET_$target->{conf} depends on TARGET_$target->{conf}
default y if TARGET_ALL_PROFILES default $profile->{default}
EOF EOF
my @pkglist = merge_package_lists($target->{packages}, $profile->{packages}); my @pkglist = merge_package_lists($target->{packages}, $profile->{packages});
foreach my $pkg (@pkglist) { foreach my $pkg (@pkglist) {