driverAll: exec.sh environ.sh qtEficas.sh $(driver_files)
# qtEficasSlm.sh
-#driverAll: cata_blocs_En_Cascade_driver.py cata_Ambigu_1_Commun_genere.py cata_Ambigu_2_Commun_genere.py cataSimpMemeNomTypesDifferents_genere.py
-
-#$(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \
+# Exemple PyxB : $(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \
# L'utilisation de $? ne fonctionne pas si l'on ne modifie qu'un seul catalogue car il liste uniquement les fichiers modifiés et pyxb détecte
# que l'autre fichier en dépend et qu'il n'a pas été regénéré en même temps: $^
.py.xsd:
$(PYXB) -m $(basename $@) -u $^ --write-for-customization
xmllint --path $(confdir) --schema XMLSchema11_local.xsd --noout $^
-#Les Tools ont besoins d'un chemin absolu
-.comm.xml:
- $(tooldir)/generateXML.py -c $(realpath $(<:%.comm=%.py)) $<
+#Les Tools eficas ont besoins d'un chemin absolu
+#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare)
+#_test_driver_$1.comm_test_driver_$1.xml:
+# il faut les définir à part
+define test_xml_rule =
+%_test_driver_$1.xml : %_test_driver_$1.comm $$(realpath $$(*).py)
+ @echo -e "\n\n------ Generate xml test file $$(@) ------\n"
+ @[[ -f $$(*).py ]] || (echo "Le fichier catalogue $$(*).py est introuvable" && false)
+ $(tooldir)/generateXML.py -c $$(realpath $$(*).py) $$<
+endef
+
+
+#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare)
+#_test_driver_$1.comm_test_driver_$1.py:
+# il faut les définir à part
+define test_driver_rule =
+%_test_driver_$1.py : %_test_driver_$1.comm
+ @echo -e "\n\n------ Generate xml test driver $$(@) ------\n"
+ sed -e "s,@module@,$$(*)_driver,g" -e "s,@file@,$$(<:%.comm=%.xml),g" $$(confdir)/test_driver_subst.py > $$(@) && \
+ chmod +x $$(<:%.comm=%.py);
+endef
+
+#Définition des règles de construction pour les tests
+#$(eval $(call test_driver_rule,0))
+#$(eval $(call test_driver_rule,1))
+$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_xml_rule,$(it))) )
+$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_driver_rule,$(it))) )
+
+test_driver_xml:= $(patsubst %.comm,%.xml,$(wildcard *_test_driver_?.comm))
+test_driver_py:= $(patsubst %.comm,%.py,$(wildcard *_test_driver_?.comm))
# xml:
# @echo "Reminder: a .comm file is needed for this step"
check test: testAll
-#Génération d'un .py de test par .xml de référence
-#TODO : Améliorer la génération pour ne pas regénérer inutilement les drivers, utilser plus les règles Makefiles...
-#TODO : Gestion ds un build séparé du srcdir
-testGen: $(confdir)/test_driver_subst.py
- for i in `ls *_test_driver_?.comm`; \
- do \
- $(tooldir)/generateXML.py -c $$PWD/$${i/_test_driver_?.comm/.py} $${i} && \
- sed -e "s,@module@,$${i/_test_driver_?.comm/}_driver,g" -e "s,@file@,$${i/.comm/.xml},g" $(confdir)/test_driver_subst.py > $${i/comm/py} && \
- chmod +x $${i/comm/py};\
- done
-
-#Lancement de chaque test ds l'environement minimal
-testAll: testGen exec.sh driverAll
- for i in `ls *_test_driver*.py` ; do ./exec.sh python $$i ; done
-
-#multiple target avec règle non possible.
-#Ecrire une génération avec un define
-# $(wildcard *_test_driver_?.xml) : test_driver.py
-# do sed -e "s,@module@,${@:%_test_driver=%_driver},g" -e 's,@file@,$@,g' test_driver.py > ${@:%.xml=%.py}; done
+################# REGLES DE TESTS ########################
+
+testAll: exec.sh driverAll $(test_driver_py) $(test_driver_xml)
+ echo $(test_driver_xml)
+ echo $(test_driver_py)
+ for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i ; done
+# for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i || break ; done
+
+################# REGLES DE NETTOYAGE ########################
clean:
rm -f *.pyc *~ qtEficasSlm.sh exec.sh environ.sh
# Règle en tête de Makefile
all: driverAll
-############# ENVIRONEMENT DE CONSTRUCTION VIMMP Traning ################
+######### ENVIRONEMENT DE CONSTRUCTION VIMMP Traning / Local ############
ifeq ($(findstring vimmp,$dir($(realpath GNUmakefile))),vimmp)
include $(confdir)/GNUmakefile.mdm
driverAll: exec.sh environ.sh qtEficas.sh $(driver_files)
# qtEficasSlm.sh
-#driverAll: cata_blocs_En_Cascade_driver.py cata_Ambigu_1_Commun_genere.py cata_Ambigu_2_Commun_genere.py cataSimpMemeNomTypesDifferents_genere.py
-
-#$(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \
+# Exemple PyxB : $(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \
# L'utilisation de $? ne fonctionne pas si l'on ne modifie qu'un seul catalogue car il liste uniquement les fichiers modifiés et pyxb détecte
# que l'autre fichier en dépend et qu'il n'a pas été regénéré en même temps: $^
.py.xsd:
$(PYXB) -m $(basename $@) -u $^ --write-for-customization
xmllint --path $(confdir) --schema XMLSchema11_local.xsd --noout $^
-#Les Tools ont besoins d'un chemin absolu
-.comm.xml:
- $(tooldir)/generateXML.py -c $(realpath $(<:%.comm=%.py)) $<
+#Les Tools eficas ont besoins d'un chemin absolu
+#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare)
+#_test_driver_$1.comm_test_driver_$1.xml:
+# il faut les définir à part
+define test_xml_rule =
+%_test_driver_$1.xml : %_test_driver_$1.comm $$(realpath $$(*).py)
+ @echo -e "\n\n------ Generate xml test file $$(@) ------\n"
+ @[[ -f $$(*).py ]] || (echo "Le fichier catalogue $$(*).py est introuvable" && false)
+ $(tooldir)/generateXML.py -c $$(realpath $$(*).py) $$<
+endef
+
+
+#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare)
+#_test_driver_$1.comm_test_driver_$1.py:
+# il faut les définir à part
+define test_driver_rule =
+%_test_driver_$1.py : %_test_driver_$1.comm
+ @echo -e "\n\n------ Generate xml test driver $$(@) ------\n"
+ sed -e "s,@module@,$$(*)_driver,g" -e "s,@file@,$$(<:%.comm=%.xml),g" $$(confdir)/test_driver_subst.py > $$(@) && \
+ chmod +x $$(<:%.comm=%.py);
+endef
+
+#Définition des règles de construction pour les tests
+#$(eval $(call test_driver_rule,0))
+#$(eval $(call test_driver_rule,1))
+$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_xml_rule,$(it))) )
+$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_driver_rule,$(it))) )
+
+test_driver_xml:= $(patsubst %.comm,%.xml,$(wildcard *_test_driver_?.comm))
+test_driver_py:= $(patsubst %.comm,%.py,$(wildcard *_test_driver_?.comm))
# xml:
# @echo "Reminder: a .comm file is needed for this step"
################# REGLES DE TESTS ########################
-#Génération d'un .py de test par .xml de référence
-#TODO : Améliorer la génération pour ne pas regénérer inutilement les drivers, utilser plus les règles Makefiles...
-#TODO : Gestion ds un build séparé du srcdir
-testGen: $(confdir)/test_driver_subst.py
- for i in `ls *_test_driver_?.comm`; \
- do \
- $(tooldir)/generateXML.py -c $$PWD/$${i/_test_driver_?.comm/.py} $${i} && \
- sed -e "s,@module@,$${i/_test_driver_?.comm/}_driver,g" -e "s,@file@,$${i/.comm/.xml},g" $(confdir)/test_driver_subst.py > $${i/comm/py} && \
- chmod +x $${i/comm/py};\
- done
-
-#Lancement de chaque test ds l'environement minimal
-testAll: testGen exec.sh driverAll
- for i in `ls *_test_driver*.py` ; do echo "------ Launching $$i ------" && ./exec.sh python $$i ; done
-
-#multiple target avec règle non possible.
-#Ecrire une génération avec un define
-# $(wildcard *_test_driver_?.xml) : test_driver.py
-# do sed -e "s,@module@,${@:%_test_driver=%_driver},g" -e 's,@file@,$@,g' test_driver.py > ${@:%.xml=%.py}; done
+testAll: exec.sh driverAll $(test_driver_py) $(test_driver_xml)
+ echo $(test_driver_xml)
+ echo $(test_driver_py)
+ for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i ; done
+# for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i || break ; done
################# REGLES DE NETTOYAGE ########################
# Règle en tête de Makefile
all: driverAll
-############# ENVIRONEMENT DE CONSTRUCTION VIMMP Traning ################
+######### ENVIRONEMENT DE CONSTRUCTION VIMMP Traning / Local ############
ifeq ($(findstring vimmp,$dir($(realpath GNUmakefile))),vimmp)
include $(confdir)/GNUmakefile.mdm
driverAll: exec.sh environ.sh qtEficas.sh $(driver_files)
# qtEficasSlm.sh
-#driverAll: cata_blocs_En_Cascade_driver.py cata_Ambigu_1_Commun_genere.py cata_Ambigu_2_Commun_genere.py cataSimpMemeNomTypesDifferents_genere.py
-
-#$(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \
+# Exemple PyxB : $(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \
# L'utilisation de $? ne fonctionne pas si l'on ne modifie qu'un seul catalogue car il liste uniquement les fichiers modifiés et pyxb détecte
# que l'autre fichier en dépend et qu'il n'a pas été regénéré en même temps: $^
.py.xsd:
$(PYXB) -m $(basename $@) -u $^ --write-for-customization
xmllint --path $(confdir) --schema XMLSchema11_local.xsd --noout $^
-#Les Tools ont besoins d'un chemin absolu
-.comm.xml:
- $(tooldir)/generateXML.py -c $(realpath $(<:%.comm=%.py)) $<
+#Les Tools eficas ont besoins d'un chemin absolu
+#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare)
+#_test_driver_$1.comm_test_driver_$1.xml:
+# il faut les définir à part
+define test_xml_rule =
+%_test_driver_$1.xml : %_test_driver_$1.comm $$(realpath $$(*).py)
+ @echo -e "\n\n------ Generate xml test file $$(@) ------\n"
+ @[[ -f $$(*).py ]] || (echo "Le fichier catalogue $$(*).py est introuvable" && false)
+ $(tooldir)/generateXML.py -c $$(realpath $$(*).py) $$<
+endef
+
+
+#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare)
+#_test_driver_$1.comm_test_driver_$1.py:
+# il faut les définir à part
+define test_driver_rule =
+%_test_driver_$1.py : %_test_driver_$1.comm
+ @echo -e "\n\n------ Generate xml test driver $$(@) ------\n"
+ sed -e "s,@module@,$$(*)_driver,g" -e "s,@file@,$$(<:%.comm=%.xml),g" $$(confdir)/test_driver_subst.py > $$(@) && \
+ chmod +x $$(<:%.comm=%.py);
+endef
+
+#Définition des règles de construction pour les tests
+#$(eval $(call test_driver_rule,0))
+#$(eval $(call test_driver_rule,1))
+$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_xml_rule,$(it))) )
+$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_driver_rule,$(it))) )
+
+test_driver_xml:= $(patsubst %.comm,%.xml,$(wildcard *_test_driver_?.comm))
+test_driver_py:= $(patsubst %.comm,%.py,$(wildcard *_test_driver_?.comm))
# xml:
# @echo "Reminder: a .comm file is needed for this step"
check test: testAll
-#Génération d'un .py de test par .xml de référence
-#TODO : Améliorer la génération pour ne pas regénérer inutilement les drivers, utilser plus les règles Makefiles...
-#TODO : Gestion ds un build séparé du srcdir
-testGen: $(confdir)/test_driver_subst.py
- for i in `ls *_test_driver_?.comm`; \
- do \
- $(tooldir)/generateXML.py -c $$PWD/$${i/_test_driver_?.comm/.py} $${i} && \
- sed -e "s,@module@,$${i/_test_driver_?.comm/}_driver,g" -e "s,@file@,$${i/.comm/.xml},g" $(confdir)/test_driver_subst.py > $${i/comm/py} && \
- chmod +x $${i/comm/py};\
- done
-
-#Lancement de chaque test ds l'environement minimal
-testAll: testGen exec.sh driverAll
- for i in `ls *_test_driver*.py` ; do ./exec.sh python $$i ; done
-
-#multiple target avec règle non possible.
-#Ecrire une génération avec un define
-# $(wildcard *_test_driver_?.xml) : test_driver.py
-# do sed -e "s,@module@,${@:%_test_driver=%_driver},g" -e 's,@file@,$@,g' test_driver.py > ${@:%.xml=%.py}; done
+################# REGLES DE TESTS ########################
+
+testAll: exec.sh driverAll $(test_driver_py) $(test_driver_xml)
+ echo $(test_driver_xml)
+ echo $(test_driver_py)
+ for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i ; done
+# for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i || break ; done
+
+################# REGLES DE NETTOYAGE ########################
clean:
rm -f *.pyc *~ qtEficasSlm.sh exec.sh environ.sh