[PATCH v2] use custom names for binary builds. fixes #9

Jan Kraus mayosemmel at googlemail.com
Mi Mär 9 00:41:53 CET 2016


From: mojoaxel <alex at wunschik.net>

Signed-off-by: mojoaxel <alex at wunschik.net>
Signed-off-by: Jan Kraus <mayosemmel at gmail.com>
---
Dieser Patch basiert auf der Vorarbeit von Alexander. Soweit ich weiß, gab es nach den ganzen Anmerkungen keinen v2 (oder müsste es eigentlich v3 sein?!).
Falls es doch was gab, sorry!
Ansonsten hoffe ich das Alexanders und meine Arbeit nicht umsonst war.

Grüße Jan
---
 bsp/board_ar71xx.bsp                               | 56 ++++++++++++----------
 bsp/board_wdr4300.bsp                              | 37 ++++++++------
 bsp/board_wdr4900.bsp                              | 23 +++++++--
 .../root_file_system/etc/config/firmware.tpl       |  5 +-
 bsp/default/root_file_system/etc/sysupgrade.sh     | 27 ++++++-----
 buildscript                                        |  6 +++
 community/aux.cfg                                  |  1 +
 community/franken.cfg                              |  1 +
 8 files changed, 102 insertions(+), 54 deletions(-)

diff --git a/bsp/board_ar71xx.bsp b/bsp/board_ar71xx.bsp
index 4876631..ad6542a 100644
--- a/bsp/board_ar71xx.bsp
+++ b/bsp/board_ar71xx.bsp
@@ -1,5 +1,24 @@
 machine=ar71xx
+chipset=ar71xx
 target=$builddir/$machine
