fff-nodewatcher: Improve package #99

Closed
adschm wants to merge 4 commits from adschm:nodew into master
5 changed files with 15 additions and 12 deletions

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-network
PKG_RELEASE:=28
PKG_RELEASE:=29
include $(INCLUDE_DIR)/package.mk

View File

@ -1,9 +0,0 @@
uci batch <<EOF
add nodewatcher network
set nodewatcher.@network[-1].mesh_interface='br-client'
set nodewatcher.@network[-1].iface_blacklist='lo ifb0'
set nodewatcher.@network[-1].ip_whitelist='br-client'
EOF
uci commit nodewatcher
exit 0

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-nodewatcher
PKG_RELEASE:=60
PKG_RELEASE:=63
include $(INCLUDE_DIR)/package.mk
@ -20,6 +20,10 @@ define Package/$(PKG_NAME)/description
netmon.freifunk-franken.de
endef
define Package/$(PKG_NAME)/conffiles
/etc/config/nodewatcher
endef
Review

hi, kannst du mir mal kurz erklaeren, was das define Package/xx/conffiles macht. Was ich dazu gefunden habe ist nicht befriedigend.

hi, kannst du mir mal kurz erklaeren, was das define Package/xx/conffiles macht. Was ich dazu gefunden habe ist nicht befriedigend.
Review

OpenWrt sieht vor, dass config-Files einmalig erstellt werden; entweder beim ersten Boot für eingebaute Packages oder beim Installieren für Packages via opkg. Führt man dann ein sysupgrade durch, wird nicht wie bei unserer Firmware alles wieder gelöscht, sondern die config bleiben grundsätzlich erhalten. Welche config-Files das genau sind, wird u.a. hier festgelegt:
https://github.com/openwrt/openwrt/blob/master/package/base-files/files/sbin/sysupgrade#L142

Genau dort greifen wir bei unserer Firmware auch ein, und ändern das mit dem ersten(?) build-Patch ab.
Wie du siehst, gibt es mehrere Quellen für solche Dateien:
/etc/sysupgrade.conf, /lib/upgrade/keep.d, ...

Ein anderes subset wird von opkg verwaltet, und lagert hier (kuck mal bei nem richtigen OpenWrt rein):
/usr/lib/opkg/status

Dort sind status-Daten zu allen Packages enthalten, inklusive der definierten conffiles inkl. hash. Sysupgrade hebt bei vanilla-OpenWrt nun alle Conf-Files auf, die hier gelistet sind, und deren hash sich vom default unterscheidet (zumindest habe ich das so verstanden). Umgekehrt wird eine Datei, die weder in /etc/sysupgrade.conf etc. noch hier gelistet ist, beim upgrade verworfen, auch wenn sie in /etc/config/ liegt.

So, warum nun das Ganze:
Ich möchte die Packages so modifizieren, dass man sie mittelfristig auch einfach als feed mit vanilla-OpenWrt bauen kann (lokal ist das schon fertig). Diese Änderung hier ist dabei insofern hilfreich, als nun bei vanilla-OpenWrt die /etc/config/nodewatcher, die der nodewatcher-Package "gehört", nun korrekt über ein Upgrade hinweg erhalten bleibt. Weiterhin bleibt jedoch das Verhalten der buildscript-basierten Firmware davon unbeeinflusst, weil diese ja den entsprechenden Upgrade-Mechanismus komplett abschaltet. Ich kann mit der Änderung also beide Szenarios sauber unterstützen, und genau das ist das Ziel.

OpenWrt sieht vor, dass config-Files einmalig erstellt werden; entweder beim ersten Boot für eingebaute Packages oder beim Installieren für Packages via opkg. Führt man dann ein sysupgrade durch, wird nicht wie bei unserer Firmware alles wieder gelöscht, sondern die config bleiben grundsätzlich erhalten. Welche config-Files das genau sind, wird u.a. hier festgelegt: https://github.com/openwrt/openwrt/blob/master/package/base-files/files/sbin/sysupgrade#L142 Genau dort greifen wir bei unserer Firmware auch ein, und ändern das mit dem ersten(?) build-Patch ab. Wie du siehst, gibt es mehrere Quellen für solche Dateien: /etc/sysupgrade.conf, /lib/upgrade/keep.d, ... Ein anderes subset wird von opkg verwaltet, und lagert hier (kuck mal bei nem richtigen OpenWrt rein): /usr/lib/opkg/status Dort sind status-Daten zu allen Packages enthalten, inklusive der definierten conffiles inkl. hash. Sysupgrade hebt bei vanilla-OpenWrt nun alle Conf-Files auf, die hier gelistet sind, und deren hash sich vom default unterscheidet (zumindest habe ich das so verstanden). Umgekehrt wird eine Datei, die weder in /etc/sysupgrade.conf etc. noch hier gelistet ist, beim upgrade verworfen, auch wenn sie in /etc/config/ liegt. So, warum nun das Ganze: Ich möchte die Packages so modifizieren, dass man sie mittelfristig auch einfach als feed mit vanilla-OpenWrt bauen kann (lokal ist das schon fertig). Diese Änderung hier ist dabei insofern hilfreich, als nun bei vanilla-OpenWrt die /etc/config/nodewatcher, die der nodewatcher-Package "gehört", nun korrekt über ein Upgrade hinweg erhalten bleibt. Weiterhin bleibt jedoch das Verhalten der buildscript-basierten Firmware davon unbeeinflusst, weil diese ja den entsprechenden Upgrade-Mechanismus komplett abschaltet. Ich kann mit der Änderung also beide Szenarios sauber unterstützen, und genau das ist das Ziel.
Review

Danke dir!

Ich finde die Moeglichkeit unsere packages mit openwrt zu bauen oder mit opkg nachinstallieren zu koennen richtig klasse. Zumindest fuer die layer3-variante. Das habe ich bisher haendisch gemacht, was doch ein gewisser Konfigurationsaufwand ist.

Danke dir! Ich finde die Moeglichkeit unsere packages mit openwrt zu bauen oder mit opkg nachinstallieren zu koennen richtig klasse. Zumindest fuer die layer3-variante. Das habe ich bisher haendisch gemacht, was doch ein gewisser Konfigurationsaufwand ist.
define Build/Compile
# nothing
endef

View File

@ -1,9 +1,16 @@
[ -s /etc/config/nodewatcher ] && exit 0
touch /etc/config/nodewatcher
uci batch <<EOF
uci batch >/dev/null <<EOF
add nodewatcher script
set nodewatcher.@script[-1].data_file='/tmp/crawldata/node.data'
set nodewatcher.@script[-1].status_text_file='/tmp/status.txt'
set nodewatcher.@script[-1].disabled='0'
add nodewatcher network
set nodewatcher.@network[-1].mesh_interface='br-client'
set nodewatcher.@network[-1].iface_blacklist='lo ifb0'
set nodewatcher.@network[-1].ip_whitelist='br-client'
EOF
uci commit nodewatcher

View File

@ -13,6 +13,7 @@ fi
trap "lock -u \"$lockfile\"" INT TERM EXIT
[ -s /etc/config/nodewatcher ] || exit 1
[ "$(uci get nodewatcher.@script[0].disabled)" = "1" ] && exit 0
SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file)