tools: makefile updates, new sandbox rules
This commit is contained in:
		
							parent
							
								
									735f818c22
								
							
						
					
					
						commit
						154699ce1f
					
				
							
								
								
									
										49
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										49
									
								
								Makefile
									
									
									
									
									
								
							| @ -209,17 +209,19 @@ check: \ | |||||||
| 	@($(SHELLTESTV) checks \
 | 	@($(SHELLTESTV) checks \
 | ||||||
| 		&& echo $@ PASSED) || echo $@ FAILED | 		&& echo $@ PASSED) || echo $@ FAILED | ||||||
| 
 | 
 | ||||||
| sandbox: .cabal-sandbox sandbox-links \ | include sandbox.mk | ||||||
| 	$(call def-help,sandbox,\
 |  | ||||||
| 	set up a cabal sandbox and some symlinks\
 |  | ||||||
| 	) |  | ||||||
| 
 | 
 | ||||||
| .cabal-sandbox: \ | # sandbox: .cabal-sandbox sandbox-links \
 | ||||||
| 	$(call def-help,.cabal-sandbox,\
 | # 	$(call def-help,sandbox,\
 | ||||||
| 	initialise ./.cabal sandbox and add hledger packages as sources \
 | # 	set up a cabal sandbox and some symlinks\
 | ||||||
| 	) | # 	)
 | ||||||
| 	cabal sandbox init | 
 | ||||||
| 	cabal sandbox add-source ./hledger-lib ./hledger ./hledger-web | # .cabal-sandbox: \
 | ||||||
|  | # 	$(call def-help,.cabal-sandbox,\
 | ||||||
|  | # 	initialise ./.cabal sandbox and add hledger packages as sources \
 | ||||||
|  | # 	)
 | ||||||
|  | # 	cabal sandbox init
 | ||||||
|  | # 	cabal sandbox add-source ./hledger-lib ./hledger ./hledger-web
 | ||||||
| 
 | 
 | ||||||
| sandbox-links: \ | sandbox-links: \ | ||||||
| 	$(call def-help,sandbox-links,\
 | 	$(call def-help,sandbox-links,\
 | ||||||
| @ -228,7 +230,7 @@ sandbox-links: \ | |||||||
| 	-for p in hledger{-lib,,-web}; do (cd $$p/dist; ln -s dist-*/build); done | 	-for p in hledger{-lib,,-web}; do (cd $$p/dist; ln -s dist-*/build); done | ||||||
| 
 | 
 | ||||||
| install: \ | install: \ | ||||||
| 	$(call def-help,sandbox-links,\
 | 	$(call def-help,install,\
 | ||||||
| 	cabal install the main hledger packages and all their dependencies\
 | 	cabal install the main hledger packages and all their dependencies\
 | ||||||
| 	in the sandbox if any; otherwise in the users package db\
 | 	in the sandbox if any; otherwise in the users package db\
 | ||||||
| 	) | 	) | ||||||
| @ -817,34 +819,25 @@ viewcoverage: \ | |||||||
| 	) | 	) | ||||||
| 	$(VIEWHTML) doc/profs/coverage/index.html | 	$(VIEWHTML) doc/profs/coverage/index.html | ||||||
| 
 | 
 | ||||||
|  | # XXX with a sandbox, use sandbox-repl-* instead
 | ||||||
| repl-lib:\ | repl-lib:\ | ||||||
| 	$(call def-help,repl-lib,\
 | 	$(call def-help,repl-lib, start a cabal REPL and load the hledger-lib package) | ||||||
| 	single-package debug prompts, using all cabal settings\
 |  | ||||||
| 	) |  | ||||||
| 	(cd hledger-lib; cabal repl) | 	(cd hledger-lib; cabal repl) | ||||||
| 
 | 
 | ||||||
| repl-cli repl: \ | repl-cli:\ | ||||||
| 	$(call def-help,repl-cli repl,\
 | 	$(call def-help,repl-cli, start a cabal REPL and load the hledger package) | ||||||
| 	\
 |  | ||||||
| 	) |  | ||||||
| 	(cd hledger; cabal repl exe:hledger) | 	(cd hledger; cabal repl exe:hledger) | ||||||
| 
 | 
 | ||||||
