tools: update version updating & binary building, no longer set version strings automatically
This commit is contained in:
		
							parent
							
								
									3fb5ff3dbd
								
							
						
					
					
						commit
						2f0877bc52
					
				
							
								
								
									
										92
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										92
									
								
								Makefile
									
									
									
									
									
								
							| @ -47,12 +47,15 @@ CABALFILES:= \ | ||||
| 	hledger/hledger.cabal \
 | ||||
| 	hledger-*/*.cabal | ||||
| # DOCFILES:=README DOWNLOAD MANUAL DEVELOPMENT NEWS SCREENSHOTS CONTRIBUTORS
 | ||||
| BINARYFILENAME=$(shell touch $(VERSIONHS); runhaskell $(MAIN) --binary-filename) | ||||
| BINARYFILENAME=$(shell touch $(VERSIONHS); runhaskell -ihledger $(MAIN) --binary-filename) | ||||
| PATCHLEVEL:=$(shell expr `darcs changes --count --from-tag=\\\\\.` - 1) | ||||
| WARNINGS:=-W -fwarn-tabs #-fwarn-orphans -fwarn-simple-patterns -fwarn-monomorphism-restriction -fwarn-name-shadowing | ||||
| DEFINEFLAGS:=-DMAKE -DPATCHLEVEL=$(PATCHLEVEL) | ||||
| DEFINEFLAGS:= | ||||
| PREFERMACUSRLIBFLAGS=-L/usr/lib | ||||
| BUILDFLAGS:=$(DEFINEFLAGS) $(WARNINGS) $(PREFERMACUSRLIBFLAGS) $(INCLUDEPATHS) | ||||
| BUILDFLAGS:=-DMAKE $(WARNINGS) $(INCLUDEPATHS) $(PREFERMACUSRLIBFLAGS) -DPATCHLEVEL=$(PATCHLEVEL) | ||||
| LINUXRELEASEBUILDFLAGS:=-DMAKE $(WARNINGS) $(INCLUDEPATHS) -O2 -static -optl-static -optl-pthread | ||||
| MACRELEASEBUILDFLAGS:=-DMAKE $(WARNINGS) $(INCLUDEPATHS) $(PREFERMACUSRLIBFLAGS) #-O2 # -optl-L/usr/lib | ||||
| #WINDOWSRELEASEBUILDFLAGS:=-DMAKE $(WARNINGS) $(INCLUDEPATHS)
 | ||||
| TIME:=$(shell date +"%Y%m%d%H%M") | ||||
| 
 | ||||
| # file defining the current release version
 | ||||
| @ -71,6 +74,7 @@ VERSIONSENSITIVEFILES=\ | ||||
| 	MANUAL.markdown \
 | ||||
| 	DOWNLOAD.markdown \
 | ||||
| 	$(CABALFILES) \
 | ||||
| 	hledger-web/.hledger/web/.version \
 | ||||
| 
 | ||||
| default: tag hledger | ||||
| 
 | ||||
| @ -81,16 +85,16 @@ default: tag hledger | ||||
| # and libs from all hledger packages. A good thing to run first; the other
 | ||||
| # allcabal rules require hledger-VERSION and hledger-lib-VERSION installed.
 | ||||
| # You may want to change the version number in VERSION file first.
 | ||||
| install: setversion allcabalinstall | ||||
| install: allcabalinstall | ||||
| 
 | ||||
| # set version numbers and configure all hledger packages
 | ||||
| configure: setversion allcabalconfigure | ||||
| configure: allcabalconfigure | ||||
| 
 | ||||
| # set version numbers and build all hledger packages
 | ||||
| build: setversion allcabalbuild | ||||
| build: allcabalbuild | ||||
| 
 | ||||
| # set version numbers and cabal test all hledger packages
 | ||||
| cabaltest: setversion allcabaltest | ||||
| cabaltest: allcabaltest | ||||
| 
 | ||||
| # run a cabal command in all hledger package dirs
 | ||||
| allcabal%: | ||||
| @ -102,20 +106,20 @@ all%: | ||||
| 
 | ||||
| # auto-recompile and run (something, eg unit tests) whenever a module changes.
 | ||||
| # sp is from searchpath.org, you might need the http://joyful.com/repos/searchpath version.
 | ||||
| autotest: setversion | ||||
| autotest: | ||||
| 	rm -f bin/hledger | ||||
| 	sp --no-exts --no-default-map -o bin/hledger ghc --make $(MAIN) -ihledger $(BUILDFLAGS) --run test | ||||
| 
 | ||||
| # as above for add-on programs
 | ||||
| autoweb: setversion linkhledgerwebdir | ||||
| autoweb: linkhledgerwebdir | ||||
| 	rm -f bin/hledger-web | ||||
| 	sp --no-exts --no-default-map -o bin/hledger-web ghc --make hledger-web/hledger-web.hs -ihledger-web -ihledger $(BUILDFLAGS) --run --debug | ||||
| 
 | ||||
| autovty: setversion | ||||
| autovty: | ||||
| 	rm -f bin/hledger-vty | ||||
| 	sp --no-exts --no-default-map -o bin/hledger-vty ghc --make hledger-vty/hledger-vty.hs -ihledger-vty -ihledger $(BUILDFLAGS) --run --help | ||||
| 
 | ||||
| autochart: setversion | ||||
| autochart: | ||||
| 	rm -f bin/hledger-chart | ||||
| 	sp --no-exts --no-default-map -o bin/hledger-chart ghc --make hledger-chart/hledger-chart.hs -ihledger-chart -ihledger $(BUILDFLAGS) --run --help | ||||
| 
 | ||||
| @ -176,52 +180,65 @@ tools/generatejournal: tools/generatejournal.hs | ||||
| 
 | ||||
| hledgerall: hledger hledger-web hledger-vty hledger-chart | ||||
| 
 | ||||
| # build a developer's binary, as quickly as possible
 | ||||
| hledger: setversion | ||||
| # build developer binaries, as quickly as possible
 | ||||
| bin/hledger: | ||||
| 	ghc --make $(MAIN) -o bin/hledger $(BUILDFLAGS) | ||||
| 
 | ||||
| hledger-web: setversion | ||||
| hledger-web: | ||||
| 	ghc --make hledger-web/hledger-web.hs -o bin/hledger-web -ihledger-web -ihledger $(BUILDFLAGS) | ||||
| 
 | ||||
| hledger-vty: setversion | ||||
| hledger-vty: | ||||
| 	ghc --make hledger-vty/hledger-vty.hs -o bin/hledger-vty -ihledger-vty -ihledger $(BUILDFLAGS) | ||||
| 
 | ||||
| hledger-chart: setversion | ||||
| hledger-chart: | ||||
| 	ghc --make hledger-chart/hledger-chart.hs -o bin/hledger-chart -ihledger-chart -ihledger $(BUILDFLAGS) | ||||
| 
 | ||||
| hledgernowarnings: setversion | ||||
| hledgernowarnings: | ||||
| 	ghc --make $(MAIN) -o bin/hledger $(BUILDFLAGS) -Werror -v0 | ||||
| 
 | ||||
| # build the profiling-enabled binary. You may need to cabal install
 | ||||
| # --reinstall -p some libs.
 | ||||
| hledgerp: setversion | ||||
| hledgerp: | ||||
| 	ghc --make $(MAIN) -prof -auto-all -o bin/hledgerp $(BUILDFLAGS) | ||||
| 
 | ||||
| # build the coverage-enabled binary. coverage-enabled .o files are kept
 | ||||
| # separate to avoid contamination.
 | ||||
| hledgercov: setversion | ||||
| hledgercov: | ||||
| 	ghc --make $(MAIN) -fhpc -o bin/hledgercov -outputdir .coverageobjs $(BUILDFLAGS) | ||||
| 
 | ||||
| # build the fastest binary we can
 | ||||
| hledgeropt: setversion | ||||
| hledgeropt: | ||||
| 	ghc --make $(MAIN) -o bin/hledgeropt $(BUILDFLAGS) -O2 # -fvia-C # -fexcess-precision -optc-O3 -optc-ffast-math | ||||
| 
 | ||||
| # build a deployable binary for gnu/linux, statically linked
 | ||||
| hledgerlinux: setversion | ||||
| 	cd hledger; \
 | ||||
| 	ghc --make $(MAIN) -o bin/$(BINARYFILENAME) $(BUILDFLAGS) -O2 -static -optl-static -optl-pthread | ||||
| 	@echo 'Please check the build looks portable (statically linked):' | ||||
| 	-file bin/$(BINARYFILENAME) | ||||
| hledgerlinux: | ||||
| 	ghc --make $(MAIN) $(LINUXRELEASEBUILDFLAGS) -o bin/$(BINARYFILENAME) | ||||
| 	-ghc --make hledger-web/hledger-web.hs $(LINUXRELEASEBUILDFLAGS) -o bin/`echo $(BINARYFILENAME) | sed -e 's/hledger/hledger-web/'` | ||||
| 	-ghc --make hledger-vty/hledger-vty.hs $(LINUXRELEASEBUILDFLAGS) -o bin/`echo $(BINARYFILENAME) | sed -e 's/hledger/hledger-vty/'` | ||||
| 	-ghc --make hledger-chart/hledger-chart.hs $(LINUXRELEASEBUILDFLAGS) -o bin/`echo $(BINARYFILENAME) | sed -e 's/hledger/hledger-chart/'` | ||||
| 	@echo 'Please check the binaries look portable, then make compressbinaries:' | ||||
| 	-file bin/*`arch` | ||||
| 
 | ||||
| # build a deployable binary for mac, using only standard osx libs
 | ||||
| hledgermac: setversion | ||||
| 	ghc --make $(MAIN) -o bin/$(BINARYFILENAME) $(BUILDFLAGS) -O2 # -optl-L/usr/lib | ||||
| 	@echo Please check the build looks portable: | ||||
| 	otool -L bin/$(BINARYFILENAME) | ||||
| hledgermac: | ||||
| 	ghc --make $(MAIN) $(MACRELEASEBUILDFLAGS) -o bin/$(BINARYFILENAME) | ||||
| 	-ghc --make hledger-web/hledger-web.hs $(MACRELEASEBUILDFLAGS) -o bin/`echo $(BINARYFILENAME) | sed -e 's/hledger/hledger-web/'` | ||||
| 	-ghc --make hledger-vty/hledger-vty.hs $(MACRELEASEBUILDFLAGS) -o bin/`echo $(BINARYFILENAME) | sed -e 's/hledger/hledger-vty/'` | ||||
| 	-ghc --make hledger-chart/hledger-chart.hs $(MACRELEASEBUILDFLAGS) -o bin/`echo $(BINARYFILENAME) | sed -e 's/hledger/hledger-chart/'` | ||||
| 	@echo 'Please check the binaries look portable, then make compressbinaries:' | ||||
| 	otool -L bin/*`arch` | ||||
| 
 | ||||
| # build deployable binaries for windows, assuming cygwin tools are present
 | ||||
| hledgerwin: install | ||||
| 	cp ~/.cabal/bin/hledger.exe bin/`echo $(BINARYFILENAME) | dos2unix` | ||||
| 	-cp ~/.cabal/bin/hledger-web.exe bin/`echo $(BINARYFILENAME) | sed -e 's/hledger/hledger-web/' | dos2unix` | ||||
| 	-cp ~/.cabal/bin/hledger-vty.exe bin/`echo $(BINARYFILENAME) | sed -e 's/hledger/hledger-vty/' | dos2unix` | ||||
| 	-cp ~/.cabal/bin/hledger-chart.exe bin/`echo $(BINARYFILENAME) | sed -e 's/hledger/hledger-chart/' | dos2unix` | ||||
| 	@echo 'Please check the binaries look portable, then zip them:' | ||||
| 	ls -l bin/*`arch` | ||||
| 
 | ||||
| compressbinaries: | ||||
| 	gzip bin/*`arch` | ||||
| 
 | ||||
| ######################################################################
 | ||||
| # TESTING
 | ||||
| @ -283,7 +300,7 @@ warningstest: | ||||
| 		&& echo $@ PASSED) || echo $@ FAILED | ||||
| 
 | ||||
| # make sure cabal is reasonably happy
 | ||||
| quickcabaltest: setversion | ||||
| quickcabaltest: | ||||
| 	(cd hledger-lib \
 | ||||
| 	&& cabal clean \
 | ||||
| 	&& cabal check \
 | ||||
| @ -295,7 +312,7 @@ quickcabaltest: setversion | ||||
| 	&& echo $@ PASSED) || echo $@ FAILED | ||||
| 
 | ||||
| # make sure cabal is happy in all possible ways
 | ||||
| fullcabaltest: setversion | ||||
| fullcabaltest: | ||||
| 	(cd hledger-lib \
 | ||||
| 	&& cabal clean \
 | ||||
| 	&& cabal check \
 | ||||
| @ -596,12 +613,14 @@ releaseandupload: release upload | ||||
| 
 | ||||
| # update the version number in local files, and prompt to record changes
 | ||||
| # in these files. Triggered by "make release".
 | ||||
| setandrecordversion: setversion | ||||
| setandrecordversion: | ||||
| 	darcs record -m "bump version" $(VERSIONFILE) $(VERSIONSENSITIVEFILES) | ||||
| 
 | ||||
| # update the version string in local files. Triggered by "make".
 | ||||
| # update the version string in local files. This should be run immediately
 | ||||
| # after editing the VERSION file.
 | ||||
| setversion: $(VERSIONSENSITIVEFILES) | ||||
| 
 | ||||
| # re-update version string even if it seems unchanged
 | ||||
| Setversion: | ||||
| 	touch $(VERSIONFILE); make setversion | ||||
| 
 | ||||
| @ -611,7 +630,7 @@ hledger/Hledger/Cli/Version.hs: $(VERSIONFILE) | ||||
| hledger-lib/hledger-lib.cabal: $(VERSIONFILE) | ||||
| 	perl -p -e "s/(^ *version:) *.*/\1 $(VERSION)/" -i $@ | ||||
| 
 | ||||
