[PATCH v2 1/2] buildscript/patches: Automatically scan directories for feeds

robert rlanghammer at web.de
Mo Apr 8 16:13:13 CEST 2019


Hi Adrian, s. unten

Am 08.04.19 um 15:32 schrieb Adrian Schmutzler:
> The buildscript knows two different types of patches, which are
> applied to pulled-in repositories:
>
> 1. Feed patches
> Those are applied as "GIT patches" to the relevant repos,
> directly after those have been checked out.
> They reside in subfolders of the build_patches folder, and
> have to be selected individually and manually in the
> buildscript.sh.
>
> 2. Build patches
> Those are applied later in the process, just using the system
> patch tool, and changing the $target directory.
> All patches in the folder "build_patches/openwrt" are read
> and applied automatically.
>
> This is both inconsistent (two different types of patches in
> the same dir) and annoying (feed patches have to be specified
> by hand), especially for unexperienced developers.
>
> This patch addresses this by:
> - separating files into two dirs: build_patches and feed_patches
> - automatically scanning feed patches and thus having similar
>   experience for the user (I cannot think of a case where we
>   provide a patch, but do not use it)
>
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
>
> ---
>
> Changes in v2:
> - Improved "algorithm" as suggested by Robert
> ---
>  buildscript                                        | 26 ++++++++--------------
>  ...se-hotplug.d-iface-instead-of-hotplug.d-n.patch |  0
>  .../0020-fastd_generate_key_from_urandom.patch     |  0
>  ...adv-patch-to-remove-gw-mode-switch-messag.patch |  0
>  4 files changed, 9 insertions(+), 17 deletions(-)
>  rename {build_patches => feed_patches}/gluon/0001-simple-tc-Use-hotplug.d-iface-instead-of-hotplug.d-n.patch (100%)
>  rename {build_patches/openwrt/fastd => feed_patches/openwrt}/0020-fastd_generate_key_from_urandom.patch (100%)
>  rename {build_patches => feed_patches}/routing/0002-Add-batman-adv-patch-to-remove-gw-mode-switch-messag.patch (100%)
>
> diff --git a/buildscript b/buildscript
> index 1d527c6e..1605b9cf 100755
> --- a/buildscript
> +++ b/buildscript
> @@ -23,23 +23,20 @@ PACKAGEURL="https://git.openwrt.org/feed/packages.git"
>  #official openwrt packages
>  OPENWRT=(openwrt
>           $PACKAGEURL
> -         $PACKAGEREV
> -         fastd/0020-fastd_generate_key_from_urandom.patch)
> +         $PACKAGEREV)
>  OPENWRT_PKGS="gpioctl-sysfs libugpio fastd haserl"
>  
>  ## Be careful: FFF uses COMPAT_VERSION 15 as default at the moment.
>  ## See http://www.open-mesh.org/projects/batman-adv/wiki/Compatversion
>  GLUON=(gluon
>              https://github.com/freifunk-gluon/packages.git
> -            8b65619f59c3bdce743c2f2fb2588fdd7079355a
> -            "0001-simple-tc-Use-hotplug.d-iface-instead-of-hotplug.d-n.patch")
> +            8b65619f59c3bdce743c2f2fb2588fdd7079355a)
>  GLUON_PKGS="kmod-batman-adv-legacy micrond simple-tc uradvd"
>  
>  #official openwrt routing packages
>  ROUTING=(routing
>           https://git.openwrt.org/feed/routing.git
> -         ea345d16a6e27c2a8fdf67bf543cc36a5f189131
> -         "0002-Add-batman-adv-patch-to-remove-gw-mode-switch-messag.patch") # openwrt-18.06.2
> +         ea345d16a6e27c2a8fdf67bf543cc36a5f189131) # openwrt-18.06.2
>  ROUTING_PKGS="kmod-batman-adv batctl alfred babeld"
>  
>  FFF=(fff)
> @@ -101,19 +98,14 @@ get_source() {
>          if [ -n "$URL" ] && [ -n "$REV" ]; then
>              checkout_git "$NAME" "$URL" "$REV"
>  
> -            # Patches for feeds could be stored in known directories like build_patches/$NAME/
> -            # That way multiple patches for one feed could be supported
> -            count=3
> -            while [ "x${FEED[count]}" != "x" ]
> -            do
> -                local PATCH="../../../build_patches/${NAME}/${FEED[count]}"
> -                if [ ! -z "$PATCH" ] ; then
> -                    echo "Patching $PATCH"
> -                    git -C "$NAME" am --whitespace=nowarn "$PATCH"
> +            # Patches for feeds are stored in known directories like feed_patches/$NAME/
> +            for PATCH in $(ls ../../feed_patches/${NAME}/*.patch 2>/dev/null); do
> +                if [ -n "$PATCH" ] ; then

# man test

-n ZEICHENKETTE

              Die Länge von ZEICHENKETTE ist ungleich Null

Die for Schleife geht nur in das do, wenn ein Element in der Liste
gefunden wird. Das if ist also immer wahr.


> +                    echo "Applying $PATCH"
> +                    git -C "$NAME" am --whitespace=nowarn "../$PATCH"
>                  else
und das kommt nie dran.
> -                    echo "Warning, $PATCH not found."
> +                    echo "Empty patch $PATCH ignored."

in $PATCH steht der Pfad. Also ist nicht der Patch leer sondern die
Variable $PATCH und das kommt in einer for Schleife nicht vor. s. oben.


>                  fi
> -                count=$(( count + 1 ))
>              done
>          fi
>      done
> diff --git a/build_patches/gluon/0001-simple-tc-Use-hotplug.d-iface-instead-of-hotplug.d-n.patch b/feed_patches/gluon/0001-simple-tc-Use-hotplug.d-iface-instead-of-hotplug.d-n.patch
> similarity index 100%
> rename from build_patches/gluon/0001-simple-tc-Use-hotplug.d-iface-instead-of-hotplug.d-n.patch
> rename to feed_patches/gluon/0001-simple-tc-Use-hotplug.d-iface-instead-of-hotplug.d-n.patch
> diff --git a/build_patches/openwrt/fastd/0020-fastd_generate_key_from_urandom.patch b/feed_patches/openwrt/0020-fastd_generate_key_from_urandom.patch
> similarity index 100%
> rename from build_patches/openwrt/fastd/0020-fastd_generate_key_from_urandom.patch
> rename to feed_patches/openwrt/0020-fastd_generate_key_from_urandom.patch
> diff --git a/build_patches/routing/0002-Add-batman-adv-patch-to-remove-gw-mode-switch-messag.patch b/feed_patches/routing/0002-Add-batman-adv-patch-to-remove-gw-mode-switch-messag.patch
> similarity index 100%
> rename from build_patches/routing/0002-Add-batman-adv-patch-to-remove-gw-mode-switch-messag.patch
> rename to feed_patches/routing/0002-Add-batman-adv-patch-to-remove-gw-mode-switch-messag.patch



Mehr Informationen über die Mailingliste franken-dev