[gvfs] build: Revise dependencies



commit f45605210db66306ed32f9a0c6057bf095e81bb3
Author: Iñigo Martínez <inigomartinez gmail com>
Date:   Mon Mar 26 22:43:50 2018 +0200

    build: Revise dependencies
    
    gvfs is using a set of glib libraries (gio-2.0, gio-unix-2.0, glib,
    gobject-2.0) in almost all the created objects. However, these
    dependencies are not always necessary.
    
    gvfs' meson port also uses some internal dependencies formed by
    built libraries. This internal dependencies depend on other
    dependendecies as well.
    
    These both issues have been fixed by reviewing all the internal
    dependencies and built objects.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=794365

 client/meson.build          |   23 +++++++++++++--------
 common/meson.build          |   46 ++++++++++++++++++++++++++++++------------
 daemon/meson.build          |   23 +++++++++++++--------
 daemon/trashlib/meson.build |   13 +++++++++--
 meson.build                 |   11 ++-------
 metadata/meson.build        |   25 ++++++++++++++---------
 monitor/afc/meson.build     |    5 ++-
 monitor/gdu/meson.build     |    6 +++-
 monitor/goa/meson.build     |    5 ++-
 monitor/gphoto2/meson.build |    6 ++--
 monitor/mtp/meson.build     |    6 ++--
 monitor/proxy/meson.build   |   16 ++++++++++++--
 monitor/udisks2/meson.build |   10 +++++---
 test/meson.build            |    7 +++++-
 14 files changed, 130 insertions(+), 72 deletions(-)
---
diff --git a/client/meson.build b/client/meson.build
index fd69f94..038b2da 100644
--- a/client/meson.build
+++ b/client/meson.build
@@ -31,6 +31,12 @@ sources = uri_parser_sources + uri_utils + files(
   'gvfsurimapper.c'
 )
 
+deps = [
+  gio_unix_dep,
+  libgvfscommon_dep,
+  libmetadata_dep
+]
+
 cflags = [
   '-DG_LOG_DOMAIN="@0@"'.format(gvfs_name.to_upper()),
   '-DGVFS_LOCALEDIR="@0@"'.format(gvfs_localedir),
@@ -48,10 +54,7 @@ libgvfsdbus = shared_module(
   'gvfsdbus',
   sources: sources,
   include_directories: top_inc,
-  dependencies: [
-    libgvfscommon_dep,
-    libmetadata_dep
-  ],
+  dependencies: deps,
   c_args: cflags,
   link_args: ldflags,
   link_depends: symbol_map,
@@ -67,7 +70,7 @@ if enable_devel_utils
     test_name,
     [test_name + '.c'] + uri_utils,
     include_directories: top_inc,
-    dependencies: glib_deps + [libgvfscommon_dep],
+    dependencies: libgvfscommon_dep,
     c_args: cflags
   )
 endif
@@ -81,14 +84,16 @@ if enable_fuse
     )
   endif
 
