From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Akihiko Odaki <akihiko.odaki@gmail.com>
Subject: [PULL 03/20] datadir: Use bundle mechanism
Date: Thu, 14 Jul 2022 11:01:54 +0200 [thread overview]
Message-ID: <20220714090211.304305-4-pbonzini@redhat.com> (raw)
In-Reply-To: <20220714090211.304305-1-pbonzini@redhat.com>
From: Akihiko Odaki <akihiko.odaki@gmail.com>
softmmu/datadir.c had its own implementation to find files in the
build tree, but now bundle mechanism provides the unified
implementation which works for datadir and the other files.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Message-Id: <20220624145039.49929-4-akihiko.odaki@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
.travis.yml | 2 +-
pc-bios/keymaps/meson.build | 21 ++++++---------------
pc-bios/meson.build | 13 +++----------
scripts/oss-fuzz/build.sh | 8 ++++----
softmmu/datadir.c | 22 +---------------------
tests/qtest/fuzz/fuzz.c | 18 ------------------
6 files changed, 15 insertions(+), 69 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 9afc4a54b8..4fdc9a6785 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -223,7 +223,7 @@ jobs:
- BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
- |
if [ "$BUILD_RC" -eq 0 ] ; then
- mv pc-bios/s390-ccw/*.img pc-bios/ ;
+ mv pc-bios/s390-ccw/*.img qemu-bundle/usr/local/share/qemu ;
${TEST_CMD} ;
else
$(exit $BUILD_RC);
diff --git a/pc-bios/keymaps/meson.build b/pc-bios/keymaps/meson.build
index 44247a12b5..2837eb34f4 100644
--- a/pc-bios/keymaps/meson.build
+++ b/pc-bios/keymaps/meson.build
@@ -40,9 +40,9 @@ else
endif
cp = find_program('cp')
-t = []
-foreach km, args: keymaps
- if native_qemu_keymap.found()
+if native_qemu_keymap.found()
+ t = []
+ foreach km, args: keymaps
# generate with qemu-kvm
t += custom_target(km,
build_by_default: true,
@@ -50,20 +50,11 @@ foreach km, args: keymaps
command: [native_qemu_keymap, '-f', '@OUTPUT@', args.split()],
install: true,
install_dir: qemu_datadir / 'keymaps')
- else
- # copy from source tree
- t += custom_target(km,
- build_by_default: true,
- input: km,
- output: km,
- command: [cp, '@INPUT@', '@OUTPUT@'],
- install: true,
- install_dir: qemu_datadir / 'keymaps')
- endif
-endforeach
+ endforeach
-if native_qemu_keymap.found()
alias_target('update-keymaps', t)
+else
+ install_data(keymaps.keys(), install_dir: qemu_datadir / 'keymaps')
endif
install_data(['sl', 'sv'], install_dir: qemu_datadir / 'keymaps')
diff --git a/pc-bios/meson.build b/pc-bios/meson.build
index 41ba1c0ec7..388e0db6e4 100644
--- a/pc-bios/meson.build
+++ b/pc-bios/meson.build
@@ -85,16 +85,9 @@ blobs = [
'vof-nvram.bin',
]
-ln_s = [find_program('ln', required: true), '-sf']
-foreach f : blobs
- roms += custom_target(f,
- build_by_default: have_system,
- output: f,
- input: files('meson.build'), # dummy input
- install: get_option('install_blobs'),
- install_dir: qemu_datadir,
- command: [ ln_s, meson.project_source_root() / 'pc-bios' / f, '@OUTPUT@' ])
-endforeach
+if get_option('install_blobs')
+ install_data(blobs, install_dir: qemu_datadir)
+endif
subdir('descriptors')
subdir('keymaps')
diff --git a/scripts/oss-fuzz/build.sh b/scripts/oss-fuzz/build.sh
index aaf485cb55..2656a89aea 100755
--- a/scripts/oss-fuzz/build.sh
+++ b/scripts/oss-fuzz/build.sh
@@ -64,7 +64,7 @@ mkdir -p "$DEST_DIR/lib/" # Copy the shared libraries here
# Build once to get the list of dynamic lib paths, and copy them over
../configure --disable-werror --cc="$CC" --cxx="$CXX" --enable-fuzzing \
- --prefix="$DEST_DIR" --bindir="$DEST_DIR" --datadir="$DEST_DIR/data/" \
+ --prefix="/opt/qemu-oss-fuzz" \
--extra-cflags="$EXTRA_CFLAGS" --target-list="i386-softmmu"
if ! make "-j$(nproc)" qemu-fuzz-i386; then
@@ -81,14 +81,14 @@ if [ "$GITLAB_CI" != "true" ]; then
# Build a second time to build the final binary with correct rpath
../configure --disable-werror --cc="$CC" --cxx="$CXX" --enable-fuzzing \
- --prefix="$DEST_DIR" --bindir="$DEST_DIR" --datadir="$DEST_DIR/data/" \
+ --prefix="/opt/qemu-oss-fuzz" \
--extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="-Wl,-rpath,\$ORIGIN/lib" \
--target-list="i386-softmmu"
make "-j$(nproc)" qemu-fuzz-i386 V=1
fi
-# Copy over the datadir
-cp -r ../pc-bios/ "$DEST_DIR/pc-bios"
+# Prepare a preinstalled tree
+make install DESTDIR=$DEST_DIR/qemu-bundle
targets=$(./qemu-fuzz-i386 | awk '$1 ~ /\*/ {print $2}')
base_copy="$DEST_DIR/qemu-fuzz-i386-target-$(echo "$targets" | head -n 1)"
diff --git a/softmmu/datadir.c b/softmmu/datadir.c
index 160cac999a..697cffea93 100644
--- a/softmmu/datadir.c
+++ b/softmmu/datadir.c
@@ -83,26 +83,6 @@ void qemu_add_data_dir(char *path)
data_dir[data_dir_idx++] = path;
}
-/*
- * Find a likely location for support files using the location of the binary.
- * When running from the build tree this will be "$bindir/pc-bios".
- * Otherwise, this is CONFIG_QEMU_DATADIR (possibly relocated).
- *
- * The caller must use g_free() to free the returned data when it is
- * no longer required.
- */
-static char *find_datadir(void)
-{
- g_autofree char *dir = NULL;
-
- dir = g_build_filename(qemu_get_exec_dir(), "pc-bios", NULL);
- if (g_file_test(dir, G_FILE_TEST_IS_DIR)) {
- return g_steal_pointer(&dir);
- }
-
- return get_relocated_path(CONFIG_QEMU_DATADIR);
-}
-
void qemu_add_default_firmwarepath(void)
{
char **dirs;
@@ -116,7 +96,7 @@ void qemu_add_default_firmwarepath(void)
g_strfreev(dirs);
/* try to find datadir relative to the executable path */
- qemu_add_data_dir(find_datadir());
+ qemu_add_data_dir(get_relocated_path(CONFIG_QEMU_DATADIR));
}
void qemu_list_data_dirs(void)
diff --git a/tests/qtest/fuzz/fuzz.c b/tests/qtest/fuzz/fuzz.c
index 0ad4ba9e94..2b3bc1fb9d 100644
--- a/tests/qtest/fuzz/fuzz.c
+++ b/tests/qtest/fuzz/fuzz.c
@@ -158,8 +158,6 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)
{
char *target_name;
- const char *bindir;
- char *datadir;
GString *cmd_line;
gchar *pretty_cmd_line;
bool serialize = false;
@@ -174,22 +172,6 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)
target_name = strstr(**argv, "-target-");
if (target_name) { /* The binary name specifies the target */
target_name += strlen("-target-");
- /*
- * With oss-fuzz, the executable is kept in the root of a directory (we
- * cannot assume the path). All data (including bios binaries) must be
- * in the same dir, or a subdir. Thus, we cannot place the pc-bios so
- * that it would be in exec_dir/../pc-bios.
- * As a workaround, oss-fuzz allows us to use argv[0] to get the
- * location of the executable. Using this we add exec_dir/pc-bios to
- * the datadirs.
- */
- bindir = qemu_get_exec_dir();
- datadir = g_build_filename(bindir, "pc-bios", NULL);
- if (g_file_test(datadir, G_FILE_TEST_IS_DIR)) {
- qemu_add_data_dir(datadir);
- } else {
- g_free(datadir);
- }
} else if (*argc > 1) { /* The target is specified as an argument */
target_name = (*argv)[1];
if (!strstr(target_name, "--fuzz-target=")) {
--
2.36.1
next prev parent reply other threads:[~2022-07-14 9:09 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-14 9:01 [PULL 00/20] SCSI, build system patches for 2022-07-13 Paolo Bonzini
2022-07-14 9:01 ` [PULL 01/20] scsi/lsi53c895a: really fix use-after-free in lsi_do_msgout (CVE-2022-0216) Paolo Bonzini
2022-07-14 9:01 ` [PULL 02/20] cutils: Introduce bundle mechanism Paolo Bonzini
2022-07-14 9:01 ` Paolo Bonzini [this message]
2022-07-14 9:01 ` [PULL 04/20] module: Use " Paolo Bonzini
2022-07-14 9:01 ` [PULL 05/20] meson: Prefix each element of firmware path Paolo Bonzini
2022-07-18 12:48 ` Thomas Huth
2022-07-14 9:01 ` [PULL 06/20] scsi-disk: add new quirks bitmap to SCSIDiskState Paolo Bonzini
2022-07-14 9:01 ` [PULL 07/20] scsi-disk: add MODE_PAGE_APPLE_VENDOR quirk for Macintosh Paolo Bonzini
2022-07-14 9:01 ` [PULL 08/20] q800: implement compat_props to enable quirk_mode_page_apple_vendor for scsi-cd devices Paolo Bonzini
2022-07-14 9:02 ` [PULL 09/20] scsi-disk: add SCSI_DISK_QUIRK_MODE_SENSE_ROM_USE_DBD quirk for Macintosh Paolo Bonzini
2022-07-14 9:02 ` [PULL 10/20] q800: implement compat_props to enable quirk_mode_sense_rom_use_dbd for scsi-cd devices Paolo Bonzini
2022-07-14 9:02 ` [PULL 11/20] scsi-disk: add SCSI_DISK_QUIRK_MODE_PAGE_VENDOR_SPECIFIC_APPLE quirk for Macintosh Paolo Bonzini
2022-07-14 9:02 ` [PULL 12/20] q800: implement compat_props to enable quirk_mode_page_vendor_specific_apple for scsi devices Paolo Bonzini
2022-07-14 9:02 ` [PULL 13/20] scsi-disk: add FORMAT UNIT command Paolo Bonzini
2022-07-14 9:02 ` [PULL 14/20] scsi-disk: add SCSI_DISK_QUIRK_MODE_PAGE_TRUNCATED quirk for Macintosh Paolo Bonzini
2022-07-14 9:02 ` [PULL 15/20] q800: implement compat_props to enable quirk_mode_page_truncated for scsi-cd devices Paolo Bonzini
2022-07-14 9:02 ` [PULL 16/20] scsi-disk: allow the MODE_PAGE_R_W_ERROR AWRE bit to be changeable for CDROM drives Paolo Bonzini
2022-07-14 9:02 ` [PULL 17/20] scsi-disk: allow MODE SELECT block descriptor to set the block size Paolo Bonzini
2022-07-14 9:02 ` [PULL 18/20] q800: add default vendor and product information for scsi-hd devices Paolo Bonzini
2022-07-14 9:02 ` [PULL 19/20] q800: add default vendor and product information for scsi-cd devices Paolo Bonzini
2022-07-14 9:02 ` [PULL 20/20] pc-bios/s390-ccw: add -Wno-array-bounds Paolo Bonzini
2022-07-15 10:10 ` [PULL 00/20] SCSI, build system patches for 2022-07-13 Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220714090211.304305-4-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=akihiko.odaki@gmail.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).