From f89503660d94559356774733eebee493679fb701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= Date: Sat, 26 Mar 2022 16:01:31 +0100 Subject: [PATCH] Simplify firmware variant selection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of tampering with the 'DEFAULT' property of meta packages on every build in a non-portable way, use the build system as intended and select packages using an approriate build config ('.config'). This is achived by adding the approriate variant package to the build config before expanding it using defconfig. By that, the fff-variant-* packages and FFF_VARIANT environment variable can be removed. Base packages required in both variants are now included via fff-base (formerly fff-variant/default). Besides cleaning up the build process, this change also fixes a recent issue with build dependencies, as they are evaluated on a per-package basis instead of per-variant. Due to that, dependencies of all variants are compiled, regardless of the selected variant. Combined with a recent build issue of mosquitto (see [1]), the node variant could not be built from a clean state. [1] https://github.com/eclipse/mosquitto/issues/2432 Signed-off-by: Fabian Bläse --- buildscript | 16 ++------- src/packages/fff/fff-base/Makefile | 34 ++++++++++++++++++ src/packages/fff/fff/Makefile | 56 ------------------------------ 3 files changed, 37 insertions(+), 69 deletions(-) create mode 100644 src/packages/fff/fff-base/Makefile delete mode 100644 src/packages/fff/fff/Makefile diff --git a/buildscript b/buildscript index 6ad4b112..b2b3fd93 100755 --- a/buildscript +++ b/buildscript @@ -126,20 +126,9 @@ prepare() { patch_target - # apply variant to ensure the included file "variant.mk" - # exists in builddir. - apply_variant - update_feeds } -apply_variant() { - # set the variant for this build - export FFF_VARIANT=$(cat selected_variant) - # force the reevaluation of this Makefile to make note of the new variant - touch ./src/packages/fff/fff/Makefile -} - update_feeds() { ## generate own feeds.conf #this local variable should be globally configure variable used in get_source and here @@ -174,8 +163,6 @@ update_feeds() { } prebuild() { - apply_variant - #create filesdir for our config /bin/rm -rf "$builddir"/files mkdir "$builddir"/files @@ -193,6 +180,9 @@ prebuild() { version="$variant-$version" fi + # select variant packages + echo "CONFIG_PACKAGE_fff-${variant}=y" >> "$builddir"/.config + { echo "FIRMWARE_VERSION=\"$version\"" echo "VARIANT=\"$variant\"" diff --git a/src/packages/fff/fff-base/Makefile b/src/packages/fff/fff-base/Makefile new file mode 100644 index 00000000..027b8663 --- /dev/null +++ b/src/packages/fff/fff-base/Makefile @@ -0,0 +1,34 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=fff-base +PKG_RELEASE:=$(COMMITCOUNT) + +include $(INCLUDE_DIR)/package.mk + +define Package/fff-base + SECTION:=base + CATEGORY:=Freifunk + TITLE:=Freifunk-Franken base dependencies + URL:=https://www.freifunk-franken.de + DEFAULT:=y + DEPENDS:= \ + +iptables \ + +ip6tables \ + +micrond \ + +odhcp6c \ + +fff-config \ + +fff-network \ + +fff-nodewatcher \ + +fff-simple-tc \ + +fff-support \ + +fff-sysupgrade \ + +fff-timeserver \ + +fff-web-ui \ + +fff-wireless +endef + +define Package/fff-variant/description + This package includes base packages used in the Freifunk-Franken firmware +endef + +$(eval $(call BuildPackage,fff-base)) diff --git a/src/packages/fff/fff/Makefile b/src/packages/fff/fff/Makefile deleted file mode 100644 index 49157934..00000000 --- a/src/packages/fff/fff/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=fff -PKG_RELEASE:=$(COMMITCOUNT) - -include $(INCLUDE_DIR)/package.mk - -define Package/fff-variant/default - SECTION:=base - CATEGORY:=Freifunk - URL:=https://www.freifunk-franken.de - DEFAULT:=$(if $(filter fff-variant-$(FFF_VARIANT),$(1)),y,n) - DEPENDS:= \ - +iptables \ - +ip6tables \ - +micrond \ - +odhcp6c \ - +fff-config \ - +fff-network \ - +fff-nodewatcher \ - +fff-simple-tc \ - +fff-support \ - +fff-sysupgrade \ - +fff-timeserver \ - +fff-web-ui \ - +fff-wireless -endef - -define Package/fff-variant/default/description - This package is used to switch one of the variants on by default -endef - -define Package/fff-variant-layer3 - $(Package/fff-variant/default) - TITLE:=Freifunk-Franken Layer3 Variant - DEPENDS+=+fff-layer3 - VARIANT:=layer3 -endef - -define Package/fff-variant-layer3/description - $(Package/fff-variant/default/description) -endef - -define Package/fff-variant-node - $(Package/fff-variant/default) - TITLE:=Freifunk-Franken Node Variant - DEPENDS+=+fff-node - VARIANT:=node -endef - -define Package/fff-variant-node/description - $(Package/fff-variant/default/description) -endef - -$(eval $(call BuildPackage,fff-variant-layer3)) -$(eval $(call BuildPackage,fff-variant-node))