| repl-web:\ | repl-web:\ | ||||||
| 	$(call def-help,repl-web,\
 | 	$(call def-help,repl-web, start a cabal REPL and load the hledger-web package) | ||||||
| 	\
 |  | ||||||
| 	) |  | ||||||
| 	(cd hledger-web; cabal repl exe:hledger-web) | 	(cd hledger-web; cabal repl exe:hledger-web) | ||||||
| 
 | 
 | ||||||
| ghci: \ | ghci: \ | ||||||
| 	$(call def-help,ghci,\
 | 	$(call def-help,ghci, start a sandbox-aware GHCI REPL and load the hledger-lib and hledger packages) | ||||||
| 	multi-package debug prompts, mimicking most cabal settings\
 | 	cabal exec $(GHCI) -- -XCPP $(CABALMACROSFLAGS) $(WARNINGS) $(INCLUDEPATHS) hledger/Hledger/Cli/Main.hs | ||||||
| 	) |  | ||||||
| 	cabal exec $(GHCI) -- $(WARNINGS) $(INCLUDEPATHS) $(MAIN) |  | ||||||
| 
 | 
 | ||||||
| ghci-web: \ | ghci-web: \ | ||||||
| 	$(call def-help,ghci-web,\
 | 	$(call def-help,ghci-web, start a sandbox-aware GHCI REPL and load the hledger-lib, hledger and hledger-web packages) | ||||||
| 	\
 |  | ||||||
| 	) |  | ||||||
| 	cabal exec $(GHCI) -- $(BUILDFLAGS) $(WEBLANGEXTS) hledger-web/app/main.hs | 	cabal exec $(GHCI) -- $(BUILDFLAGS) $(WEBLANGEXTS) hledger-web/app/main.hs | ||||||
| 
 | 
 | ||||||
| samplejournals: data/sample.journal data/100x100x10.journal data/1000x1000x10.journal data/1000x10000x10.journal data/10000x1000x10.journal data/10000x10000x10.journal data/100000x1000x10.journal \ | samplejournals: data/sample.journal data/100x100x10.journal data/1000x1000x10.journal data/1000x10000x10.journal data/10000x1000x10.journal data/10000x10000x10.journal data/100000x1000x10.journal \ | ||||||
|  | |||||||
| @ -19,6 +19,10 @@ define def-help-section | |||||||
| 	$(if $(need-help),$(warning --------------------$1--------------------$2)) | 	$(if $(need-help),$(warning --------------------$1--------------------$2)) | ||||||
| endef | endef | ||||||
| 
 | 
 | ||||||
|  | define def-help-subsection | ||||||
|  | 	$(if $(need-help),$(warning $1$2)) | ||||||
|  | endef | ||||||
|  | 
 | ||||||
| define last-element | define last-element | ||||||
| 	$(word $(words $1),$1) | 	$(word $(words $1),$1) | ||||||
| endef | endef | ||||||
|  | |||||||
							
								
								
									
										163
									
								
								sandbox.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								sandbox.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,163 @@ | |||||||
|  | # some standard operations in a cabal sandbox, optionally with specified GHC version
 | ||||||
|  | 
 | ||||||
|  | #include help-system.mks
 | ||||||
|  | 
 | ||||||
|  | sandbox.mk-default: help | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | $(call def-help-subsection,-- Default sandbox) | ||||||
|  | 
 | ||||||
|  | sandbox-setup:\ | ||||||
|  | 	$(call def-help,sandbox-setup, set up a cabal sandbox for hledger using the default GHC version) | ||||||
|  | 	@make sandbox-init sandbox-add-sources | ||||||
|  | 
 | ||||||
|  | sandbox-init: | ||||||
|  | 	cabal sandbox init | ||||||
|  | 
 | ||||||
|  | sandbox-add-sources: | ||||||
|  | 	cabal sandbox add-source hledger-lib hledger hledger-web | ||||||
|  | 
 | ||||||
|  | sandbox-list-sources:\ | ||||||
|  | 	$(call def-help,sandbox-list-sources,) | ||||||
|  | 	cabal sandbox list-sources | ||||||
|  | 
 | ||||||
|  | sandbox-pkg-list:\ | ||||||
|  | 	$(call def-help,sandbox-pkg-list,\
 | ||||||
|  | 	) | ||||||
|  | 	cabal sandbox hc-pkg list | ||||||
|  | 
 | ||||||
