Project

General

Profile

« Previous | Next » 

Revision 1967

main Makefile: VegBIEN DB: Install public schema in a separate step, so that it can be dropped without dropping the entire DB (which also contains staging tables that shouldn't be dropped when there is a schema change). Added schemas/install, schemas/uninstall, implicit schemas/reinstall to manage the public schema separately from the rest of the DB. Moved Subdir forwarding to the bottom so overridden targets are not forwarded. README.TXT: Since `make reinstall_db` would drop the entire DB, tell user to run new `make schemas/reinstall` instead to reinstall (main) DB from schema.

View differences:

README.TXT
1 1
Installation:
2 2
    Install: make install
3
        WARNING: This will delete any existing VegBIEN DB!
3 4
    Uninstall: make uninstall
4 5
        WARNING: This will delete your VegBIEN DB!
5 6
    Reinstall all datasources at once: . bin/reinstall_all
......
19 20

  
20 21
Schema changes:
21 22
    Regenerate schema from installed DB: make schemas/remake
22
    Reinstall DB from schema: make reinstall_db
23
    Reinstall DB from schema: make schemas/reinstall
23 24
        WARNING: This will delete your VegBIEN DB!
24 25
    Sync ERD with vegbien.sql schema:
25 26
        Run make schemas/vegbien.my.sql
Makefile
58 58
	$(MAKE) $*
59 59
# re-run make so that cache of existing files is reset
60 60

  
61
##### Subdir forwarding
62

  
63
define subdirTargets
64
$(subdir): _always
65
	+$$(subMake)
66

  
67
$(subdir)%: _always
68
	+$$(subMake)
69
.PRECIOUS: $(subdir)% # let subdir's Makefile decide whether to delete on error
70
endef
71
$(foreach subdir,$(wildcard */),$(eval $(subdirTargets)))
72

  
73
Makefile: ;
74

  
75
%: $(addsuffix %,$(dir $(shell echo */Makefile))) _always ;
76

  
77 61
##### Installation
78 62

  
79 63
install: _always core mysql inputs/install test
......
167 151

  
168 152
##### VegBIEN DB
169 153

  
170
db: schemas/vegbien.sql _always
154
#### DB and bien user
155

  
156
confirmRmDb = $(call confirm,WARNING:\
157
This will delete your VegBIEN DB if it exists! Continue?)
158
rmPublicSchema := 'DROP SCHEMA IF EXISTS public CASCADE;'
159

  
160
db: mk_db schemas/install _always ;
161

  
162
mk_db: _always
163
	@$(confirmRmDb)
171 164
	-echo "CREATE USER bien PASSWORD '$(bienPassword)';"|$(psqlAsAdmin)
172 165
	-echo "CREATE DATABASE vegbien WITH OWNER bien TEMPLATE template0 \
173 166
ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';"|$(psqlAsAdmin)
174
	<$< bin/db_dump_localize|$(psqlAsBien)
167
	echo $(rmPublicSchema)|env $(psqlAsAdmin) vegbien
175 168
# ignore errors if user or database exists
169
# drop public schema *as admin* because it starts out owned by postgres
176 170

  
177
confirmRmDb = $(call confirm,WARNING: This will delete your VegBIEN DB!\
178
Continue?)
179

  
180 171
rm_db: _always
181 172
	@$(confirmRmDb)
182 173
	echo "DROP DATABASE IF EXISTS vegbien;"|$(psqlAsAdmin)
......
184 175

  
185 176
reinstall_db: _always rm_db db ;
186 177

  
178
#### public schema
179

  
180
schemas/install: schemas/vegbien.sql _always
181
	-echo "CREATE SCHEMA public;"|$(psqlAsBien)
182
	<$< bin/db_dump_localize|$(psqlAsBien)
183
# ignore errors if schema exists
184
# public schema will be owned by bien
185

  
186
schemas/uninstall: _always
187
	@$(confirmRmDb)
188
	echo $(rmPublicSchema)|$(psqlAsBien)
189

  
187 190
empty_db: _always schemas/vegbien_empty.sql
188 191
	@$(confirmRmDb)
189 192
	$(psqlAsBien) <schemas/vegbien_empty.sql
......
260 263

  
261 264
test-all: _always remake test missing_mappings
262 265
	@$(done)
266

  
267
##### Subdir forwarding
268

  
269
# Must come last so overridden targets are not forwarded
270

  
271
define subdirTargets
272
$(subdir): _always
273
	+$$(subMake)
274

  
275
$(subdir)%: _always
276
	+$$(subMake)
277
.PRECIOUS: $(subdir)% # let subdir's Makefile decide whether to delete on error
278

  
279
$(subdir)reinstall: _always $(subdir)uninstall $(subdir)install ;
280
endef
281
$(foreach subdir,$(wildcard */),$(eval $(subdirTargets)))
282

  
283
Makefile: ;
284

  
285
%: $(addsuffix %,$(dir $(shell echo */Makefile))) _always ;

Also available in: Unified diff