diff --git a/meson.build b/meson.build index 8f47e8bb..61a7c501 100644 --- a/meson.build +++ b/meson.build @@ -41,6 +41,7 @@ config_h.set_quoted('FALLBACK_SVG_NAME', 'fallback.svg') libratbag_data_dir = join_paths(get_option('prefix'), get_option('datadir'), 'libratbag') +libratbag_data_dir_devel = join_paths(meson.source_root(), 'data', 'devices') config_h.set_quoted('LIBRATBAG_DATA_DIR', libratbag_data_dir) # dependencies @@ -324,12 +325,14 @@ test_svg_files = find_program('data/gnome/check-svg.py') test('check-svg', test_svg_files, args : gnome_svg_files) #### tests #### +env_test = environment() +env_test.set('LIBRATBAG_DATA_DIR', libratbag_data_dir_devel) + enable_tests = get_option('enable-tests') if enable_tests dep_check = dependency('check', version: '>= 0.9.10') config_h.set('BUILD_TESTS', '1') - env_test = environment() env_test.set('RATBAG_TEST', '1') test_context = executable('test-context', @@ -512,6 +515,7 @@ install_man('tools/ratbagctl.1') config_ratbagctl_devel = configuration_data() config_ratbagctl_devel.set('ratbagd_sha', ratbagd_sha) config_ratbagctl_devel.set('MESON_BUILD_ROOT', meson.build_root()) +config_ratbagctl_devel.set('LIBRATBAG_DATA_DIR', libratbag_data_dir_devel) configure_file(input : 'tools/ratbagctl.devel.in', output : 'ratbagctl.devel', configuration : config_ratbagctl_devel) @@ -519,7 +523,7 @@ configure_file(input : 'tools/ratbagctl.test.in', output : 'ratbagctl.test', configuration : config_ratbagctl_devel) ratbagctl_test = find_program(join_paths(meson.build_root(), 'ratbagctl.test')) -test('ratbagctl-test', ratbagctl_test, args: ['-v']) +test('ratbagctl-test', ratbagctl_test, args: ['-v'], env : env_test) configure_file(input : 'tools/toolbox.py', output : 'toolbox.py', diff --git a/src/libratbag-data.c b/src/libratbag-data.c index 4fe3586c..c132b1da 100644 --- a/src/libratbag-data.c +++ b/src/libratbag-data.c @@ -324,11 +324,16 @@ ratbag_device_data_new_for_id(struct ratbag *ratbag, const struct input_id *id) struct ratbag_device_data *data = NULL; struct dirent **files; int n, nfiles; + const char *datadir; - n = scandir(LIBRATBAG_DATA_DIR, &files, filter_device_files, alphasort); + datadir = getenv("LIBRATBAG_DATA_DIR"); + if (!datadir) + datadir = LIBRATBAG_DATA_DIR; + + n = scandir(datadir, &files, filter_device_files, alphasort); if (n <= 0) { log_error(ratbag, "Unable to locate device files in %s: %s\n", - LIBRATBAG_DATA_DIR, n == 0 ? "No files found" : strerror(errno)); + datadir, n == 0 ? "No files found" : strerror(errno)); return NULL; } @@ -337,7 +342,7 @@ ratbag_device_data_new_for_id(struct ratbag *ratbag, const struct input_id *id) _cleanup_(freep) char *file = NULL; int rc; - rc = xasprintf(&file, "%s/%s", LIBRATBAG_DATA_DIR, files[n]->d_name); + rc = xasprintf(&file, "%s/%s", datadir, files[n]->d_name); if (rc == -1) goto out; if (file_data_matches(ratbag, file, id, &data)) diff --git a/tools/ratbagctl.devel.in b/tools/ratbagctl.devel.in index 4a08a137..47e17432 100755 --- a/tools/ratbagctl.devel.in +++ b/tools/ratbagctl.devel.in @@ -35,6 +35,8 @@ def main(argv): if not os.geteuid() == 0: sys.exit('Script must be run as root') + os.environ['LIBRATBAG_DATA_DIR'] = '@LIBRATBAG_DATA_DIR@' + if not argv: argv = ["list"]