|  | sandbox-pkg-check:\ | ||||||
|  | 	$(call def-help,sandbox-pkg-check,) | ||||||
|  | 	cabal sandbox hc-pkg check | ||||||
|  | 
 | ||||||
|  | sandbox-install-dry-lib:\ | ||||||
|  | 	$(call def-help,sandbox-install-dry-lib,) | ||||||
|  | 	cabal install --dry ./hledger-lib | ||||||
|  | 
 | ||||||
|  | sandbox-install-dry-cli:\ | ||||||
|  | 	$(call def-help,sandbox-install-dry-cli,) | ||||||
|  | 	cabal install --dry ./hledger | ||||||
|  | 
 | ||||||
|  | sandbox-install-dry-web:\ | ||||||
|  | 	$(call def-help,sandbox-install-dry-web,) | ||||||
|  | 	cabal install --dry ./hledger-web | ||||||
|  | 
 | ||||||
|  | sandbox-install-dep-lib:\ | ||||||
|  | 	$(call def-help,sandbox-install-dep-lib,) | ||||||
|  | 	cabal install --only-dep ./hledger-lib | ||||||
|  | 
 | ||||||
|  | sandbox-install-dep-cli:\ | ||||||
|  | 	$(call def-help,sandbox-install-dep-cli,) | ||||||
|  | 	cabal install --only-dep ./hledger | ||||||
|  | 
 | ||||||
|  | sandbox-install-dep-web:\ | ||||||
|  | 	$(call def-help,sandbox-install-dep-web,) | ||||||
|  | 	cabal install --only-dep ./hledger-web | ||||||
|  | 
 | ||||||
|  | sandbox-install-lib:\ | ||||||
|  | 	$(call def-help,sandbox-install-lib, install hledger-lib) | ||||||
|  | 	cabal install ./hledger-lib | ||||||
|  | 
 | ||||||
|  | sandbox-install-cli:\ | ||||||
|  | 	$(call def-help,sandbox-install-cli, install hledger-lib and hledger) | ||||||
|  | 	cabal install ./hledger | ||||||
|  | 
 | ||||||
|  | sandbox-install-web:\ | ||||||
|  | 	$(call def-help,sandbox-install-web, install hledger-lib and hledger and hledger-web) | ||||||
|  | 	cabal install ./hledger-web | ||||||
|  | 
 | ||||||
|  | sandbox-repl-lib:\ | ||||||
|  | 	$(call def-help,sandbox-repl-lib, start a cabal REPL for the hledger-lib package) | ||||||
|  | 	(cd hledger-lib; cabal --sandbox-config-file=../cabal.sandbox.config repl) | ||||||
|  | 
 | ||||||
|  | sandbox-repl-cli:\ | ||||||
|  | 	$(call def-help,sandbox-repl-cli, start a cabal REPL for the hledger package) | ||||||
|  | 	(cd hledger; cabal --sandbox-config-file=../cabal.sandbox.config repl exe:hledger) | ||||||
|  | 
 | ||||||
|  | sandbox-repl-web:\ | ||||||
|  | 	$(call def-help,sandbox-repl-web, start a cabal REPL for the hledger-web package) | ||||||
|  | 	(cd hledger-web; cabal --sandbox-config-file=../cabal.sandbox.config repl exe:hledger-web) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | $(call def-help-subsection,-- Sandbox for specified GHC version (eg: make sandbox-7.8.4-setup)) | ||||||
|  | 
 | ||||||
|  |  # .cabal-sandbox.ghc%: | ||||||
|  | sandbox-%-setup: \ | ||||||
|  | 	$(call def-help,sandbox-%-setup, set up a cabal sandbox for hledger using the specified GHC version) | ||||||
|  | 	@make sandbox-$*-init sandbox-$*-add-sources | ||||||
|  | 
 | ||||||
|  | sandbox-%-init: | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config sandbox init --sandbox .cabal-sandbox.$* | ||||||
|  | 	@echo "now manually fix the ghc version in package-db: in cabal.sandbox.$*.config" | ||||||
|  | 
 | ||||||
|  | sandbox-%-add-sources: | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config sandbox add-source --sandbox .cabal-sandbox.$* hledger-lib hledger hledger-web | ||||||
|  | 
 | ||||||
|  | sandbox-%-list-sources:\ | ||||||
|  | 	$(call def-help,sandbox-%-list-sources,) | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config sandbox list-sources --sandbox .cabal-sandbox.$* | ||||||
|  | 
 | ||||||
