* [Qemu-devel] [PATCH] module: Use QEMU_MODULE_PATH as a search path
@ 2018-07-02 20:24 ryang
2018-07-03 10:19 ` no-reply
0 siblings, 1 reply; 2+ messages in thread
From: ryang @ 2018-07-02 20:24 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Fam Zheng
The current paths for modules are CONFIG_QEMU_MODDIR and paths relative
to the executable. Qemu and its modules can be installed and executed in
paths that are different from these search paths. This change allows
a search path to be specified by environment variable.
An example usage for this is postmarketOS[1]. This is a build environment
for Alpine Linux. It sets up Alpine Linux in a chroot environment.
Alpine's Qemu packages are installed in the chroot. The Alpine Linux Qemu
package is used to test compiled Alpine Linux system images. This way there
isn't a reliance on the which ever version of Qemu the host system / distro
provides.
postmarketOS executes Qemu on host system outside of the chroot
The Qemu module search path needs to point to the location of the
chroot relative to the host system.
e.g.
The root of the Alpine Linux chroot is:
~/.local/var/pmbootstrap/chroot_native/
Alpine's Qemu is installed at
~/.local/var/pmbootstrap/chroot_native/usr/bin/
The Qemu module search path needs to be:
QEMU_MODULE_PATH=~/.local/var/pmbootstrap/chroot_native/usr/lib/qemu/
[1] https://postmarketos.org/
Signed-off-by: ryang <decatf@gmail.com>
---
Apologies if this is not sent to the correct maintainers. I couldn't
find anyone listed for this specific file in MAINTAINERS or by
using get_maintainer.pl. I'm sending this to the orignal author
and maintainers involved with the patch that added module loading.
util/module.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/util/module.c b/util/module.c
index c909737..f9088a5 100644
--- a/util/module.c
+++ b/util/module.c
@@ -162,9 +162,10 @@ void module_load_one(const char *prefix, const char *lib_name)
#ifdef CONFIG_MODULES
char *fname = NULL;
char *exec_dir;
- char *dirs[3];
+ char *search_path;
+ char *dirs[4];
char *module_name;
- int i = 0;
+ int i = 0, n_dirs;
int ret;
static GHashTable *loaded_modules;
@@ -186,14 +187,18 @@ void module_load_one(const char *prefix, const char *lib_name)
g_hash_table_insert(loaded_modules, module_name, module_name);
exec_dir = qemu_get_exec_dir();
- dirs[i++] = g_strdup_printf("%s", CONFIG_QEMU_MODDIR);
- dirs[i++] = g_strdup_printf("%s/..", exec_dir ? : "");
- dirs[i++] = g_strdup_printf("%s", exec_dir ? : "");
- assert(i == ARRAY_SIZE(dirs));
+ search_path = getenv("QEMU_MODULE_PATH");
+ if (search_path != NULL)
+ dirs[n_dirs++] = g_strdup_printf("%s", search_path);
+ dirs[n_dirs++] = g_strdup_printf("%s", CONFIG_QEMU_MODDIR);
+ dirs[n_dirs++] = g_strdup_printf("%s/..", exec_dir ? : "");
+ dirs[n_dirs++] = g_strdup_printf("%s", exec_dir ? : "");
+ assert(n_dirs <= ARRAY_SIZE(dirs));
+
g_free(exec_dir);
exec_dir = NULL;
- for (i = 0; i < ARRAY_SIZE(dirs); i++) {
+ for (i = 0; i < n_dirs; i++) {
fname = g_strdup_printf("%s/%s%s",
dirs[i], module_name, HOST_DSOSUF);
ret = module_load_file(fname);
@@ -205,7 +210,7 @@ void module_load_one(const char *prefix, const char *lib_name)
}
}
- for (i = 0; i < ARRAY_SIZE(dirs); i++) {
+ for (i = 0; i < n_dirs; i++) {
g_free(dirs[i]);
}
--
2.7.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Qemu-devel] [PATCH] module: Use QEMU_MODULE_PATH as a search path
2018-07-02 20:24 [Qemu-devel] [PATCH] module: Use QEMU_MODULE_PATH as a search path ryang
@ 2018-07-03 10:19 ` no-reply
0 siblings, 0 replies; 2+ messages in thread
From: no-reply @ 2018-07-03 10:19 UTC (permalink / raw)
To: decatf; +Cc: famz, qemu-devel, pbonzini
Hi,
This series seems to have some coding style problems. See output below for
more information:
Type: series
Message-id: 20180702202415.GA12440@computer
Subject: [Qemu-devel] [PATCH] module: Use QEMU_MODULE_PATH as a search path
=== TEST SCRIPT BEGIN ===
#!/bin/bash
BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
failed=1
echo
fi
n=$((n+1))
done
exit $failed
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
7643dd2b4e module: Use QEMU_MODULE_PATH as a search path
=== OUTPUT BEGIN ===
Checking PATCH 1/1: module: Use QEMU_MODULE_PATH as a search path...
ERROR: braces {} are necessary for all arms of this statement
#63: FILE: util/module.c:191:
+ if (search_path != NULL)
[...]
total: 1 errors, 0 warnings, 43 lines checked
Your patch has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
=== OUTPUT END ===
Test command exited with code: 1
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-07-03 10:19 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-02 20:24 [Qemu-devel] [PATCH] module: Use QEMU_MODULE_PATH as a search path ryang
2018-07-03 10:19 ` no-reply
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).