# use GNU Make to run tests in parallel, and without depending on RubyGems all:: MRI = ruby RUBY = ruby RAKE = rake RSYNC = rsync WRONGDOC := $(RUBY) -I lib bin/wrongdoc GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE @./GIT-VERSION-GEN -include GIT-VERSION-FILE -include local.mk man1_paths := $(addprefix man/man1/, wrongdoc.1) man5_paths := $(addprefix man/man5/, dotwrongdoc.5) manpages := $(man1_paths) $(man5_paths) clean: -$(MAKE) -C Documentation clean man html: $(MAKE) -C Documentation $@ $(manpages): man pkg_extra := GIT-VERSION-FILE ChangeLog LATEST NEWS $(manpages) ChangeLog: GIT-VERSION-FILE .wrongdoc.yml $(WRONGDOC) prepare .manifest: ChangeLog (git ls-files && for i in $@ $(pkg_extra); do echo $$i; done) | \ LC_ALL=C sort > $@+ mv $@+ $@ doc: .document .wrongdoc.yml man html find bin lib -type f -name '*.rbc' -exec rm -f '{}' ';' $(RM) -r doc $(WRONGDOC) all install -m644 COPYING doc/COPYING install -m644 $(shell grep '^[A-Z]' .document) doc/ tar cf - man | (cd doc && tar xf -) publish_doc: -git set-file-times $(MAKE) doc -find doc/images -type f | \ TZ=UTC xargs touch -d '1970-01-01 00:00:01' doc/rdoc.css chmod 644 $$(find doc -type f) $(RSYNC) -av doc/ bogomips.org:/srv/bogomips/wrongdoc/ git ls-files | xargs touch ifneq ($(VERSION),) rfproject := rainbows rfpackage := wrongdoc pkggem := pkg/$(rfpackage)-$(VERSION).gem pkgtgz := pkg/$(rfpackage)-$(VERSION).tgz release_notes := release_notes-$(VERSION) release_changes := release_changes-$(VERSION) release-notes: $(release_notes) release-changes: $(release_changes) $(release_changes): $(WRONGDOC) release_changes > $@+ $(VISUAL) $@+ && test -s $@+ && mv $@+ $@ $(release_notes): $(WRONGDOC) release_notes > $@+ $(VISUAL) $@+ && test -s $@+ && mv $@+ $@ # ensures we're actually on the tagged $(VERSION), only used for release verify: test x"$(shell umask)" = x0022 git rev-parse --verify refs/tags/v$(VERSION)^{} git diff-index --quiet HEAD^0 test `git rev-parse --verify HEAD^0` = \ `git rev-parse --verify refs/tags/v$(VERSION)^{}` fix-perms: -git ls-tree -r HEAD | awk '/^100644 / {print $$NF}' | xargs chmod 644 -git ls-tree -r HEAD | awk '/^100755 / {print $$NF}' | xargs chmod 755 gem: $(pkggem) install-gem: $(pkggem) gem install $(CURDIR)/$< $(pkggem): .manifest fix-perms gem build $(rfpackage).gemspec mkdir -p pkg mv $(@F) $@ $(pkgtgz): distdir = $(basename $@) $(pkgtgz): HEAD = v$(VERSION) $(pkgtgz): .manifest fix-perms @test -n "$(distdir)" $(RM) -r $(distdir) mkdir -p $(distdir) tar cf - `cat .manifest` | (cd $(distdir) && tar xf -) cd pkg && tar cf - $(basename $(@F)) | gzip -9 > $(@F)+ mv $@+ $@ package: $(pkgtgz) $(pkggem) release: verify package $(release_notes) $(release_changes) rubyforge add_release -f -n $(release_notes) -a $(release_changes) \ $(rfproject) $(rfpackage) $(VERSION) $(pkgtgz) gem push $(pkggem) -rubyforge add_file \ $(rfproject) $(rfpackage) $(VERSION) $(pkggem) else gem install-gem: GIT-VERSION-FILE $(MAKE) $@ VERSION=$(GIT_VERSION) endif .PHONY: .FORCE-GIT-VERSION-FILE doc manifest man test