|  | sandbox-%-pkg-list: \ | ||||||
|  | 	$(call def-help,sandbox-%-pkg-list,\
 | ||||||
|  | 	) | ||||||
|  | 	ghc-pkg-$* --package-db .cabal-sandbox.$*/*$*-packages.conf.d list | ||||||
|  | #	ghc-pkg-$* --global-package-db /usr/local/lib/ghc-$*/package.conf.d --package-db .cabal-sandbox.$*/*$*-packages.conf.d list
 | ||||||
|  | 
 | ||||||
|  | sandbox-%-pkg-check:\ | ||||||
|  | 	$(call def-help,sandbox-%-pkg-check,) | ||||||
|  | 	ghc-pkg-$* --package-db .cabal-sandbox.$*/*$*-packages.conf.d check | ||||||
|  | #	ghc-pkg-$* --global-package-db /usr/local/lib/ghc-$*/package.conf.d --package-db .cabal-sandbox.$*/*$*-packages.conf.d check
 | ||||||
|  | 
 | ||||||
|  | sandbox-%-install-dry-lib:\ | ||||||
|  | 	$(call def-help,sandbox-%-install-dry-lib,) | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config install -w ghc-$* --dry ./hledger-lib | ||||||
|  | 
 | ||||||
|  | sandbox-%-install-dry-cli:\ | ||||||
|  | 	$(call def-help,sandbox-%-install-dry-cli,) | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config install -w ghc-$* --dry ./hledger | ||||||
|  | 
 | ||||||
|  | sandbox-%-install-dry-web:\ | ||||||
|  | 	$(call def-help,sandbox-%-install-dry-web,) | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config install -w ghc-$* --dry ./hledger-web | ||||||
|  | 
 | ||||||
|  | sandbox-%-install-dep-lib:\ | ||||||
|  | 	$(call def-help,sandbox-%-install-dep-lib,) | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config install -w ghc-$* --only-dep ./hledger-lib | ||||||
|  | 
 | ||||||
|  | sandbox-%-install-dep-cli:\ | ||||||
|  | 	$(call def-help,sandbox-%-install-dep-cli,) | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config install -w ghc-$* --only-dep ./hledger | ||||||
|  | 
 | ||||||
|  | sandbox-%-install-dep-web:\ | ||||||
|  | 	$(call def-help,sandbox-%-install-dep-web,) | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config install -w ghc-$* --only-dep ./hledger-web | ||||||
|  | 
 | ||||||
|  | sandbox-%-install-lib:\ | ||||||
|  | 	$(call def-help,sandbox-%-install-lib,) | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config install -w ghc-$* ./hledger-lib | ||||||
|  | 
 | ||||||
|  | sandbox-%-install-cli:\ | ||||||
|  | 	$(call def-help,sandbox-%-install-cli,) | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config install -w ghc-$* ./hledger | ||||||
|  | 
 | ||||||
|  | sandbox-%-install-web:\ | ||||||
|  | 	$(call def-help,sandbox-%-install-web,) | ||||||
|  | 	cabal --sandbox-config-file=cabal.sandbox.$*.config install -w ghc-$* ./hledger-web | ||||||
|  | 
 | ||||||
|  | sandbox-%-repl-lib:\ | ||||||
|  | 	$(call def-help,sandbox-%-repl-lib,) | ||||||
|  | 	(cd hledger-lib; cabal --sandbox-config-file=../cabal.sandbox.$*.config repl) | ||||||
|  | 
 | ||||||
|  | sandbox-%-repl-cli:\ | ||||||
|  | 	$(call def-help,sandbox-%-repl-cli,) | ||||||
|  | 	(cd hledger; cabal --sandbox-config-file=../cabal.sandbox.$*.config repl exe:hledger) | ||||||
|  | 
 | ||||||
|  | sandbox-%-repl-web:\ | ||||||
|  | 	$(call def-help,sandbox-%-repl-web,) | ||||||
|  | 	(cd hledger-web; cabal --sandbox-config-file=../cabal.sandbox.$*.config repl exe:hledger-web) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Clean-sandboxes:\ | ||||||
|  | 	$(call def-help,Clean-sandboxes, delete all sandboxes in this directory) | ||||||
|  | 	rm -rf .cabal-sandbox* cabal.sandbox* | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user