summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop-shell/shell.c7
-rw-r--r--shared/config-parser.c12
-rw-r--r--shared/config-parser.h3
-rw-r--r--src/screenshooter.c6
-rw-r--r--src/text-backend.c6
-rwxr-xr-xtests/weston-tests-env2
6 files changed, 32 insertions, 4 deletions
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 20536d75..99f3343f 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -567,7 +567,7 @@ shell_configuration(struct desktop_shell *shell)
{
struct weston_config_section *section;
int duration;
- char *s;
+ char *s, *client;
section = weston_config_get_section(shell->compositor->config,
"screensaver", NULL, NULL);
@@ -578,8 +578,11 @@ shell_configuration(struct desktop_shell *shell)
section = weston_config_get_section(shell->compositor->config,
"shell", NULL, NULL);
+ asprintf(&client, "%s/%s", weston_config_get_libexec_dir(),
+ WESTON_SHELL_CLIENT);
weston_config_section_get_string(section,
- "client", &s, LIBEXECDIR "/" WESTON_SHELL_CLIENT);
+ "client", &s, client);
+ free(client);
shell->client = s;
weston_config_section_get_string(section,
"binding-modifier", &s, "super");
diff --git a/shared/config-parser.c b/shared/config-parser.c
index 8defbbb4..4542ca61 100644
--- a/shared/config-parser.c
+++ b/shared/config-parser.c
@@ -282,6 +282,18 @@ weston_config_section_get_bool(struct weston_config_section *section,
return 0;
}
+WL_EXPORT
+const char *
+weston_config_get_libexec_dir(void)
+{
+ const char *path = getenv("WESTON_BUILD_DIR");
+
+ if (path)
+ return path;
+
+ return LIBEXECDIR;
+}
+
static struct weston_config_section *
config_add_section(struct weston_config *config, const char *name)
{
diff --git a/shared/config-parser.h b/shared/config-parser.h
index 745562bc..1ecc8cc2 100644
--- a/shared/config-parser.h
+++ b/shared/config-parser.h
@@ -92,6 +92,9 @@ int
weston_config_section_get_bool(struct weston_config_section *section,
const char *key,
int *value, int default_value);
+const char *
+weston_config_get_libexec_dir(void);
+
struct weston_config *
weston_config_parse(const char *name);
diff --git a/src/screenshooter.c b/src/screenshooter.c
index 44039332..af2c754a 100644
--- a/src/screenshooter.c
+++ b/src/screenshooter.c
@@ -286,12 +286,16 @@ screenshooter_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
void *data)
{
struct screenshooter *shooter = data;
- const char *screenshooter_exe = LIBEXECDIR "/weston-screenshooter";
+ char *screenshooter_exe;
+
+ asprintf(&screenshooter_exe, "%s/%s", weston_config_get_libexec_dir(),
+ "/weston-screenshooter");
if (!shooter->client)
shooter->client = weston_client_launch(shooter->ec,
&shooter->process,
screenshooter_exe, screenshooter_sigchld);
+ free(screenshooter_exe);
}
struct weston_recorder {
diff --git a/src/text-backend.c b/src/text-backend.c
index 1d549d43..7d2a0640 100644
--- a/src/text-backend.c
+++ b/src/text-backend.c
@@ -937,12 +937,16 @@ static void
text_backend_configuration(struct text_backend *text_backend)
{
struct weston_config_section *section;
+ char *client;
section = weston_config_get_section(text_backend->compositor->config,
"input-method", NULL, NULL);
+ asprintf(&client, "%s/weston-keyboard",
+ weston_config_get_libexec_dir());
weston_config_section_get_string(section, "path",
&text_backend->input_method.path,
- LIBEXECDIR "/weston-keyboard");
+ client);
+ free(client);
}
static void
diff --git a/tests/weston-tests-env b/tests/weston-tests-env
index 473e0925..e332354c 100755
--- a/tests/weston-tests-env
+++ b/tests/weston-tests-env
@@ -28,6 +28,7 @@ XWAYLAND_PLUGIN=$abs_builddir/.libs/xwayland.so
case $TESTNAME in
*.la|*.so)
+ WESTON_BUILD_DIR=$abs_builddir \
$WESTON --backend=$BACKEND \
--no-config \
--shell=$SHELL_PLUGIN \
@@ -37,6 +38,7 @@ case $TESTNAME in
&> "$OUTLOG"
;;
*)
+ WESTON_BUILD_DIR=$abs_builddir \
WESTON_TEST_CLIENT_PATH=$abs_builddir/$TESTNAME $WESTON \
--socket=test-$(basename $TESTNAME) \
--backend=$BACKEND \