+boards=(
+    ubnt-nano-m
+    ubnt-loco-m-xw
+    tl-wr740n-v4
+    tl-wr741nd-v2
+    tl-wr741nd-v4
+    tl-wr841nd-v7
+    tl-wr841n-v8
+    tl-wr841n-v9
+    tl-wr841n-v10
+    tl-wr842n-v2
+    tl-wr1043nd-v1
+    tl-wr1043nd-v2
+    tl-wr1043nd-v3
+    tl-wa850re-v1
+    tl-wa860re-v1
+    gl-ar150
+)
 
 board_prepare() {
     echo "nothing todo" > /dev/null
@@ -10,32 +29,21 @@ board_prebuild() {
 }
 
 board_postbuild() {
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-ubnt-nano-m-squashfs-*.bin ./bin/
+    for board in ${boards[@]}; do
+        filename_openwrt=openwrt-${chipset}-generic-${board}-squashfs
+        filename_build=fff-${community}_${version}_${board}
 
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-ubnt-loco-m-xw-squashfs-*.bin ./bin/
-
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wr740n-v4-squashfs-*.bin ./bin/
-
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wr741nd-v2-squashfs-*.bin ./bin/
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wr741nd-v4-squashfs-*.bin ./bin/
-
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wr841nd-v7-squashfs-*.bin ./bin/
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-*.bin ./bin/
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wr841n-v9-squashfs-*.bin ./bin/
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wr841n-v10-squashfs-*.bin ./bin/
-
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wr842n-v2-squashfs-*.bin ./bin/
-
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wr1043nd-v1-squashfs-*.bin ./bin/
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wr1043nd-v2-squashfs-*.bin ./bin/
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wr1043nd-v3-squashfs-*.bin ./bin/
-
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wa860re-v1-squashfs-*.bin ./bin/
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wa850re-v1-squashfs-*.bin ./bin/
-
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-gl-ar150-squashfs-*.bin ./bin/
+        cp $target/bin/${chipset}/${filename_openwrt}-factory.bin ./bin/${filename_build}_factory.bin
+        cp $target/bin/${chipset}/${filename_openwrt}-sysupgrade.bin ./bin/${filename_build}_sysupgrade.bin
+    done
 }
 
 board_clean() {
-    /bin/rm -rf $target bin/*$machine*
+    for board in ${boards[@]}; do
+        filename_openwrt=openwrt-${chipset}-generic-${board}-squashfs
+        filename_build=fff-${community}_${version}_${board}
+
+	/bin/rm -rf $target bin/*$filename_openwrt*
+	/bin/rm -rf $target bin/*$filename_build*
+    done
 }
diff --git a/bsp/board_wdr4300.bsp b/bsp/board_wdr4300.bsp
index 7e6c66e..3398e1b 100644
--- a/bsp/board_wdr4300.bsp
+++ b/bsp/board_wdr4300.bsp
@@ -1,28 +1,37 @@
 machine=wdr4300
+chipset=ar71xx
 target=$builddir/$machine
+boards=(
+    tl-wdr3500-v1
+    tl-wdr3600-v1
+    tl-wdr4300-v1
+    tl-wdr4310-v1
+)
 
 board_prepare() {
-	echo "nothing todo" > /dev/null
+    echo "nothing todo" > /dev/null
 }
 
 board_prebuild() {
-	echo "nothing todo" > /dev/null
+    echo "nothing todo" > /dev/null
 }
 
 board_postbuild() {
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wdr3500-v1-squashfs-factory.bin ./bin/
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wdr3500-v1-squashfs-sysupgrade.bin ./bin/
+    for board in ${boards[@]}; do
+        filename_openwrt=openwrt-${chipset}-generic-${board}-squashfs
+        filename_build=fff-${community}_${version}_${board}
 
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wdr3600-v1-squashfs-factory.bin ./bin/
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wdr3600-v1-squashfs-sysupgrade.bin ./bin/
-
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin ./bin/
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-sysupgrade.bin ./bin/
-
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wdr4310-v1-squashfs-factory.bin ./bin/
-    cp $target/bin/ar71xx/openwrt-ar71xx-generic-tl-wdr4310-v1-squashfs-sysupgrade.bin ./bin/
+        cp $target/bin/${chipset}/${filename_openwrt}-factory.bin ./bin/${filename_build}_factory.bin
+        cp $target/bin/${chipset}/${filename_openwrt}-sysupgrade.bin ./bin/${filename_build}_sysupgrade.bin
+    done
 }
 
 board_clean() {
-	/bin/rm -rf $target bin/*$machine*
-}
\ No newline at end of file
+    for board in ${boards[@]}; do
+        filename_openwrt=openwrt-${chipset}-generic-${board}-squashfs
+        filename_build=fff-${community}_${version}_${board}
+
+	/bin/rm -rf $target bin/*$filename_openwrt*
+	/bin/rm -rf $target bin/*$filename_build*
+    done
+}
diff --git a/bsp/board_wdr4900.bsp b/bsp/board_wdr4900.bsp
index 777b3b5..8550b6d 100644
--- a/bsp/board_wdr4900.bsp
+++ b/bsp/board_wdr4900.bsp
@@ -1,5 +1,9 @@
 machine=wdr4900
+chipset=mpc85xx
 target=$builddir/$machine
+boards=(
+    tl-wdr4900-v1
+)
 
 board_prepare() {
 	echo "nothing todo" > /dev/null
@@ -10,10 +14,21 @@ board_prebuild() {
 }
 
 board_postbuild() {
-    cp $target/bin/mpc85xx/openwrt-mpc85xx-generic-tl-wdr4900-v1-squashfs-factory.bin ./bin/
-    cp $target/bin/mpc85xx/openwrt-mpc85xx-generic-tl-wdr4900-v1-squashfs-sysupgrade.bin ./bin/
+    for board in ${boards[@]}; do
+        filename_openwrt=openwrt-${chipset}-generic-${board}-squashfs
+        filename_build=fff-${community}_${version}_${board}
+
+        cp $target/bin/${chipset}/${filename_openwrt}-factory.bin ./bin/${filename_build}_factory.bin
+        cp $target/bin/${chipset}/${filename_openwrt}-sysupgrade.bin ./bin/${filename_build}_sysupgrade.bin
+    done
 }
 
 board_clean() {
-	/bin/rm -rf $target bin/*$machine*
-}
\ No newline at end of file
+    for board in ${boards[@]}; do
+        filename_openwrt=openwrt-${chipset}-generic-${board}-squashfs
+        filename_build=fff-${community}_${version}_${board}
+
+	/bin/rm -rf $target bin/*$filename_openwrt*
+	/bin/rm -rf $target bin/*$filename_build*
+    done
+}
diff --git a/bsp/default/root_file_system/etc/config/firmware.tpl b/bsp/default/root_file_system/etc/config/firmware.tpl
index 1c2e7d6..13c8408 100644
--- a/bsp/default/root_file_system/etc/config/firmware.tpl
+++ b/bsp/default/root_file_system/etc/config/firmware.tpl
@@ -1,4 +1,7 @@
+config info 'info'
+	option community '${COMMUNITY_NAME}'
+
 config upgrade 'upgrade'
 	option path '${UPGRADE_PATH}'
 	option auto 0
-	option remote 1
\ No newline at end of file
+	option remote 1
diff --git a/bsp/default/root_file_system/etc/sysupgrade.sh b/bsp/default/root_file_system/etc/sysupgrade.sh
index e954514..b21ca34 100755
--- a/bsp/default/root_file_system/etc/sysupgrade.sh
+++ b/bsp/default/root_file_system/etc/sysupgrade.sh
@@ -1,21 +1,26 @@
 #!/bin/sh
+cd /tmp/
 
-BOARD=`uci get board.model.name`
+. /etc/firmware_release
+COMMUNITY=$FIRMWARE_COMMUNITY
 
-case $BOARD in
-    tl-wdr4900-v1 )
-        SOC="mpc85xx" ;;
-    * )
-        SOC="ar71xx" ;;
-esac
+BOARD=`uci get board.model.name`
+echo -ne "\nHardware: $BOARD\n"
 
-FILE="openwrt-${SOC}-generic-${BOARD}-squashfs-sysupgrade.bin"
+wget $(uci get firmware.upgrade.path)/release.nfo
+if [ ! -f release.nfo ]; then
+  echo -ne "Last release info not found. Please try to update manually.\n\n"
+  exit 1
+fi
+VERSION=`cat release.nfo | grep -Po '(?<=^VERSION:).*'`
+rm -f release.nfo
+echo -ne "Firmware found on server: $VERSION\n"
 
-echo -ne "\nHardware: $BOARD\n"
+FILE="fff-${COMMUNITY}_${VERSION}_${BOARD}-sysupgrade.bin"
 echo -ne "Downloading $FILE\n\n"
-cd /tmp/
 wget $(uci get firmware.upgrade.path)/${FILE}
 wget $(uci get firmware.upgrade.path)/${FILE}.md5
+
 echo -ne "\ndone. Comparing md5 sums: "
 md5sum -c ${FILE}.md5
 ret=$?
@@ -32,4 +37,4 @@ else
         [Nn]|* ) echo -ne "\nAborting firmware upgrade.\n\n"; rm -f ${FILE}*; exit 0;;
     esac
   done
-fi
\ No newline at end of file
+fi
diff --git a/buildscript b/buildscript
index dd68254..7d919e1 100755
--- a/buildscript
+++ b/buildscript
@@ -272,6 +272,12 @@ config() {
 
 postbuild() {
     board_postbuild
+
+    # generate current_version
+    VERSION_FILE="./bin/current_version"
+    touch $VERSION_FILE
+    # add version info at the top of the file; needed by etc/sysupgrade.sh
+    echo -e "VERSION:$version\n\n" > $VERSION_FILE
 }
 
 clean() {
diff --git a/community/aux.cfg b/community/aux.cfg
index b1b921f..c1dd894 100644
--- a/community/aux.cfg
+++ b/community/aux.cfg
@@ -1,3 +1,4 @@
+COMMUNITY_NAME=aux
 BATMAN_CHANNEL=1
 BATMAN_CHANNEL_5GHZ=36
 ESSID_AP=aux.franken.freifunk.net
diff --git a/community/franken.cfg b/community/franken.cfg
index 833e98e..484d82a 100644
--- a/community/franken.cfg
+++ b/community/franken.cfg
@@ -1,3 +1,4 @@
+COMMUNITY_NAME=franken
 BATMAN_CHANNEL=1
 BATMAN_CHANNEL_5GHZ=36
 ESSID_AP=franken.freifunk.net
-- 
2.1.4




Mehr Informationen über die Mailingliste franken-dev