aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-03-11 08:24:23 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-03-11 08:24:23 +0000
commit0f6dae2704ff6535fca3a7b6c5aad44b18dcdf3b (patch)
tree845f96ffaf630998826692d09898c6360b945ad6 /Makefile
parent5c5892ba2bfac23d1eabd207619f451773a3a505 (diff)
Add sample experimental patch to show "make apply", "make unapply", "make patchlist", and "make update" targets
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5166 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'Makefile')
-rwxr-xr-xMakefile67
1 files changed, 67 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 38e776705..c50d49011 100755
--- a/Makefile
+++ b/Makefile
@@ -387,6 +387,16 @@ datafiles: all
update:
@if [ -d CVS ]; then \
+ if [ -f patches/.applied ]; then \
+ patches=`cat patches/.applied`; \
+ fi; \
+ if ! [ -z "$$patches" ]; then \
+ for x in $$patches; do \
+ echo "Unapplying $$x..."; \
+ patch -R -p0 < patches/$$x; \
+ done; \
+ rm -f patches/.applied; \
+ fi ; \
echo "Updating from CVS..." ; \
cvs -q -z3 update -Pd | tee update.out; \
rm -f .version; \
@@ -395,6 +405,17 @@ update:
grep ^C update.out | cut -d' ' -f2- ; \
fi ; \
rm -f update.out; \
+ if ! [ -z "$$patches" ]; then \
+ for x in $$patches; do \
+ if [ -f patches/$$x ]; then \
+ echo "Applying patch $$x..."; \
+ patch -p0 < patches/$$x; \
+ echo $$x >> patches/.applied; \
+ else \
+ echo "Patch $$x no longer relevant"; \
+ fi; \
+ done; \
+ fi; \
else \
echo "Not CVS"; \
fi
@@ -607,3 +628,49 @@ cleantest:
if ! cmp -s .cleancount .lastclean ; then \
$(MAKE) clean; cp -f .cleancount .lastclean;\
fi
+
+patchlist:
+ @echo "Experimental Patches:"
+ @for x in patches/*; do \
+ patch=`basename $$x`; \
+ if [ "$$patch" = "CVS" ]; then \
+ continue; \
+ fi; \
+ if grep -q ^$$patch$$ patches/.applied; then \
+ echo "$$patch (applied)"; \
+ else \
+ echo "$$patch (available)"; \
+ fi; \
+ done
+
+
+apply:
+ @if [ -z "$(PATCH)" ]; then \
+ echo "Usage: make PATCH=<patchname> applypatch"; \
+ elif grep -q ^$(PATCH)$$ patches/.applied 2>/dev/null; then \
+ echo "Patch $(PATCH) is already applied"; \
+ elif [ -f "patches/$(PATCH)" ]; then \
+ echo "Applying patch $(PATCH)"; \
+ patch -p0 < patches/$(PATCH); \
+ echo "$(PATCH)" >> patches/.applied; \
+ else \
+ echo "No such patch $(PATCH) in patches directory"; \
+ fi
+
+unapply:
+ @if [ -z "$(PATCH)" ]; then \
+ echo "Usage: make PATCH=<patchname> unapplypatch"; \
+ elif !grep -q ^$(PATCH)$$ patches/.applied 2>/dev/null; then \
+ echo "Patch $(PATCH) is not applied"; \
+ elif [ -f "patches/$(PATCH)" ]; then \
+ echo "Un-applying patch $(PATCH)"; \
+ patch -p0 -R < patches/$(PATCH); \
+ rm -f patches/.tmpapplied || :; \
+ mv patches/.applied patches/.tmpapplied; \
+ cat patches/.tmpapplied | grep -v ^$(PATCH)$$ > patches/.applied; \
+ rm -f patches/.tmpapplied; \
+ else \
+ echo "No such patch $(PATCH) in patches directory"; \
+ fi
+
+