Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 828 | Rev 882 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 828 Rev 829
Line 25... Line 25...
25
		   .current
25
		   .current
Line 26... Line 26...
26
 
26
 
27
# la base de données à modifier
27
# la base de données à modifier
Line 28... Line 28...
28
alterdb ?= tb_cel_test
28
alterdb ?= tb_cel_test
29
 
29
 
30
# pour bdtfxa, bdtxa, isfan, nvjfl, nva, baseflor, ... lecture seule;
30
# pour bdtfx, bdtxa, isfan, nvjfl, nva, baseflor, ... lecture seule;
Line 31... Line 31...
31
# utilisée pour actualiser les enregistrements de cel_obs dans referonosaure.sql
31
# utilisée pour actualiser les enregistrements de cel_obs dans referonosaure.sql
32
sourcedb ?= tb_eflore
32
sourcedb ?= tb_eflore
33
 
33
 
Line 34... Line 34...
34
# pour annuaire_tela, lecture seule;
34
# pour annuaire_tela, lecture seule;
35
# utilisée pour initialiser cel_utilisateurs dans maj-struct-201307.sql
35
# utilisée pour initialiser cel_utilisateurs dans maj-struct-201307.sql
36
annuairedb ?= tela_prod_v4
36
annuairedb ?= tela_prod_v4
37
 
37
 
Line 38... Line 38...
38
bdtfx ?= 1_01
38
bdtfx ?= 1_01
39
bdtxa ?= 1_00
39
bdtxa ?= 1_00
40
bdtfx_table = bdtfx_v$(bdtfx)
40
bdtfx_table = bdtfx_v$(bdtfx)
41
bdtxa_table = bdtfx_v$(bdtxa)
41
bdtxa_table = bdtxa_v$(bdtxa)
42
 
42
 
43
# macro utilisable pour les targets nécessitant de tester la présence d'un couple (base,table)
43
# macro utilisable pour les targets nécessitant de tester la présence d'un couple (base,table)
44
# exemples:
44
# exemples:
Line -... Line 45...
-
 
45
# * $(call is_table,tb_eflore,bdtfx_v1_01)
-
 
46
# * $(call is_table,$(annuairedb),annuaire_tela)
-
 
47
# argument 1: base de données
-
 
48
# argument 2: table
-
 
49
is_table = @mysql -N $(1) <<<"DESC $(2)" &> /dev/null
-
 
50
 
-
 
51
# macro utilisable pour effectuer des substitutions:
Line 45... Line 52...
45
# * $(call is_table,tb_eflore,bdtfx_v1_01)
52
do_subst = sed -e 's/`BASEEDIT`/`$(alterdb)`/g' \
46
# * $(call is_table,$(annuairedb),annuaire_tela)
53
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g' \
47
# argument 1: base de données
54
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g' \
48
# argument 2: table
55
		   -e 's/TABLEBDTFX/`$(bdtfx_table)`/g' \
49
is_table = @$(shell mysql -N $(1) <<<"DESC $(2)" &> /dev/null && echo true || echo false)
56
		   -e 's/TABLEBDTXA/`$(bdtxa_table)`/g' \
50
 
57
		   $(1)
51
 
58
 
52
# génère les fichiers avec les bases de données souhaitées
59
# génère les fichiers avec les bases de données souhaitées
53
compile: reset
60
compile: reset
54
	@sed -i -e 's/`BASEEDIT`/`$(alterdb)`/g'  \
61
	@sed -i -e 's/`BASEEDIT`/`$(alterdb)`/g'  \
55
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g'  \
62
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g'  \
56
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g'  \
63
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g'  \
57
		   -e 's/`TABLEBDTFX`/`$(bdtfx_table)`/g'  \
64
		   -e 's/TABLEBDTFX/`$(bdtfx_table)`/g'  \
58
		   -e 's/`TABLEBDTXA`/`$(bdtxa_table)`/g'  \
65
		   -e 's/TABLEBDTXA/`$(bdtxa_table)`/g'  \
59
		   $(fichiers)
66
		   $(fichiers)
Line 60... Line 67...
60
	@printf "Attention: les changements s'appliqueront sur la base \"%s\"\nLes sources utilisées seront: annuaire=\"%s\" ,  sources=\"%s\"\n(Ctrl+C pour interrompre, Enter pour continuer)\n" \
67
	@printf "Attention: les changements s'appliqueront sur la base \"%s\"\nLes sources utilisées seront: annuaire=\"%s\" ,  sources=\"%s\" (%s,%s)\n(Ctrl+C pour interrompre, Enter pour continuer)\n" \
61
			`grep ^BASEEDIT .current|cut -d '\`' -f2` \
68
			`grep ^BASEEDIT .current|cut -d '\`' -f2` \
Line -... Line 69...
-
 
69
			`grep ^BASEANNUAIRE .current|cut -d '\`' -f2` \
-
 
70
			`grep ^BASESOURCE .current|cut -d '\`' -f2` \
-
 
