From f8bed01825a72c906c320cd41751db35ff6d5b89 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Sat, 16 Aug 2014 17:33:42 +0200 Subject: writerfilter: abort build if model.xml does not validate Most of the scripts parsing model.xml just load it as a DOM and extract info from it needed for their task, which means if you have a typo in an element / attribute name, it's just silently ignored. This is annoying, let's prevent that by validating the model before doing anything with it. Change-Id: I4229e57c12840fead62cbd150dd1408f2f0d29eb --- writerfilter/CustomTarget_source.mk | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'writerfilter/CustomTarget_source.mk') diff --git a/writerfilter/CustomTarget_source.mk b/writerfilter/CustomTarget_source.mk index 1ac643c3dc7f..6e751c0832cc 100644 --- a/writerfilter/CustomTarget_source.mk +++ b/writerfilter/CustomTarget_source.mk @@ -13,6 +13,7 @@ writerfilter_WORK := $(call gb_CustomTarget_get_workdir,writerfilter/source) writerfilter_SRC := $(SRCDIR)/writerfilter/source writerfilter_PYTHONCOMMAND := $(call gb_ExternalExecutable_get_command,python) +writerfilter_XMLLINTCOMMAND := $(call gb_ExternalExecutable_get_command,xmllint) writerfilter_OOXMLNAMESPACES= \ dml-baseStylesheet \ @@ -51,6 +52,7 @@ writerfilter_ALL = \ $(writerfilter_GEN_ooxml_NamespaceIds_hxx) \ $(writerfilter_GEN_ooxml_QNameToStr_cxx) \ $(writerfilter_GEN_ooxml_ResourceIds_hxx) \ + $(writerfilter_GEN_ooxml_Model_validated) \ $(writerfilter_GEN_ooxml_Model_processed) \ $(patsubst %,$(writerfilter_WORK)/ooxml/OOXMLFactory_%.hxx,$(writerfilter_OOXMLNAMESPACES)) \ $(patsubst %,$(writerfilter_WORK)/ooxml/OOXMLFactory_%.cxx,$(writerfilter_OOXMLNAMESPACES)) \ @@ -59,6 +61,7 @@ writerfilter_DEP_ooxml_Namespaces_txt=$(call gb_CustomTarget_get_workdir,oox/gen writerfilter_GEN_ooxml_FactoryValues_hxx=$(writerfilter_WORK)/ooxml/OOXMLFactory_values.hxx writerfilter_GEN_ooxml_Factory_cxx=$(writerfilter_WORK)/ooxml/OOXMLFactory_generated.cxx writerfilter_GEN_ooxml_Factory_hxx=$(writerfilter_WORK)/ooxml/OOXMLFactory_generated.hxx +writerfilter_GEN_ooxml_Model_validated=$(writerfilter_WORK)/ooxml/model.validated writerfilter_GEN_ooxml_Model_processed=$(writerfilter_WORK)/ooxml/model_preprocessed.xml writerfilter_GEN_ooxml_NamespaceIds_hxx=$(writerfilter_WORK)/ooxml/OOXMLnamespaceids.hxx writerfilter_GEN_ooxml_QNameToStr_cxx=$(writerfilter_WORK)/ooxml/qnametostr.cxx @@ -76,7 +79,13 @@ $(writerfilter_GEN_ooxml_Factory_hxx) : $(writerfilter_SRC)/ooxml/factoryinc.py $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),build,PY ,1) $(call gb_Helper_abbreviate_dirs, $(writerfilter_PYTHONCOMMAND) $< $(writerfilter_GEN_ooxml_Model_processed)) > $@ -$(writerfilter_GEN_ooxml_Model_processed) : $(writerfilter_SRC_ooxml_Preprocess_py) $(writerfilter_DEP_ooxml_Namespaces_txt) $(writerfilter_SRC_ooxml_Model) | $(writerfilter_WORK)/ooxml/.dir +$(writerfilter_GEN_ooxml_Model_validated) : $(writerfilter_SRC_ooxml_Model) + $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),build,VAL,1) + $(call gb_Helper_abbreviate_dirs,\ + $(writerfilter_XMLLINTCOMMAND) --noout --relaxng $(writerfilter_SRC)/../documentation/ooxml/model.rng $(writerfilter_SRC_ooxml_Model) > $@ 2>&1 \ + || (cat $@; false)) + +$(writerfilter_GEN_ooxml_Model_processed) : $(writerfilter_SRC_ooxml_Preprocess_py) $(writerfilter_DEP_ooxml_Namespaces_txt) $(writerfilter_GEN_ooxml_Model_validated) $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),build,PY ,1) $(call gb_Helper_abbreviate_dirs, $(writerfilter_PYTHONCOMMAND) $(writerfilter_SRC_ooxml_Preprocess_py) $(writerfilter_DEP_ooxml_Namespaces_txt) $(writerfilter_SRC_ooxml_Model)) > $@ @@ -103,6 +112,6 @@ $(writerfilter_WORK)/ooxml/OOXMLFactory%.hxx : $(writerfilter_SRC)/ooxml/factory $(call gb_CustomTarget_get_target,writerfilter/source) : $(writerfilter_ALL) -$(writerfilter_ALL) :| $(call gb_ExternalExecutable_get_dependencies,python) $(writerfilter_WORK)/ooxml/.dir +$(writerfilter_ALL) :| $(call gb_ExternalExecutable_get_dependencies,python) $(call gb_ExternalExecutable_get_dependencies,xmllint) $(writerfilter_WORK)/ooxml/.dir # vim: set noet sw=4 ts=4: -- cgit