[PATCH] buildscript/patches: Automatically scan directories for feeds
Adrian Schmutzler
mail at adrianschmutzler.de
Mo Apr 8 15:27:16 CEST 2019
Hallo Robert,
vielen Dank für das Feedback. Für mich ist das immer recht wertvoll, da ich ja eigtl. Linux-Noob bin, und halt das verwende, was mir gerade einfällt, aber nicht unbedingt die schöneren Alternativen kenne. (In diesem Fall war das allerdings primär ein Copy/Paste ohne viel nachzudenken).
Ich schicke eine v2 mit den Änderungen (und mache auch gleich das alte build_patches schön). Bitte dann nochmal reviewen.
Beste Grüße
Adrian
> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf Of
> robert
> Sent: Freitag, 5. April 2019 15:08
> To: franken-dev at freifunk.net
> Subject: Re: [PATCH] buildscript/patches: Automatically scan directories for
> feeds
>
> Hallo Adrian,
>
> find ich gut. Vor allem muss man nicht mehr im buildscript rumeditieren.
>
> Reviewed-by: Robert Langhammer <rlanghammer at web.de>
>
> Anmerkung unten.
>
> Am 03.04.19 um 14:53 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>
> > ---
> > buildscript | 34 +++++++++-------------
> > ...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, 14 insertions(+), 20 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..a6725c5d 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,20 +98,17 @@ 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"
> > - else
> > - echo "Warning, $PATCH not found."
> > - fi
> > - count=$(( count + 1 ))
> > - done
> > + # Patches for feeds are stored in known directories like
> feed_patches/$NAME/
> > + if [ "$(find ../../feed_patches/${NAME}/*.patch | wc -l)" -ge 1 ]; then
>
> Du kannst das so lassen, es funktioniert ja. Nur so als Hinweis:
>
> Wenn man bei einem find Ausdruck den * nicht quotet, wird der von der
> Shell expandiert. Das Suchergebnis ist also vom globbing-Verhalten der
> Shell abhängig. Hier könnte man also auch einfach ls nehmen. So ein
> Kommando liefert den passenden Errorlevel und man kann sich das Zählen
> und vergleichen sparen.
>
> if ls ../../feed_patches/${NAME}/*.patch 2&>/dev/null ; then
>
> Diese "unvollständigen" find finde ich auch immer etwas unschön. Wenn
> schon find, dann richtig. WO soll WAS gesucht werden: find
> ../../feed_patches/${NAME} -name "*.patch" . Liefert allerdings auch
> Errorlevel 0, wenn nichts gefunden wird. Mann muss dann noch was
> dranhängen | grep "." z.B.
>
> > + for PATCH in ../../feed_patches/${NAME}/*.patch; do
> > + if [ ! -z "$PATCH" ] ; then
>
> Man könnte das auch noch weiter eindampfen. Das obere if weglassen und
> gleich
>
> for PATCH in $(ls ../../feed_patches/${NAME}/*.patch
> 2>/dev/null); do
> echo "Applying $PATCH"
> git -C "$NAME" am --whitespace=nowarn "../$PATCH"
> done
>
> dann kann man auch den Test ob $PATCH leer ist weg lassen, da for bei
> leerer Liste nicht ins do springt.
>
> > + echo "Applying $PATCH"
> > + git -C "$NAME" am --whitespace=nowarn "../$PATCH"
> > + else
> > + echo "Warning, $PATCH not found."
>
> Das ist auch komisch, else kommt dran, wenn in $PATCH nix drin steht ->
> "Warning, not found". Und das wird weiter oben verhindert. Kommt also
> nie vor.
>
> Robert
>
> > + fi
> > + done
> > + fi
> > 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
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : nicht verfügbar
Dateityp : application/pgp-signature
Dateigröße : 834 bytes
Beschreibung: nicht verfügbar
URL : <https://{'listname': 'franken-dev-freifunk.net', 'hostname': 'lists.freifunk.net'}/pipermail/franken-dev-freifunk.net/attachments/20190408/3afb9097/attachment.sig>
Mehr Informationen über die Mailingliste franken-dev