annotate Makefile @ 162:839113398e6f

Makefile: Make rules to succeed in any case and small improvements.
author Kai T. Ohlhus <k.ohlhus@gmail.com>
date Tue, 29 Jan 2019 17:03:21 +0100
parents d851f4f89fb4
children 7a664b44fd8d
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 #
162
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
21 # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
22 # DANGEROUS STEP, omitted by default.
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
23 #
162
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
24 # Remove all previous files in the target directory, but no directories
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
25 # at all or CVS related stuff. This is due to a limitation of CVS, see
126
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 #
162
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
29 # For some introduction to CVS, see
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
30 # https://savannah.nongnu.org/projects/cvs
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
31 # https://www.cs.umb.edu/~srevilak/cvs.html
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
32 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
33 # find $(SAVANNAH_DIR) -type f -not -path "*/CVS/*" -exec rm -f '{}' \;
162
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
34 # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
126
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 #
162
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
43 cd $(SAVANNAH_DIR) \
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
44 && find . -type d -not -name "CVS" -exec cvs add '{}' \; \
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
45 | true # succeed in any case
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
46 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
47 # 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
48 # http://stackoverflow.com/questions/5071/how-to-add-cvs-directories-recursively
162
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
49 # proved to be fast) and succeed in any case.
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
50 #
162
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
51 cd $(SAVANNAH_DIR) && find . -type f | grep -v CVS | xargs cvs add | true
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
52 #
162
839113398e6f Makefile: Make rules to succeed in any case and small improvements.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 126
diff changeset
53 # Commit the changes to get online.
126
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
54 #
120
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
55 cd $(SAVANNAH_DIR) && cvs commit
126
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 # Now everything should be visible to the world.
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
58 #
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
59
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
60 check_prerequisites:
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
61 ifndef CHECK_GEM
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
62 $(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
63 endif
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
64 ifndef CHECK_JEKYLL
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
65 $(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
66 endif
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
67 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
68 $(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
69 endif
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
70 @echo "All prerequisites fulfilled."
120
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
71
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
72 $(SAVANNAH_DIR):
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
73 cd .. \
bfdbe4eb3128 * Makefile: automating deployment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff changeset
74 && 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
75
d851f4f89fb4 Improve Makefile deployment mechanism.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 120
diff changeset
76 .DEFAULT_GOAL :=