summaryrefslogtreecommitdiff
path: root/DEVELOPERS.md
diff options
context:
space:
mode:
authorGravatar Mike Burns <mike@mike-burns.com>2014-02-20 15:49:36 +0100
committerGravatar Mike Burns <mike@mike-burns.com>2014-02-26 17:49:05 +0100
commit64c8e0c87e02e3a05631d67c9d3072ca87234711 (patch)
treebd403d4a6513a96e68adbbabbdd92df6fc1b6ea2 /DEVELOPERS.md
parent0edd365a507d716690ba7e7638681a7f9a61f8b9 (diff)
Start bringing in the Makefile.am from gitsh
It introduces the `Makefile.am` from gitsh, and abstracts it a bit. This `Makefile.am`, or most of it, could be dropped into gitsh again. How to use it is documented in `DEVELOPERS.md`. The whole release process is more consistent and simple: `make release` to build a tarball, Homebrew, Arch, Debian, HTML (from manpages), and tag it, pushed to the various repos, and with cleanup. The `release` target is composed of smaller targets that stack well.
Diffstat (limited to 'DEVELOPERS.md')
-rw-r--r--DEVELOPERS.md70
1 files changed, 45 insertions, 25 deletions
diff --git a/DEVELOPERS.md b/DEVELOPERS.md
index 4d2b684..5a92da8 100644
--- a/DEVELOPERS.md
+++ b/DEVELOPERS.md
@@ -1,40 +1,60 @@
Developers
==========
-GNU autoconf & automake
------------------------
+Making a release
+----------------
-This project uses GNU autoconf and automake for installation and
-building. To regenerate everything from first principles (`configure.ac`
-and `**/Makefile.am`), run the command:
+1. Bump the version in `configure.ac`, in `AC_INIT`.
+
+2. Update the build system. This depends on GNU autoconf and GNU automake.
./autogen.sh
-Debian
-------
+3. Build the packages:
+
+This all depends on a `gh-pages` branch:
+
+ git branch gh-pages origin/gh-pages
+
+On any system you can build the tarball, Homebrew package, Arch
+PKGBUILD, and tag:
+
+ make release_build_tarball release_build_homebrew release_build_arch \
+ release_build_tag
+
+You need mdocml to tranform the manpages into HTML:
+
+ make release_build_man_html
+
+Only on Debian systems can you build the Debian package:
+
+ make release_build_deb
+
+If you are on a Debian system with mdocml, here is a shortcut:
+
+ make release_build
+
+From here you can push these:
+
+ make release_push_tarball release_push_homebrew release_push_arch \
+ release_push_tag release_push_man_html
+ make release_push_deb
-First, everything must be set up just right:
+Or, all at once:
- mkdir -p ~/debian/rcm && \
- cp -a rcm ~/debian/rcm/rcm-0.0.2 && \
- cd ~/debian/rcm && \
- rm -f rcm_0.0.2.orig.tar.gz && \
- rm -f rcm-0.0.2/tags && \
- tar --exclude=*swp --exclude-backups --exclude-vcs --exclude=debian --exclude=config.status --exclude=config.log -zcf rcm_0.0.2.orig.tar.gz rcm-0.0.2
+ make release_push
-Given that, now you can generate the Debian package. This requires the
-Debian packaging tools, especially debuild:
+You can clean individual steps:
- cd ~/debian/rcm/rcm-0.0.2 && \
- debuild -us -uc
+ make release_clean_tarball release_clean_homebrew release_clean_arch \
+ release_clean_deb release_clean_tag release_clean_man_html
-HTML documentation
-------------------
+Or, again, everything at once:
-The HTML documentation is generated using the mdocml suite. Use the
-`upload-docs` make target to rebuild the HTML docs and upload them to
-GitHub Pages. The `build-docs` target will just build them.
+ make release_clean
- make upload-docs
+If you are on a Debian system, have mdocml installed, have an absurd
+amount of trust in the system, and know how to debug it intimately, give
+everything a go:
-More information on mdocml can be found on http://mdocml.bsd.lv/ .
+ make release