image: allow specifying additional packages for device-specific rootfs

Add a new option to each device in multi-profile mode, allowing to provide
a list of packages to add or remove. In case of added packages, the user
must take care that these are selected to be built.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
owl
Matthias Schiffer 2016-09-24 18:25:25 +02:00
parent 1c09849f6c
commit e916579340
No known key found for this signature in database
GPG Key ID: 16EF3F64CB201D9C
2 changed files with 24 additions and 3 deletions

View File

@ -387,11 +387,21 @@ else
DEVICE_CHECK_PROFILE = $(CONFIG_TARGET_$(if $(CONFIG_TARGET_MULTI_PROFILE),DEVICE_)$(call target_conf,$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET)))_$(1)) DEVICE_CHECK_PROFILE = $(CONFIG_TARGET_$(if $(CONFIG_TARGET_MULTI_PROFILE),DEVICE_)$(call target_conf,$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET)))_$(1))
endif endif
DEVICE_EXTRA_PACKAGES = $(call qstrip,$(CONFIG_TARGET_DEVICE_PACKAGES_$(call target_conf,$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET)))_DEVICE_$(1)))
define merge_packages
$(1) :=
$(foreach pkg,$(2),
$(1) := $$(strip $$(filter-out -$$(patsubst -%,%,$(pkg)) $$(patsubst -%,%,$(pkg)),$$($(1))) $(pkg))
)
endef
define Device/Check/Common define Device/Check/Common
_PROFILE_SET = $$(strip $$(foreach profile,$$(PROFILES) DEVICE_$(1),$$(call DEVICE_CHECK_PROFILE,$$(profile)))) _PROFILE_SET = $$(strip $$(foreach profile,$$(PROFILES) DEVICE_$(1),$$(call DEVICE_CHECK_PROFILE,$$(profile))))
ifdef TARGET_PER_DEVICE_ROOTFS ifdef TARGET_PER_DEVICE_ROOTFS
ROOTFS_ID/$(1) := $$(if $$(_PROFILE_SET),$$(call mkfs_packages_id,$$(DEVICE_PACKAGES))) $$(eval $$(call merge_packages,_PACKAGES,$$(DEVICE_PACKAGES) $$(call DEVICE_EXTRA_PACKAGES,$(1))))
PACKAGES_$$(ROOTFS_ID/$(1)) := $$(DEVICE_PACKAGES) ROOTFS_ID/$(1) := $$(if $$(_PROFILE_SET),$$(call mkfs_packages_id,$$(_PACKAGES)))
PACKAGES_$$(ROOTFS_ID/$(1)) := $$(_PACKAGES)
endif endif
endef endef

View File

@ -263,7 +263,7 @@ EOF
foreach my $profile (@{$target->{profiles}}) { foreach my $profile (@{$target->{profiles}}) {
next unless $profile->{id} =~ /^DEVICE_/; next unless $profile->{id} =~ /^DEVICE_/;
print <<EOF; print <<EOF;
config 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 y if TARGET_ALL_PROFILES
@ -274,6 +274,17 @@ EOF
print "\tselect MODULE_DEFAULT_$pkg if TARGET_PER_DEVICE_ROOTFS\n"; print "\tselect MODULE_DEFAULT_$pkg if TARGET_PER_DEVICE_ROOTFS\n";
$defaults{$pkg} = 1; $defaults{$pkg} = 1;
} }
print <<EOF;
config TARGET_DEVICE_PACKAGES_$target->{conf}_$profile->{id}
string "$profile->{name} additional packages"
default ""
depends on TARGET_PER_DEVICE_ROOTFS
depends on TARGET_DEVICE_$target->{conf}_$profile->{id}
EOF
} }
} }