fff: create proper package variants instead of copying file #96

Closed
adschm wants to merge 1 commits from adschm/firmware:fffpkg into master
4 changed files with 49 additions and 58 deletions

View File

@ -25,6 +25,8 @@ OPENWRT_PKGS="gpioctl-sysfs libugpio fastd haserl micrond mtr bmon"
ROUTING_PKGS="kmod-batman-adv batctl alfred babeld" ROUTING_PKGS="kmod-batman-adv batctl alfred babeld"
GLUON_PKGS="simple-tc uradvd" GLUON_PKGS="simple-tc uradvd"
FFF_VARIANTS="node layer3"
OPENWRTURL="https://git.openwrt.org/openwrt/openwrt.git" OPENWRTURL="https://git.openwrt.org/openwrt/openwrt.git"
## Feed definition [0]: name aka directory, [1]: url, [2]: revision ## Feed definition [0]: name aka directory, [1]: url, [2]: revision
@ -149,7 +151,7 @@ prepare() {
apply_variant() { apply_variant() {
# set the variant for this build # set the variant for this build
cp "./src/packages/fff/fff/variant-$(cat selected_variant).mk" "$builddir"/variant.mk export FFF_VARIANT=$(cat selected_variant)
# force the reevaluation of this Makefile to make note of the new variant # force the reevaluation of this Makefile to make note of the new variant
touch ./src/packages/fff/fff/Makefile touch ./src/packages/fff/fff/Makefile
} }
@ -441,14 +443,13 @@ case "$1" in
;; ;;
"selectvariant") "selectvariant")
if [ "$2" = "help" ] || [ "$2" = "" ]; then if [ "$2" = "help" ] || [ "$2" = "" ]; then
echo "Select a build varaint:" echo "Select a build variant:"
echo echo
echo "Usage: $0 $1 <name of variant>" echo "Usage: $0 $1 <name of variant>"
echo "available variants: " echo "available variants: $FFF_VARIANTS"
/bin/ls src/packages/fff/fff/variant-*.mk | sed 's#.*/variant-\(.*\)\.mk#\1#g'
echo echo
else else
if [ ! -f "src/packages/fff/fff/variant-$2.mk" ]; then if ! echo "$FFF_VARIANTS" | grep -q "\b$2\b"; then
Review

Nicht so viel greppen, wenn es nicht noetig ist. Die bash ist im shebang ->

if [[ ! "$FFF_VARIANTS" =~ "$2" ]] ; then
Nicht so viel greppen, wenn es nicht noetig ist. Die bash ist im shebang -> ``` if [[ ! "$FFF_VARIANTS" =~ "$2" ]] ; then ```
Review

Ich bin bash nicht so gewohnt, werd mir das gelegentlich mal ankucken.

Ich bin bash nicht so gewohnt, werd mir das gelegentlich mal ankucken.
echo "Could not find variant $2" echo "Could not find variant $2"
else else
setVariant $2 setVariant $2

View File

@ -1,34 +1,56 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=fff PKG_NAME:=fff
PKG_RELEASE:=8 PKG_RELEASE:=9
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
define Package/fff-base define Package/fff-variant/default
SECTION:=base SECTION:=base
CATEGORY:=Freifunk CATEGORY:=Freifunk
TITLE:=Freifunk-Franken Base URL:=https://www.freifunk-franken.de
URL:=http://www.freifunk-franken.de DEFAULT:=$(if $(findstring fff-variant-$(FFF_VARIANT),$(1)),y,n)
Review

Hier muss 'findstring' durch 'filter' ersetzt werden.

Hier muss 'findstring' durch 'filter' ersetzt werden.
Review

Hi, was steht denn hier in $1 ?

Hi, was steht denn hier in $1 ?
Review

$1 ist der Package-Name wie im Define, also fff-variant-node oder fff-variant-layer3.

Ich wollte erst direkt $(FFF_VARIANT) gegen VARIANT prüfen, aber aus irgendeinem Grund ist VARIANT zu dem Zeitpunkt, wo der Vergleich durchgeführt wird, noch nicht verfügbar (tatsächlich muss man hier statt VARIANT dann BUILD_VARIANT verwenden und ggf. auch "=" statt ":=", aber es hat in keinem Fall funktioniert, weshalb ich auf diese Methode ausgewichen bin, die sich als robust erwiesen hat).

$1 ist der Package-Name wie im Define, also fff-variant-node oder fff-variant-layer3. Ich wollte erst direkt $(FFF_VARIANT) gegen VARIANT prüfen, aber aus irgendeinem Grund ist VARIANT zu dem Zeitpunkt, wo der Vergleich durchgeführt wird, noch nicht verfügbar (tatsächlich muss man hier statt VARIANT dann BUILD_VARIANT verwenden und ggf. auch "=" statt ":=", aber es hat in keinem Fall funktioniert, weshalb ich auf diese Methode ausgewichen bin, die sich als robust erwiesen hat).
Review

danke dir,
ich glaub ich hab's jetzt tatsaechlich verstanden. Ich bin sehr dafuer.
Mit der function filter:

Tested-by: Robert Langhammer <rlanghammer@web.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
danke dir, ich glaub ich hab's jetzt tatsaechlich verstanden. Ich bin sehr dafuer. Mit der function filter: ``` Tested-by: Robert Langhammer <rlanghammer@web.de> Reviewed-by: Robert Langhammer <rlanghammer@web.de> ```
DEPENDS:=+iptables \ DEPENDS:= \
+ip6tables \ +iptables \
+odhcp6c \ +ip6tables \
+micrond \ +micrond \
+fff-config \ +odhcp6c \
+fff-nodewatcher \ +fff-config \
+fff-web-ui \ +fff-network \
+fff-support \ +fff-nodewatcher \
+fff-network \ +fff-simple-tc \
+fff-sysupgrade \ +fff-support \
+fff-wireless \ +fff-sysupgrade \
+fff-timeserver \ +fff-timeserver \
+fff-simple-tc +fff-web-ui \
+fff-wireless
endef endef
define Package/fff-base/description define Package/fff-variant/default/description
This is the Freifunk Franken Firmware Base package This package is used to switch one of the variants on by default
endef endef
$(eval $(call BuildPackage,fff-base)) define Package/fff-variant-layer3
$(Package/fff-variant/default)
TITLE:=Freifunk-Franken Layer3 Variant
DEPENDS+=+fff-layer3
VARIANT:=layer3
endef
include $(TOPDIR)/variant.mk 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))

View File

@ -1,16 +0,0 @@
define Package/fff-default
SECTION:=base
CATEGORY:=Freifunk
DEFAULT:=y
TITLE:=Freifunk-Franken Base default switcher
URL:=http://www.freifunk-franken.de
DEPENDS:=+fff-base +fff-layer3
VARIANT:=layer3
endef
define Package/fff-default/description
This package is used to switch on of the Freifunk Franken
package on per default
endef
$(eval $(call BuildPackage,fff-default))

View File

@ -1,16 +0,0 @@
define Package/fff-default
SECTION:=base
CATEGORY:=Freifunk
DEFAULT:=y
TITLE:=Freifunk-Franken Base default switcher
URL:=http://www.freifunk-franken.de
DEPENDS:=+fff-base +fff-node
VARIANT:=node
endef
define Package/fff-default/description
This package is used to switch on of the Freifunk Franken
package on per default
endef
$(eval $(call BuildPackage,fff-default))