From aebbd94f75f63c25e7068b665f4354c79507638a Mon Sep 17 00:00:00 2001 From: Derek Straka Date: Fri, 6 May 2016 13:29:26 -0400 Subject: tracker: add a patch to support giflib 5 Signed-off-by: Derek Straka Signed-off-by: Martin Jansa --- .../tracker/tracker-0.14.2/giflib5-support.patch | 126 +++++++++++++++++++++ .../recipes-support/tracker/tracker_0.14.2.bb | 3 +- 2 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 meta-gnome/recipes-support/tracker/tracker-0.14.2/giflib5-support.patch diff --git a/meta-gnome/recipes-support/tracker/tracker-0.14.2/giflib5-support.patch b/meta-gnome/recipes-support/tracker/tracker-0.14.2/giflib5-support.patch new file mode 100644 index 0000000000..fab3371f0f --- /dev/null +++ b/meta-gnome/recipes-support/tracker/tracker-0.14.2/giflib5-support.patch @@ -0,0 +1,126 @@ + src/tracker-extract/tracker-extract-gif.c | 36 +++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) +--- a/src/tracker-extract/tracker-extract-gif.c ++++ a/src/tracker-extract/tracker-extract-gif.c +@@ -75,6 +75,39 @@ + return (GIF_OK); + } + ++#if GIFLIB_MAJOR >= 5 ++static inline void ++gif_error (const gchar *action, int err) ++{ ++ const char *str = GifErrorString (err); ++ if (str != NULL) { ++ g_message ("%s, error: '%s'", action, str); ++ } else { ++ g_message ("%s, undefined error %d", action, err); ++ } ++} ++#else /* GIFLIB_MAJOR >= 5 */ ++static inline void print_gif_error() ++{ ++#if defined(GIFLIB_MAJOR) && defined(GIFLIB_MINOR) && ((GIFLIB_MAJOR == 4 && GIFLIB_MINOR >= 2) || GIFLIB_MAJOR > 4) ++ const char *str = GifErrorString (); ++ if (str != NULL) { ++ g_message ("GIF, error: '%s'", str); ++ } else { ++ g_message ("GIF, undefined error"); ++ } ++#else ++ PrintGifError(); ++#endif ++} ++#endif /* GIFLIB_MAJOR >= 5 */ ++ ++/* giflib 5.1 changed the API of DGifCloseFile to take two arguments */ ++#if !defined(GIFLIB_MAJOR) || \ ++ !(GIFLIB_MAJOR > 5 || (GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1)) ++#define DGifCloseFile(a, b) DGifCloseFile(a) ++#endif ++ + static void + read_metadata (TrackerSparqlBuilder *preupdate, + TrackerSparqlBuilder *metadata, +@@ -100,14 +133,22 @@ + ExtBlock extBlock; + + if (DGifGetRecordType(gifFile, &RecordType) == GIF_ERROR) { +- PrintGifError(); ++#if GIFLIB_MAJOR < 5 ++ print_gif_error (); ++#else /* GIFLIB_MAJOR < 5 */ ++ gif_error ("Could not read next GIF record type", gifFile->Error); ++#endif /* GIFLIB_MAJOR < 5 */ + return; + } + + switch (RecordType) { + case IMAGE_DESC_RECORD_TYPE: + if (DGifGetImageDesc(gifFile) == GIF_ERROR) { +- PrintGifError(); ++#if GIFLIB_MAJOR < 5 ++ print_gif_error(); ++#else /* GIFLIB_MAJOR < 5 */ ++ gif_error ("Could not get GIF record information", gifFile->Error); ++#endif /* GIFLIB_MAJOR < 5 */ + return; + } + +@@ -117,7 +158,11 @@ + framedata = g_malloc (framewidth*frameheight); + + if (DGifGetLine(gifFile, framedata, framewidth*frameheight)==GIF_ERROR) { +- PrintGifError(); ++#if GIFLIB_MAJOR < 5 ++ print_gif_error(); ++#else /* GIFLIB_MAJOR < 5 */ ++ gif_error ("Could not load a block of GIF pixes", gifFile->Error); ++#endif /* GIFLIB_MAJOR < 5 */ + return; + } + +@@ -593,6 +638,9 @@ + gchar *filename, *uri; + GFile *file; + int fd; ++#if GIFLIB_MAJOR >= 5 ++ int err; ++#endif + + preupdate = tracker_extract_info_get_preupdate_builder (info); + metadata = tracker_extract_info_get_metadata_builder (info); +@@ -617,8 +665,14 @@ + return FALSE; + } + ++#if GIFLIB_MAJOR < 5 + if ((gifFile = DGifOpenFileHandle (fd)) == NULL) { +- PrintGifError (); ++ print_gif_error (); ++#else /* GIFLIB_MAJOR < 5 */ ++ if ((gifFile = DGifOpenFileHandle (fd, &err)) == NULL) { ++ gif_error ("Could not open GIF file with handle", err); ++#endif /* GIFLIB_MAJOR < 5 */ ++ g_free (filename); + close (fd); + return FALSE; + } +@@ -637,10 +691,15 @@ + g_string_free (where, TRUE); + + g_free (uri); +- ++#if GIFLIB_MAJOR < 5 + if (DGifCloseFile (gifFile) != GIF_OK) { +- PrintGifError (); ++ print_gif_error (); ++ } ++#else /* GIFLIB_MAJOR < 5 */ ++ if (DGifCloseFile (gifFile, NULL) != GIF_OK) { ++ gif_error ("Could not close GIF file", gifFile->Error); + } ++#endif /* GIFLIB_MAJOR < 5 */ + + return TRUE; + } diff --git a/meta-gnome/recipes-support/tracker/tracker_0.14.2.bb b/meta-gnome/recipes-support/tracker/tracker_0.14.2.bb index c52d95e976..fa7fcd5574 100644 --- a/meta-gnome/recipes-support/tracker/tracker_0.14.2.bb +++ b/meta-gnome/recipes-support/tracker/tracker_0.14.2.bb @@ -13,7 +13,8 @@ inherit autotools pkgconfig gnomebase gettext gsettings systemd gobject-introspe VER_DIR = "${@gnome_verdir("${PV}")}" SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/tracker/${VER_DIR}/tracker-${PV}.tar.xz \ file://enable-sqlite-crosscompile.patch \ - file://fix-removable-media-detection.patch \ + file://fix-removable-media-detection.patch \ + file://giflib5-support.patch \ file://90tracker \ file://tracker-store.service \ file://tracker-miner-fs.service \ -- cgit 1.2.3-korg