71
			`grep ^TABLE_BDTFX .current|cut -d '=' -f2` \
Line 62... Line 72...
62
			`grep ^BASEANNUAIRE .current|cut -d '\`' -f2` \
72
			`grep ^TABLE_BDTXA .current|cut -d '=' -f2`
63
			`grep ^BASESOURCE .current|cut -d '\`' -f2` \
73
	@read
Line -... Line 74...
-
 
74
 
-
 
75
reset:
64
			`grep ^TABLE_BDTFX .current|cut -d '=' -f2` \
76
	svn revert -q $(fichiers)
65
			`grep ^TABLE_BDTXA .current|cut -d '=' -f2`
77
 
-
 
78
# supprime les fichiers "compilés" (concaténation de plusieurs scripts SQL substitués)
-
 
79
clean:
66
	@read
80
	rm -f *.comp.sql
67
 
-
 
68
reset:
81
 
Line -... Line 82...
-
 
82
help:
-
 
83
	@echo "make [alterdb=<tb_cel_test>] [sourcedb=<tb_eflore>] [annuairedb=<tela_prod_v4>] [bdtfx=<1_01>] [bdtxa=<1_00>]"
-
 
84
 
-
 
85
 
-
 
86
### mises à jour
-
 
87
 
-
 
88
# mise à jour de juillet/août 2013
-
 
89
# spécifier dans les targets l'ordre (cf A_LIRE.txt)
-
 
90
# attention, si un prérequis ne génère pas de SQL, cela n'empêchera pas le fichier
Line -... Line 91...
-
 
91
# final de maj d'être généré (bien, 
-
 
92
maj1: compile cel_references maj-struct-201307 maj-cleanup-201307 fix-utilisateur-32 dedup-ordre-201307
Line -... Line 93...
-
 
93
	@echo done
-
 
94
 
-
 
95
o_maj1: fichiers_generes = $(addsuffix .comp.sql,$(filter-out clean,$?))
-
 
96
o_maj1: clean o_cel_references o_maj-struct-201307 o_maj-cleanup-201307 o_fix-utilisateur-32 o_dedup-ordre-201307
-
 
97
	cat $(fichiers_generes) > maj1.comp.sql
-
 
98
	@echo done
-
 
99
 
-
 
100
### fin: mises à jour
-
 
101
 
-
 
102
 
69
	@svn revert $(fichiers) &> /dev/null
103
### tools
70
 
104
 
71
 
105
check_cel_obs:
-
 
106
	$(call is_table,$(alterdb),cel_obs)
-
 
107
 
-
 
108
### fin: tools
Line 72... Line 109...
72
help:
109
 
73
	@echo "make [alterdb=<tb_cel_test>] [sourcedb=<tb_eflore>] [annuairedb=<tela_prod_v4>] [bdtfx=<1_01>] [bdtxa=<1_00>]"
110
 
74
 
111
### mises à jour individuelles (scripts)
-
 
112
### pour chacun d'entre-eux, deux versions existent,
-
 
113
### 1) L'un compile (après substitution des noms dans le fichier SQL original)
-
 
114
### et pipe vers mysql directement, ce qui suppose aussi un .my.cnf ou autre
Line 75... Line 115...
75
 
115
### 2) L'autre (préfixé par o_), renvoie le fichier substitué en sortie standard
76
# mise à jour de juillet/août 2013
116
### et le target principal s'occupe de concaténer et de créer un fichier de destination
-
 
117
### Cette méthode est de loin préférable
-
 
118
cel_references:
Line 77... Line 119...
77
# spécifier dans les targets l'ordre (cf A_LIRE.txt)
119
	$(call is_table,$(sourcedb),$(bdtfx_table))
78
maj1: compile cel_references maj-struct-201307 maj-cleanup-201307 fix-utilisateur-32 dedup-ordre-201307
120
	$(call is_table,$(alterdb),cel_references) || mysql < cel_references.sql
-
 
121
o_cel_references:
-
 
122
	$(call is_table,$(sourcedb),$(bdtfx_table))
Line 79... Line 123...
79
#	@echo 'cat cel_references.sql maj-struct-201307.sql maj-cleanup-201307.sql fix-utilisateur-32.sql dedup-ordre-201307.sql|mysql $(alterdb)'
123
	$(call is_table,$(alterdb),cel_references) || $(call do_subst,cel_references.sql) > $@.comp.sql
80
	@echo done
124
 
81
 
125
maj-struct-201307: check_cel_obs
-
 
126
	$(call is_table,$(annuairedb),annuaire_tela)
-
 
127
	@mysql -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || mysql < maj-struct-201307.sql
-
 
128
o_maj-struct-201307: check_cel_obs
-
 
129
	$(call is_table,$(annuairedb),annuaire_tela)
Line 82... Line 130...
82
 
130
	@mysql -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || $(call do_subst,maj-struct-201307.sql) > $@.comp.sql
83
 
131
 
84
cel_references:
132
maj-cleanup-201307: check_cel_obs