about summary refs log tree commit homepage
path: root/GNUmakefile
diff options
context:
space:
mode:
Diffstat (limited to 'GNUmakefile')
-rw-r--r--GNUmakefile48
1 files changed, 40 insertions, 8 deletions
diff --git a/GNUmakefile b/GNUmakefile
index 201d6f3..20ad53d 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -1,7 +1,9 @@
 # use GNU Make to run tests in parallel, and without depending on RubyGems
 all::
+MRI = ruby
 RUBY = ruby
 RAKE = rake
+RSYNC = rsync
 GIT_URL = git://git.bogomips.org/zbatery.git
 
 GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
@@ -14,9 +16,11 @@ endif
 ifeq ($(RUBY_VERSION),)
   RUBY_VERSION := $(shell $(RUBY) -e 'puts RUBY_VERSION')
 endif
+RUBY_ENGINE := $(shell $(RUBY) -e 'puts((RUBY_ENGINE rescue "ruby"))')
 
 base_bins := zbatery
 bins := $(addprefix bin/, $(base_bins))
+man1_rdoc := $(addsuffix _1, $(base_bins))
 man1_bins := $(addsuffix .1, $(base_bins))
 man1_paths := $(addprefix man/man1/, $(man1_bins))
 
@@ -76,26 +80,52 @@ cgit_atom := http://git.bogomips.org/cgit/zbatery.git/atom/?h=master
 atom = <link rel="alternate" title="Atom feed" href="$(1)" \
              type="application/atom+xml"/>
 
-# using rdoc 2.4.1+
+# using rdoc 2.5.x+
 doc: .document NEWS ChangeLog
-        for i in $(man1_bins); do > $$i; done
-        rdoc -Na -t "$(shell sed -ne '1s/^= //p' README)"
+        for i in $(man1_rdoc); do echo > $$i; done
+        find bin lib -type f -name '*.rbc' -exec rm -f '{}' ';'
+        rdoc -t "$(shell sed -ne '1s/^= //p' README)"
         install -m644 COPYING doc/COPYING
         install -m644 $(shell grep '^[A-Z]' .document)  doc/
         $(MAKE) -C Documentation install-html install-man
         install -m644 $(man1_paths) doc/
         cd doc && for i in $(base_bins); do \
+          $(RM) 1.html $${i}.1.html; \
           sed -e '/"documentation">/r man1/'$$i'.1.html' \
-                < $${i}_1.html > tmp && mv tmp $${i}_1.html; done
-        $(RUBY) -i -p -e \
+                < $${i}_1.html > tmp && mv tmp $${i}_1.html; \
+          ln $${i}_1.html $${i}.1.html; \
+          done
+        $(MRI) -i -p -e \
           '$$_.gsub!("</title>",%q{\&$(call atom,$(cgit_atom))})' \
           doc/ChangeLog.html
-        $(RUBY) -i -p -e \
+        $(MRI) -i -p -e \
           '$$_.gsub!("</title>",%q{\&$(call atom,$(news_atom))})' \
           doc/NEWS.html doc/README.html
         $(RAKE) -s news_atom > doc/NEWS.atom.xml
         cd doc && ln README.html tmp && mv tmp index.html
-        $(RM) $(man1_bins)
+        $(RM) $(man1_rdoc)
+
+# publishes docs to http://zbatery.bogomip.org/
+publish_doc:
+        -git set-file-times
+        $(RM) -r doc ChangeLog NEWS
+        $(MAKE) doc LOG_VERSION=$(shell git tag -l | tail -1)
+        awk 'BEGIN{RS="=== ";ORS=""}NR==2{sub(/\n$$/,"");print RS""$$0 }' \
+         < NEWS > doc/LATEST
+        find doc/images doc/js -type f | \
+                TZ=UTC xargs touch -d '1970-01-01 00:00:01' doc/rdoc.css
+        $(MAKE) doc_gz
+        chmod 644 $$(find doc -type f)
+        $(RSYNC) -av doc/ zbatery.bogomip.org:/srv/zbatery/
+        git ls-files | xargs touch
+
+# Create gzip variants of the same timestamp as the original so nginx
+# "gzip_static on" can serve the gzipped versions directly.
+doc_gz: docs = $(shell find doc -type f ! -regex '^.*\.\(gif\|jpg\|png\|gz\)$$')
+doc_gz:
+        touch doc/NEWS.atom.xml -d "$$(awk 'NR==1{print $$4,$$5,$$6}' NEWS)"
+        for i in $(docs); do \
+          gzip --rsyncable -9 < $$i > $$i.gz; touch -r $$i $$i.gz; done
 
 ifneq ($(VERSION),)
 rfproject := rainbows
@@ -152,11 +182,13 @@ release: verify package $(release_notes) $(release_changes)
         # make tgz release on RubyForge
         rubyforge add_release -f -n $(release_notes) -a $(release_changes) \
           $(rfproject) $(rfpackage) $(VERSION) $(pkgtgz)
-        # push gem to Gemcutter
+        # push gem to RubyGems.org
         gem push $(pkggem)
         # in case of gem downloads from RubyForge releases page
         -rubyforge add_file \
           $(rfproject) $(rfpackage) $(VERSION) $(pkggem)
+        $(RAKE) raa_update VERSION=$(VERSION)
+        $(RAKE) fm_update VERSION=$(VERSION)
 else
 gem install-gem: GIT-VERSION-FILE
         $(MAKE) $@ VERSION=$(GIT_VERSION)