Added simple gsettings schema compiler to gnome module.

pull/54/merge
Jussi Pakkanen 10 years ago
parent d2cb344c91
commit 8ae740bb83
  1. 19
      modules/gnome.py
  2. 12
      test cases/frameworks/7 gnome/com.github.meson.gschema.xml
  3. 3
      test cases/frameworks/7 gnome/installed_files.txt
  4. 8
      test cases/frameworks/7 gnome/meson.build
  5. 47
      test cases/frameworks/7 gnome/schemaprog.c

@ -19,6 +19,7 @@ import build
import os
import subprocess
from coredata import MesonException
import mlog
class GnomeModule:
@ -72,5 +73,23 @@ class GnomeModule:
typelib_target = build.CustomTarget(typelib_name, state.subdir, kwargs)
return [scan_target, typelib_target]
def compile_schemas(self, state, args, kwargs):
if len(args) != 0:
raise MesonException('Compile_schemas does not take positional arguments.')
srcdir = os.path.join(state.build_to_src, state.subdir)
outdir = state.subdir
cmd = ['glib-compile-schemas', '--targetdir', outdir, srcdir]
kwargs['command'] = cmd
kwargs['input'] = []
kwargs['output'] = 'gschemas.compiled'
if state.subdir == '':
targetname = 'gsettings-compile'
else:
targetname = 'gsettings-compile-' + state.subdir
target_g = build.CustomTarget(targetname, state.subdir, kwargs)
return target_g
def initialize():
mlog.log('Warning, glib compiled dependencies will not work until this upstream issue is fixed:',
mlog.bold('https://bugzilla.gnome.org/show_bug.cgi?id=745754'))
return GnomeModule()

@ -0,0 +1,12 @@
<schemalist>
<schema id="com.github.meson" path="/com/github/meson/" gettext-domain="test">
<key name="greeting" type="s">
<default l10n="messages">"Hello"</default>
<summary>A greeting</summary>
<description>
Sample text to test schema compilation
</description>
</key>
</schema>
</schemalist>

@ -1 +1,2 @@
usr/typelibdir/Meson-1.0.typelib
usr/typelibdir/Meson-1.0.typelib
usr/share/glib-2.0/schemas/com.github.meson.gschema.xml

@ -29,3 +29,11 @@ install_dir : 'typelibdir',
)
test('gobject introspection', girexe)
gnome.compile_schemas()
install_data('com.github.meson.gschema.xml',
install_dir : 'share/glib-2.0/schemas')
schemaexe = executable('schemaprog', 'schemaprog.c',
dependencies : gio)
test('schema test', schemaexe)

@ -0,0 +1,47 @@
#include<gio/gio.h>
#include<stdio.h>
#include<string.h>
int main(int argc, char **argv) {
GSettingsSchemaSource *src;
GSettingsSchema *schema;
GSettings *settings;
GVariant *value;
GError *error = NULL;
src = g_settings_schema_source_new_from_directory(".",
g_settings_schema_source_get_default(), TRUE, &error);
if(error) {
fprintf(stderr, "Fail: %s\n", error->message);
g_error_free(error);
return 1;
}
schema = g_settings_schema_source_lookup(src, "com.github.meson", FALSE);
if(!schema) {
fprintf(stderr, "Could not get schema from source.\n");
return 2;
}
settings = g_settings_new_full(schema, NULL, NULL);
if(!settings) {
fprintf(stderr, "Could not get settings object.\n");
return 3;
}
value = g_settings_get_value(settings, "greeting");
if(!value) {
fprintf(stderr, "Could not get value from settings.\n");
return 4;
}
if(strcmp("Hello", g_variant_get_string(value, NULL)) != 0) {
fprintf(stderr, "Value of setting is incorrect.\n");
return 5;
}
g_variant_unref(value);
g_object_unref(settings);
g_settings_schema_unref(schema);
g_settings_schema_source_unref(src);
return 0;
}
Loading…
Cancel
Save