Project

General

Profile

1
selfDir_AkFFYJ := $(dir $(lastword $(MAKEFILE_LIST)))
2
root := $(selfDir_AkFFYJ)..
3
include $(root)/lib/common.Makefile
4

    
5

    
6
##### Vars/functions
7

    
8
# Make
9
SHELL := /bin/bash
10

    
11
##### General targets
12

    
13
all = vegbien.sql vegbien.my.sql util.sql py_util.sql
14

    
15
all: _always $(all) ;
16

    
17
clean: _always
18
	$(RM) $(all)
19

    
20
%/reinstall: _always %/uninstall %/install ;
21

    
22
##### Installation
23

    
24
schemas := temp util py_util
25
install: $(schemas:%=%/install) ;
26

    
27
schemasReversed := py_util util temp
28
uninstall: $(schemasReversed:%=%/uninstall) ;
29

    
30
psqlAsAdminVegbien := $(psqlAsAdmin) vegbien
31
psqlNoSearchPath := env no_search_path=1 ../bin/psql_script_vegbien
32

    
33
# Must come before `%/install: vegbien.sql` to override it
34
%/install: %.sql _always
35
	-<$< $(psqlNoSearchPath)
36
# ignore errors if schema exists
37

    
38
%/uninstall: _always
39
	@$(if $(filter public% r%,$*),$(call confirmRmPublicSchema,$*))
40
	echo $(call rmSchemaCmd,$*)|$(psqlNoSearchPath)
41

    
42
#### public
43

    
44
confirmRmPublicSchema = $(call confirm,WARNING: This will delete any $(1)\
45
schema of your VegBIEN DB!,$(2))
46

    
47
# Installs a version of the public schema
48
%/install: vegbien.sql _always
49
	echo $(call mkSchemaCmd,$*)\
50
"COMMENT ON SCHEMA \"$*\" IS 'Version: $* ($(date))';"|$(psqlNoSearchPath)
51
	<$< $(if $(filter public,$*),,$(sed) 's/( )public([,; ])/\1"$*"\2/g'|)$(psqlNoSearchPath)
52

    
53
# Replaces the current public schema with the given version
54
%/publish: _always
55
	@$(call confirmRmPublicSchema,public,To save it: make schemas/rotate)
56
	echo $(call rmSchemaCmd,public)'ALTER SCHEMA "$*" RENAME TO public;'\
57
|$(psqlNoSearchPath) --file - --single-transaction
58
	@echo $(emph)'In your shell, run:'$(endEmph)'unset version'
59

    
60
rename/%: _always
61
	echo 'ALTER SCHEMA public RENAME TO "$*";'|$(psqlNoSearchPath)
62
	$(MAKE) public/install
63

    
64
rotate: _always rename/$(version) ;
65

    
66
#### py_util
67

    
68
py_util/install: py_util.sql _always
69
	-<$< $(psqlAsAdminVegbien)
70
# ignore errors if schema exists
71

    
72
#### Others
73

    
74
# Needed on Ubuntu 12.04 (also other Linuxes?) because %/reinstall is ignored.
75
temp/reinstall: _always temp/uninstall temp/install ;
76

    
77
##### MySQL schema for ERD
78

    
79
repl = ../bin/repl
80

    
81
%.my.sql: %.sql ../lib/PostgreSQL-MySQL.csv filter_ERD.csv
82
	$(repl) <$(wordlist 1,2,$+)|$(repl) $(word 3,$+) >$@
83

    
84
##### DDL generation
85

    
86
pg_dump = env schema= ../bin/pg_dump_vegbien $(1) >$@
87

    
88
vegbien.sql:
89
	unset version dump_opts; $(call pg_dump,public)
90

    
91
py_util.sql:
92
	env owners=1 $(call pg_dump,py_util)
93

    
94
# Must come after %.my.sql so that gets matched first
95
%.sql:
96
	$(call pg_dump,$*)
(5-5/29)