summaryrefslogtreecommitdiff
path: root/app-misc/tracker-miners/files/2.1.5-meson-fixes.patch
blob: c8a3e6358df86f38210244806c90771e67c48c7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
From 5bb0709044fabe496601277ab5ba11a03500babe Mon Sep 17 00:00:00 2001
From: Mart Raudsepp <leio@gentoo.org>
Date: Fri, 15 Feb 2019 00:15:08 +0200
Subject: [PATCH 1/5] build: Add feature options for all external deps

Automagic dependencies are bad for distributions. Add feature options
for all of them that didn't have it before. If no options are specified,
the behavior matches with before, but now it's possible to specify
exactly what is linked to and what isn't.

Fixes: #39
---
 meson.build       | 40 +++++++++++++++++++++-------------------
 meson_options.txt | 37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 58 insertions(+), 19 deletions(-)

diff --git a/meson.build b/meson.build
index fd536f2e6..4f0e9a968 100644
--- a/meson.build
+++ b/meson.build
@@ -1,4 +1,6 @@
-project('tracker-miners', 'c', 'vala', version: '2.1.5')
+project('tracker-miners', 'c', 'vala',
+        version: '2.1.5',
+        meson_version: '>=0.47')
 
 gnome = import('gnome')
 i18n = import('i18n')
@@ -57,9 +59,9 @@ avcodec = dependency('libavcodec', version: '>= 0.8.4', required: false)
 avformat = dependency('libavformat', version: '>= 0.8.4', required: false)
 avutil = dependency('libavutil', version: '>= 0.8.4', required: false)
 dbus = dependency('dbus-1', version: '> 1.3.1')
-exempi = dependency('exempi-2.0', version: '> 2.1.0', required: false)
-flac = dependency('flac', version: '> 1.2.1', required: false)
-gexiv2 = dependency('gexiv2', required: false)
+exempi = dependency('exempi-2.0', version: '> 2.1.0', required: get_option('xmp'))
+flac = dependency('flac', version: '> 1.2.1', required: get_option('flac'))
+gexiv2 = dependency('gexiv2', required: get_option('raw'))
 gio = dependency('gio-2.0', version: '>' + glib_required)
 gio_unix = dependency('gio-unix-2.0', version: '>' + glib_required)
 glib = dependency('glib-2.0', version: '>' + glib_required)
@@ -72,25 +74,25 @@ gupnp_dlna = dependency('gupnp-dlna-2.0', version: '> 0.9.4', required: false)
 gupnp_dlna_gst = dependency('gupnp-dlna-gst-2.0', version: '> 0.9.4', required: false)
 icu_i18n = dependency('icu-i18n', version: '> 4.8.1.1', required: false)
 icu_uc = dependency('icu-uc', version: '> 4.8.1.1', required: false)
-libcue = dependency('libcue', required: false)
-libexif = dependency('libexif', version: '> 0.6', required: false)
-libgsf = dependency('libgsf-1', version: '> 1.14.24', required: false)
-libgxps = dependency('libgxps', required: false)
-libiptcdata = dependency('libiptcdata', required: false)
-libjpeg = dependency('libjpeg', required: false)
-libosinfo = dependency('libosinfo-1.0', version: '> 0.2.9', required: false)
-libpng = dependency('libpng', version: '> 0.89', required: false)
+libcue = dependency('libcue', required: get_option('cue'))
+libexif = dependency('libexif', version: '> 0.6', required: get_option('exif'))
+libgsf = dependency('libgsf-1', version: '> 1.14.24', required: get_option('gsf'))
+libgxps = dependency('libgxps', required: get_option('xps'))
+libiptcdata = dependency('libiptcdata', required: get_option('iptc'))
+libjpeg = dependency('libjpeg', required: get_option('jpeg'))
+libosinfo = dependency('libosinfo-1.0', version: '> 0.2.9', required: get_option('iso'))
+libpng = dependency('libpng', version: '> 0.89', required: get_option('png'))
 libseccomp = dependency('libseccomp', version: '>= 2.0', required: false)
