shuffle targets to their correct place, harden recipes
[org-mode.git] / maint-targets.mk
blob3d71d7a189f3ab3d195612cc93b65d73c14b7864
1 .PHONY: p g html_manual html_guide \
2 testrelease release fixrelease \
3 relup makerelease sync_release sync_manual \
4 distfile pkg push pushtag pushreleasetag
5 .NOTPARALLEL: .PHONY
6 # Below here are special targets for maintenance only
8 p: pdf
9 open doc/org.pdf
11 g: pdf
12 open doc/orgguide.pdf
14 html_manual: doc/org.texi
15 rm -rf doc/manual
16 mkdir doc/manual
17 $(TEXI2HTML) -o doc/manual doc/org.texi
18 UTILITIES/mansplit.pl doc/manual/*.html
20 html_guide: doc/orgguide.texi
21 rm -rf doc/guide
22 mkdir doc/guide
23 $(TEXI2HTML) -o doc/guide doc/orgguide.texi
24 UTILITIES/guidesplit.pl doc/guide/*.html
26 testrelease:
27 git checkout -b testrelease origin/maint
28 git merge -s recursive -X theirs master
29 UTILITIES/set-version.pl testing
30 git commit -a -m "Release testing"
31 make distfile TAG=testversion
32 make cleanrel
33 rm -rf org-testversion*
34 git reset --hard
35 git checkout master
36 git branch -D testrelease
38 # The following target makes a full release for the stuff that is
39 # currently on master. Do it like this:
41 # make release TAG=7.01
43 release:
44 git checkout maint
45 git merge -s recursive -X theirs master
46 UTILITIES/set-version.pl $(TAG)
47 git commit -a -m "Release $(TAG)"
48 make relup TAG=$(TAG)
49 make cleanrel
50 rm -rf org-$(TAG)
51 rm -f org-$(TAG)*.zip
52 rm -f org-$(TAG)*.tar.gz
53 make pushreleasetag TAG=$(TAG)
54 git push -f origin maint
55 git checkout master
56 git merge -s ours maint
57 UTILITIES/set-version.pl -a $(TAG)
58 git commit -a -m "Update website to show $(TAG) as current release"
59 git push
61 # The following target makes a release, but from the stuff that is on
62 # maint, not from the stuff that is on master. The idea is that it pushes
63 # out a minor fix into a minor update, while development on master
64 # already went full steam ahead. To make a micro-relesse, cherry-pick
65 # the necessary changes into maint, then run (with proper version number)
66 # This is just like release, but we skip the step which merges master
67 # into maint.
69 # make fixrelease TAG=7.01.02
71 fixrelease:
72 git checkout maint
73 git merge -s recursive -X theirs master
74 UTILITIES/set-version.pl $(TAG)
75 git commit -a -m "Release $(TAG)"
76 make relup TAG=$(TAG)
77 make cleanrel
78 rm -rf org-$(TAG)
79 rm org-$(TAG)*.zip
80 rm org-$(TAG)*.tar.gz
81 make pushreleasetag TAG=$(TAG)
82 git push -f origin maint
83 git checkout master
84 git merge -s ours maint
85 UTILITIES/set-version.pl -o $(TAG)
86 git commit -a -m "Update website to show $(TAG) as current release"
87 git push
89 # ~$ make relup only makes sense from orgmode.org server
90 # Don't call it from your computer!
91 relup:
92 ${MAKE} makerelease
93 ${MAKE} sync_release
94 ${MAKE} sync_manual
96 makerelease:
97 @if [ "X$(TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi
98 ${MAKE} distfile
99 ${MAKE} doc
100 UTILITIES/gplmanual.pl
101 ${MAKE} html_manual
102 ${MAKE} html_guide
103 rm -rf RELEASEDIR
104 $(MKDIR) RELEASEDIR
105 cp org-$(TAG).zip org-$(TAG).tar.gz RELEASEDIR
106 cp doc/org.pdf doc/orgcard.pdf doc/org.texi doc/org.html RELEASEDIR
107 cp doc/org_dual_license.texi RELEASEDIR
108 cp doc/orgguide.pdf doc/orgcard.txt RELEASEDIR
109 cp RELEASEDIR/org-$(TAG).zip RELEASEDIR/org.zip
110 cp RELEASEDIR/org-$(TAG).tar.gz RELEASEDIR/org.tar.gz
112 # ~$ make sync_release only makes sense from orgmode.org server
113 # Don't call it from your computer!
114 sync_release:
115 rsync -avuz RELEASEDIR/ /var/www/orgmode.org/
117 # ~$ make sync_manual only makes sense from orgmode.org server
118 # Don't call it from your computer!
119 sync_manual:
120 rsync -avuz --delete doc/manual/ /var/www/orgmode.org/manual/
121 rsync -avuz --delete doc/guide/ /var/www/orgmode.org/guide/
123 distfile:
124 @if [ "X$(TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi
125 touch doc/org.texi doc/orgcard.tex # force update
126 ${MAKE} cleancontrib
127 ${MAKE} info
128 ${MAKE} doc
129 ${MAKE} lisp/org-install.el
130 rm -rf org-$(TAG) org-$(TAG).zip
131 $(MKDIR) org-$(TAG)
132 $(MKDIR) org-$(TAG)/doc
133 $(MKDIR) org-$(TAG)/lisp
134 cp -r $(LISPFILES) org-$(TAG)/lisp
135 cp -r $(DOCFILES) $(CARDFILES) org-$(TAG)/doc
136 cp -r $(DISTFILES_extra) org-$(TAG)/
137 cp -r README_DIST org-$(TAG)/README
138 zip -r org-$(TAG).zip org-$(TAG)
139 tar zcvf org-$(TAG).tar.gz org-$(TAG)
141 pkg:
142 @if [ "X$(PKG_TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi
143 touch doc/org.texi doc/orgcard.tex # force update
144 ${MAKE} info
145 ${MAKE} doc
146 rm -rf org-$(PKG_TAG) org-$(PKG_TAG).tar
147 $(MKDIR) org-$(PKG_TAG)
148 cp -r $(PKG_FILES) org-$(PKG_TAG)
149 echo "(define-package \"org\" \"$(PKG_TAG)\" \"$(PKG_DOC)\" $(PKG_REQ))" > org-$(PKG_TAG)/org-pkg.el
150 tar cf org-$(PKG_TAG).tar org-$(PKG_TAG) --remove-files
152 push:
153 git push orgmode@orgmode.org:org-mode.git master
155 pushtag:
156 git tag -m "Adding tag" -a $(TAG)
157 git push orgmode@orgmode.org:org-mode.git $(TAG)
159 pushreleasetag:
160 git tag -m "Adding release tag" -a release_$(TAG)
161 git push orgmode@orgmode.org:org-mode.git release_$(TAG)