From 632b3d37736ce0df4f74edb2cdcbb88db4c9e975 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 28 Sep 2013 19:19:16 +0000 Subject: rework packaging to use GNU make + gemspec instead of Hoe Currently, this allows us to use different manpage paths for the tarball and gem; as gem-man and setup.rb expect different paths for manpages. Additionally, Hoe is designed for Ruby projects. dtas may include Perl/shell/Python/whatever in the future. So use GNU make as it is more suited for language agnosticism. --- GNUmakefile | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 54 insertions(+), 6 deletions(-) (limited to 'GNUmakefile') diff --git a/GNUmakefile b/GNUmakefile index a23e29e..4cb5162 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,7 +1,7 @@ # Copyright (C) 2013, Eric Wong and all contributors # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) all:: - +pkg = dtas RUBY = ruby GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE @./GIT-VERSION-GEN @@ -10,10 +10,9 @@ lib := lib all:: test test_units := $(wildcard test/test_*.rb) -test: test-unit -test-unit: $(test_units) +test: $(test_units) $(test_units): - $(RUBY) -w -I $(lib) $@ $(RUBY_TEST_OPTS) + $(RUBY) -w -I $(lib) $@ -v check-warnings: @(for i in $$(git ls-files '*.rb'| grep -v '^setup\.rb$$'); \ @@ -26,5 +25,54 @@ coverage: $(MAKE) check $(RUBY) ./test/covshow.rb -.PHONY: all .FORCE-GIT-VERSION-FILE test $(test_units) -.PHONY: check-warnings +pkggem := pkg/$(pkg)-$(VERSION).gem +pkgtgz := pkg/$(pkg)-$(VERSION).tar.gz + +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): .gem-manifest + VERSION=$(VERSION) gem build $(pkg).gemspec + mkdir -p pkg + mv $(@F) $@ + +pkg_extra := GIT-VERSION-FILE lib/dtas/version.rb NEWS +NEWS: + rake -s $@ +gem-man: + $(MAKE) -C Documentation/ gem-man +tgz-man: + $(MAKE) -C Documentation/ install-man mandir=$(CURDIR)/man +.PHONY: tgz-man gem-man + +.gem-manifest: .manifest gem-man + (ls man/*.?; cat .manifest) | LC_ALL=C sort > $@+ + cmp $@+ $@ || mv $@+ $@; rm -f $@+ +.tgz-manifest: .manifest tgz-man + (ls man/*/*; cat .manifest) | LC_ALL=C sort > $@+ + cmp $@+ $@ || mv $@+ $@; rm -f $@+ +.manifest: NEWS fix-perms + rm -rf man + (git ls-files; \ + for i in $(pkg_extra); do echo $$i; done) | \ + LC_ALL=C sort > $@+ + cmp $@+ $@ || mv $@+ $@; rm -f $@+ +$(pkgtgz): distdir = pkg/$(pkg)-$(VERSION) +$(pkgtgz): .tgz-manifest + @test -n "$(distdir)" + $(RM) -r $(distdir) + mkdir -p $(distdir) + tar cf - $$(cat .tgz-manifest) | (cd $(distdir) && tar xf -) + cd pkg && tar cf - $(pkg)-$(VERSION) | gzip -9 > $(@F)+ + mv $@+ $@ + +package: $(pkgtgz) $(pkggem) + +.PHONY: all .FORCE-GIT-VERSION-FILE test $(test_units) NEWS +.PHONY: check-warnings fix-perms -- cgit v1.2.3-24-ge0c7