buildscript/patches: Automatically scan directories for feeds

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>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
This commit is contained in:
Adrian Schmutzler 2019-04-08 15:32:10 +02:00
parent d9ec8edb15
commit 014f66a8d7
4 changed files with 9 additions and 17 deletions

View File

@ -23,23 +23,20 @@ PACKAGEURL="https://git.openwrt.org/feed/packages.git"
#official openwrt packages #official openwrt packages
OPENWRT=(openwrt OPENWRT=(openwrt
$PACKAGEURL $PACKAGEURL
$PACKAGEREV $PACKAGEREV)
fastd/0020-fastd_generate_key_from_urandom.patch)
OPENWRT_PKGS="gpioctl-sysfs libugpio fastd haserl" OPENWRT_PKGS="gpioctl-sysfs libugpio fastd haserl"
## Be careful: FFF uses COMPAT_VERSION 15 as default at the moment. ## Be careful: FFF uses COMPAT_VERSION 15 as default at the moment.
## See http://www.open-mesh.org/projects/batman-adv/wiki/Compatversion ## See http://www.open-mesh.org/projects/batman-adv/wiki/Compatversion
GLUON=(gluon GLUON=(gluon
https://github.com/freifunk-gluon/packages.git https://github.com/freifunk-gluon/packages.git
8b65619f59c3bdce743c2f2fb2588fdd7079355a 8b65619f59c3bdce743c2f2fb2588fdd7079355a)
"0001-simple-tc-Use-hotplug.d-iface-instead-of-hotplug.d-n.patch")
GLUON_PKGS="kmod-batman-adv-legacy micrond simple-tc uradvd" GLUON_PKGS="kmod-batman-adv-legacy micrond simple-tc uradvd"
#official openwrt routing packages #official openwrt routing packages
ROUTING=(routing ROUTING=(routing
https://git.openwrt.org/feed/routing.git https://git.openwrt.org/feed/routing.git
ea345d16a6e27c2a8fdf67bf543cc36a5f189131 ea345d16a6e27c2a8fdf67bf543cc36a5f189131) # openwrt-18.06.2
"0002-Add-batman-adv-patch-to-remove-gw-mode-switch-messag.patch") # openwrt-18.06.2
ROUTING_PKGS="kmod-batman-adv batctl alfred babeld" ROUTING_PKGS="kmod-batman-adv batctl alfred babeld"
FFF=(fff) FFF=(fff)
@ -101,19 +98,14 @@ get_source() {
if [ -n "$URL" ] && [ -n "$REV" ]; then if [ -n "$URL" ] && [ -n "$REV" ]; then
checkout_git "$NAME" "$URL" "$REV" checkout_git "$NAME" "$URL" "$REV"
# Patches for feeds could be stored in known directories like build_patches/$NAME/ # Patches for feeds are stored in known directories like feed_patches/$NAME/
# That way multiple patches for one feed could be supported for PATCH in $(ls ../../feed_patches/${NAME}/*.patch 2>/dev/null); do
count=3 if [ -s "$PATCH" ] ; then
while [ "x${FEED[count]}" != "x" ] echo "Applying $PATCH"
do git -C "$NAME" am --whitespace=nowarn "../$PATCH"
local PATCH="../../../build_patches/${NAME}/${FEED[count]}"
if [ ! -z "$PATCH" ] ; then
echo "Patching $PATCH"
git -C "$NAME" am --whitespace=nowarn "$PATCH"
else else
echo "Warning, $PATCH not found." echo "Empty patch $PATCH ignored."
fi fi
count=$(( count + 1 ))
done done
fi fi
done done