makefile: release process tweaks

- hledgercabal does a cabal configure & build
- move unit-testing of the cabal executable into cabaltest
- cabaltest now also does cabal upload --check
- hackageupload does the upload instead of talking about it
- release and releaseupload are now separate for safety
- don't let pushbinary stop make due to missing binary
- updatesite pushes pending changes first
This commit is contained in:
Simon Michael 2009-06-22 19:52:58 +00:00
parent 2ae609fee6
commit 484580ca64

View File

@ -33,6 +33,10 @@ default: tag hledger
######################################################################
# BUILDING
# build the standard cabal binary
hledgercabal:
cabal configure -fhapps -fvty && cabal build
# build the standard developer's binary, quickly
hledger: setversion
ghc --make hledger.hs -o hledger $(BUILDFLAGS) # -O
@ -109,7 +113,6 @@ committest: unittest doctest haddocktest warningstest
# thorough, pre-release tests - run before release
releasetest: unittest doctest haddocktest warningstest cabaltest
@dist/build/hledger/hledger test 2>&1 | tail -1 | grep -q 'Errors: 0 Failures: 0'
# run unit tests, without waiting for compilation
unittest:
@ -144,6 +147,9 @@ cabaltest: setversion
&& cabal check \
&& cabal configure -fvty -fhapps \
&& cabal build \
&& dist/build/hledger/hledger test 2>&1 | tail -1 | grep -q 'Errors: 0 Failures: 0' \
&& cabal sdist \
&& cabal upload dist/hledger-$(VERSION).tar.gz --check -v3 \
&& echo $@ passed) || echo $@ FAILED
# run performance tests and save results in profs/.
@ -218,7 +224,7 @@ web:
cd website; rm -f index.html; ln -s HOME.html index.html; rm -f profs; ln -s ../profs
# ..from anywhere
updatesite:
updatesite: push
ssh joyful.com 'make -C/repos/hledger web'
# generate pdf versions of main docs
@ -319,7 +325,9 @@ hoogleindex: $(MAIN)
# doing a bugfix release: set VERSION to 0.5.1, make release hackageupload
# building 0.6 alpha: set VERSION to 0.5.98, make
# releasing 0.6 beta: set VERSION to 0.5.99, make release
release: releasetest setandrecordversion tagrelease sdist hackageupload updatesite
release: releasetest setandrecordversion tagrelease sdist
releaseupload: hackageupload updatesite
# file where the current release version is defined
VERSIONFILE=VERSION
@ -360,7 +368,7 @@ sdist:
# display a hackage upload command reminder
hackageupload:
@echo please do: cabal upload dist/hledger-$(VERSION).tar.gz -v3
cabal upload dist/hledger-$(VERSION).tar.gz -v3
# send unpushed patches to the mail list
send:
@ -387,7 +395,7 @@ pullprofs:
# make hledgerPLAT first
pushbinary:
-gzip -9 $(BINARYFILENAME)
rsync -aP $(BINARYFILENAME).gz joyful.com:/repos/hledger/website/binaries/
-rsync -aP $(BINARYFILENAME).gz joyful.com:/repos/hledger/website/binaries/
# show project stats useful for release notes
stats: showlastreleasedate showreleaseauthors showloc showcov showerrors showlocalchanges showreleasechanges benchmark