[PATCH v10 1/3] use custom names for binary builds. fixes #9

Tim Niemeyer tim at tn-x.org
Mo Apr 4 18:35:57 CEST 2016


Hi Jan

Ich wünschte ich hätte nix gefunden. Du quälst dich schon echt lang mit
dem Patchset. Abseits einer etwas grundsätzlichen Frage sind es aber von
mir noch (wichtige) "Kleinigkeiten".

Am Donnerstag, den 24.03.2016, 21:56 +0100 schrieb Jan Kraus:
> Signed-off-by: Jan Kraus <mayosemmel at gmail.com>
> 
> suggested-by: Alexander Wunschik <freifunk at wunschik.net>
> Co-Authored-By: Alexander Wunschik <freifunk at wunschik.net>
> 
> Co-Authored-By: Tobias Klaus <tk+ff at meskal.net>
> ---
>  bsp/board_ar71xx.bsp                           | 49 ++++++++++----------------
>  bsp/board_wdr4300.bsp                          | 29 +++++----------
>  bsp/board_wdr4900.bsp                          | 14 +++-----
>  bsp/default/root_file_system/etc/sysupgrade.sh | 26 ++++++++------
>  buildscript                                    | 17 +++++++--
>  5 files changed, 62 insertions(+), 73 deletions(-)
> 
> diff --git a/bsp/board_ar71xx.bsp b/bsp/board_ar71xx.bsp
> index 4876631..1834d16 100644
> --- a/bsp/board_ar71xx.bsp
> +++ b/bsp/board_ar71xx.bsp
> @@ -1,5 +1,23 @@
>  machine=ar71xx
> +chipset=ar71xx
>  target=$builddir/$machine
> +images=("openwrt-ar71xx-generic-ubnt-nano-m-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-ubnt-loco-m-xw-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wr740n-v4-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wr741nd-v2-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wr741nd-v4-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wr841nd-v7-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wr841n-v9-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wr841n-v10-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wr842n-v2-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wr1043nd-v1-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wr1043nd-v2-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wr1043nd-v3-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wa860re-v1-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wa850re-v1-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-gl-ar150-squashfs-sysupgrade.bin"
> +        )
>  
>  board_prepare() {
>      echo "nothing todo" > /dev/null
> @@ -8,34 +26,3 @@ board_prepare() {
>  board_prebuild() {
>      echo "nothing todo" > /dev/null
>  }
> -
> -board_postbuild() {
> -    cp $target/bin/ar71xx/openwrt-ar71xx-generic-ubnt-nano-m-squashfs-*.bin ./bin/
> -
> -    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/
> -}
> -
> -board_clean() {
> -    /bin/rm -rf $target bin/*$machine*
> -}
Es wäre schön, wenn hier im Commit-Log stehen würde, dass auch das
board_clean mit diesem Patch entfernt wird.

> diff --git a/bsp/board_wdr4300.bsp b/bsp/board_wdr4300.bsp
> index 7e6c66e..514d589 100644
> --- a/bsp/board_wdr4300.bsp
> +++ b/bsp/board_wdr4300.bsp
> @@ -1,28 +1,17 @@
>  machine=wdr4300
> +chipset=ar71xx
>  target=$builddir/$machine
> +images=(
> +        "openwrt-ar71xx-generic-tl-wdr3500-v1-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wdr3600-v1-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-sysupgrade.bin"
> +        "openwrt-ar71xx-generic-tl-wdr4310-v1-squashfs-sysupgrade.bin"
> +       )
>  
>  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/
> -
> -    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/
> -}
> -
> -board_clean() {
> -	/bin/rm -rf $target bin/*$machine*
> -}
Es wäre schön, wenn hier im Commit-Log stehen würde, dass auch das
board_clean mit diesem Patch entfernt wird.

> \ No newline at end of file
> diff --git a/bsp/board_wdr4900.bsp b/bsp/board_wdr4900.bsp
> index 777b3b5..5428d82 100644
> --- a/bsp/board_wdr4900.bsp
> +++ b/bsp/board_wdr4900.bsp
> @@ -1,6 +1,11 @@
>  machine=wdr4900
> +chipset=mpc85xx
>  target=$builddir/$machine
>  
> +images=(
> +        "openwrt-mpc85xx-generic-tl-wdr4900-v1-squashfs-sysupgrade.bin"
> +       )
> +
>  board_prepare() {
>  	echo "nothing todo" > /dev/null
>  }
> @@ -8,12 +13,3 @@ board_prepare() {
>  board_prebuild() {
>  	echo "nothing todo" > /dev/null
>  }
> -
> -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/
> -}
> -
> -board_clean() {
> -	/bin/rm -rf $target bin/*$machine*
> -}
Es wäre schön, wenn hier im Commit-Log stehen würde, dass auch das
board_clean mit diesem Patch entfernt wird.

> \ No newline at end of file
> diff --git a/bsp/default/root_file_system/etc/sysupgrade.sh b/bsp/default/root_file_system/etc/sysupgrade.sh
> index e954514..a90164d 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`
> +. /etc/firmware_release
>  
> -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 "Latest release information not found. Please try to update manually.\n\n"
> +  exit 1
> +fi
> +VERSION=$(grep -Po '(?<=^VERSION:).*' release.nfo)
> +rm -f release.nfo
> +echo -ne "Firmware found on server: $VERSION\n"
>  
> -echo -ne "\nHardware: $BOARD\n"
> +FILE="fff-${FIRMWARE_COMMUNITY}_${VERSION}_${BOARD}-sysupgrade.bin"

Das dürfte dann vermutlich so aussehen:
"fff-fff_20160505_tl-wdr4900-v1-sysupgrade.bin"

Das passt noch nicht ganz zu dem Beispiel unten. Das erste "fff-" müsste
weg.

>  echo -ne "Downloading $FILE\n\n"
> -cd /tmp/
>  wget $(uci get firmware.upgrade.path)/${FILE}
>  wget $(uci get firmware.upgrade.path)/${FILE}.md5
Diese Datei wird nicht bei dem buildrelease() erzeugt.

> +
>  echo -ne "\ndone. Comparing md5 sums: "
>  md5sum -c ${FILE}.md5
Wir könnten an dieser Stelle (wenn das sha256 tool da ist) auch gleich
sha256 prüfen. Das wäre dann ja in dieser Version bereits immer
vorhanden.

>  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 fcc3f3d..cf7ff60 100755
> --- a/buildscript
> +++ b/buildscript
> @@ -268,12 +268,25 @@ config() {
>      cd "$opath"
>  }
>  
> +cp_firmware() {
> +    for image in ${images[@]}; do
Angenommen:
image="openwrt-mpc85xx-generic-tl-wdr4900-v1-squashfs-sysupgrade.bin"
community="fff"
version="20160505"
chipset="mpc85xx"

> +        filename_build=${image//openwrt/${community}_${version}}
Dann kommt hier raus:
fff_20160505-mpc85xx-generic-tl-wdr4900-v1-squashfs-sysupgrade.bin

> +        filename_build=${filename_build#${chipset}}
Hier raus:
fff_20160505-mpc85xx-generic-tl-wdr4900-v1-squashfs-sysupgrade.bin

Zum einen scheint mir das mit dem Chipset keinen Effekt zu haben, zum
weiß ich nicht genau was du damit machen willst? Soll es das
"-mpc85xx-generic" entfernen, damit es zum Namen oben passt?

Das wäre dann vermutlich sowas: ${filename_build/-${chipset}-generic/}

Danach möchtest du vllt noch das squashfs entfernen:
${filename_build/-squashfs/}

Nun deckt es sich mit deinen Vorstellungen von oben:
fff_20160505-tl-wdr4900-v1-sysupgrade.bin

Grundsätzlich stelle ich aber mal die Frage in den Raum, ob wir solche
Sachen wir "generic" und "squashfs" wirklich pauschal entfernen wollen?
Was ist, wenn wir eine Platform haben, wo anstelle des squasfs mal ein
jffs2 oder ein ext2 steht? Sollte man das nicht noch unterscheiden
können? Wofür das generic genau steht weiß ich aus dem Stehgreif nicht,
hab nur ein Verdacht. Aber ich denke das hat eine sinnvolle und wichtige
Bedeutung, sonst wäre es vermutlich nicht da. ;)

> +        cp "$target/bin/${chipset}/$image" "./bin/$filename_build"
> +
> +        image_factory=${image/sysupgrade/factory}
> +        if [[ -f "$target/bin/${chipset}/$image_factory" ]]; then
> +          filename_build_factory=${filename_build/sysupgrade/factory}
> +          cp "$target/bin/${chipset}/$image_factory" "./bin/$filename_build_factory"
> +        fi
> +    done
> +}
> +
>  postbuild() {
> -    board_postbuild
> +    cp_firmware
>  }

Da du in Patch3 die Notwenigkeit von postbuild() anzweifelst, würde ich
vorschlagen, du entfernst das bereits in diesem Pach, da
board_postbuild() in diesem Patch überall entfernt wurde.

Tim

>  
>  clean() {
> -    board_clean
>      /bin/rm -rf bin $builddir src/openwrt
>  
>      # remove downloaded package feeds
> -- 
> 2.1.4
> 

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 473 bytes
Beschreibung: This is a digitally signed message part
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20160404/eabb8ebe/attachment-0001.sig>


Mehr Informationen über die Mailingliste franken-dev