diff --git a/NEWS b/NEWS index e6a7bc7..38d1a95 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,9 @@ blocaled -------- +xxxx-xx-xx: version 0.8 +* Fix: Bump minimal version of glib to 2.61. Previous versions didn't + define errno (P. Labastie) + 2025-01-03: version 0.7 Bug fix release * fix: Allow running the tests when LANG is set to a non English locale diff --git a/configure.ac b/configure.ac index da66b37..194d79f 100644 --- a/configure.ac +++ b/configure.ac @@ -10,9 +10,9 @@ LT_INIT([disable-static pic-only]) AC_PROG_MKDIR_P PKG_CHECK_MODULES(BLOCALED, - [gio-unix-2.0 >= 2.44 - gio-2.0 >= 2.44 - glib-2.0 >= 2.44 + [gio-unix-2.0 >= 2.61 + gio-2.0 >= 2.61 + glib-2.0 >= 2.61 dbus-1 polkit-gobject-1 libdaemon]) diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 0000000..64b3991 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,47 @@ +man_cfg=configuration_data() +man_cfg.set('sysconfdir',sysconfdir) +blocaled_8=configure_file( + input:'blocaled.8.in', + output:'blocaled.8', + configuration:man_cfg +) +install_man(blocaled_8) + +conf_cfg=configuration_data() +conf_cfg.set('localeconfig',localeconfig) +conf_cfg.set('keyboardconfig',keyboardconfig) +conf_cfg.set('xkbdconfig',xkbdconfig) +blocaled_conf = configure_file( + input: 'blocaled.conf.in', + output: 'blocaled.conf', + configuration:conf_cfg +) +install_data(blocaled_conf, install_dir: sysconfdir) + +serv_cfg=configuration_data() +serv_cfg.set('libexecdir', prefix / get_option('libexecdir')) +service = configure_file( + input: 'org.freedesktop.locale1.service.in', + output: 'org.freedesktop.locale1.service', + configuration:serv_cfg +) +install_data( + service, + install_dir: dbussystemservicesdir, +) +install_data( + 'org.freedesktop.locale1.xml', + install_dir: dbusinterfacesdir, +) +install_data( + 'org.freedesktop.locale1.conf', + install_dir: get_option('sysconfdir') + '/dbus-1/system.d', +) +install_data( + 'org.freedesktop.locale1.policy', + install_dir: polkitactiondir, +) +install_data( + 'kbd-model-map', + install_dir: pkgdatadir, +) diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..851da7e --- /dev/null +++ b/meson.build @@ -0,0 +1,58 @@ +project('blocaled', 'c', version: '0.7') +package_str=meson.project_name()+' '+meson.project_version() +cc=meson.get_compiler('c') + +glib_ver='>=2.61' +dbus_dep=dependency('dbus-1') +polkit_dep=dependency('polkit-gobject-1') +deps= [ + dependency('gio-unix-2.0', version: glib_ver), + dependency('gio-2.0', version: glib_ver), + dependency('glib-2.0', version: glib_ver), + dbus_dep, + polkit_dep, + dependency('libdaemon'), +] + +gnome=import('gnome') + +#Options +prefix=get_option('prefix') +sysconfdir=get_option('sysconfdir') +pidfile=get_option('pidfile') +localeconfig=get_option('localeconfig') +keyboardconfig=get_option('keyboardconfig') +xkbdconfig=get_option('xkbdconfig') +pkgdatadir=prefix / get_option('datadir') / meson.project_name() + +#dbus and polkit directories +dbusinterfacesdir=dbus_dep.get_variable(pkgconfig: 'interfaces_dir', + pkgconfig_define: ['prefix',prefix]) +dbussystemservicesdir=dbus_dep.get_variable(pkgconfig: 'system_bus_services_dir', + pkgconfig_define: ['prefix',prefix]) +polkitactiondir=polkit_dep.get_variable(pkgconfig: 'actiondir', + pkgconfig_define: ['prefix',prefix]) + +#Configuration in config.h (very different from autotools) +config_h=configuration_data() +config_h.set_quoted('PACKAGE_STRING',package_str) +config_h.set_quoted('PIDFILE',pidfile) +config_h.set_quoted('SYSCONFDIR',sysconfdir) +config_h.set_quoted('LOCALECONFIG',localeconfig) +config_h.set_quoted('KEYBOARDCONFIG',keyboardconfig) +config_h.set_quoted('XKBDCONFIG',xkbdconfig) +config_h.set_quoted('PKGDATADIR',pkgdatadir) +configure_file(configuration:config_h, output:'config.h') +top_inc=include_directories('.') + +subdir('src') +subdir('data') +subdir('tests') + +summary('prefix',prefix,section:package_str) +summary('sysconfdir',sysconfdir,section:package_str) +summary('pid file',pidfile,section:package_str) +summary('locale config file',localeconfig,section:package_str) +summary('keyboard config file',keyboardconfig,section:package_str) +summary('X11 keyboard config file',xkbdconfig,section:package_str) +summary('compiler',cc.get_id(),section:package_str) diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..bf628ca --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,12 @@ +option('pidfile', type : 'string', + value: '/run/blocaled.pid', + description: 'pid filename') +option('localeconfig', type : 'string', + value: '/etc/locale.conf', + description: 'locale configuration filename') +option('keyboardconfig', type : 'string', + value: '/etc/sysconfig/console', + description: 'keyboard configuration filename') +option('xkbdconfig', type : 'string', + value: '/etc/X11/xorg.conf.d/30-keyboard.conf', + description: 'X keyboard configuration filename') diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..7f2d8da --- /dev/null +++ b/src/meson.build @@ -0,0 +1,28 @@ +# main_src is used in test directory +main_src = files('main.c') +# The other sources are only used here +localed_src = [ + 'localed.c', + 'shellparser.c', + 'polkitasync.c', + main_src, +] +gdbus_src = gnome.gdbus_codegen('locale1-generated', + interface_prefix: 'org.freedesktop.', + sources: meson.project_source_root()+ '/data/org.freedesktop.locale1.xml', + namespace: 'BLocaled', +) +blocaled_exe = executable('blocaled', localed_src, gdbus_src, + dependencies: deps, + include_directories: top_inc, + install: true, + install_dir: get_option('libexecdir'), +) +# Needed for building mylocaled in tests directory +blocaled_objs = blocaled_exe.extract_objects( + gdbus_src, + 'localed.c', + 'polkitasync.c', + 'shellparser.c', + ) +src_inc=include_directories('.') diff --git a/tests/meson.build b/tests/meson.build new file mode 100644 index 0000000..5d9d56e --- /dev/null +++ b/tests/meson.build @@ -0,0 +1,66 @@ +blocaled_tests = [ + 'locale-read', + 'keyboard-read', + 'xkbd-read', + 'locale-write', + 'keyboard-write', + 'keyboard-write-no-file', + 'keyboard-write-no-dir', + 'locale-write-no-file', + 'locale-write-no-dir', + 'locale-write-no-cr', + 'locale-write-bogus-var', + 'locale-write-twice', + 'locale-write-comment', + 'locale-erase-write', + 'locale-read-userconf', + 'locale-read-unreadable', + 'keyboard-read-userconf', + 'xkbd-read-userconf', + 'xkbd-write-no-file', + 'xkbd-write-no-dir', + 'xkbd-write', + 'bad-read-userconf', + 'bad-locale-read', + 'bad-model-map', + 'try-options', + ] + +#Auxiliary programs +#Configuration in ./config.h (different from top config.h) +scratch_dir = meson.current_build_dir() / 'scratch' +test_config_h=configuration_data() +test_config_h.set_quoted('PACKAGE_STRING',package_str) +test_config_h.set_quoted('PIDFILE',scratch_dir / 'mylocaled.pid') +test_config_h.set_quoted('SYSCONFDIR',scratch_dir) +test_config_h.set_quoted('LOCALECONFIG',scratch_dir / 'locale') +test_config_h.set_quoted('KEYBOARDCONFIG',scratch_dir / 'keyboard') +test_config_h.set_quoted('XKBDCONFIG',scratch_dir / 'xkeyboard') +test_config_h.set_quoted('PKGDATADIR',scratch_dir) +configure_file(configuration:test_config_h, output:'config.h') + +mylocaled_exe = executable( + 'mylocaled', + main_src, + dependencies: deps, + include_directories: src_inc, + install: false, + objects: blocaled_objs, + build_by_default: false, +) +gdbus_mock_polkit_exe = executable('gdbus-mock-polkit', 'gdbus-mock-polkit.c', + dependencies: deps, + build_by_default: false, +) +#Configure files in scratch directory +subdir('scratch') + +#Running tests +foreach t: blocaled_tests + test(t,files(t), + depends:[mylocaled_exe,gdbus_mock_polkit_exe], + env:['PACKAGE_STRING='+package_str, 'LANG=en_US.UTF-8', 'srcdir='+meson.current_source_dir()], + is_parallel:false, + workdir:meson.current_build_dir(), + ) +endforeach diff --git a/tests/scratch/meson.build b/tests/scratch/meson.build new file mode 100644 index 0000000..92c6ab8 --- /dev/null +++ b/tests/scratch/meson.build @@ -0,0 +1,18 @@ +test_cfg=configuration_data() +test_cfg.set('abs_top_builddir',meson.project_build_root()) +test_cfg.set('abs_top_srcdir',meson.project_source_root()) +configure_file( + input:'keyboard-write-result2.in', + output:'keyboard-write-result2', + configuration:test_cfg +) +configure_file( + input:'org.freedesktop.locale1.service.in', + output:'org.freedesktop.locale1.service', + configuration:test_cfg +) +configure_file( + input:'test-session.xml.in', + output:'test-session.xml', + configuration:test_cfg +)