This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch wl/real-browser
in repository enlightenment.
View the commit online.
commit 2f0d0bd54f34b0e6a9d353351df9ec2214ab7a0d
Author: Cedric BAIL <[email protected]>
AuthorDate: Sun Aug 16 19:59:21 2026 -0600
wl_test - never install the back door, and move its protocol beside it
The wl_test module is a back door: it reads E's internal state and synthesises
input. It was already gated on -Dtests=true, which is off by default, and it is
in no profile's module list - the harnesses pull it in with
E_MODULE_FORCE_LOAD. So a release build cannot ship it.
That leaves two things that read wrong.
The suite runs against an *installed* tree, so anyone who has run the tests
once has built with -Dtests=true and has the back door sitting in their install
prefix. It is inert unless force-loaded, but "inert" is a weaker promise than
"absent", and it is not the promise this module should be making. Add a
per-module no_install flag to the module loop and set it here.
And wl-test.xml sat in src/protocol/, alongside the four protocols a shipped
compositor actually advertises. It is not one of those, and three meson files
reached across the tree to find it. Move it next to the module that implements
it; the two test dirs now reach into src/modules/wl_test/, which is the honest
direction for consumers of a test back door.
Not installing means E cannot find the module on any search path, so whoever
starts a compositor has to put it somewhere E looks. The first entry in
path_modules is the *user* one, $(e_user_dir)/modules, and e_user_dir is
$E_HOME/e - which the harnesses already own, because they run E in a throwaway
HOME. So run-nested.sh and e_wlcs.c stage a symlink at
$E_HOME/e/modules/wl_test/$MODULE_ARCH/module.so
and go on force-loading it by name. E_HOME is now set explicitly rather than
left to fall out of HOME: the fallback is .e/e or .config/e depending on
whether the tree was built with DOXDG, and the staged path has to match
whichever E picked.
By name, not by path, and that is not a detail. e_module_new() does accept an
absolute .so, but then E_Module.name is that path, which does not match the
"wl_test" entry in _e_module_whitelist_check - and E answers an unrecognised
module with an "Unstable module tainting" dialog on a 1.5s timer. That dialog
is an ordinary client and it takes the focus, which is exactly the breakage
7f0fffc91 went and fixed.
The build hands the two things staging needs - the built .so and MODULE_ARCH -
to the harnesses: through the test environment for run-nested.sh, through
-D defines for e_wlcs.so. Both fail loudly if they are missing, because a
compositor without the back door comes up perfectly well and then answers
nothing, which reads as a hang rather than as a missing file.
Verified against a DESTDIR install of a -Dtests=true build: no wl_test
anywhere under it, meson_modules.sh's argument list does not name it, the other
wl_* modules install and get renamed as before. All seven wayland protocol
tests pass against that install, including test_wl_test.c which is nothing but
the back door, and e_wlcs_driver passes - it positions a window through
wl_test, so it exercises the staging in the shim too. The wlcs runner itself is
not on this machine to run.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
---
src/modules/meson.build | 27 ++++++++--
src/modules/wl_test/e_mod_main.c | 2 +-
src/modules/wl_test/meson.build | 28 +++++++++--
src/modules/wl_test/wl-test.xml | 6 ++-
src/tests/meson.build | 25 ++++++++++
src/tests/wayland/meson.build | 7 ++-
src/tests/wayland/run-nested.sh | 59 +++++++++++++++++++---
src/tests/wayland/test_pointer_frame.c | 2 +-
src/tests/wlcs/e_wlcs.c | 91 ++++++++++++++++++++++++++++++++--
src/tests/wlcs/meson.build | 8 ++-
10 files changed, 229 insertions(+), 26 deletions(-)
diff --git a/src/modules/meson.build b/src/modules/meson.build
index b711fe49f..3727abadc 100644
--- a/src/modules/meson.build
+++ b/src/modules/meson.build
@@ -1,5 +1,11 @@
module_files = []
module_ldflags = '-module -avoid-version'
+# Modules built but deliberately left out of the install, by name and by the
+# path they landed at in the build tree. A module that is not installed cannot
+# be found on any of E's module search paths, so the build has to hand the
+# location to whoever loads it -- see src/tests/meson.build.
+uninstalled_module_names = []
+uninstalled_module_paths = []
module_includes = [ '../../..', '../../bin', '../../bin/efx' ]
module_includes2 = [ '../..' , '../bin' , '../bin/efx' ]
module_deps = [ deps_e, dep_dl ]
@@ -81,6 +87,7 @@ mods = [
foreach m: mods
disable = false
no_icon = false
+ no_install = false
cargs = ''
data = ""
deps = deps_e
@@ -106,7 +113,12 @@ foreach m: mods
join_paths('.', m),
_inc2)
_conf = 'USE_MODULE_' + m.underscorify().to_upper()
- module_files += join_paths(_dir_bin, m + '.so')
+ # module_files is the list meson_modules.sh renames to module.so after
+ # install. Naming a module that was never installed would make that script
+ # fail on a missing file, so an uninstalled module stays out of it.
+ if no_install == false
+ module_files += join_paths(_dir_bin, m + '.so')
+ endif
if no_icon == true
_data = []
@@ -126,24 +138,29 @@ foreach m: mods
config_h.set(_conf, '1')
if cargs == ''
- shared_module(m, src,
+ _mod = shared_module(m, src,
include_directories: _inc,
name_prefix : '',
dependencies : [ module_deps, deps ],
install_dir : _dir_bin,
- install : true,
+ install : no_install == false,
link_args : '-Wl,--unresolved-symbols=ignore-all'
)
else
- shared_module(m, src,
+ _mod = shared_module(m, src,
include_directories: _inc,
c_args : cargs,
name_prefix : '',
dependencies : [ module_deps, deps ],
install_dir : _dir_bin,
- install : true,
+ install : no_install == false,
link_args : '-Wl,--unresolved-symbols=ignore-all'
)
endif
+
+ if no_install == true
+ uninstalled_module_names += m
+ uninstalled_module_paths += _mod.full_path()
+ endif
endif
endforeach
diff --git a/src/modules/wl_test/e_mod_main.c b/src/modules/wl_test/e_mod_main.c
index 790e04f04..d0212122d 100644
--- a/src/modules/wl_test/e_mod_main.c
+++ b/src/modules/wl_test/e_mod_main.c
@@ -1,7 +1,7 @@
/* Test-only back door into the compositor.
*
* Built only with -Dtests=true and never installed in a release build. See
- * src/protocol/e-test.xml for what it exposes and why.
+ * wl-test.xml next to this file for what it exposes and why.
*
* Everything here runs inside E's process, which is the whole point: it can
* answer what E *believes* about a surface, not merely what E put on the
diff --git a/src/modules/wl_test/meson.build b/src/modules/wl_test/meson.build
index f54e77136..51e8de9fc 100644
--- a/src/modules/wl_test/meson.build
+++ b/src/modules/wl_test/meson.build
@@ -1,5 +1,22 @@
-# Test-only module. Never built unless -Dtests=true, so a release build
-# cannot ship the back door even by accident.
+# Test-only module: a back door into a running compositor.
+#
+# Two gates, and they answer different questions.
+#
+# * Never built unless -Dtests=true, so a release build cannot ship the back
+# door even by accident.
+#
+# * Never installed, even when it is built. The suite requires an installed
+# tree to run against, so without this every developer who has run the
+# tests once has the back door sitting in their install prefix. It is
+# inert unless force-loaded, but "inert" is a weaker promise than "absent".
+#
+# Not installing means E cannot find it on any of its module search paths, so
+# whoever loads it has to put it somewhere E looks. The harnesses stage it into
+# the throwaway HOME they already create -- see run-nested.sh.
+#
+# wl-test.xml lives here rather than in src/protocol/ because it is not part of
+# the protocol surface E offers: everything in src/protocol/ is advertised by a
+# shipped compositor, and this is not.
if get_option('wl') != true or get_option('tests') != true
disable = true
else
@@ -7,8 +24,9 @@ else
'e_mod_main.c'
)
- src += gen_scanner_server.process('../../protocol/wl-test.xml')
- src += gen_scanner_impl.process('../../protocol/wl-test.xml')
+ src += gen_scanner_server.process('wl-test.xml')
+ src += gen_scanner_impl.process('wl-test.xml')
- no_icon = true
+ no_icon = true
+ no_install = true
endif
diff --git a/src/modules/wl_test/wl-test.xml b/src/modules/wl_test/wl-test.xml
index 36c52206b..1b0fab907 100644
--- a/src/modules/wl_test/wl-test.xml
+++ b/src/modules/wl_test/wl-test.xml
@@ -27,7 +27,11 @@
<description summary="private interface for the compositor test suite">
A back door into the compositor for its own test suite. It exposes
internal state and synthesises input, so it is deliberately NOT built
- unless -Dtests=true and it is never installed in a release build.
+ unless -Dtests=true, and never installed even then - the harnesses stage
+ it into the throwaway HOME they create. This file lives beside the module
+ that implements it rather than in src/protocol/, because everything in
+ src/protocol/ is protocol a shipped compositor advertises and this is
+ not.
Enlightenment is a single large main() rather than a library, so tests
cannot construct a compositor per case and reach into it the way KWin's
diff --git a/src/tests/meson.build b/src/tests/meson.build
index cc20842b6..651537174 100644
--- a/src/tests/meson.build
+++ b/src/tests/meson.build
@@ -7,6 +7,31 @@
executable('timeout', 'timeout.c')
if get_option('wl') == true
+ # Where the wl_test back door landed in the build tree.
+ #
+ # It is deliberately not installed (src/modules/wl_test/meson.build), so E
+ # cannot find it by name on any search path. Every harness below has to stage
+ # it into the throwaway HOME it creates, and this is where it learns the two
+ # things it needs to do that: the file, and the arch directory E expects to
+ # find it under.
+ #
+ # Resolved once here rather than in each suite, and hard-failing rather than
+ # producing an empty path: a suite that silently starts a compositor without
+ # the back door does not fail, it hangs on the first question it asks.
+ wl_test_module_so = ''
+ i = 0
+ foreach n: uninstalled_module_names
+ if n == 'wl_test'
+ wl_test_module_so = uninstalled_module_paths[i]
+ endif
+ i += 1
+ endforeach
+
+ if wl_test_module_so == ''
+ error('tests are enabled but the wl_test module was not built; ' +
+ '-Dwl-test=true is required with -Dtests=true')
+ endif
+
subdir('wayland')
subdir('wlcs')
endif
diff --git a/src/tests/wayland/meson.build b/src/tests/wayland/meson.build
index 5a1700eee..8befa0ff1 100644
--- a/src/tests/wayland/meson.build
+++ b/src/tests/wayland/meson.build
@@ -18,6 +18,11 @@ check_globals = files('check-globals.sh')
wl_test_env = environment()
wl_test_env.set('E_TEST_BIN', e_test_bin)
+# The back door is not installed, so run-nested.sh stages it into the private
+# HOME it makes. It needs the built file and the arch directory name E derives
+# its module search path from.
+wl_test_env.set('E_TEST_MODULE_SO', wl_test_module_so)
+wl_test_env.set('E_TEST_MODULE_ARCH', module_arch)
e_test_globals = executable('e_test_globals',
'e_test_globals.c',
@@ -28,7 +33,7 @@ e_test_globals = executable('e_test_globals',
# a test needs to map a surface before the compositor has an E_Client for it.
test_proto_src = []
foreach p: [
- '../../protocol/wl-test.xml',
+ '../../modules/wl_test/wl-test.xml',
'@0@/stable/xdg-shell/xdg-shell.xml'.format(dir_wayland_protocols),
'@0@/staging/xdg-activation/xdg-activation-v1.xml'.format(dir_wayland_protocols),
]
diff --git a/src/tests/wayland/run-nested.sh b/src/tests/wayland/run-nested.sh
index 41bef09a7..f379a97d4 100755
--- a/src/tests/wayland/run-nested.sh
+++ b/src/tests/wayland/run-nested.sh
@@ -4,11 +4,17 @@
# run-nested.sh <client> [args...]
#
# Environment:
-# E_TEST_BIN path to the installed enlightenment binary (required)
-# E_TEST_BACKEND buffer (default) | x11 | wl -- see E_WL_FORCE
-# E_TEST_TIMEOUT seconds to wait for E's socket (default 20)
-# E_TEST_KEEP set to 1 to keep the temp dir and print E's log path
-# WAYLAND_DEBUG passed through to the client
+# E_TEST_BIN path to the installed enlightenment binary (required)
+# E_TEST_MODULE_SO path to the built wl_test.so (required; see below)
+# E_TEST_MODULE_ARCH E's MODULE_ARCH string (required; see below)
+# E_TEST_BACKEND buffer (default) | x11 | wl -- see E_WL_FORCE
+# E_TEST_TIMEOUT seconds to wait for E's socket (default 20)
+# E_TEST_KEEP set to 1 to keep the temp dir and print E's log path
+# WAYLAND_DEBUG passed through to the client
+#
+# Meson supplies the three required ones, so 'meson test' needs no setup. Run
+# by hand, they have to be set: the paths are build-tree paths and this script
+# has no way to guess where the build tree is.
#
# Exits with the client's exit status, or 1 if the compositor never came up.
#
@@ -43,6 +49,22 @@ if [ -z "$E_BIN" ] || [ ! -x "$E_BIN" ]; then
exit 1
fi
+MODULE_SO=${E_TEST_MODULE_SO:-}
+if [ -z "$MODULE_SO" ] || [ ! -f "$MODULE_SO" ]; then
+ echo "run-nested.sh: E_TEST_MODULE_SO is unset or missing: '${MODULE_SO}'" >&2
+ echo "run-nested.sh: it is the wl_test back door, built by -Dtests=true" >&2
+ echo "run-nested.sh: and deliberately never installed." >&2
+ exit 1
+fi
+
+MODULE_ARCH=${E_TEST_MODULE_ARCH:-}
+if [ -z "$MODULE_ARCH" ]; then
+ echo "run-nested.sh: E_TEST_MODULE_ARCH is unset" >&2
+ echo "run-nested.sh: it is MODULE_ARCH from config.h, e.g." >&2
+ echo "run-nested.sh: linux-gnu-x86_64-dev-0.27.99" >&2
+ exit 1
+fi
+
BACKEND=${E_TEST_BACKEND:-buffer}
TIMEOUT=${E_TEST_TIMEOUT:-20}
@@ -65,6 +87,28 @@ fi
RUNDIR=$(mktemp -d "${TMPDIR:-/tmp}/e-wl-test.XXXXXX")
chmod 0700 "$RUNDIR"
+# Stage the back door where E will look for it.
+#
+# wl_test is built but never installed, so e_module_new("wl_test") finds
+# nothing on the default search paths. The *first* of those paths is the user
+# one -- e_main.c appends "$(e_user_dir)/modules" before either prefix path --
+# and e_user_dir is $E_HOME/e, which is ours. So a correctly named symlink
+# under it is the whole trick. E_HOME is set explicitly rather than left to
+# fall out of HOME because the fallback is .e/e or .config/e depending on
+# whether the tree was built with DOXDG, and the staged path has to match
+# whichever E picked.
+#
+# Force-loading by absolute path would also work -- e_module_new accepts one --
+# and is the wrong answer. E_Module.name would then be that path, which does
+# not match the "wl_test" entry in _e_module_whitelist_check, and E answers an
+# unrecognised module with an "Unstable module tainting" dialog on a 1.5s
+# timer. That dialog is an ordinary client and it takes the focus, which
+# silently breaks every test that cares where the focus is.
+E_HOME="$RUNDIR/.e"
+MODULE_DIR="$E_HOME/e/modules/wl_test/$MODULE_ARCH"
+mkdir -p "$MODULE_DIR"
+ln -s "$MODULE_SO" "$MODULE_DIR/module.so"
+
E_PID=""
E_LOG="$RUNDIR/enlightenment.log"
@@ -134,8 +178,8 @@ trap cleanup EXIT INT TERM
# The test back door is deliberately not in the wltest profile's module list:
# pulling it in by env var keeps the profile a description of the compositor
-# under test rather than of the harness. E_MODULE_FORCE_LOAD also accepts an
-# absolute .so path, which e_module_new() has always handled.
+# under test rather than of the harness. By name, not by path -- see the
+# staging note above for why the distinction matters.
E_TEST_MODULE=${E_TEST_MODULE:-wl_test}
# Off here: our own tests follow xdg-shell properly, so they have no need of
@@ -155,6 +199,7 @@ E_LOCALE_DIR="$E_PREFIX/share/locale" \
E_WL_FORCE="$BACKEND" \
E_CONF_PROFILE=wltest \
E_CONF_PROFILE_NOSAVE=1 \
+E_HOME="$E_HOME" \
HOME="$RUNDIR" \
"$E_BIN" >"$E_LOG" 2>&1 &
E_PID=$!
diff --git a/src/tests/wayland/test_pointer_frame.c b/src/tests/wayland/test_pointer_frame.c
index 1b0cbee95..79efdfad8 100644
--- a/src/tests/wayland/test_pointer_frame.c
+++ b/src/tests/wayland/test_pointer_frame.c
@@ -432,7 +432,7 @@ main(void)
* Touch id 1, never 0: Evas reserves multi-touch device 0 for the mouse
* pointer and drops MULTI_DOWN/MOVE/UP for it silently. Passing 0 here
* produces no wl_touch events whatever the compositor does, which is
- * indistinguishable from a compositor bug. See src/protocol/wl-test.xml. */
+ * indistinguishable from a compositor bug. See src/modules/wl_test/wl-test.xml. */
_log_reset();
wl_test_touch_down(tester, 1, SX + (W / 2), SY + (H / 2));
if (tester_sync() < 0) FAIL("sync failed after touch down");
diff --git a/src/tests/wlcs/e_wlcs.c b/src/tests/wlcs/e_wlcs.c
index 7f9d55b77..ea9286f08 100644
--- a/src/tests/wlcs/e_wlcs.c
+++ b/src/tests/wlcs/e_wlcs.c
@@ -28,7 +28,7 @@
* cannot look that up from here. Instead we bind the private wl_test interface
* on that same client's wl_display - so the object is valid on the connection
* we send it over - and let the compositor resolve it. See
- * src/protocol/wl-test.xml.
+ * src/modules/wl_test/wl-test.xml.
*/
#include <dirent.h>
#include <errno.h>
@@ -57,6 +57,16 @@
# define E_WLCS_DEFAULT_BIN "enlightenment"
#endif
+/* Where the build put the wl_test back door, and the arch directory name E
+ * expects to find a module under. Both come from the build; there is no
+ * sensible default, because the module is deliberately never installed. */
+#ifndef E_WLCS_TEST_MODULE_SO
+# define E_WLCS_TEST_MODULE_SO ""
+#endif
+#ifndef E_WLCS_TEST_MODULE_ARCH
+# define E_WLCS_TEST_MODULE_ARCH ""
+#endif
+
#define STARTUP_TIMEOUT_MS 20000
typedef struct
@@ -186,12 +196,82 @@ _wait_for_socket(E_Server *s)
return -1;
}
+/* Stage the back door where E will look for it.
+ *
+ * wl_test is built but never installed, so e_module_new("wl_test") finds
+ * nothing on the default search paths. The *first* of those paths is the user
+ * one - e_main.c appends "$(e_user_dir)/modules" before either prefix path -
+ * and e_user_dir is $E_HOME/e, which is ours for the lifetime of this
+ * compositor. A correctly named symlink under it is the whole trick.
+ *
+ * E_HOME is set explicitly rather than left to fall out of HOME because the
+ * fallback is .e/e or .config/e depending on whether the tree was built with
+ * DOXDG, and the staged path has to match whichever E picked.
+ *
+ * Force-loading by absolute path would also work - e_module_new accepts one -
+ * and is the wrong answer. E_Module.name would then be that path, which does
+ * not match the "wl_test" entry in _e_module_whitelist_check, and E answers an
+ * unrecognised module with an "Unstable module tainting" dialog on a 1.5s
+ * timer. That dialog is an ordinary client and it takes the focus; every wlcs
+ * test runs about two seconds, so it lands inside nearly all of them.
+ *
+ * Returns 0 on success. Failing here is fatal to the run rather than merely
+ * slow: without the module the compositor comes up fine and every question we
+ * ask it goes unanswered, which reads as a hang and not as a missing file.
+ */
+static int
+_stage_test_module(const char *home, char *e_home, size_t e_home_size)
+{
+ char dir[PATH_MAX], link[PATH_MAX];
+ char *p;
+
+ if (!E_WLCS_TEST_MODULE_SO[0] || !E_WLCS_TEST_MODULE_ARCH[0])
+ {
+ fprintf(stderr, "e_wlcs: built without the wl_test module path; "
+ "reconfigure with -Dtests=true -Dwl-test=true\n");
+ return -1;
+ }
+
+ snprintf(e_home, e_home_size, "%s/.e", home);
+ snprintf(dir, sizeof(dir), "%s/e/modules/wl_test/%s",
+ e_home, E_WLCS_TEST_MODULE_ARCH);
+
+ /* mkdir -p, in place: walk the string turning each '/' into a NUL, make
+ * that prefix, put it back. */
+ for (p = dir + 1; *p; p++)
+ {
+ if (*p != '/') continue;
+ *p = '\0';
+ if ((mkdir(dir, 0700) < 0) && (errno != EEXIST))
+ {
+ fprintf(stderr, "e_wlcs: mkdir %s: %s\n", dir, strerror(errno));
+ return -1;
+ }
+ *p = '/';
+ }
+ if ((mkdir(dir, 0700) < 0) && (errno != EEXIST))
+ {
+ fprintf(stderr, "e_wlcs: mkdir %s: %s\n", dir, strerror(errno));
+ return -1;
+ }
+
+ snprintf(link, sizeof(link), "%s/module.so", dir);
+ if (symlink(E_WLCS_TEST_MODULE_SO, link) < 0)
+ {
+ fprintf(stderr, "e_wlcs: symlink %s -> %s: %s\n",
+ link, E_WLCS_TEST_MODULE_SO, strerror(errno));
+ return -1;
+ }
+
+ return 0;
+}
+
static void
_server_start(WlcsDisplayServer *server)
{
E_Server *s = (E_Server *)server;
const char *bin = getenv("E_WLCS_BIN") ?: E_WLCS_DEFAULT_BIN;
- char prefix[PATH_MAX], buf[PATH_MAX];
+ char prefix[PATH_MAX], buf[PATH_MAX], e_home[PATH_MAX];
const char *slash;
pid_t pid;
@@ -204,6 +284,10 @@ _server_start(WlcsDisplayServer *server)
}
chmod(s->runtime_dir, 0700);
+ /* HOME is the runtime dir too, so the back door goes under it and is
+ * removed with it. */
+ if (_stage_test_module(s->runtime_dir, e_home, sizeof(e_home)) < 0) return;
+
/* A private XDG_RUNTIME_DIR means the compositor under test owns the only
* socket in it, so we know its name without having to discover it: E picks
* its own via ecore_wl2_display_create(NULL) and never exports
@@ -247,6 +331,7 @@ _server_start(WlcsDisplayServer *server)
setenv("XDG_RUNTIME_DIR", s->runtime_dir, 1);
setenv("HOME", s->runtime_dir, 1);
+ setenv("E_HOME", e_home, 1);
setenv("E_WL_FORCE", "buffer", 1);
setenv("E_CONF_PROFILE", "wltest", 1);
setenv("E_CONF_PROFILE_NOSAVE", "1", 1);
@@ -593,7 +678,7 @@ _server_create_pointer(WlcsDisplayServer *server)
/* Not 0. Evas reserves multi-touch device 0 for the mouse pointer and drops
* MULTI_DOWN/MOVE/UP for it without a word, so every touch test run through
* this shim before 2026-08-09 was injecting into a black hole and measuring
- * nothing. See src/protocol/wl-test.xml, touch_down. wlcs only ever drives one
+ * nothing. See src/modules/wl_test/wl-test.xml, touch_down. wlcs only ever drives one
* touch point and matches down to up by the id the compositor reports, so
* which non-zero number this is does not matter to it. */
#define E_WLCS_TOUCH_ID 1
diff --git a/src/tests/wlcs/meson.build b/src/tests/wlcs/meson.build
index c4a1ec30f..7139491e6 100644
--- a/src/tests/wlcs/meson.build
+++ b/src/tests/wlcs/meson.build
@@ -2,7 +2,7 @@ dep_wlcs = dependency('wlcs', required: false)
if dep_wlcs.found()
wlcs_proto_src = []
- foreach p: ['../../protocol/wl-test.xml',
+ foreach p: ['../../modules/wl_test/wl-test.xml',
'@0@/stable/xdg-shell/xdg-shell.xml'.format(dir_wayland_protocols)]
wlcs_proto_src += gen_scanner_client.process(p)
wlcs_proto_src += gen_scanner_impl.process(p)
@@ -17,7 +17,11 @@ if dep_wlcs.found()
['e_wlcs.c', wlcs_proto_src],
name_prefix : '',
dependencies: [dep_wlcs, dependency('wayland-client')],
- c_args : ['-DE_WLCS_DEFAULT_BIN="@0@"'.format(e_bin_path)],
+ c_args : ['-DE_WLCS_DEFAULT_BIN="@0@"'.format(e_bin_path),
+ # The back door is not installed; the shim stages it into
+ # the private HOME it makes, exactly as run-nested.sh does.
+ '-DE_WLCS_TEST_MODULE_SO="@0@"'.format(wl_test_module_so),
+ '-DE_WLCS_TEST_MODULE_ARCH="@0@"'.format(module_arch)],
)
# Drives the integration's own hooks, without the wlcs runner.
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.