diff --git a/meson.build b/meson.build index c2e408bb..e1f690c3 100644 --- a/meson.build +++ b/meson.build @@ -80,6 +80,8 @@ else ) endif +patching = run_command('./patches/apply.sh', capture: true, check: true) + features = { 'drm-backend': false, 'x11-backend': false, @@ -204,3 +206,5 @@ pkgconfig.generate( url: 'https://gitlab.freedesktop.org/wlroots/wlroots', variables: wlr_vars, ) + +message(patching.stdout().strip()) diff --git a/patches/apply.sh b/patches/apply.sh new file mode 100755 index 00000000..280f72d6 --- /dev/null +++ b/patches/apply.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# find all patches in patches/ +PATCHES=$(find patches/ -type f -name '*.patch') + +check () { + git apply --check -q -p1 $PATCH +} + +apply () { + git apply -p1 $PATCH +} + +check_applied () { + git apply --check --reverse -q -p1 $PATCH +} + +fail () { + echo =======\> \'$PATCH\' was not applied && exit 1 +} + +if [[ -n "$PATCHES" ]]; +then + # check patch validity and apply, else check if already applied and report and exit on failure + echo 'Patches found. Applying...'; + for PATCH in $PATCHES; + do + check && apply || check_applied || fail; + done +else + echo 'No patches found.' +fi