-libtiff = dependency('libtiff-4', required: false)
-libxml2 = dependency('libxml-2.0', version: '> 2.6')
-libvorbis = dependency('vorbisfile', version: '> 0.22')
-poppler = dependency('poppler-glib', version: '> 0.16.0', required: false)
-taglib = dependency('taglib_c', version: '> 1.6', required: false)
-totem_plparser = dependency('totem-plparser', required: false)
+libtiff = dependency('libtiff-4', required: get_option('tiff'))
+libxml2 = dependency('libxml-2.0', version: '> 2.6', required: get_option('xml'))
+libvorbis = dependency('vorbisfile', version: '> 0.22', required: get_option('vorbis'))
+poppler = dependency('poppler-glib', version: '> 0.16.0', required: get_option('pdf'))
+taglib = dependency('taglib_c', version: '> 1.6', required: get_option('taglib'))
+totem_plparser = dependency('totem-plparser', required: get_option('playlist'))
 upower = dependency('upower-glib', version: '> 0.9.0', required: false)
 zlib = dependency('zlib')
 
-libgif = cc.find_library('gif', required: false)
+libgif = cc.find_library('gif', required: get_option('gif'))
 libmath = cc.find_library('m', required: false)
 
 # FIXME: here we work around a quirk todo with Meson and Vala: the 'uuid'
