solenv/gbuild/LinkTarget.mk |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

New commits:
commit 86b0753ca3a02d247b13f0a6654ae315ce3a044b
Author:     Jan-Marek Glogowski <glo...@fbihome.de>
AuthorDate: Wed Jan 5 12:13:11 2022 +0100
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Wed Jan 5 22:19:18 2022 +0100

    gbuild: skip libmerged externals for partial builds
    
    When running a full build, all externals of merged libraries are
    also added to libmerged when adding externals for the merged lib.
    
    Non-skipping for partial builds also breaks gbuildtojson, for all
    modules, which are merged and have additional libraries, tests or
    binaries, which then depend on the libmerged.
    
    This triggers for gbuildtojson, because the skipped %.exports now
    actually matter when checking the libmerged state. make then tries
    to rebuild it, but this can never work for a partial build, even
    with the full gbuild ruleset, not stripped by
    solenv/gbuild/extensions/post_GbuildToJson.mk.
    
    The totally confusing result, due to the mangled ruleset, is that
    the first externals %.exports overwrites libmerged in instdir.
    
    Change-Id: I2b72a8b543dbbd8c8f573bfe963164329bdd73e4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127995
    Tested-by: Jenkins
    Reviewed-by: Jan-Marek Glogowski <glo...@fbihome.de>

diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
index 3f4e329587b8..52eabb9e5b96 100644
--- a/solenv/gbuild/LinkTarget.mk
+++ b/solenv/gbuild/LinkTarget.mk
@@ -2031,8 +2031,10 @@ endef
 # call gb_LinkTarget_use_external,linktarget,external
 define gb_LinkTarget_use_external
 $(if $(filter undefined,$(origin gb_LinkTarget__use_$(2))),\
-  $(error gb_LinkTarget_use_external: unknown external: $(2)),\
-  $(if $(call gb_LinkTarget__is_merged,$(1)),$(call 
gb_LinkTarget__use_$(2),$(call gb_Library_get_linktarget,merged))) \
+    $(error gb_LinkTarget_use_external: unknown external: $(2)) \
+, \
+    $(if $(gb_PARTIAL_BUILD),,$(if $(call gb_LinkTarget__is_merged,$(1)), \
+        $(call gb_LinkTarget__use_$(2),$(call 
gb_Library_get_linktarget,merged)))) \
     $(call gb_LinkTarget__use_$(2),$(1)) \
 )
 endef

Reply via email to