Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 829 Rev 882
Line 15... Line 15...
15
# Ce serait cependant la meilleure manière de procéder, ainsi "maj2" ne serait lancé qu'en
15
# Ce serait cependant la meilleure manière de procéder, ainsi "maj2" ne serait lancé qu'en
16
# cas de succès de "maj1", celui-ci pouvant être détecté comme "déjà exécuté" ou non.
16
# cas de succès de "maj1", celui-ci pouvant être détecté comme "déjà exécuté" ou non.
17
# cf target "maj1" ci-dessous
17
# cf target "maj1" ci-dessous
Line 18... Line 18...
18
 
18
 
19
 
19
 
20
# à l'aide de, note certains de ces fichiers n'ont pas cours dans le cadre de la maj1 (juillet/août 2013)
20
# à l'aide de, note certains de ces fichiers n'ont pas cours dans le cadre de la maj1 (septembre 2013)
21
# echo $(egrep -l 'BASE(SOURCE|EDIT|ANNUAIRE)' *.sql)
21
# echo $(egrep -l 'BASE(SOURCE|EDIT|ANNUAIRE)' *.sql)
22
fichiers = cel_references.sql dedup-ordre-201307.sql fix-utilisateur-32.sql maj-cleanup-201307.sql maj-nom-ret.sql \
22
fichiers = cel_references.sql dedup-ordre-201307.sql fix-utilisateur-32.sql maj-cleanup-201307.sql maj-nom-ret.sql \
23
		   maj-referentiel-201307.sql maj-referentiel-und-201307.sql maj-struct-201307.sql redempteur.sql \
23
		   maj-referentiel-201307.sql maj-referentiel-und-201307.sql maj-struct-201307.sql redempteur.sql \
Line 35... Line 35...
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
Line 37... Line 37...
37
 
37
 
38
bdtfx ?= 1_01
38
bdtfx ?= 1_01
-
 
39
bdtxa ?= 1_00
39
bdtxa ?= 1_00
40
isfan ?= 2013
40
bdtfx_table = bdtfx_v$(bdtfx)
41
bdtfx_table = bdtfx_v$(bdtfx)
-
 
42
bdtxa_table = bdtxa_v$(bdtxa)
Line 41... Line 43...
41
bdtxa_table = bdtxa_v$(bdtxa)
43
isfan_table = isfan_v$(isfan)
42
 
44
 
43
# macro utilisable pour les targets nécessitant de tester la présence d'un couple (base,table)
45
# macro utilisable pour les targets nécessitant de tester la présence d'un couple (base,table)
44
# exemples:
46
# exemples:
45
# * $(call is_table,tb_eflore,bdtfx_v1_01)
47
# * $(call is_table,tb_eflore,bdtfx_v1_01)
46
# * $(call is_table,$(annuairedb),annuaire_tela)
48
# * $(call is_table,$(annuairedb),annuaire_tela)
47
# argument 1: base de données
49
# argument 1: base de données
Line 48... Line 50...
48
# argument 2: table
50
# argument 2: table
-
 
51
is_table = @mysql -N $(1) <<<"DESC $(2)" &> /dev/null
49
is_table = @mysql -N $(1) <<<"DESC $(2)" &> /dev/null
52
 
50
 
53
# macro utilisable pour effectuer des substitutions:
51
# macro utilisable pour effectuer des substitutions:
54
do_subst = sed -e "1i--\n-- fichier d'origine: \"${1}\"\n" \
-
 
55
		   -e 's/`BASEEDIT`/`$(alterdb)`/g' \
-
 
56
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g' \
-
 
57
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g' \
52
do_subst = sed -e 's/`BASEEDIT`/`$(alterdb)`/g' \
58
		   -e 's/`TABLEBDTFX`/`$(bdtfx_table)`/g' \
53
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g' \
59
		   -e 's/`TABLEBDTXA`/`$(bdtxa_table)`/g' \
-
 
60
		   -e 's/`TABLEISFAN`/`$(isfan_table)`/g' \
54
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g' \
61
		   -e 's/TABLEBDTFX/`$(bdtfx_table)`/g' \
Line 55... Line 62...
55
		   -e 's/TABLEBDTFX/`$(bdtfx_table)`/g' \
62
		   -e 's/TABLEBDTXA/`$(bdtxa_table)`/g' \
56
		   -e 's/TABLEBDTXA/`$(bdtxa_table)`/g' \
63
		   -e 's/TABLEISFAN/`$(isfan_table)`/g' \
57
		   $(1)
64
		   $(1)
58
 
65
 
59
# génère les fichiers avec les bases de données souhaitées
66
# génère les fichiers avec les bases de données souhaitées
60
compile: reset
67
compile: reset
61
	@sed -i -e 's/`BASEEDIT`/`$(alterdb)`/g'  \
