about summary refs log tree commit homepage
path: root/GNUmakefile
diff options
context:
space:
mode:
Diffstat (limited to 'GNUmakefile')
-rw-r--r--GNUmakefile110
1 files changed, 38 insertions, 72 deletions
diff --git a/GNUmakefile b/GNUmakefile
index a3b761a..c0016ef 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -1,7 +1,6 @@
 # use GNU Make to run tests in parallel, and without depending on RubyGems
 all:: test
 
-GIT_URL = git://git.bogomips.org/unicorn.git
 RLFLAGS = -G2
 
 MRI = ruby
@@ -16,7 +15,7 @@ GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
 -include local.mk
 ruby_bin := $(shell which $(RUBY))
 ifeq ($(DLEXT),) # "so" for Linux
-  DLEXT := $(shell $(RUBY) -rrbconfig -e 'puts Config::CONFIG["DLEXT"]')
+  DLEXT := $(shell $(RUBY) -rrbconfig -e 'puts RbConfig::CONFIG["DLEXT"]')
 endif
 ifeq ($(RUBY_VERSION),)
   RUBY_VERSION := $(shell $(RUBY) -e 'puts RUBY_VERSION')
@@ -24,6 +23,12 @@ endif
 
 RUBY_ENGINE := $(shell $(RUBY) -e 'puts((RUBY_ENGINE rescue "ruby"))')
 
+isolate_libs := tmp/isolate/$(RUBY_ENGINE)-$(RUBY_VERSION).mk
+$(isolate_libs): script/isolate_for_tests
+        @$(RUBY) script/isolate_for_tests
+-include $(isolate_libs)
+MYLIBS = $(RUBYLIB):$(ISOLATE_LIBS)
+
 # dunno how to implement this as concisely in Ruby, and hell, I love awk
 awk_slow := awk '/def test_/{print FILENAME"--"$$2".n"}' 2>/dev/null
 
@@ -40,7 +45,7 @@ T_r_log := $(subst .r,$(log_suffix),$(T_r))
 test_prefix = $(CURDIR)/test/$(RUBY_ENGINE)-$(RUBY_VERSION)
 
 ext := ext/unicorn_http
