[tracker/wip/carlosg/shuffle-dirs: 15/15] libtracker-sparql: Build as a monolithic library




commit ac987cec47baf6f56af3972a962f3329abf20cc9
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Apr 3 18:08:24 2022 +0200

    libtracker-sparql: Build as a monolithic library
    
    We want to increase the interactions between different parts of
    the code tree (e.g. unify serialization/deserialization infrastructure
    so it's usable by everyone) without neccessarily making the different
    pieces of the mechanism public API.
    
    By building all subcomponents as static libraries, we were constrained
    to the API that we wanted to have publicly available.
    
    Turn libtracker-sparql into a library that is built monolithically
    in order to lift that barrier within internals.
    
    We anyhow still need access to private API in the tracker3 sql/export
    utilities, make this still through a static library, but one that is
    right underneath libtracker-sparql, instead of being a selected cut.
    
    And sadly, we cannot get rid yet of the static libtracker-data library
    for the http endpoint modules (a requirement via its TrackerSparqlStatement
    implementation). Keep this static library solely for this.

 src/libtracker-sparql/bus/meson.build              | 23 -------
 .../core/tracker-data-enum-types.h.template        |  2 +-
 src/libtracker-sparql/direct/meson.build           | 15 -----
 src/libtracker-sparql/direct/tracker-direct.vapi   |  2 +-
 src/libtracker-sparql/meson.build                  | 74 ++++++++++++++--------
 src/tracker/meson.build                            |  2 +-
 6 files changed, 50 insertions(+), 68 deletions(-)
---
diff --git a/src/libtracker-sparql/bus/meson.build b/src/libtracker-sparql/bus/meson.build
index d7c2be390..6852171d0 100644
--- a/src/libtracker-sparql/bus/meson.build
+++ b/src/libtracker-sparql/bus/meson.build
@@ -5,26 +5,3 @@ bus_files = files(
     'tracker-bus-fd-cursor.vala',
     'tracker-bus-statement.vala',
 )
-
-libtracker_bus = static_library('tracker-bus',
-    bus_files,
-    '../../libtracker-common/libtracker-common.vapi',
-    c_args: tracker_c_args + [
-        '-include', 'libtracker-sparql/tracker-private.h',
-    ],
-    vala_args: [
-        '--debug',
-        '--pkg', 'posix',
-        # FIXME: Meson has code to add --target-glib automatically, but it
-        # doesn't seem to work here.
-        '--target-glib', glib_required,
-    ],
-    dependencies: [tracker_common_dep, tracker_sparql_intermediate_dep, tracker_sparql_vapi_dep],
-    include_directories: [commoninc, configinc, srcinc],
-    gnu_symbol_visibility: 'hidden',
-)
-
-tracker_sparql_bus_dep = declare_dependency(
-    link_with: libtracker_bus,
-    include_directories: include_directories('.')
-)
diff --git a/src/libtracker-sparql/core/tracker-data-enum-types.h.template 
b/src/libtracker-sparql/core/tracker-data-enum-types.h.template
index 4ff8342d9..e25853caf 100644
--- a/src/libtracker-sparql/core/tracker-data-enum-types.h.template
+++ b/src/libtracker-sparql/core/tracker-data-enum-types.h.template
@@ -4,7 +4,7 @@
 #define __TRACKER_DATA_ENUM_TYPES_H__
 
 #include <glib-object.h>
-#include "tracker-db-interface-sqlite.h"
+#include <libtracker-sparql/core/tracker-db-interface-sqlite.h>
 
 G_BEGIN_DECLS
 /*** END file-header ***/
diff --git a/src/libtracker-sparql/direct/meson.build b/src/libtracker-sparql/direct/meson.build
index e2e8a7491..14127d9ac 100644
--- a/src/libtracker-sparql/direct/meson.build
+++ b/src/libtracker-sparql/direct/meson.build
@@ -3,18 +3,3 @@ direct_files = files(
     'tracker-direct-batch.c',
     'tracker-direct-statement.c',
 )
-
-libtracker_direct = static_library('tracker-direct',
-    direct_files,
-    c_args: tracker_c_args + [
-       '-include', 'libtracker-sparql/tracker-private.h',
-    ],
-    dependencies: [ glib, gio, tracker_data_dep, tracker_sparql_intermediate_dep ],
-    include_directories: [commoninc, configinc, srcinc],
-    gnu_symbol_visibility: 'hidden',
-)
-
-tracker_sparql_direct_dep = declare_dependency(
-    link_with: libtracker_direct,
-    include_directories: include_directories('.')
-)
diff --git a/src/libtracker-sparql/direct/tracker-direct.vapi 
b/src/libtracker-sparql/direct/tracker-direct.vapi
index 0b0e02815..3f8b7c938 100644
--- a/src/libtracker-sparql/direct/tracker-direct.vapi
+++ b/src/libtracker-sparql/direct/tracker-direct.vapi
@@ -1,7 +1,7 @@
 [CCode (cprefix = "Tracker", gir_namespace = "Tracker", gir_version = "2.0", lower_case_cprefix = 
"tracker_")]
 namespace Tracker {
         namespace Direct {
-                [CCode (cheader_filename = "tracker-direct.h")]
+                [CCode (cheader_filename = "direct/tracker-direct.h")]
                 public class Connection : Tracker.Sparql.Connection, GLib.Initable, GLib.AsyncInitable {
                         public Connection (Tracker.Sparql.ConnectionFlags connection_flags, GLib.File loc, 
GLib.File? ontology) throws Tracker.Sparql.Error, GLib.IOError, GLib.DBusError;
                         public unowned Tracker.Data.Manager get_data_manager ();
diff --git a/src/libtracker-sparql/meson.build b/src/libtracker-sparql/meson.build
index c3dfab045..a55fb3826 100644
--- a/src/libtracker-sparql/meson.build
+++ b/src/libtracker-sparql/meson.build
@@ -1,4 +1,6 @@
 subdir('core')
+subdir('bus')
+subdir('direct')
 
 version_header = configure_file(
     input: 'tracker-version-generated.h.meson.in',
@@ -54,22 +56,8 @@ libtracker_sparql_c_public_headers = files(
     'tracker-version.h',
 )
 
-libtracker_sparql_intermediate = static_library('tracker-sparql-intermediate',
-    enum_types,
-    libtracker_sparql_c_sources,
-    dependencies: [tracker_common_dep, json_glib, libxml2],
-    gnu_symbol_visibility: 'hidden',
-)
-
 sparqlinc = [include_directories('.'), meson.current_build_dir()]
 
-tracker_sparql_intermediate_dep = declare_dependency(
-    link_with: [libtracker_sparql_intermediate],
-    include_directories: [srcinc, include_directories('.')],
-    dependencies: [ tracker_sparql_vapi_dep, tracker_data_dep ],
-    sources: enum_types[1],
-)
-
 install_headers(
     libtracker_sparql_c_public_headers,
     'tracker-ontologies.h',
@@ -89,10 +77,22 @@ install_data(
     install_dir: vapi_dir,
 )
 
-subdir('bus')
-subdir('direct')
+libtracker_sparql_dependencies = [
+    tracker_common_dep,
+    tracker_sparql_vapi_dep,
+    gmodule,
+    libdl,
+    json_glib,
+    libxml2,
+    tracker_data_dependencies
+]
 
-libtracker_sparql = library('tracker-sparql-' + tracker_api_version,
+libtracker_sparql_private = static_library('tracker-sparql-private',
+    enum_types,
+    libtracker_sparql_c_sources,
+    core_files,
+    bus_files,
+    direct_files,
     '../libtracker-common/libtracker-common.vapi',
     'core/libtracker-data.vapi',
     'direct/tracker-direct.vapi',
@@ -100,24 +100,44 @@ libtracker_sparql = library('tracker-sparql-' + tracker_api_version,
     'tracker-remote-module.c',
     tracker_gresources,
 
-    gnu_symbol_visibility: 'hidden',
-
-    soversion: soversion,
-    version: libversion,
-
-    install: true,
-    install_rpath: tracker_internal_libs_dir,
-
     c_args: [
        '-include', 'libtracker-sparql/tracker-private.h',
         '-DPRIVATE_LIBDIR="@0@"'.format(tracker_internal_libs_dir),
         '-DBUILD_LIBDIR="@0@"'.format(meson.current_build_dir()),
         '-DBUILDROOT="@0@"'.format(meson.build_root()),
+    ] + tracker_c_args,
+
+    vala_args: [
+        '--debug',
+        '--pkg', 'posix',
+        # FIXME: Meson has code to add --target-glib automatically, but it
+        # doesn't seem to work here.
+        '--target-glib', glib_required,
     ],
 
-    link_whole: [libtracker_sparql_intermediate],
+    dependencies: [libtracker_sparql_dependencies],
+    gnu_symbol_visibility: 'hidden',
+)
+
+tracker_sparql_private_dep = declare_dependency(
+    link_with: [libtracker_sparql_private],
+    include_directories: [srcinc, include_directories('.')],
+    sources: enum_types[1],
+    dependencies: [glib, gio],
+)
+
+libtracker_sparql = library('tracker-sparql-' + tracker_api_version,
+    gnu_symbol_visibility: 'hidden',
+
+    link_whole: [libtracker_sparql_private],
+
+    soversion: soversion,
+    version: libversion,
+
+    install: true,
+    install_rpath: tracker_internal_libs_dir,
 
-    dependencies: [tracker_common_dep, tracker_sparql_bus_dep, tracker_sparql_direct_dep, 
tracker_sparql_vapi_dep, gmodule, libdl],
+    dependencies: [libtracker_sparql_dependencies],
 )
 
 tracker_sparql_dep = declare_dependency(
diff --git a/src/tracker/meson.build b/src/tracker/meson.build
index 1cb0a4932..042d11b0a 100644
--- a/src/tracker/meson.build
+++ b/src/tracker/meson.build
@@ -27,7 +27,7 @@ executable(command_name, sources,
     ],
     install: true,
     install_rpath: tracker_internal_libs_dir,
-    dependencies: [tracker_sparql_dep, tracker_data_dep],
+    dependencies: [tracker_sparql_dep, tracker_sparql_private_dep, gio_unix],
     include_directories: [commoninc, configinc, srcinc],
 )
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]