diff options
| author | Ross Burton <ross.burton@intel.com> | 2014-04-01 17:23:36 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-04-01 23:39:14 +0100 |
| commit | 41f2f8ee89c372a09c0a207e1552adbd77e27e01 (patch) | |
| tree | c9fe103a6ef1f7ce89e515e2ddedf51b9b3a06c3 | |
| parent | a684808899899e88a869639ebda114a86c7358cb (diff) | |
| download | poky-41f2f8ee89c372a09c0a207e1552adbd77e27e01.tar.gz | |
gdk-pixbuf: add an option so that loader errors are fatal
So that gdk-pixbuf-query-loader failures can be identified as such (and executed
later, or run on the target) add a magic environment variable return loader
failures from main().
(From OE-Core rev: 8995c2cbb7a08c569d3e554b65f2bc3cc1682e2a)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/fatal-loader.patch | 79 | ||||
| -rw-r--r-- | meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.30.3.bb | 1 |
2 files changed, 80 insertions, 0 deletions
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/fatal-loader.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/fatal-loader.patch new file mode 100644 index 0000000000..70146c6181 --- /dev/null +++ b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/fatal-loader.patch | |||
| @@ -0,0 +1,79 @@ | |||
| 1 | If an environment variable is specified set the return value from main() to | ||
| 2 | non-zero if the loader had errors (missing libraries, generally). | ||
| 3 | |||
| 4 | Upstream-Status: Pending | ||
| 5 | Signed-off-by: Ross Burton <ross.burton@intel.com> | ||
| 6 | |||
| 7 | diff --git a/gdk-pixbuf/queryloaders.c b/gdk-pixbuf/queryloaders.c | ||
| 8 | index a9ca015..395674a 100644 | ||
| 9 | --- a/gdk-pixbuf/queryloaders.c | ||
| 10 | +++ b/gdk-pixbuf/queryloaders.c | ||
| 11 | @@ -146,7 +146,7 @@ write_loader_info (GString *contents, const char *path, GdkPixbufFormat *info) | ||
| 12 | g_string_append_c (contents, '\n'); | ||
| 13 | } | ||
| 14 | |||
| 15 | -static void | ||
| 16 | +static gboolean | ||
| 17 | query_module (GString *contents, const char *dir, const char *file) | ||
| 18 | { | ||
| 19 | char *path; | ||
| 20 | @@ -155,6 +155,7 @@ query_module (GString *contents, const char *dir, const char *file) | ||
| 21 | void (*fill_vtable) (GdkPixbufModule *module); | ||
| 22 | gpointer fill_info_ptr; | ||
| 23 | gpointer fill_vtable_ptr; | ||
| 24 | + gboolean ret = TRUE; | ||
| 25 | |||
| 26 | if (g_path_is_absolute (file)) | ||
| 27 | path = g_strdup (file); | ||
| 28 | @@ -204,10 +205,13 @@ query_module (GString *contents, const char *dir, const char *file) | ||
| 29 | g_module_error()); | ||
| 30 | else | ||
| 31 | g_fprintf (stderr, "Cannot load loader %s\n", path); | ||
| 32 | + ret = FALSE; | ||
| 33 | } | ||
| 34 | if (module) | ||
| 35 | g_module_close (module); | ||
| 36 | g_free (path); | ||
| 37 | + | ||
| 38 | + return ret; | ||
| 39 | } | ||
| 40 | |||
| 41 | #ifdef G_OS_WIN32 | ||
| 42 | @@ -257,6 +261,7 @@ int main (int argc, char **argv) | ||
| 43 | GString *contents; | ||
| 44 | gchar *cache_file = NULL; | ||
| 45 | gint first_file = 1; | ||
| 46 | + gboolean success = TRUE; | ||
| 47 | |||
| 48 | #ifdef G_OS_WIN32 | ||
| 49 | gchar *libdir; | ||
| 50 | @@ -360,7 +365,8 @@ int main (int argc, char **argv) | ||
| 51 | gint len = strlen (dent); | ||
| 52 | if (len > SOEXT_LEN && | ||
| 53 | strcmp (dent + len - SOEXT_LEN, SOEXT) == 0) { | ||
| 54 | - query_module (contents, path, dent); | ||
| 55 | + if (!query_module (contents, path, dent)) | ||
| 56 | + success = FALSE; | ||
| 57 | } | ||
| 58 | } | ||
| 59 | g_dir_close (dir); | ||
| 60 | @@ -378,7 +384,8 @@ int main (int argc, char **argv) | ||
| 61 | infilename = g_locale_to_utf8 (infilename, | ||
| 62 | -1, NULL, NULL, NULL); | ||
| 63 | #endif | ||
| 64 | - query_module (contents, cwd, infilename); | ||
| 65 | + if (!query_module (contents, cwd, infilename)) | ||
| 66 | + success = FALSE; | ||
| 67 | } | ||
| 68 | g_free (cwd); | ||
| 69 | } | ||
| 70 | @@ -394,5 +401,8 @@ int main (int argc, char **argv) | ||
| 71 | else | ||
| 72 | g_print ("%s\n", contents->str); | ||
| 73 | |||
| 74 | - return 0; | ||
| 75 | + if (g_getenv ("GDK_PIXBUF_FATAL_LOADER")) | ||
| 76 | + return success ? 0 : 1; | ||
| 77 | + else | ||
| 78 | + return 0; | ||
| 79 | } | ||
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.30.3.bb b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.30.3.bb index 85a7b439de..50e54d8eab 100644 --- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.30.3.bb +++ b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.30.3.bb | |||
| @@ -18,6 +18,7 @@ SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \ | |||
| 18 | file://extending-libinstall-dependencies.patch \ | 18 | file://extending-libinstall-dependencies.patch \ |
| 19 | file://run-ptest \ | 19 | file://run-ptest \ |
| 20 | file://tests-check.patch \ | 20 | file://tests-check.patch \ |
| 21 | file://fatal-loader.patch \ | ||
| 21 | " | 22 | " |
| 22 | 23 | ||
| 23 | SRC_URI[md5sum] = "81161cc895eb43afd9ae7354b87e2261" | 24 | SRC_URI[md5sum] = "81161cc895eb43afd9ae7354b87e2261" |
