summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2016-06-03 23:20:36 -0300
committerColin Walters <walters@verbum.org>2016-06-04 08:24:22 -0400
commit5411a187a38308c17a78ceeb6c2f08d289fa5db5 (patch)
treec805449dea7e25f0c58fd066d2f03d1ab7c4ece4
parent05d429af9d6e99b598e47b64b2bf7a3d0a9f57f5 (diff)
downloadglib-5411a187a38308c17a78ceeb6c2f08d289fa5db5.tar.gz
glib-compile-resources: correct resource compiler dependency for generated files
Don't require that files can be resolved when generating dependencies. Original patch by Garret Regier. https://bugzilla.gnome.org/show_bug.cgi?id=673101
-rw-r--r--gio/glib-compile-resources.c11
-rw-r--r--gio/tests/.gitignore1
-rw-r--r--gio/tests/Makefile.am6
-rw-r--r--gio/tests/test.gresource.xml1
4 files changed, 14 insertions, 5 deletions
diff --git a/gio/glib-compile-resources.c b/gio/glib-compile-resources.c
index e1223d6a8..bc38b56c4 100644
--- a/gio/glib-compile-resources.c
+++ b/gio/glib-compile-resources.c
@@ -214,7 +214,8 @@ end_element (GMarkupParseContext *context,
else if (strcmp (element_name, "file") == 0)
{
- gchar *file, *real_file;
+ gchar *file;
+ gchar *real_file = NULL;
gchar *key;
FileData *data = NULL;
char *tmp_file = NULL;
@@ -241,7 +242,7 @@ end_element (GMarkupParseContext *context,
if (sourcedirs != NULL)
{
real_file = find_file (file);
- if (real_file == NULL)
+ if (real_file == NULL && state->collect_data)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
_("Failed to locate '%s' in any source directory"), file);
@@ -252,15 +253,17 @@ end_element (GMarkupParseContext *context,
{
gboolean exists;
exists = g_file_test (file, G_FILE_TEST_EXISTS);
- if (!exists)
+ if (!exists && state->collect_data)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
_("Failed to locate '%s' in current directory"), file);
return;
}
- real_file = g_strdup (file);
}
+ if (real_file == NULL)
+ real_file = g_strdup (file);
+
data = g_new0 (FileData, 1);
data->filename = g_strdup (real_file);
if (!state->collect_data)
diff --git a/gio/tests/.gitignore b/gio/tests/.gitignore
index fc7676d1b..31147909c 100644
--- a/gio/tests/.gitignore
+++ b/gio/tests/.gitignore
@@ -126,6 +126,7 @@ socket-service
socket-server
srvtarget
task
+test-generated.txt
test.gresource
test.mo
test_resources.c
diff --git a/gio/tests/Makefile.am b/gio/tests/Makefile.am
index 29c7e47c3..89730bfe9 100644
--- a/gio/tests/Makefile.am
+++ b/gio/tests/Makefile.am
@@ -534,6 +534,10 @@ endif
glib_compile_resources=$(top_builddir)/gio/glib-compile-resources
+test-generated.txt: test1.txt
+ $(AM_V_GEN) echo "Generated" > $@ && \
+ cat $< >> $@
+
resources.o: test_resources2.h
test_resources.c: test2.gresource.xml Makefile $(shell $(glib_compile_resources) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/test2.gresource.xml)
$(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name _g_test1 $<
@@ -548,7 +552,7 @@ test.gresource: test.gresource.xml Makefile $(shell $(glib_compile_resources) --
$(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) $<
EXTRA_DIST += test.gresource.xml test1.txt test2.gresource.xml test2.txt test3.gresource.xml test3.txt test4.gresource.xml
-CLEANFILES += test_resources.c test_resources2.[ch] plugin_resources.c test.gresource
+CLEANFILES += test-generated.txt test_resources.c test_resources2.[ch] plugin_resources.c test.gresource
endif # !CROSS_COMPILING
BUILT_SOURCES += giotypefuncs.c
diff --git a/gio/tests/test.gresource.xml b/gio/tests/test.gresource.xml
index 15361e62d..dd08aa006 100644
--- a/gio/tests/test.gresource.xml
+++ b/gio/tests/test.gresource.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource>
+ <file >test-generated.txt</file>
<file compressed="true">test1.txt</file>
<file preprocess="xml-stripblanks">test.gresource.xml</file>
</gresource>