68
	@sed -i -e 's/`BASEEDIT`/`$(alterdb)`/g'  \
-
 
69
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g'  \
62
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g'  \
70
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g'  \
63
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g'  \
71
		   -e 's/TABLEBDTFX/`$(bdtfx_table)`/g'  \
64
		   -e 's/TABLEBDTFX/`$(bdtfx_table)`/g'  \
72
		   -e 's/TABLEBDTXA/`$(bdtxa_table)`/g'  \
65
		   -e 's/TABLEBDTXA/`$(bdtxa_table)`/g'  \
73
		   -e 's/`TABLEISFAN`/`$(isfan_table)`/g'  \
66
		   $(fichiers)
74
		   $(fichiers)
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" \
75
	@printf "Attention: les changements s'appliqueront sur la base \"%s\"\nLes sources utilisées seront: annuaire=\"%s\" ,  sources=\"%s\" (%s,%s,%s)\n(Ctrl+C pour interrompre, Enter pour continuer)\n" \
68
			`grep ^BASEEDIT .current|cut -d '\`' -f2` \
76
			`grep ^BASEEDIT .current|cut -d '\`' -f2` \
-
 
77
			`grep ^BASEANNUAIRE .current|cut -d '\`' -f2` \
69
			`grep ^BASEANNUAIRE .current|cut -d '\`' -f2` \
78
			`grep ^BASESOURCE .current|cut -d '\`' -f2` \
Line 70... Line 79...
70
			`grep ^BASESOURCE .current|cut -d '\`' -f2` \
79
			`grep ^TABLE_BDTFX .current|cut -d '=' -f2` \
71
			`grep ^TABLE_BDTFX .current|cut -d '=' -f2` \
80
			`grep ^TABLE_BDTXA .current|cut -d '=' -f2` \
Line 83... Line 92...
83
	@echo "make [alterdb=<tb_cel_test>] [sourcedb=<tb_eflore>] [annuairedb=<tela_prod_v4>] [bdtfx=<1_01>] [bdtxa=<1_00>]"
92
	@echo "make [alterdb=<tb_cel_test>] [sourcedb=<tb_eflore>] [annuairedb=<tela_prod_v4>] [bdtfx=<1_01>] [bdtxa=<1_00>]"
Line 84... Line 93...
84
 
93
 
Line 85... Line 94...
85
 
94
 
86
### mises à jour
95
### mises à jour
87
 
96
 
88
# mise à jour de juillet/août 2013
97
# mise à jour de septembre 2013
89
# spécifier dans les targets l'ordre (cf A_LIRE.txt)
98
# 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
99
# attention, si un prérequis ne génère pas de SQL, cela n'empêchera pas le fichier
Line 91... Line 100...
91
# final de maj d'être généré (bien, 
100
# 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
101
maj1: compile cel_references maj-struct-201307 maj-cleanup-201307 fix-utilisateur-32 dedup-ordre-201307 maj-referentiel-201307
93
	@echo done
102
	@echo done
94
 
103
 
Line 95... Line 104...
95
o_maj1: fichiers_generes = $(addsuffix .comp.sql,$(filter-out clean,$?))
104
o_maj1: fichiers_generes = $(addsuffix .comp.sql,$(filter-out clean,$?))
Line 112... Line 121...
112
### pour chacun d'entre-eux, deux versions existent,
121
### pour chacun d'entre-eux, deux versions existent,
113
### 1) L'un compile (après substitution des noms dans le fichier SQL original)
122
### 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
123
### et pipe vers mysql directement, ce qui suppose aussi un .my.cnf ou autre
115
### 2) L'autre (préfixé par o_), renvoie le fichier substitué en sortie standard
124
### 2) L'autre (préfixé par o_), renvoie le fichier substitué en sortie standard
116
### et le target principal s'occupe de concaténer et de créer un fichier de destination
125
### 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
126
### Cette méthode est de loin préférable et conforme à la philosophie Makefile
118
cel_references:
127
cel_references:
119
	$(call is_table,$(sourcedb),$(bdtfx_table))
128
	$(call is_table,$(sourcedb),$(bdtfx_table))
-
 
129
	$(call is_table,$(sourcedb),nvjfl_v2007)
-
 
130
	$(call is_table,$(sourcedb),nva_index_v2_03)
120
	$(call is_table,$(alterdb),cel_references) || mysql < cel_references.sql
131
	$(call is_table,$(alterdb),cel_references) || mysql < cel_references.sql
121
o_cel_references:
132
o_cel_references:
122
	$(call is_table,$(sourcedb),$(bdtfx_table))