-c_files := $(ext)/unicorn_http.c $(wildcard $(ext)/*.h)
+c_files := $(ext)/unicorn_http.c $(ext)/httpdate.c $(wildcard $(ext)/*.h)
 rl_files := $(wildcard $(ext)/*.rl)
 base_bins := unicorn unicorn_rails
 bins := $(addprefix bin/, $(base_bins))
@@ -117,14 +122,14 @@ run_test = $(quiet_pre) \
 %.n: arg = $(subst .n,,$(subst --, -n ,$@))
 %.n: t = $(subst .n,$(log_suffix),$@)
 %.n: export PATH := $(test_prefix)/bin:$(PATH)
-%.n: export RUBYLIB := $(test_prefix):$(test_prefix)/lib:$(RUBYLIB)
+%.n: export RUBYLIB := $(test_prefix):$(test_prefix)/lib:$(MYLIBS)
 %.n: $(test_prefix)/.stamp
         $(run_test)
 
 $(T): arg = $@
 $(T): t = $(subst .rb,$(log_suffix),$@)
 $(T): export PATH := $(test_prefix)/bin:$(PATH)
-$(T): export RUBYLIB := $(test_prefix):$(test_prefix)/lib:$(RUBYLIB)
+$(T): export RUBYLIB := $(test_prefix):$(test_prefix)/lib:$(MYLIBS)
 $(T): $(test_prefix)/.stamp
         $(run_test)
 
@@ -150,77 +155,39 @@ clean:
         $(RM) $(setup_rb_files) $(t_log)
         $(RM) -r $(test_prefix) man
 
-man:
-        $(MAKE) -C Documentation install-man
+man html:
+        $(MAKE) -C Documentation install-$@
+
+pkg_extra := GIT-VERSION-FILE ChangeLog LATEST NEWS \
+             $(ext)/unicorn_http.c $(man1_paths)
 
-pkg_extra := GIT-VERSION-FILE NEWS ChangeLog $(ext)/unicorn_http.c
-manifest: $(pkg_extra) man
-        $(RM) .manifest
-        $(MAKE) .manifest
+ChangeLog: GIT-VERSION-FILE .wrongdoc.yml
+        wrongdoc prepare
 
-.manifest:
-        (git ls-files && \
-         for i in $@ $(pkg_extra) $(man1_paths); \
-         do echo $$i; done) | LC_ALL=C sort > $@+
+.manifest: ChangeLog $(ext)/unicorn_http.c
+        (git ls-files && for i in $@ $(pkg_extra); do echo $$i; done) | \
+          LC_ALL=C sort > $@+
         cmp $@+ $@ || mv $@+ $@
         $(RM) $@+
 
-NEWS: GIT-VERSION-FILE .manifest
-        $(RAKE) -s news_rdoc > $@+
-        mv $@+ $@
-
-SINCE = 1.0.0
-ChangeLog: LOG_VERSION = \
-  $(shell git rev-parse -q "$(GIT_VERSION)" >/dev/null 2>&1 && \
-          echo $(GIT_VERSION) || git describe)
-ChangeLog: log_range = v$(SINCE)..$(LOG_VERSION)
-ChangeLog: GIT-VERSION-FILE
-        @echo "ChangeLog from $(GIT_URL) ($(log_range))" > $@+
-        @echo >> $@+
-        git log $(log_range) | sed -e 's/^/    /' >> $@+
-        mv $@+ $@
-
-news_atom := http://unicorn.bogomips.org/NEWS.atom.xml
-cgit_atom := http://git.bogomips.org/cgit/unicorn.git/atom/?h=master
-atom = <link rel="alternate" title="Atom feed" href="$(1)" \
-             type="application/atom+xml"/>
-
-# using rdoc 2.5.x+
-doc: .document $(ext)/unicorn_http.c NEWS ChangeLog
+doc: .document $(ext)/unicorn_http.c man html .wrongdoc.yml
         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)"
+        $(RM) -r doc
+        wrongdoc all
         install -m644 COPYING doc/COPYING
-        install -m644 $(shell grep '^[A-Z]' .document)  doc/
-        $(MAKE) -C Documentation install-html install-man
+        install -m644 $(shell grep '^[A-Z]' .document) doc/
         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; \
-          ln $${i}_1.html $${i}.1.html; \
-          done
-        $(RUBY) -i -p -e \
-          '$$_.gsub!("</title>",%q{\&$(call atom,$(cgit_atom))})' \
-          doc/ChangeLog.html
-        $(RUBY) -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
+        tar cf - $$(git ls-files examples/) | (cd doc && tar xf -)
         $(RM) $(man1_rdoc)
 
 # publishes docs to http://unicorn.bogomips.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:00' doc/rdoc.css
+        $(MAKE) doc
+        find doc/images -type f | \
+                TZ=UTC xargs touch -d '1970-01-01 00:00:02' doc/rdoc.css
         $(MAKE) doc_gz
-        tar cf - $$(git ls-files examples/) | (cd doc && tar xf -)
         chmod 644 $$(find doc -type f)
         $(RSYNC) -av doc/ unicorn.bogomips.org:/srv/unicorn/
         git ls-files | xargs touch
@@ -229,7 +196,6 @@ publish_doc:
 # "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
 
@@ -239,9 +205,9 @@ $(rails_git)/info/cloned-stamp:
         git clone --mirror -q $(rails_git_url) $(rails_git)
         > $@
 
-$(rails_git)/info/v2.3.8-stamp: $(rails_git)/info/cloned-stamp
+$(rails_git)/info/v2.2.3-stamp: $(rails_git)/info/cloned-stamp
         cd $(rails_git) && git fetch
-        cd $(rails_git) && git rev-parse --verify refs/tags/v2.3.8
+        cd $(rails_git) && git rev-parse --verify refs/tags/v2.2.3
         > $@
 
 rails_tests := $(addsuffix .r,$(addprefix $(T_r).,$(rails_vers)))
@@ -251,10 +217,10 @@ $(T_r).%.r: rv = $(subst .r,,$(subst $(T_r).,,$@))
 $(T_r).%.r: extra = ' 'v$(rv)
 $(T_r).%.r: arg = $(T_r)
 $(T_r).%.r: export PATH := $(test_prefix)/bin:$(PATH)
-$(T_r).%.r: export RUBYLIB := $(test_prefix):$(test_prefix)/lib:$(RUBYLIB)
+$(T_r).%.r: export RUBYLIB := $(test_prefix):$(test_prefix)/lib:$(MYLIBS)
 $(T_r).%.r: export UNICORN_RAILS_TEST_VERSION = $(rv)
 $(T_r).%.r: export RAILS_GIT_REPO = $(CURDIR)/$(rails_git)
-$(T_r).%.r: $(test_prefix)/.stamp $(rails_git)/info/v2.3.8-stamp
+$(T_r).%.r: $(test_prefix)/.stamp $(rails_git)/info/v2.2.3-stamp
         $(run_test)
 
 ifneq ($(VERSION),)
@@ -268,10 +234,10 @@ release_changes := release_changes-$(VERSION)
 release-notes: $(release_notes)
 release-changes: $(release_changes)
 $(release_changes):
-        $(RAKE) -s release_changes > $@+
+        wrongdoc release_changes > $@+
         $(VISUAL) $@+ && test -s $@+ && mv $@+ $@
 $(release_notes):
-        GIT_URL=$(GIT_URL) $(RAKE) -s release_notes > $@+
+        wrongdoc release_notes > $@+
         $(VISUAL) $@+ && test -s $@+ && mv $@+ $@
 
 # ensures we're actually on the tagged $(VERSION), only used for release
@@ -291,18 +257,18 @@ gem: $(pkggem)
 install-gem: $(pkggem)
         gem install $(CURDIR)/$<
 
-$(pkggem): manifest fix-perms
+$(pkggem): .manifest fix-perms
         gem build $(rfpackage).gemspec
         mkdir -p pkg
         mv $(@F) $@
 
 $(pkgtgz): distdir = $(basename $@)
 $(pkgtgz): HEAD = v$(VERSION)
-$(pkgtgz): manifest fix-perms
+$(pkgtgz): .manifest fix-perms
         @test -n "$(distdir)"
         $(RM) -r $(distdir)
         mkdir -p $(distdir)
-        tar cf - `cat .manifest` | (cd $(distdir) && tar xf -)
+        tar cf - $$(cat .manifest) | (cd $(distdir) && tar xf -)
         cd pkg && tar cf - $(basename $(@F)) | gzip -9 > $(@F)+
         mv $@+ $@
 
@@ -324,5 +290,5 @@ gem install-gem: GIT-VERSION-FILE
         $(MAKE) $@ VERSION=$(GIT_VERSION)
 endif
 
-.PHONY: .FORCE-GIT-VERSION-FILE doc $(T) $(slow_tests) manifest man
+.PHONY: .FORCE-GIT-VERSION-FILE doc $(T) $(slow_tests) man
 .PHONY: test-install