| hledger.cabal: $(VERSIONFILE) | ||||
| hledger/hledger.cabal: $(VERSIONFILE) | ||||
| 	perl -p -e "s/(^ *version:) *.*/\1 $(VERSION)/" -i $@ | ||||
| 	perl -p -e "s/(^[ ,]*hledger-lib *[>=]=) *.*/\1 $(VERSION)/" -i $@ | ||||
| 
 | ||||
| @ -630,8 +649,11 @@ hledger-web/hledger-web.cabal: $(VERSIONFILE) | ||||
| 	perl -p -e "s/(^[ ,]*hledger *[>=]=) *.*/\1 $(VERSION)/" -i $@ | ||||
| 	perl -p -e "s/(^[ ,]*hledger-lib *[>=]=) *.*/\1 $(VERSION)/" -i $@ | ||||
| 
 | ||||
| hledger-web/.hledger/web/.version: $(VERSIONFILE) | ||||
| 	cat $(VERSIONFILE) >$@ | ||||
| 
 | ||||
| MANUAL.markdown: $(VERSIONFILE) | ||||
| 	perl -p -e "s/(^This is the official.*?version) +[0-9.]+/\1 $(VERSION3)./" -i $@ | ||||
| 	perl -p -e "s/(^This is the.*?manual for hledger.*?) +[0-9.]+/\1 $(VERSION3)./" -i $@ | ||||
| 
 | ||||
| DOWNLOAD.markdown: $(VERSIONFILE) | ||||
| 	perl -p -e "s/hledger-[0-9.]+-/hledger-$(VERSION3)-/g" -i $@ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user