# HG changeset patch # User Oleksandr Gavenko # Date 1429045015 -10800 # Node ID 9765c6674f793afde2e6ebbf3b2f35c442d035a5 # Parent c4bc43d160829105f9c7c89eaa57228dc1bf9f3d Add version compatibility checks. diff -r c4bc43d16082 -r 9765c6674f79 Makefile --- a/Makefile Tue Apr 14 23:20:00 2015 +0300 +++ b/Makefile Tue Apr 14 23:56:55 2015 +0300 @@ -42,11 +42,15 @@ endif ################################################################ -# Installation directories. +# Installation directories and files. emacsdir := $(HOME)/.emacs.d mylispdir := $(emacsdir)/my +# Compatibility version. +COMPAT_VER := 1 +COMPAT_FILE := $(emacsdir)/.emacs-ver + ################################################################ # Build tool definition/switches. @@ -80,8 +84,24 @@ ################################################################ # Install/uninstall targets. +.PHONY: check-install-comapt +check-install-comapt: + [ -f $(COMPAT_FILE) ] || { echo $(COMPAT_FILE) missing, run '"make upgrade"' first; false; } + read ver <$(COMPAT_FILE); if [ "$$ver" -ne $(COMPAT_VER) ]; then echo "*** "Run '"make upgrade"' first" ***"; exit 1; fi + +.PHONY: check-upgrade-comapt +check-upgrade-comapt: + \ +if [ -f $(COMPAT_FILE) ]; then \ + read ver <$(COMPAT_FILE); \ + if [ "$$ver" -gt $(COMPAT_VER) ]; then \ + echo "*** "Project is too old, downgrade is not possible..." ***"; \ + exit 1; \ + fi; \ +fi + .PHONY: upgrade -upgrade: +upgrade: check-upgrade-comapt \ mkdir -p $(mylispdir); \ rm -f $(emacsdir)/autoload-my.el; \ @@ -95,6 +115,7 @@ fn=$${f##*/}; \ [ -f $(emacsdir)/$$fn ] && mv $$f $(emacsdir)/$$fn.3 || mv $$f $(emacsdir); \ done; \ +echo $(COMPAT_VER) >$(COMPAT_FILE); \ make install .PHONY: install-all @@ -107,7 +128,7 @@ endef .PHONY: install -install: +install: check-install-comapt mkdir -p $(mylispdir) $(cleanup_mylispdir) for file in .emacs-pre .emacs-post; do \