Add version compatibility checks.
--- 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 \