i18npool/CustomTarget_localedata.mk |   13 ++++++++-----
 solenv/gbuild/Helper.mk             |    7 +++++++
 2 files changed, 15 insertions(+), 5 deletions(-)

New commits:
commit a4e15140b33633301c387a4d95b18de24231cbdb
Author:     Jan-Marek Glogowski <glo...@fbihome.de>
AuthorDate: Sat Jan 1 13:27:50 2022 +0100
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Sat Jan 1 22:27:56 2022 +0100

    Further separate saxparser run from cmp'n'touch
    
    At least on Windows the calls to saxparser almost feel as slow
    as the compilation. So this adds an intermediate file just for
    the cmp calls, costing just a bit more filesystem space.
    
    This also reverts the gb_MKTEMP usage introduced in commit
    14eeed686c5490ddbd356c1ac807b16231e4cb88. Using a fixed name in
    WORKDIR is easier to debug eventually, then some random mktemp
    generated file, and is faster anyway.
    
    Change-Id: Id4979b75b881e916c209ff0ff8e123536294e93b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127841
    Tested-by: Jenkins
    Reviewed-by: Jan-Marek Glogowski <glo...@fbihome.de>

diff --git a/i18npool/CustomTarget_localedata.mk 
b/i18npool/CustomTarget_localedata.mk
index c9fd9c213a95..6a63785fe839 100644
--- a/i18npool/CustomTarget_localedata.mk
+++ b/i18npool/CustomTarget_localedata.mk
@@ -15,19 +15,22 @@ $(eval $(call 
gb_CustomTarget_register_targets,i18npool/localedata,\
        $(foreach name,$(i18npool_LD_NAMES),localedata_$(name).cxx) \
 ))
 
-$(call gb_CustomTarget_get_workdir,i18npool/localedata)/localedata_%.cxx : \
+$(call gb_CustomTarget_get_workdir,i18npool/localedata)/localedata_%_new.cxx : 
\
                $(SRCDIR)/i18npool/source/localedata/data/%.xml \
                $(call gb_Executable_get_runtime_dependencies,saxparser)
        $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),SAX,1)
        $(call gb_Trace_StartRange,$(subst $(WORKDIR)/,,$@),SAX)
-       TEMPSAX=$(shell $(gb_MKTEMP)) && TEMPSED=$(shell $(gb_MKTEMP)) && \
        $(call gb_Helper_abbreviate_dirs, \
                $(call gb_Helper_print_on_error, \
-                       $(call gb_Helper_execute,saxparser) $* $< $${TEMPSAX} \
+                       $(call gb_Helper_execute,saxparser) $* $< $@.sax \
                                -env:LO_LIB_DIR=$(call 
gb_Helper_make_url,$(INSTROOT_FOR_BUILD)/$(LIBO_LIB_FOLDER)) \
                                -env:URE_MORE_SERVICES=$(call 
gb_Helper_make_url,$(call gb_Rdb_get_target_for_build,saxparser))) && \
-               sed 's/\(^.*get[^;]*$$\)/SAL_DLLPUBLIC_EXPORT \1/' $${TEMPSAX} 
> $${TEMPSED} && \
-               rm $${TEMPSAX} && $(call 
gb_Helper_replace_if_different_and_touch,$${TEMPSED},$@))
+               sed 's/\(^.*get[^;]*$$\)/SAL_DLLPUBLIC_EXPORT \1/' $@.sax > $@)
+       rm $@.sax
        $(call gb_Trace_EndRange,$(subst $(WORKDIR)/,,$@),SAX)
 
+$(call gb_CustomTarget_get_workdir,i18npool/localedata)/localedata_%.cxx : \
+               $(call 
gb_CustomTarget_get_workdir,i18npool/localedata)/localedata_%_new.cxx
+       $(call gb_Helper_copy_if_different_and_touch,$<,$@)
+
 # vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/Helper.mk b/solenv/gbuild/Helper.mk
index a146de70d748..d4d5f1c9eef1 100644
--- a/solenv/gbuild/Helper.mk
+++ b/solenv/gbuild/Helper.mk
@@ -288,6 +288,13 @@ else mv $(1) $(2) $(if $(3),&& touch -r $(3) $(2)); \
 fi
 endef
 
+# call 
gb_Helper_copy_if_different_and_touch,source,target,optional-touch-reference-file
+define gb_Helper_copy_if_different_and_touch
+if ! cmp -s $(1) $(2); then \
+    cp $(1) $(2) $(if $(3),&& touch -r $(3) $(2)); \
+fi
+endef
+
 define gb_Helper_define_if_set
 $(foreach def,$(1),$(if $(filter TRUE YES,$($(def))),-D$(def)))
 endef

Reply via email to