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

Steffen Pankratz kratz00 at gmx.de
Mi Mär 9 18:06:50 CET 2016


On Wed,  9 Mar 2016 00:41:53 +0100
Jan Kraus <mayosemmel at googlemail.com> wrote:

Hi Jan


> Ansonsten hoffe ich das Alexanders und meine Arbeit nicht umsonst war.

Wieso sollte Eure Arbeit "umsonst" sein?
Die Idee ist gut, zu Umsetzung habe ich noch Anmerkungen (inline).

Wir machen wir den Umstieg?
Alte Router wuerden noch nach den alten Dateinamen suchen.
Wir koennten eine Zeitlang die neue Firmware unter beide Namen anbieten.

> ---
>  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
>  }

2x rm aufrufen ist einmal zu viel :)
$filename_openwrt brauchst du nicht zu loeschen,
wir wenn ich es richtige sehe nicht unter bin zu finden sein.
Das erste '*' vor $filename_build braucht es glaube auch nicht, da duerfte es auch nichts geben.
Das buildscript ruft bei einem clean, erst board_clean auf und loescht dann 'bin'.
$buildir wird auch geloscht, $target ist ein Unterverzeichnis von $builddir.
board_clean ist meiner Meinung nach obsolete.


> 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
> +}

Selben Anmerkungen wie oben.


> 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
> +}

Selbe Anmerkungen wie oben.


> 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"

Last <-> Latest
info <-> information

> +  exit 1
> +fi
> +VERSION=`cat release.nfo | grep -Po '(?<=^VERSION:).*'`

cat braucht man nicht, du kannst gleich grep direkt auf die Datei anwenden
`cmd` verwendet "man" heute nicht mehr, besser $(cmd) verwenden.


> +rm -f release.nfo
> +echo -ne "Firmware found on server: $VERSION\n"

Ich bin mir gar nicht sicher, ob es all die "Magic" wert ist um hier nur die Versionsnummer auszugeben.
Bei Gleichheit der Versionen koennte man das Update noch beenden oder mit Abfrage.
Generell koennte man noch die Version auf dem Router anzeigen, so vorher <-> nachher maessig.


> -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"

Das soll doch die Datei "release.nfo" sein, die sysupgrade.sh runterlaedt und auswertet, oder?
Falls ja, den Namen hier auch bitte gleich verwenden.


> +    touch $VERSION_FILE

Das touch ist ueberfluessig, die Datei wird durch das Umleiten von Stdout in die Datei direkt angelegt.


> +    # 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


Gruss
-Steffen

-- 
Hermes powered by Manjaro Linux (Linux 4.4.4)

Best regards, Steffen Pankratz.
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 181 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20160309/7de7b086/attachment-0002.sig>


Mehr Informationen über die Mailingliste franken-dev