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

Alexander Wunschik alex at wunschik.net
Di Feb 2 00:11:07 CET 2016


From: mojoaxel <alex at wunschik.net>

Signed-off-by: mojoaxel <alex at wunschik.net>

---
 - use custom names for binary builds. 
 - generate release.nfo file with all commits since the last tag (nedded from sysupgrade.sh).
 - changed sysupgrade script to use new filename-scheme.
 
 Hints for deployment:
 The deployment folder at the dev-server changed from "/dev/firmware/current" to "/dev/firmware/franken/current" for the franken community to be consistent with the aux builds. This also ensures that old firmwares are still able to upgrade using the old sysupgrade script. 
 For that to work e.g. symlinks with the old name-scheme must be deployed to the depricated folder "/dev/firmware/current".
 The file release.nfo must be placed in the same folder on the dev-server as all the binaries. It is used by the sysupgrade script to determine the latest released version.

 bsp/board_ar71xx.bsp                               | 46 +++++++++++-----------
 bsp/board_wdr4300.bsp                              | 31 ++++++++-------
 bsp/board_wdr4900.bsp                              | 15 +++++--
 .../root_file_system/etc/config/firmware.tpl       |  5 ++-
 bsp/default/root_file_system/etc/sysupgrade.sh     | 26 ++++++------
 buildscript                                        |  9 +++++
 community/aux.cfg                                  |  1 +
 community/franken.cfg                              |  3 +-
 8 files changed, 83 insertions(+), 53 deletions(-)

diff --git a/bsp/board_ar71xx.bsp b/bsp/board_ar71xx.bsp
index 4876631..d18da37 100644
--- a/bsp/board_ar71xx.bsp
+++ b/bsp/board_ar71xx.bsp
@@ -1,5 +1,22 @@
 machine=ar71xx
+chipset=ar71xx
 target=$builddir/$machine
+boards=(
+    ubnt-nano-m
+    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
+)
 
 board_prepare() {
     echo "nothing todo" > /dev/null
@@ -10,30 +27,13 @@ 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() {
diff --git a/bsp/board_wdr4300.bsp b/bsp/board_wdr4300.bsp
index 7e6c66e..025219c 100644
--- a/bsp/board_wdr4300.bsp
+++ b/bsp/board_wdr4300.bsp
@@ -1,28 +1,31 @@
 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
+    /bin/rm -rf $target bin/*$machine*
+}
diff --git a/bsp/board_wdr4900.bsp b/bsp/board_wdr4900.bsp
index 777b3b5..5c0d6fb 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,15 @@ 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
+}
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..4d70437 100755
--- a/bsp/default/root_file_system/etc/sysupgrade.sh
+++ b/bsp/default/root_file_system/etc/sysupgrade.sh
@@ -1,21 +1,25 @@
 #!/bin/sh
+cd /tmp/
 
-BOARD=`uci get board.model.name`
+COMMUNITY=`uci get firmware.info.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 +36,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 ec9ae64..9f6b57b 100755
--- a/buildscript
+++ b/buildscript
@@ -272,6 +272,15 @@ config() {
 
 postbuild() {
     board_postbuild
+
+    # generate release.nfo
+    RELEASE_NFO="./bin/release.nfo"
+    touch $RELEASE_NFO
+    # add version info at the top of the file; needed by etc/sysupgrade.sh
+    echo -e "VERSION:$version\n\n" > $RELEASE_NFO
+    # add alle commits since the last tag
+    echo -e "Commits since last release:\n" >> $RELEASE_NFO
+    git log `git describe --tags --abbrev=0`..HEAD --format=short >> $RELEASE_NFO
 }
 
 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..73f30c4 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
@@ -5,4 +6,4 @@ ESSID_MESH=batman.franken.freifunk.net
 BSSID_MESH=02:CA:FF:EE:BA:BE
 VPN_PROJECT=fff
 NTPD_IP=fe80::ff:feee:1%br-mesh
-UPGRADE_PATH=http://[fe80::ff:feee:1%br-mesh]/dev/firmware/current
+UPGRADE_PATH=http://[fe80::ff:feee:1%br-mesh]/dev/firmware/franken/current
-- 
1.8.3.2




Mehr Informationen über die Mailingliste franken-dev