diff --git a/meson_options.txt b/meson_options.txt
index a91ac6c0f..5fce7a529 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -35,6 +35,43 @@ option('text', type: 'boolean', value: 'true',
 option('unzip_ps_gz_files', type: 'boolean', value: 'true',
        description: 'Enable extractor for PS.GZ metadata')
 
+option('cue', type: 'feature', value: 'auto',
+       description: 'Support cue sheet parsing')
+option('exif', type: 'feature', value: 'auto',
+       description: 'Support EXIF metadata')
+option('flac', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from Flac audio')
+option('gif', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from GIF images')
+option('gsf', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from MS & Open Office documents')
+option('iptc', type: 'feature', value: 'auto',
+       description: 'Support IPTC photo metadata')
+option('iso', type: 'feature', value: 'auto',
+       description: 'Support ISO image parsing')
+option('jpeg', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from JPEG images')
+option('pdf', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from PDF documents')
+option('playlist', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from playlists (w/ Totem)')
+option('png', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from PNG images')
+option('raw', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from RAW photos')
+option('taglib', type: 'feature', value: 'auto',
+       description: 'Support writeback for audio files using Taglib')
+option('tiff', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from TIFF images')
+option('vorbis', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from Vorbis (ogg/etc) files')
+option('xml', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from XML and HTML documents')
+option('xmp', type: 'feature', value: 'auto',
+       description: 'Support XMP metadata')
+option('xps', type: 'feature', value: 'auto',
+       description: 'Support extracting metadata from XPS documents')
+
 option('battery_detection', type: 'combo', choices: ['auto', 'hal', 'upower', 'none'], value: 'auto',
        description: 'Enable upower or HAL for battery/mains power detection')
 option('charset_detection', type: 'combo', choices: ['auto', 'enca', 'icu', 'none'], value: 'auto',
-- 
2.17.0


From b8c1768696c13275f5896374907fa192140ec922 Mon Sep 17 00:00:00 2001
From: Mart Raudsepp <leio@gentoo.org>
Date: Fri, 15 Feb 2019 00:18:09 +0200
Subject: [PATCH 2/5] build: Fix minimum dep checks to allow the specified
 version too

Many of the minimum deps were expressed as "> x.y", but were meant to
allow x.y itself as well. Change all to ">= x.y". This seems to be
what was intended and was the case with autotools.
---
 meson.build | 44 ++++++++++++++++++++++----------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/meson.build b/meson.build
index 4f0e9a968..4263faf95 100644
--- a/meson.build
+++ b/meson.build
@@ -58,38 +58,38 @@ endif
 avcodec = dependency('libavcodec', version: '>= 0.8.4', required: false)
 avformat = dependency('libavformat', version: '>= 0.8.4', required: false)
 avutil = dependency('libavutil', version: '>= 0.8.4', required: false)
-dbus = dependency('dbus-1', version: '> 1.3.1')
-exempi = dependency('exempi-2.0', version: '> 2.1.0', required: get_option('xmp'))
-flac = dependency('flac', version: '> 1.2.1', required: get_option('flac'))
+dbus = dependency('dbus-1', version: '>= 1.3.1')
+exempi = dependency('exempi-2.0', version: '>= 2.1.0', required: get_option('xmp'))
+flac = dependency('flac', version: '>= 1.2.1', required: get_option('flac'))
 gexiv2 = dependency('gexiv2', required: get_option('raw'))
-gio = dependency('gio-2.0', version: '>' + glib_required)
-gio_unix = dependency('gio-unix-2.0', version: '>' + glib_required)
-glib = dependency('glib-2.0', version: '>' + glib_required)
-gmodule = dependency('gmodule-2.0', version: '>' + glib_required)
-gobject = dependency('gobject-2.0', version: '>' + glib_required)
+gio = dependency('gio-2.0', version: '>=' + glib_required)
+gio_unix = dependency('gio-unix-2.0', version: '>=' + glib_required)
+glib = dependency('glib-2.0', version: '>=' + glib_required)
+gmodule = dependency('gmodule-2.0', version: '>=' + glib_required)
+gobject = dependency('gobject-2.0', version: '>=' + glib_required)
 gstreamer = dependency('gstreamer-1.0', required: false)
 gstreamer_pbutils = dependency('gstreamer-pbutils-1.0', required: false)
 gstreamer_tag = dependency('gstreamer-tag-1.0', required: false)
-gupnp_dlna = dependency('gupnp-dlna-2.0', version: '> 0.9.4', required: false)
-gupnp_dlna_gst = dependency('gupnp-dlna-gst-2.0', version: '> 0.9.4', required: false)
-icu_i18n = dependency('icu-i18n', version: '> 4.8.1.1', required: false)
-icu_uc = dependency('icu-uc', version: '> 4.8.1.1', required: false)
+gupnp_dlna = dependency('gupnp-dlna-2.0', version: '>= 0.9.4', required: false)
+gupnp_dlna_gst = dependency('gupnp-dlna-gst-2.0', version: '>= 0.9.4', required: false)
+icu_i18n = dependency('icu-i18n', version: '>= 4.8.1.1', required: false)
+icu_uc = dependency('icu-uc', version: '>= 4.8.1.1', required: false)
 libcue = dependency('libcue', required: get_option('cue'))
-libexif = dependency('libexif', version: '> 0.6', required: get_option('exif'))
-libgsf = dependency('libgsf-1', version: '> 1.14.24', required: get_option('gsf'))
+libexif = dependency('libexif', version: '>= 0.6', required: get_option('exif'))
+libgsf = dependency('libgsf-1', version: '>= 1.14.24', required: get_option('gsf'))
 libgxps = dependency('libgxps', required: get_option('xps'))
 libiptcdata = dependency('libiptcdata', required: get_option('iptc'))
 libjpeg = dependency('libjpeg', required: get_option('jpeg'))
-libosinfo = dependency('libosinfo-1.0', version: '> 0.2.9', required: get_option('iso'))
-libpng = dependency('libpng', version: '> 0.89', required: get_option('png'))
+libosinfo = dependency('libosinfo-1.0', version: '>= 0.2.9', required: get_option('iso'))
+libpng = dependency('libpng', version: '>= 0.89', required: get_option('png'))
 libseccomp = dependency('libseccomp', version: '>= 2.0', required: false)
 libtiff = dependency('libtiff-4', required: get_option('tiff'))
-libxml2 = dependency('libxml-2.0', version: '> 2.6', required: get_option('xml'))
-libvorbis = dependency('vorbisfile', version: '> 0.22', required: get_option('vorbis'))
-poppler = dependency('poppler-glib', version: '> 0.16.0', required: get_option('pdf'))
-taglib = dependency('taglib_c', version: '> 1.6', required: get_option('taglib'))
+libxml2 = dependency('libxml-2.0', version: '>= 2.6', required: get_option('xml'))
+libvorbis = dependency('vorbisfile', version: '>= 0.22', required: get_option('vorbis'))
+poppler = dependency('poppler-glib', version: '>= 0.16.0', required: get_option('pdf'))
+taglib = dependency('taglib_c', version: '>= 1.6', required: get_option('taglib'))
 totem_plparser = dependency('totem-plparser', required: get_option('playlist'))
-upower = dependency('upower-glib', version: '> 0.9.0', required: false)
+upower = dependency('upower-glib', version: '>= 0.9.0', required: false)
 zlib = dependency('zlib')
 
 libgif = cc.find_library('gif', required: get_option('gif'))
@@ -143,7 +143,7 @@ elif get_option('battery_detection') == 'upower'
 endif
 
 if battery_detection_library_name == ''
-  hal = dependency('hal', version: '> 0.5', required: false)
+  hal = dependency('hal', version: '>= 0.5', required: false)
 
   if hal.found()
     battery_detection_library = hal
-- 
2.17.0


From 6a215b9088abb9df4a837c1b74f281454f286ddf Mon Sep 17 00:00:00 2001
From: Mart Raudsepp <leio@gentoo.org>
Date: Fri, 15 Feb 2019 01:11:23 +0200
Subject: [PATCH 3/5] build: Remove unnecessary vala language dependency

tracker-miners doesn't use any vala, but due to vala declared as
a used language it does error out if valac isn't found. Remove the
language and unused vapi helper variable.
---
 meson.build | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/meson.build b/meson.build
index 4263faf95..bfd2d624b 100644
--- a/meson.build
+++ b/meson.build
@@ -1,4 +1,4 @@
-project('tracker-miners', 'c', 'vala',
+project('tracker-miners', 'c',
         version: '2.1.5',
         meson_version: '>=0.47')
 
@@ -385,7 +385,6 @@ tracker_writeback_modules_dir = join_paths(get_option('prefix'), get_option('lib
 tracker_uninstalled_extract_rules_dir = join_paths(meson.current_build_dir(), 'src', 'tracker-extract')
 
 gsettings_schema_dir = join_paths(get_option('prefix'), get_option('datadir'), 'glib-2.0', 'schemas')
-vapi_dir = join_paths(get_option('prefix'), get_option('datadir'), 'vala', 'vapi')
 
 glib_mkenums = find_program('glib-mkenums')
 
-- 
2.17.0


From a163936b590184291c6ac6b8365eb5f7e9bf3474 Mon Sep 17 00:00:00 2001
From: Mart Raudsepp <leio@gentoo.org>
Date: Fri, 15 Feb 2019 01:12:25 +0200
Subject: [PATCH 4/5] build: Remove unnecessary uuid util-linux hard dependency

tracker core might use uuid, but nothing in tracker-miners needs it
---
 meson.build | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/meson.build b/meson.build
index bfd2d624b..8d23a1157 100644
--- a/meson.build
+++ b/meson.build
@@ -95,14 +95,6 @@ zlib = dependency('zlib')
 libgif = cc.find_library('gif', required: get_option('gif'))
 libmath = cc.find_library('m', required: false)
 
-# FIXME: here we work around a quirk todo with Meson and Vala: the 'uuid'
-# pkg-config component corresponds to 'libuuid.vapi', but Meson assumes that
-# .vapi name always matches pkg-config name, and will add `--pkg uuid` to the
-# Vala commandline. By finding 'uuid' using find_library() instead, we get
-# a dependency object back that won't cause any `--pkg` arguments to be added
-# to the Vala commandline, but still works as expected for C code.
-uuid = cc.find_library('uuid')
-
 have_tracker_extract = get_option('extract')
 have_tracker_miner_apps = get_option('miner_apps')
 have_tracker_miner_fs = get_option('miner_fs')
-- 
2.17.0


From cc87c22592868e700333f31f333bf850c89f0135 Mon Sep 17 00:00:00 2001
From: Sam Thursfield <sam@afuera.me.uk>
Date: Sun, 7 Oct 2018 23:42:28 +0200
Subject: [PATCH 5/5] build: Fix breakage when libcue isn't found

Commit 6e281037a5f0abc introduced a regression on systems where libcue
is not available.

Fixes https://gitlab.gnome.org/GNOME/tracker-miners/issues/33

(cherry picked from commit fd0eb3cd98f279591cbe8635eadf42027dd5ddae)
---
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 8d23a1157..d69588435 100644
--- a/meson.build
+++ b/meson.build
@@ -303,7 +303,7 @@ conf.set('GSTREAMER_BACKEND_DISCOVERER', gstreamer_backend_name == 'Discoverer')
 conf.set('GSTREAMER_BACKEND_GUPNP_DLNA', gstreamer_backend_name == 'GUPnP-DLNA')
 conf.set('HAVE_HAL', battery_detection_library_name == 'hal')
 conf.set('HAVE_LIBCUE', libcue.found())
-conf.set('HAVE_LIBCUE2', libcue.version() >= '2.0.0')
+conf.set('HAVE_LIBCUE2', libcue.found() and libcue.version().version_compare('>= 2.0.0'))
 conf.set('HAVE_LIBICU_CHARSET_DETECTION', charset_library_name == 'icu')
 conf.set('HAVE_LIBEXIF', libexif.found())
 conf.set('HAVE_LIBIPTCDATA', libiptcdata.found())
-- 
2.17.0