diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2021-12-09 10:15:05 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2021-12-10 08:14:24 +0100 |
commit | db3a61cd958f4a70417929cf8e1fa9bfd0bfe5a3 (patch) | |
tree | 20c4ceba87df6b65e218a670ae22e35d7a1da30f /solenv | |
parent | 5b0707f66e2c49a11f3a23e3ec9940b26d881165 (diff) |
Generally determine Rdb content from gb_*_set_componentfile calls
...instead of by listing the content somewhat redundantly in the Rdb_*.mk
files, to avoid duplication of logic for components that are only built
conditionally (and thus should only be included conditionally in the
corresponding Rdb). To achieve that, add an "rdb" parameter to
gb_ComponentTarget_ComponentTarget (and to the gb_*_set_componentfile macros
that internally call gb_ComponentTarget_ComponentTarget), which is used to make
the appropriate gb_Rdb_add_component call internally from within
gb_ComponentTarget_ComponentTarget. (As a special case,
gb_CppunitTest_set_componentfile shall not call gb_Rdb_add_component, as that
has already been done by the corresponding gb_Library_set_componentfile call, so
allow the gb_ComponentTarget_ComponentTarget "rdb" parameter to be empty to
support that special case.)
Most Rdb_*.mk files are thus mostly empty now. One exception is
i18npool/Rdb_saxparser.mk, which duplicates some of the Rdb_services content as
needed during the build in CustomTarget_i18npool/localedata.
1c9a40299d328c78c035ca63ccdf22c5c669a03b "gbuild: create services.rdb from built
components" had already tried to do something similar (in addition to other
things) under a new --enable-services-rdb-from-build option. However, that
approach had four drawbacks that this approach here addresses (and which thus
partly reverts 1c9a40299d328c78c035ca63ccdf22c5c669a03b):
1 Rdb_services shall not contain the component files of all libraries that are
built. While that commit filtered out the component files that go into
Rdb_ure/services (ure/Rdb_ure.mk), it failed to filter out the component files
that go into others like Rdb_postgresql-sdbc
(connectivity/Rdb_postgresql-sdbc.mk).
2 The code added by that commit to Makefile.gbuild codified the knowledge that
there is an Rdb_services, which is brittle.
3 The code added by that commit to solenv/gbuild/Rdb.mk codified the knowledge
(for gb_Rdb__URECOMPONENTS) that there is an Rdb_ure/services, which is brittle.
4 Introducing an --enable-services-rdb-from-build option needlessly provided
two different ways how the content of Rdb_services is assembled.
The changes done here would leave --enable-services-rdb-from-build as a
misnomer, as it no longer controls how Rdb_services is assembled. I thus
renamed it to --enable-customtarget-components, as that is apparently what it
still does now.
Change-Id: Ia5e8df4b640146c77421fcec6daa11a9cd260265
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126577
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'solenv')
-rw-r--r-- | solenv/gbuild/ComponentTarget.mk | 5 | ||||
-rw-r--r-- | solenv/gbuild/Jar.mk | 2 | ||||
-rw-r--r-- | solenv/gbuild/Library.mk | 8 | ||||
-rw-r--r-- | solenv/gbuild/Pyuno.mk | 4 | ||||
-rw-r--r-- | solenv/gbuild/Rdb.mk | 10 |
5 files changed, 17 insertions, 12 deletions
diff --git a/solenv/gbuild/ComponentTarget.mk b/solenv/gbuild/ComponentTarget.mk index de88ae1f5177..8aef599dc59a 100644 --- a/solenv/gbuild/ComponentTarget.mk +++ b/solenv/gbuild/ComponentTarget.mk @@ -60,7 +60,10 @@ $(call gb_ComponentTarget_get_target,$(1)) : COMPONENTSOURCE := $(call gb_Compon $(call gb_ComponentTarget_get_target,$(1)) : $(call gb_ComponentTarget_get_source,$(patsubst CppunitTest/%,%,$(1))) -$(if $(filter $(1),$(patsubst CppunitTest/%,%,$(1))),$(eval gb_ComponentTarget__ALLCOMPONENTS += $(1))) +ifneq ($(4),) +$$(eval $$(call gb_Rdb_add_component,$(4),$(1))) +endif +$(if $(4),$(eval gb_ComponentTarget__ALLCOMPONENTS += $(1))) endef diff --git a/solenv/gbuild/Jar.mk b/solenv/gbuild/Jar.mk index 9592fbbad6a6..d1a84cebaabe 100644 --- a/solenv/gbuild/Jar.mk +++ b/solenv/gbuild/Jar.mk @@ -278,7 +278,7 @@ gb_Jar__get_componentprefix = \ # layer must be specified explicitly in this macro (different to libraries) define gb_Jar_set_componentfile -$(call gb_ComponentTarget_ComponentTarget,$(2),$(call gb_Jar__get_componentprefix,$(3)),$(notdir $(call gb_Jar_get_target,$(1)))) +$(call gb_ComponentTarget_ComponentTarget,$(2),$(call gb_Jar__get_componentprefix,$(3)),$(notdir $(call gb_Jar_get_target,$(1))),$(4)) $(call gb_Jar_get_target,$(1)) : $(call gb_ComponentTarget_get_target,$(2)) $(call gb_Jar_get_clean_target,$(1)) : $(call gb_ComponentTarget_get_clean_target,$(2)) diff --git a/solenv/gbuild/Library.mk b/solenv/gbuild/Library.mk index 36911dee31a0..6dc2b9591104 100644 --- a/solenv/gbuild/Library.mk +++ b/solenv/gbuild/Library.mk @@ -134,11 +134,11 @@ endef # gb_Library_get_exports_target for that purpose, since it is already # the "final" target of the Library... # -# call gb_Library_set_componentfile,library,componentfile +# call gb_Library_set_componentfile,library,componentfile,rdb define gb_Library_set_componentfile $(call gb_ComponentTarget_ComponentTarget,$(2),\ $(call gb_Library__get_componentprefix,$(gb_Library__get_name)),\ - $(call gb_Library_get_runtime_filename,$(gb_Library__get_name))) + $(call gb_Library_get_runtime_filename,$(gb_Library__get_name)),$(3)) $(call gb_Library_get_exports_target,$(gb_Library__get_name)) :| \ $(call gb_ComponentTarget_get_target,$(2)) $(call gb_ComponentTarget_get_target,$(2)) :| \ @@ -148,9 +148,9 @@ $(call gb_Library_get_clean_target,$(gb_Library__get_name)) : \ endef -# call gb_Library_set_componentfiles,library,componentfiles +# call gb_Library_set_componentfiles,library,componentfiles,rdb define gb_Library_set_componentfiles -$(foreach comp,$(2),$(call gb_Library_set_componentfile,$(1),$(comp))) +$(foreach comp,$(2),$(call gb_Library_set_componentfile,$(1),$(comp),$(3))) endef diff --git a/solenv/gbuild/Pyuno.mk b/solenv/gbuild/Pyuno.mk index 334a21cbc70a..3e5cb820fcd5 100644 --- a/solenv/gbuild/Pyuno.mk +++ b/solenv/gbuild/Pyuno.mk @@ -63,7 +63,7 @@ endef gb_Pyuno__COMPONENTPREFIX := vnd.openoffice.pymodule: define gb_Pyuno_set_componentfile_full -$(call gb_ComponentTarget_ComponentTarget,$(2),$(3),$(4)) +$(call gb_ComponentTarget_ComponentTarget,$(2),$(3),$(4),$(5)) $(call gb_Pyuno_get_final_target,$(1)) : $(call gb_ComponentTarget_get_target,$(2)) $(call gb_ComponentTarget_get_target,$(2)) : $(call gb_Pyuno_get_target,$(1)) $(call gb_Pyuno_get_clean_target,$(1)) : $(call gb_ComponentTarget_get_clean_target,$(2)) @@ -72,7 +72,7 @@ endef # Set .component file for the component. define gb_Pyuno_set_componentfile -$(call gb_Pyuno_set_componentfile_full,$(1),$(2),$(gb_Pyuno__COMPONENTPREFIX),$(1)) +$(call gb_Pyuno_set_componentfile_full,$(1),$(2),$(gb_Pyuno__COMPONENTPREFIX),$(1),$(3)) endef diff --git a/solenv/gbuild/Rdb.mk b/solenv/gbuild/Rdb.mk index d59ab043180a..45058888d02a 100644 --- a/solenv/gbuild/Rdb.mk +++ b/solenv/gbuild/Rdb.mk @@ -7,8 +7,6 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -gb_Rdb__URECOMPONENTS := - gb_Rdb__get_install_target = $(INSTROOT)/$(LIBO_ETC_FOLDER)/services/$(1).rdb define gb_Rdb__command @@ -37,7 +35,12 @@ $(call gb_Rdb_get_clean_target,%) : rm -f $(call gb_Rdb__get_install_target,$*) $(call gb_Rdb_get_target,$*)) define gb_Rdb__Rdb_impl -$(call gb_Rdb_get_target,$(1)) : COMPONENTS := +# gb_Rdb_add_component, which adds to the target-specific COMPONENTS variable, can be called (from +# gb_ComponentTarget_ComponentTarget) before gb_Rdb__Rdb_impl is called, so using `COMPONENTS :=` +# here could lose content; but still use `COMPONENTS ?=` here to establish COMPONENTS as target- +# specific even in the corner case of an empty Rdb with no gb_Rdb_add_component calls, so that the +# use of $(COMPONENTS) in gb_Rdb__command would not accidentally pick a global COMPONENTS variable: +$(call gb_Rdb_get_target,$(1)) : COMPONENTS ?= $(call gb_Rdb_get_target,$(1)) : $(gb_Module_CURRENTMAKEFILE) $$(eval $$(call gb_Module_register_target,$(2),$(call gb_Rdb_get_clean_target,$(1)))) $(call gb_Helper_make_userfriendly_targets,$(1),Rdb,$(2)) @@ -61,7 +64,6 @@ endef define gb_Rdb_add_component $(call gb_Rdb_get_target,$(1)) : $(call gb_ComponentTarget_get_target,$(2)) $(call gb_Rdb_get_target,$(1)) : COMPONENTS += $(2) -$(if $(filter ure/services,$(1)),$(eval gb_Rdb__URECOMPONENTS += $(2))) endef |