133
	$(call is_table,$(sourcedb),$(bdtfx_table))
-
 
134
	$(call is_table,$(sourcedb),nvjfl_v2007)
-
 
135
	$(call is_table,$(sourcedb),nva_index_v2_03)
123
	$(call is_table,$(alterdb),cel_references) || $(call do_subst,cel_references.sql) > $@.comp.sql
136
	$(call is_table,$(alterdb),cel_references) || $(call do_subst,cel_references.sql) > $@.comp.sql
Line 124... Line 137...
124
 
137
 
125
maj-struct-201307: check_cel_obs
138
maj-struct-201307: check_cel_obs
126
	$(call is_table,$(annuairedb),annuaire_tela)
139
	$(call is_table,$(annuairedb),annuaire_tela)
127
	@mysql -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || mysql < maj-struct-201307.sql
140
	@mysql -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || mysql < maj-struct-201307.sql
128
o_maj-struct-201307: check_cel_obs
141
o_maj-struct-201307: check_cel_obs
129
	$(call is_table,$(annuairedb),annuaire_tela)
142
	$(call is_table,$(annuairedb),annuaire_tela)
Line 130... Line 143...
130
	@mysql -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || $(call do_subst,maj-struct-201307.sql) > $@.comp.sql
143
	@mysql -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || $(call do_subst,maj-struct-201307.sql) > $@.comp.sql
131
 
144
 
132
maj-cleanup-201307: check_cel_obs
145
maj-cleanup-201307: check_cel_obs
133
	@ ! mysql -N $(alterdb) <<<"SELECT 1 FROM cel_obs WHERE date_observation = '0000-00-00 00:00:00' LIMIT 1"|grep -q 1 || mysql < maj-cleanup-201307.sql
146
	@ ! mysql -N $(alterdb) <<<"SELECT 1 FROM cel_obs WHERE nom_ret = 'null' LIMIT 1"|grep -q 1 || mysql < maj-cleanup-201307.sql
Line 134... Line 147...
134
o_maj-cleanup-201307:
147
o_maj-cleanup-201307:
135
	@ ! mysql -N $(alterdb) <<<"SELECT 1 FROM cel_obs WHERE date_observation = '0000-00-00 00:00:00' LIMIT 1"|grep -q 1 || $(call do_subst,maj-cleanup-201307.sql) > $@.comp.sql
148
	@ ! mysql -N $(alterdb) <<<"SELECT 1 FROM cel_obs WHERE nom_ret = 'null' LIMIT 1"|grep -q 1 || $(call do_subst,maj-cleanup-201307.sql) > $@.comp.sql
136
 
149
 
137
fix-utilisateur-32: check_cel_obs
150
fix-utilisateur-32: check_cel_obs
Line 143... Line 156...
143
#@mysql -N $(alterdb) <<<'SELECT distinct ce_utilisateur FROM `cel_obs` GROUP BY ce_utilisateur, ordre HAVING COUNT(*) > 1'|grep -q . || mysql < dedup-ordre-201307.sql
156
#@mysql -N $(alterdb) <<<'SELECT distinct ce_utilisateur FROM `cel_obs` GROUP BY ce_utilisateur, ordre HAVING COUNT(*) > 1'|grep -q . || mysql < dedup-ordre-201307.sql
144
	@mysql -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -q couple_user_ordre || mysql < dedup-ordre-201307.sql
157
	@mysql -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -q couple_user_ordre || mysql < dedup-ordre-201307.sql
145
o_dedup-ordre-201307: check_cel_obs
158
o_dedup-ordre-201307: check_cel_obs
146
	@mysql -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -q couple_user_ordre || $(call do_subst,dedup-ordre-201307.sql) > $@.comp.sql
159
	@mysql -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -q couple_user_ordre || $(call do_subst,dedup-ordre-201307.sql) > $@.comp.sql
Line -... Line 160...
-
 
160
 
-
 
161
# maj-referentiel-201307.sql: # pas de test aisé et rapide
-
 
162
# doit passer APRÈS o_maj-cleanup-201307 (pas de nom_ret_nn = 0)
-
 
163
o_maj-referentiel-201307: check_cel_obs
-
 
164
	$(call do_subst,maj-referentiel-201307.sql) > $@.comp.sql
-
 
165
 
-
 
166
# pas de test aisé non plus pour savoir s'il doit repasser
-
 
167
# néanmoins c'est un script sur (peut-être invoqué répétivement)
-
 
168
o_referonosaure: check_cel_obs
Line 147... Line 169...
147
 
169
	$(call do_subst,referonosaure.sql) > $@.comp.sql
148
 
170
 
149
 
171
 
-
 
172
 
-
 
173
# pour une prochaine maj