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

Submitted by Adrian Schmutzler on April 8, 2019, 1:32 p.m.

Details

Message ID 20190408133211.8970-1-freifunk@adrianschmutzler.de
State Accepted
Headers show

Commit Message

Adrian Schmutzler April 8, 2019, 1:32 p.m.
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@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%)

Patch hide | download patch | download mbox

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
+                    echo "Applying $PATCH"
+                    git -C "$NAME" am --whitespace=nowarn "../$PATCH"
                 else
-                    echo "Warning, $PATCH not found."
+                    echo "Empty patch $PATCH ignored."
                 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

Comments

Robert Langhammer April 8, 2019, 2:13 p.m.
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@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
Adrian Schmutzler April 8, 2019, 2:15 p.m.
Hallo Robert,

ich bin dumm.

Ich meine "-s". Würde das beim Applien ändern, wenn du nicht sonst noch was findest.

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of
> robert
> Sent: Montag, 8. April 2019 16:13
> To: franken-dev@freifunk.net
> Subject: Re: [PATCH v2 1/2] buildscript/patches: Automatically scan directories
> for feeds
> 
> 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@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
Robert Langhammer April 8, 2019, 2:21 p.m.
Am 08.04.19 um 16:15 schrieb Adrian Schmutzler:
> Hallo Robert,
>
> ich bin dumm.
>
> Ich meine "-s". Würde das beim Applien ändern, wenn du nicht sonst noch was findest.

Dann stimmt die Logik. Du änderst das beim Applien. ->

Reviewed-by: Robert Langhammer <rlanghammer@web.de>


>
> Grüße
>
> Adrian
>
>> -----Original Message-----
>> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of
>> robert
>> Sent: Montag, 8. April 2019 16:13
>> To: franken-dev@freifunk.net
>> Subject: Re: [PATCH v2 1/2] buildscript/patches: Automatically scan directories
>> for feeds
>>
>> 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@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
Adrian Schmutzler April 10, 2019, 2:32 p.m.
Beide applied.

 

From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of robert
Sent: Montag, 8. April 2019 16:22
To: franken-dev@freifunk.net
Subject: Re: [PATCH v2 1/2] buildscript/patches: Automatically scan directories for feeds

 

 

Am 08.04.19 um 16:15 schrieb Adrian Schmutzler: 
> Hallo Robert, 
> 
> ich bin dumm. 
> 
> Ich meine "-s". Würde das beim Applien ändern, wenn du nicht sonst noch was findest. 

Dann stimmt die Logik. Du änderst das beim Applien. -> 

Reviewed-by: Robert Langhammer <rlanghammer@web.de <mailto:rlanghammer@web.de> > 

 

> 
> Grüße 
> 
> Adrian 
> 
>> -----Original Message----- 
>> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of 
>> robert 
>> Sent: Montag, 8. April 2019 16:13 
>> To: franken-dev@freifunk.net <mailto:franken-dev@freifunk.net>  
>> Subject: Re: [PATCH v2 1/2] buildscript/patches: Automatically scan directories 
>> for feeds 
>> 
>> 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@adrianschmutzler.de <mailto:freifunk@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