annotate Makefile @ 126:d851f4f89fb4

Improve Makefile deployment mechanism. * Makefile: Introduce checks for required tools and especially the Jekyll version. Explain the deployment in detail. * README.md: Remove verbose section about deployment to the Makefile. Update documentation. Remove advertising section.
author Kai T. Ohlhus <k.ohlhus@gmail.com>
date Fri, 09 Dec 2016 15:18:41 +0100
parents bfdbe4eb3128
children 839113398e6f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
1 USRNAME ?= $(shell bash -c 'read -p \
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
2 "The Octave Savannah CVS repository is checked out to the parent directory. Savannah login: " usr; \
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
3 echo $$usr')
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
4
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
5 SAVANNAH_DIR := ../octave
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
6
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
7 CVS_RSH=ssh
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
8
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
9 export CVS_RSH
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
10
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
11 CHECK_GEM := $(shell command -v gem 2> /dev/null)
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
12 CHECK_JEKYLL := $(shell command -v jekyll 2> /dev/null)
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
13 CHECK_JEKYLL_VERSION = $(shell jekyll --version | grep ^jekyll | sed 's/^.* //g')
120
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
14
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
15 deploy: | $(SAVANNAH_DIR) check_prerequisites
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
16 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
17 # Build static website into the subdirectory `_site` using Jekyll
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
18 #
120
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
19 jekyll build
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
20 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
21 # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
22 # DANGAROUS STEP, ommitted by default.
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
23 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
24 # Remove all previous files in the target directory, but no directories at
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
25 # all or CVS related stuff. This is due to a limitation of CVS, see
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
26 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
27 # https://web.archive.org/web/20140629054602/http://ximbiot.com/cvs/manual/cvs-1.11.23/cvs_7.html#SEC69
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
28 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
29 # For some introduction to CVS, see https://savannah.nongnu.org/projects/cvs
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
30 # or http://www.cs.umb.edu/~srevilak/cvs.html.
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
31 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
32 # find $(SAVANNAH_DIR) -type f -not -path "*/CVS/*" -exec rm -f '{}' \;
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
33 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
34 # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
35 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
36 # Copy the content of that directory `_site` into the checked out
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
37 # Savannah CVS (see make target $(SAVANNAH_DIR)).
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
38 #
120
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
39 cp -a _site/. $(SAVANNAH_DIR)
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
40 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
41 # Add all potential new directories to CVS
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
42 #
120
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
43 cd $(SAVANNAH_DIR) && find . -type d -not -name "CVS" -exec cvs add '{}' \;
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
44 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
45 # Add all potential new files to CVS (the following command taken from
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
46 # http://stackoverflow.com/questions/5071/how-to-add-cvs-directories-recursively
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
47 # proved to be fast)
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
48 #
120
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
49 cd $(SAVANNAH_DIR) && find . -type f | grep -v CVS | xargs cvs add
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
50 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
51 # Commit the chages to get online.
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
52 #
120
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
53 cd $(SAVANNAH_DIR) && cvs commit
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
54 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
55 # Now everything should be visible to the world.
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
56 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
57
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
58 check_prerequisites:
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
59 ifndef CHECK_GEM
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
60 $(error "Command `gem` is not available please install rubygems")
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
61 endif
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
62 ifndef CHECK_JEKYLL
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
63 $(error "Command `jekyll` is not available. ${CHECK_JEKYLL_VERSION} Try `gem install jekyll`")
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
64 endif
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
65 ifneq "3.3" "$(word 1, $(sort 3.3 $(CHECK_JEKYLL_VERSION)))"
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
66 $(error "Detected Jekyll version ${CHECK_JEKYLL_VERSION} (>= 3.3 required).")
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
67 endif
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
68 @echo "All prerequisites fulfilled."
120
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
69
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
70 $(SAVANNAH_DIR):
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
71 cd .. \
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
72 && cvs -z3 -d:ext:$(USRNAME)@cvs.savannah.gnu.org:/web/octave checkout -P octave
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
73
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
74 .DEFAULT_GOAL :=