mirror of
https://github.com/jarun/nnn.git
synced 2024-11-01 00:47:18 +00:00
make it easy to check for failing patches locally
adds a script `check-patches.sh` to check for patch failures and also adds a make target `checkpatches` which will invoke the check-patches script.
This commit is contained in:
parent
7121a6fe43
commit
fd69fc2dca
11
.github/workflows/ci.yml
vendored
11
.github/workflows/ci.yml
vendored
|
@ -43,13 +43,4 @@ jobs:
|
||||||
env:
|
env:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
run: |
|
run: |
|
||||||
export PATCH_OPTS="--merge"
|
make checkpatches
|
||||||
patches=("O_GITSTATUS" "O_NAMEFIRST" "O_RESTOREPREVIEW")
|
|
||||||
z=$(( 1 << ${#patches[@]} ))
|
|
||||||
for ((n=1; n < z; ++n)); do
|
|
||||||
for ((i=0; i < ${#patches[@]}; ++i)); do
|
|
||||||
printf "%s=%d " "${patches[$i]}" "$(( (n & (1 << i)) != 0 ))"
|
|
||||||
done | tee "tmp" ; echo
|
|
||||||
make clean -s
|
|
||||||
xargs make <"tmp"
|
|
||||||
done
|
|
||||||
|
|
3
Makefile
3
Makefile
|
@ -310,6 +310,9 @@ upload-local: sign static musl
|
||||||
clean:
|
clean:
|
||||||
$(RM) -f $(BIN) nnn-$(VERSION).tar.gz *.sig $(BIN)-static $(BIN)-static-$(VERSION).x86_64.tar.gz $(BIN)-icons-static $(BIN)-icons-static-$(VERSION).x86_64.tar.gz $(BIN)-nerd-static $(BIN)-nerd-static-$(VERSION).x86_64.tar.gz $(BIN)-emoji-static $(BIN)-emoji-static-$(VERSION).x86_64.tar.gz $(BIN)-musl-static $(BIN)-musl-static-$(VERSION).x86_64.tar.gz
|
$(RM) -f $(BIN) nnn-$(VERSION).tar.gz *.sig $(BIN)-static $(BIN)-static-$(VERSION).x86_64.tar.gz $(BIN)-icons-static $(BIN)-icons-static-$(VERSION).x86_64.tar.gz $(BIN)-nerd-static $(BIN)-nerd-static-$(VERSION).x86_64.tar.gz $(BIN)-emoji-static $(BIN)-emoji-static-$(VERSION).x86_64.tar.gz $(BIN)-musl-static $(BIN)-musl-static-$(VERSION).x86_64.tar.gz
|
||||||
|
|
||||||
|
checkpatches:
|
||||||
|
./patches/check-patches.sh
|
||||||
|
|
||||||
prepatch:
|
prepatch:
|
||||||
ifeq ($(strip $(O_NAMEFIRST)),1)
|
ifeq ($(strip $(O_NAMEFIRST)),1)
|
||||||
patch --forward $(PATCH_OPTS) --strip=1 --input=$(NAMEFIRST)/mainline.diff
|
patch --forward $(PATCH_OPTS) --strip=1 --input=$(NAMEFIRST)/mainline.diff
|
||||||
|
|
|
@ -16,8 +16,12 @@ To apply a patch, use the corresponding make variable, e.g.:
|
||||||
|
|
||||||
make O_NAMEFIRST=1
|
make O_NAMEFIRST=1
|
||||||
|
|
||||||
|
When contributing/adding a new patch, make sure to add the make variable to the patches array in `./misc/test/check-patches.sh` as well so that patch failures can be easily tested.
|
||||||
|
|
||||||
## Resolving patch conflicts
|
## Resolving patch conflicts
|
||||||
|
|
||||||
|
Patch conflicts can be checked locally by running `make checkpatches` or by running `./patches/check-patches.sh` manually.
|
||||||
|
|
||||||
Whenever patch conflicts occur on the latest master, pull requests resolving them are welcome. Let's say a conflict occurs in the `restorepreview` patch. The best way to resolve this conflict would be something along the lines of:
|
Whenever patch conflicts occur on the latest master, pull requests resolving them are welcome. Let's say a conflict occurs in the `restorepreview` patch. The best way to resolve this conflict would be something along the lines of:
|
||||||
|
|
||||||
- Ensure you're on latest master and run `cp src/nnn.c src/nnn.c.orig && PATCH_OPTS="--merge" make O_RESTOREPREVIEW=1`. This will save a copy of the source from master in `src/nnn.c.orig` and generate conflict markers in `src/nnn.c`.
|
- Ensure you're on latest master and run `cp src/nnn.c src/nnn.c.orig && PATCH_OPTS="--merge" make O_RESTOREPREVIEW=1`. This will save a copy of the source from master in `src/nnn.c.orig` and generate conflict markers in `src/nnn.c`.
|
||||||
|
|
30
patches/check-patches.sh
Executable file
30
patches/check-patches.sh
Executable file
|
@ -0,0 +1,30 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Usage: ./misc/test/check-patches.sh
|
||||||
|
#
|
||||||
|
# Bash script that checks for any of the patches failing to apply.
|
||||||
|
# Read patches/README.md for more information.
|
||||||
|
|
||||||
|
export PATCH_OPTS="--merge"
|
||||||
|
patches=("O_GITSTATUS" "O_NAMEFIRST" "O_RESTOREPREVIEW")
|
||||||
|
z=$(( 1 << ${#patches[@]} ))
|
||||||
|
pid=$$
|
||||||
|
ret=0
|
||||||
|
trap 'ret=1' SIGUSR1
|
||||||
|
|
||||||
|
for ((n=1; n < z; ++n)); do
|
||||||
|
for ((i=0; i < ${#patches[@]}; ++i)); do
|
||||||
|
printf "%s=%d " "${patches[$i]}" "$(( (n & (1 << i)) != 0 ))"
|
||||||
|
done | tee "/dev/stderr" | (
|
||||||
|
make clean -s
|
||||||
|
xargs make 2>&1
|
||||||
|
if [ "$?" -ne 0 ]; then
|
||||||
|
echo "[FAILED]" >&2
|
||||||
|
kill -SIGUSR1 "$pid"
|
||||||
|
else
|
||||||
|
echo "[SUCCESS]" >&2
|
||||||
|
fi
|
||||||
|
git restore src
|
||||||
|
) >/dev/null
|
||||||
|
done
|
||||||
|
exit "$ret"
|
Loading…
Reference in a new issue