I made a patch to select a tool inside busybox by
default on NAS type boxes, but this does not properly
work because the package and image build processes are
cleanly separate entities.
I also noticed that this becomes a problem if you
build multiple profiles: maybe one of them is NAS
and one of them is a router. You still want the least
common denominator to decide: if you selected both
NAS:es and routers, build packages that will be
suitable for both NAS and routers.

To achieve this I reflect the DEVICE_TYPE up to the
Kconfig level and define two Kconfig symbols:

config DEVICE_TYPE_ROUTER
       bool

config DEVICE_TYPE_NAS
       bool

These will be set from the DEVICE_TYPE of each
profile and it is possible to select both.

I then modify the busybox config to take this into
account and conditionally build hdparm for
CONFIG_DEVICE_TYPE_NAS.

Signed-off-by: Linus Walleij <linus.wall...@linaro.org>
---
 include/image.mk               |  1 +
 include/target.mk              |  1 +
 package/utils/busybox/Makefile |  2 +-
 scripts/metadata.pm            |  2 ++
 scripts/target-metadata.pl     | 12 ++++++++++++
 5 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/include/image.mk b/include/image.mk
index 984b64fb9c73..8104c040a1f7 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -634,6 +634,7 @@ endef
 define Device/DumpInfo
 Target-Profile: DEVICE_$(1)
 Target-Profile-Name: $(DEVICE_DISPLAY)
+Target-Profile-Devicetype: $(DEVICE_TYPE)
 Target-Profile-Packages: $(DEVICE_PACKAGES)
 Target-Profile-hasImageMetadata: $(if $(foreach image,$(IMAGES),$(findstring 
append-metadata,$(IMAGE/$(image)))),1,0)
 Target-Profile-SupportedDevices: $(SUPPORTED_DEVICES)
diff --git a/include/target.mk b/include/target.mk
index 9bd4c14936c1..e6f26cbfdf3d 100644
--- a/include/target.mk
+++ b/include/target.mk
@@ -73,6 +73,7 @@ define Profile
        echo "Target-Profile: $(1)"; \
        $(if $(PRIORITY), echo "Target-Profile-Priority: $(PRIORITY)"; ) \
        echo "Target-Profile-Name: $(NAME)"; \
+       echo "Target-Profile-Devicetype: $(DEVICE_TYPE)"; \
        echo "Target-Profile-Packages: $(PACKAGES) $(call 
extra_packages,$(DEFAULT_PACKAGES) $(PACKAGES))"; \
        echo "Target-Profile-Description:"; \
        echo "$$$$$$$$$(call shvar,Profile/$(1)/Description)"; \
diff --git a/package/utils/busybox/Makefile b/package/utils/busybox/Makefile
index 01441d1e87d1..f504117f60f3 100644
--- a/package/utils/busybox/Makefile
+++ b/package/utils/busybox/Makefile
@@ -94,7 +94,7 @@ endif
 define Build/Configure
        rm -f $(PKG_BUILD_DIR)/.config
        touch $(PKG_BUILD_DIR)/.config
-ifeq ($(DEVICE_TYPE),nas)
+ifeq ($(CONFIG_DEVICE_TYPE_NAS),y)
        echo "CONFIG_HDPARM=y" >> $(PKG_BUILD_DIR)/.config
 endif
        grep 'CONFIG_BUSYBOX_$(BUSYBOX_SYM)' $(TOPDIR)/.config | sed -e "s,\\(# 
\)\\?CONFIG_BUSYBOX_$(BUSYBOX_SYM)_\\(.*\\),\\1CONFIG_\\2,g" >> 
$(PKG_BUILD_DIR)/.config
diff --git a/scripts/metadata.pm b/scripts/metadata.pm
index 1826a040a116..5062dba37ec0 100644
--- a/scripts/metadata.pm
+++ b/scripts/metadata.pm
@@ -140,6 +140,7 @@ sub parse_target_metadata($) {
                        $profile = {
                                id => $1,
                                name => $1,
+                               device_type => "router",
                                has_image_metadata => 0,
                                supported_devices => [],
                                priority => 999,
@@ -150,6 +151,7 @@ sub parse_target_metadata($) {
                        push @{$target->{profiles}}, $profile;
                };
                /^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1;
+               /^Target-Profile-Devicetype:\s*(.+)\s*$/ and 
$profile->{device_type} = $1;
                /^Target-Profile-hasImageMetadata:\s*(\d+)\s*$/ and 
$profile->{has_image_metadata} = $1;
                /^Target-Profile-SupportedDevices:\s*(.+)\s*$/ and 
$profile->{supported_devices} = [ split(/\s+/, $1) ];
                /^Target-Profile-Priority:\s*(\d+)\s*$/ and do {
diff --git a/scripts/target-metadata.pl b/scripts/target-metadata.pl
index ee0ab5a71811..fbd9fa70c08b 100755
--- a/scripts/target-metadata.pl
+++ b/scripts/target-metadata.pl
@@ -244,6 +244,12 @@ EOF
                                print "\tselect DEFAULT_$pkg\n";
                                $defaults{$pkg} = 1;
                        }
+                       if ($profile->{device_type} =~ "router") {
+                               print "\tselect DEVICE_TYPE_ROUTER\n";
+                       }
+                       if ($profile->{device_type} =~ "nas") {
+                               print "\tselect DEVICE_TYPE_NAS\n";
+                       }
                        my $help = $profile->{desc};
                        if ($help =~ /\w+/) {
                                $help =~ s/^\s*/\t  /mg;
@@ -328,6 +334,12 @@ config HAS_SUBTARGETS
 config HAS_DEVICES
        bool
 
+config DEVICE_TYPE_ROUTER
+       bool
+
+config DEVICE_TYPE_NAS
+       bool
+
 config TARGET_BOARD
        string
 
-- 
2.26.2


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to