maint-targets.mk 4.4 KB

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