diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2016-09-24 18:25:25 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2016-09-24 18:25:25 +0200 |
commit | e9165793409ceccaeef6674c691b875a83fcb97f (patch) | |
tree | f2a7c83775ed5f2e23a208792d639cf3fdc11a09 | |
parent | 1c09849f6cf1b8bd94819ca11910ce444c3d3019 (diff) | |
download | upstream-e9165793409ceccaeef6674c691b875a83fcb97f.tar.gz upstream-e9165793409ceccaeef6674c691b875a83fcb97f.tar.bz2 upstream-e9165793409ceccaeef6674c691b875a83fcb97f.zip |
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>
-rw-r--r-- | include/image.mk | 14 | ||||
-rwxr-xr-x | scripts/target-metadata.pl | 13 |
2 files changed, 24 insertions, 3 deletions
diff --git a/include/image.mk b/include/image.mk index 63cefff05c..3085400666 100644 --- a/include/image.mk +++ b/include/image.mk @@ -387,11 +387,21 @@ else DEVICE_CHECK_PROFILE = $(CONFIG_TARGET_$(if $(CONFIG_TARGET_MULTI_PROFILE),DEVICE_)$(call target_conf,$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET)))_$(1)) 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 _PROFILE_SET = $$(strip $$(foreach profile,$$(PROFILES) DEVICE_$(1),$$(call DEVICE_CHECK_PROFILE,$$(profile)))) ifdef TARGET_PER_DEVICE_ROOTFS - ROOTFS_ID/$(1) := $$(if $$(_PROFILE_SET),$$(call mkfs_packages_id,$$(DEVICE_PACKAGES))) - PACKAGES_$$(ROOTFS_ID/$(1)) := $$(DEVICE_PACKAGES) + $$(eval $$(call merge_packages,_PACKAGES,$$(DEVICE_PACKAGES) $$(call DEVICE_EXTRA_PACKAGES,$(1)))) + ROOTFS_ID/$(1) := $$(if $$(_PROFILE_SET),$$(call mkfs_packages_id,$$(_PACKAGES))) + PACKAGES_$$(ROOTFS_ID/$(1)) := $$(_PACKAGES) endif endef diff --git a/scripts/target-metadata.pl b/scripts/target-metadata.pl index a7239166f7..07160dc4ea 100755 --- a/scripts/target-metadata.pl +++ b/scripts/target-metadata.pl @@ -263,7 +263,7 @@ EOF foreach my $profile (@{$target->{profiles}}) { next unless $profile->{id} =~ /^DEVICE_/; print <<EOF; -config TARGET_DEVICE_$target->{conf}_$profile->{id} +menuconfig TARGET_DEVICE_$target->{conf}_$profile->{id} bool "$profile->{name}" depends on TARGET_$target->{conf} default y if TARGET_ALL_PROFILES @@ -274,6 +274,17 @@ EOF print "\tselect MODULE_DEFAULT_$pkg if TARGET_PER_DEVICE_ROOTFS\n"; $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 } } |