+  deps = [
+    fuse_dep,
+    libgvfscommon_dep
+  ]
+
   executable(
     'gvfsd-fuse',
     'gvfsfusedaemon.c',
     include_directories: top_inc,
-    dependencies: glib_deps + [
-      fuse_dep,
-      libgvfscommon_dep
-    ],
+    dependencies: deps,
     c_args: cflags + ['-UG_LOG_DOMAIN'],
     install: true,
     install_rpath: gvfs_rpath,
diff --git a/common/meson.build b/common/meson.build
index e269cb7..ab09c33 100644
--- a/common/meson.build
+++ b/common/meson.build
@@ -26,13 +26,19 @@ dbus_sources = custom_target(
   command: [codegen, gvfs_namespace + '.', name, namespace, meson.current_build_dir(), '@INPUT@', '@OUTPUT@']
 )
 
+deps = [
+  gio_dep,
+  glib_dep,
+  gobject_dep
+]
+
 cflags = common_cflags + ['-DREMOTE_VOLUME_MONITORS_DIR="@0@"'.format(gvfs_remote_volume_monitors_dir)]
 
 libgvfscommon = shared_library(
   'gvfscommon',
   sources: sources + [dbus_sources],
   include_directories: top_inc,
-  dependencies: glib_deps,
+  dependencies: deps + [gio_unix_dep],
   c_args: cflags,
   install: true,
   install_dir: gvfs_pkglibdir
@@ -40,11 +46,15 @@ libgvfscommon = shared_library(
 
 libgvfscommon_dep = declare_dependency(
   sources: dbus_sources[1],
-  link_with: libgvfscommon,
-  include_directories: common_inc
+  include_directories: common_inc,
+  dependencies: deps,
+  link_with: libgvfscommon
 )
 
-deps = glib_deps
+deps = [
+  gio_dep,
+  glib_dep
+]
 
 if enable_bluray
   deps += libbluray_dep
@@ -60,8 +70,9 @@ libgvfscommon_monitor = static_library(
 )
 
 libgvfscommon_monitor_dep = declare_dependency(
-  link_with: libgvfscommon_monitor,
-  include_directories: common_inc
+  include_directories: common_inc,
+  dependencies: gio_dep,
+  link_with: libgvfscommon_monitor
 )
 
 if enable_dnssd
@@ -70,9 +81,11 @@ if enable_dnssd
     'gvfsdnssdutils.c'
   )
 
-  deps = glib_deps + [
+  deps = [
     avahi_client_dep,
-    avahi_glib_dep
+    avahi_glib_dep,
+    gio_dep,
+    glib_dep
   ]
 
   libgvfscommon_dnssd = static_library(
@@ -85,21 +98,28 @@ if enable_dnssd
   )
 
   libgvfscommon_dnssd_dep = declare_dependency(
-    link_with: libgvfscommon_dnssd,
-    include_directories: common_inc
+    include_directories: common_inc,
+    dependencies: gio_dep,
+    link_with: libgvfscommon_dnssd
   )
 endif
 
 if enable_mtp or enable_gphoto2
+  deps = [
+    glib_dep,
+    gudev_dep
+  ]
+
   libgvfscommon_gphoto2 = static_library(
     'gvfscommon-gphoto2',
     sources: 'gvfsgphoto2utils.c',
     include_directories: top_inc,
-    dependencies: gudev_dep
+    dependencies: deps
   )
 
   libgvfscommon_gphoto2_dep = declare_dependency(
-    link_with: libgvfscommon_gphoto2,
-    include_directories: common_inc
+    include_directories: common_inc,
+    dependencies: deps,
+    link_with: libgvfscommon_gphoto2
   )
 endif
diff --git a/daemon/meson.build b/daemon/meson.build
index bf66594..1ecb303 100644
--- a/daemon/meson.build
+++ b/daemon/meson.build
@@ -95,7 +95,10 @@ sources = files(
   'gvfswritechannel.c'
 )
 
-deps = glib_deps + socket_deps + [libgvfscommon_dep]
+deps = socket_deps + [
+  gio_unix_dep,
+  libgvfscommon_dep
+]
 
 if enable_gcr
   deps += gcr_dep
@@ -122,10 +125,10 @@ libgvfsdaemon = shared_library(
 )
 
 libgvfsdaemon_dep = declare_dependency(
-  link_with: libgvfsdaemon,
   include_directories: include_directories('.'),
-  dependencies: deps,
-  compile_args: cflags
+  dependencies: libgvfscommon_dep,
+  compile_args: cflags,
+  link_with: libgvfsdaemon
 )
 
 sources = files(
@@ -220,7 +223,7 @@ cflags = [
   '-DMAX_JOB_THREADS=1'
 ]
 
-programs += [['gvfsd-computer', sources, [], cflags]]
+programs += [['gvfsd-computer', sources, [gio_unix_dep], cflags]]
 mounts += ['computer']
 
 sources = files('gvfsbackendnetwork.c')
@@ -245,7 +248,7 @@ cflags = [
   '-DMAX_JOB_THREADS=1'
 ]
 
-programs += [['gvfsd-burn', sources, [], cflags]]
+programs += [['gvfsd-burn', sources, [gio_unix_dep], cflags]]
 mounts += ['burn']
 
 sources = files(
@@ -253,7 +256,10 @@ sources = files(
   'pty_open.c'
 )
 
-deps = socket_deps + [util_dep]
+deps = socket_deps + [
+  gio_unix_dep,
+  util_dep
+]
 
 cflags = [
   '-DBACKEND_HEADER=gvfsbackendsftp.h',
@@ -420,7 +426,7 @@ if enable_gphoto2
   sources = files('gvfsbackendgphoto2.c')
 
   deps = [
-    gudev_dep,
+    gio_unix_dep,
     libgphoto2_dep,
     libgvfscommon_gphoto2_dep
   ]
@@ -440,7 +446,6 @@ if enable_mtp
   sources = files('gvfsbackendmtp.c')
 
   deps = [
-    gudev_dep,
     libgvfscommon_gphoto2_dep,
     libmtp_dep
   ]
diff --git a/daemon/trashlib/meson.build b/daemon/trashlib/meson.build
index 610bb62..f0735cf 100644
--- a/daemon/trashlib/meson.build
+++ b/daemon/trashlib/meson.build
@@ -6,14 +6,21 @@ sources = files(
   'trashexpunge.c'
 )
 
+deps = [
+  gio_dep,
+  gio_unix_dep,
+  glib_dep
+]
+
 libtrash = static_library(
   'trash',
   sources: sources,
   include_directories: top_inc,
-  dependencies: glib_deps
+  dependencies: deps
 )
 
 libtrash_dep = declare_dependency(
-  link_with: libtrash,
-  include_directories: include_directories('.')
+  include_directories: include_directories('.'),
+  dependencies: gio_dep,
+  link_with: libtrash
 )
diff --git a/meson.build b/meson.build
index c4cf97e..15a78e4 100644
--- a/meson.build
+++ b/meson.build
@@ -226,14 +226,9 @@ ldflag = '-Wl,--version-script'
 have_version_script = host_machine.system().contains('linux') and cc.has_argument(ldflag)
 
 gio_dep = dependency('gio-2.0')
-
-glib_deps = [
-  gio_dep,
-  dependency('gio-unix-2.0'),
-  dependency('glib-2.0', version: '>= 2.51.0'),
-  dependency('gmodule-no-export-2.0'),
-  dependency('gobject-2.0')
-]
+gio_unix_dep = dependency('gio-unix-2.0')
+glib_dep = dependency('glib-2.0', version: '>= 2.51.0')
+gobject_dep = dependency('gobject-2.0')
 
 # *** Check for libXML ***
 libxml_dep = dependency('libxml-2.0', required: false)
diff --git a/metadata/meson.build b/metadata/meson.build
index 9eac076..01fafe6 100644
--- a/metadata/meson.build
+++ b/metadata/meson.build
@@ -47,6 +47,11 @@ sources = files(
   'metatree.c'
 )
 
+deps = [
+  gio_dep,
+  glib_dep
+]
+
 cflags = [
   '-DDBUS_API_SUBJECT_TO_CHANGE',
   '-DG_LOG_DOMAIN="@0@"'.format(gvfs_name.to_upper()),
@@ -57,32 +62,32 @@ libmetadata = static_library(
   'metadata',
   sources: sources + [dbus_sources],
   include_directories: [top_inc, common_inc],
-  dependencies: glib_deps,
+  dependencies: deps + [gio_unix_dep],
   c_args: cflags,
   pic: true
 )
 
 libmetadata_dep = declare_dependency(
   sources: dbus_sources[1],
-  link_with: libmetadata,
   include_directories: include_directories('.'),
-  dependencies: glib_deps
+  dependencies: deps,
+  link_with: libmetadata
 )
 
-metadata_deps = [
-  libmetadata_dep,
-  libgvfscommon_dep
+deps = [
+  libgvfscommon_dep,
+  libmetadata_dep
 ]
 
 if enable_gudev
-  metadata_deps += gudev_dep
+  deps += gudev_dep
 endif
 
 executable(
   'gvfsd-metadata',
   'meta-daemon.c',
   include_directories: top_inc,
-  dependencies: metadata_deps,
+  dependencies: deps,
   c_args: cflags,
   install: true,
   install_rpath: gvfs_rpath,
@@ -103,8 +108,8 @@ if enable_devel_utils
       app + '.c',
       include_directories: top_inc,
       dependencies: [
-        libmetadata_dep,
-        libgvfscommon_dep
+        libgvfscommon_dep,
+        libmetadata_dep
       ],
       c_args: cflags
     )
diff --git a/monitor/afc/meson.build b/monitor/afc/meson.build
index b4735fe..0af5a8d 100644
--- a/monitor/afc/meson.build
+++ b/monitor/afc/meson.build
@@ -42,10 +42,11 @@ sources = files(
   'afcvolumemonitor.c'
 )
 
-deps = glib_deps + [
+deps = [
+  glib_dep,
+  gobject_dep,
   libimobiledevice_dep,
   libplist_dep,
-  libgvfscommon_dep,
   libgvfsproxyvolumemonitordaemon_noin_dep
 ]
 
diff --git a/monitor/gdu/meson.build b/monitor/gdu/meson.build
index 7713998..0850d11 100644
--- a/monitor/gdu/meson.build
+++ b/monitor/gdu/meson.build
@@ -44,9 +44,11 @@ sources = files(
   'ggduvolumemonitor.c'
 )
 
-deps = glib_deps + [
+deps = [
   gdu_dep,
-  libgvfscommon_dep,
+  gio_unix_dep,
+  glib_dep,
+  gobject_dep,
   libgvfscommon_monitor_dep,
   libgvfsproxyvolumemonitordaemon_noin_dep
 ]
diff --git a/monitor/goa/meson.build b/monitor/goa/meson.build
index da06308..7be878a 100644
--- a/monitor/goa/meson.build
+++ b/monitor/goa/meson.build
@@ -40,9 +40,10 @@ sources = files(
   'goavolumemonitor.c'
 )
 
-deps = glib_deps + [
+deps = [
+  glib_dep,
   goa_dep,
-  libgvfscommon_dep,
+  gobject_dep,
   libgvfsproxyvolumemonitordaemon_noin_dep
 ]
 
diff --git a/monitor/gphoto2/meson.build b/monitor/gphoto2/meson.build
index e5527c3..c3f4c78 100644
--- a/monitor/gphoto2/meson.build
+++ b/monitor/gphoto2/meson.build
@@ -43,10 +43,10 @@ sources = files(
   'ggphoto2volumemonitor.c'
 )
 
-deps = glib_deps + [
+deps = [
+  gio_unix_dep,
+  gobject_dep,
   libgphoto2_dep,
-  gudev_dep,
-  libgvfscommon_dep,
   libgvfscommon_gphoto2_dep,
   libgvfsproxyvolumemonitordaemon_noin_dep
 ]
diff --git a/monitor/mtp/meson.build b/monitor/mtp/meson.build
index d7879bc..77f47a1 100644
--- a/monitor/mtp/meson.build
+++ b/monitor/mtp/meson.build
@@ -40,9 +40,9 @@ sources = files(
   'gmtpvolumemonitor.c'
 )
 
-deps = glib_deps + [
-  gudev_dep,
-  libgvfscommon_dep,
+deps = [
+  gio_unix_dep,
+  gobject_dep,
   libgvfscommon_gphoto2_dep,
   libgvfsproxyvolumemonitordaemon_noin_dep
 ]
diff --git a/monitor/proxy/meson.build b/monitor/proxy/meson.build
index b728eb8..39a1caa 100644
--- a/monitor/proxy/meson.build
+++ b/monitor/proxy/meson.build
@@ -15,7 +15,10 @@ sources = files(
   'gproxyvolumemonitor.c'
 )
 
-deps = glib_deps + [libgvfscommon_dep]
+deps = [
+  gio_unix_dep,
+  libgvfscommon_dep
+]
 
 cflags = [
   '-DG_LOG_DOMAIN="GVFS-RemoteVolumeMonitor"',
@@ -46,6 +49,12 @@ libgioremove_volume_monitor = shared_module(
 
 sources = files('gvfsproxyvolumemonitordaemon.c')
 
+deps = [
+  gio_dep,
+  gio_unix_dep,
+  glib_dep
+]
+
 cflags = [
   '-DG_LOG_DOMAIN="GVFS-RemoteVolumeMonitorDaemon"',
   '-DGVFS_LOCALEDIR="@0@"'.format(gvfs_localedir)
@@ -60,6 +69,7 @@ libgvfsproxyvolumemonitordaemon_noin = static_library(
 )
 
 libgvfsproxyvolumemonitordaemon_noin_dep = declare_dependency(
-  link_with: libgvfsproxyvolumemonitordaemon_noin,
-  include_directories: include_directories('.')
+  include_directories: include_directories('.'),
+  dependencies: gio_dep,
+  link_with: libgvfsproxyvolumemonitordaemon_noin
 )
diff --git a/monitor/udisks2/meson.build b/monitor/udisks2/meson.build
index bd9a359..d16339b 100644
--- a/monitor/udisks2/meson.build
+++ b/monitor/udisks2/meson.build
@@ -45,12 +45,14 @@ sources = files(
   'gvfsudisks2volumemonitor.c'
 )
 
-deps = glib_deps + [
-  udisks2_dep,
+deps = [
+  gio_unix_dep,
+  glib_dep,
+  gobject_dep,
   gudev_dep,
-  libgvfscommon_dep,
   libgvfscommon_monitor_dep,
-  libgvfsproxyvolumemonitordaemon_noin_dep
+  libgvfsproxyvolumemonitordaemon_noin_dep,
+  udisks2_dep
 ]
 
 if enable_logind
diff --git a/test/meson.build b/test/meson.build
index f323c1b..b6e23dd 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -68,12 +68,17 @@ if enable_devel_utils
     'test-query-info-stream'
   ]
 
+  deps = [
+    gio_dep,
+    glib_dep
+  ]
+
   foreach test: tests
     executable(
       test,
       test + '.c',
       include_directories: top_inc,
-      dependencies: glib_deps
+      dependencies: deps
     )
   endforeach
 endif


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