* [PATCH v2 0/6] Fixes msys2 building after the meson convert
@ 2020-08-27 5:05 luoyonggang
2020-08-27 5:05 ` [PATCH v2 1/6] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: luoyonggang @ 2020-08-27 5:05 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo, Daniel P . Berrang茅
From: Yonggang Luo <luoyonggang@gmail.com>
These patch series fixes the building of newest qemu under
msys2 environment
Yonggang Luo (6):
meson: Fixes the ninjatool issue that E$$: are generated in
Makefile.ninja
meson: fixes relpath may fail on win32.
meson: Mingw64 gcc doesn't recognize system include_type for sdl2
configure: Fix include and linkage issue on msys2
meson: Fixes ninjatool can not be recognized as script under
Window/MSYS2
meson: Convert undefsym.sh to undefsym.py
configure | 28 ++++++++++++++-------
meson.build | 5 ++--
scripts/mtest2make.py | 11 +++++++--
scripts/ninjatool.py | 2 +-
scripts/undefsym.py | 57 +++++++++++++++++++++++++++++++++++++++++++
scripts/undefsym.sh | 20 ---------------
6 files changed, 88 insertions(+), 35 deletions(-)
create mode 100644 scripts/undefsym.py
delete mode 100755 scripts/undefsym.sh
--
2.27.0.windows.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/6] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja
2020-08-27 5:05 [PATCH v2 0/6] Fixes msys2 building after the meson convert luoyonggang
@ 2020-08-27 5:05 ` luoyonggang
2020-08-27 5:05 ` [PATCH v2 2/6] meson: fixes relpath may fail on win32 luoyonggang
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: luoyonggang @ 2020-08-27 5:05 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo, Daniel P . Berrang茅
From: Yonggang Luo <luoyonggang@gmail.com>
SIMPLE_PATH_RE should match the full path token.
Or the $ and : contained in path would not matched if the path are start with C:/ and E:/
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
scripts/ninjatool.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/ninjatool.py b/scripts/ninjatool.py
index cc77d51aa8..6ca8be6f10 100755
--- a/scripts/ninjatool.py
+++ b/scripts/ninjatool.py
@@ -55,7 +55,7 @@ else:
PATH_RE = r"[^$\s:|]+|\$[$ :]|\$[a-zA-Z0-9_-]+|\$\{[a-zA-Z0-9_.-]+\}"
-SIMPLE_PATH_RE = re.compile(r"[^$\s:|]+")
+SIMPLE_PATH_RE = re.compile(r"^[^$\s:|]+$")
IDENT_RE = re.compile(r"[a-zA-Z0-9_.-]+$")
STRING_RE = re.compile(r"(" + PATH_RE + r"|[\s:|])(?:\r?\n)?|.")
TOPLEVEL_RE = re.compile(r"([=:#]|\|\|?|^ +|(?:" + PATH_RE + r")+)\s*|.")
--
2.27.0.windows.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/6] meson: fixes relpath may fail on win32.
2020-08-27 5:05 [PATCH v2 0/6] Fixes msys2 building after the meson convert luoyonggang
2020-08-27 5:05 ` [PATCH v2 1/6] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
@ 2020-08-27 5:05 ` luoyonggang
2020-08-27 5:05 ` [PATCH v2 3/6] meson: Mingw64 gcc doesn't recognize system include_type for sdl2 luoyonggang
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: luoyonggang @ 2020-08-27 5:05 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo, Daniel P . Berrang茅
From: Yonggang Luo <luoyonggang@gmail.com>
On win32, os.path.relpath would raise exception when do the following relpath:
C:/msys64/mingw64/x.exe relative to E:/path/qemu-build would fail.
So we try catch it for stopping it from raise exception on msys2
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
scripts/mtest2make.py | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/scripts/mtest2make.py b/scripts/mtest2make.py
index bdb257bbd9..d7a51bf97e 100644
--- a/scripts/mtest2make.py
+++ b/scripts/mtest2make.py
@@ -53,9 +53,16 @@ i = 0
for test in json.load(sys.stdin):
env = ' '.join(('%s=%s' % (shlex.quote(k), shlex.quote(v))
for k, v in test['env'].items()))
- executable = os.path.relpath(test['cmd'][0])
+ executable = test['cmd'][0]
+ try:
+ executable = os.path.relpath(executable)
+ except:
+ pass
if test['workdir'] is not None:
- test['cmd'][0] = os.path.relpath(test['cmd'][0], test['workdir'])
+ try:
+ test['cmd'][0] = os.path.relpath(executable, test['workdir'])
+ except:
+ test['cmd'][0] = executable
else:
test['cmd'][0] = executable
cmd = '$(.test.env) %s %s' % (env, ' '.join((shlex.quote(x) for x in test['cmd'])))
--
2.27.0.windows.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/6] meson: Mingw64 gcc doesn't recognize system include_type for sdl2
2020-08-27 5:05 [PATCH v2 0/6] Fixes msys2 building after the meson convert luoyonggang
2020-08-27 5:05 ` [PATCH v2 1/6] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
2020-08-27 5:05 ` [PATCH v2 2/6] meson: fixes relpath may fail on win32 luoyonggang
@ 2020-08-27 5:05 ` luoyonggang
2020-08-27 5:05 ` [PATCH v2 4/6] configure: Fix include and linkage issue on msys2 luoyonggang
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: luoyonggang @ 2020-08-27 5:05 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo, Daniel P . Berrang茅
From: Yonggang Luo <luoyonggang@gmail.com>
Fixes this for msys2/mingw64 by remove the include_type for sdl2 discovery in meson
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
meson.build | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index f0fe5f8799..1644bbd83c 100644
--- a/meson.build
+++ b/meson.build
@@ -224,8 +224,7 @@ if 'CONFIG_BRLAPI' in config_host
brlapi = declare_dependency(link_args: config_host['BRLAPI_LIBS'].split())
endif
-sdl = dependency('sdl2', required: get_option('sdl'), static: enable_static,
- include_type: 'system')
+sdl = dependency('sdl2', required: get_option('sdl'), static: enable_static)
sdl_image = not_found
if sdl.found()
# work around 2.0.8 bug
--
2.27.0.windows.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 4/6] configure: Fix include and linkage issue on msys2
2020-08-27 5:05 [PATCH v2 0/6] Fixes msys2 building after the meson convert luoyonggang
` (2 preceding siblings ...)
2020-08-27 5:05 ` [PATCH v2 3/6] meson: Mingw64 gcc doesn't recognize system include_type for sdl2 luoyonggang
@ 2020-08-27 5:05 ` luoyonggang
2020-08-27 5:05 ` [PATCH v2 5/6] meson: Fixes ninjatool can not be recognized as script under Window/MSYS2 luoyonggang
2020-08-27 5:05 ` [PATCH v2 6/6] meson: Convert undefsym.sh to undefsym.py luoyonggang
5 siblings, 0 replies; 7+ messages in thread
From: luoyonggang @ 2020-08-27 5:05 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo, Daniel P . Berrang茅
From: Yonggang Luo <luoyonggang@gmail.com>
On msys2, the -I/e/path/to/qemu -L/e/path/to/qemu are not recognized by the compiler
Cause $PWD are result posix style path such as /e/path/to/qemu that can not be recognized
by mingw gcc, and `pwd -W` are result Windows style path such as E:/path/to/qemu that can
be recognized by the mingw gcc. So we replace all $PWD with $build_path that can
building qemu under msys2/mingw environment.
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
configure | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/configure b/configure
index b1e11397a8..3b9e79923d 100755
--- a/configure
+++ b/configure
@@ -13,8 +13,13 @@ export CCACHE_RECACHE=yes
# make source path absolute
source_path=$(cd "$(dirname -- "$0")"; pwd)
+build_path=$PWD
+if [ "$MSYSTEM" = "MINGW64" -o "$MSYSTEM" = "MINGW32" ]; then
+source_path=$(cd "$(dirname -- "$0")"; pwd -W)
+build_path=`pwd -W`
+fi
-if test "$PWD" = "$source_path"
+if test "$build_path" = "$source_path"
then
echo "Using './build' as the directory for build output"
@@ -346,7 +351,12 @@ ld_has() {
$ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1
}
-if printf %s\\n "$source_path" "$PWD" | grep -q "[[:space:]:]";
+check_valid_build_path="[[:space:]:]"
+if [ "$MSYSTEM" = "MINGW64" -o "$MSYSTEM" = "MINGW32" ]; then
+check_valid_build_path="[[:space:]]"
+fi
+
+if printf %s\\n "$source_path" "$build_path" | grep -q "$check_valid_build_path";
then
error_exit "main directory cannot contain spaces nor colons"
fi
@@ -942,7 +952,7 @@ Linux)
linux="yes"
linux_user="yes"
kvm="yes"
- QEMU_INCLUDES="-isystem ${source_path}/linux-headers -I$PWD/linux-headers $QEMU_INCLUDES"
+ QEMU_INCLUDES="-isystem ${source_path}/linux-headers -I${build_path}/linux-headers $QEMU_INCLUDES"
libudev="yes"
;;
esac
@@ -4283,7 +4293,7 @@ EOF
symlink "$source_path/dtc/Makefile" "dtc/Makefile"
fi
fdt_cflags="-I${source_path}/dtc/libfdt"
- fdt_ldflags="-L$PWD/dtc/libfdt"
+ fdt_ldflags="-L${build_path}/dtc/libfdt"
fdt_libs="$fdt_libs"
elif test "$fdt" = "yes" ; then
# Not a git build & no libfdt found, prompt for system install
@@ -5268,7 +5278,7 @@ case "$capstone" in
else
LIBCAPSTONE=libcapstone.a
fi
- capstone_libs="-L$PWD/capstone -lcapstone"
+ capstone_libs="-L${build_path}/capstone -lcapstone"
capstone_cflags="-I${source_path}/capstone/include"
;;
@@ -6268,8 +6278,8 @@ case "$slirp" in
git_submodules="${git_submodules} slirp"
fi
mkdir -p slirp
- slirp_cflags="-I${source_path}/slirp/src -I$PWD/slirp/src"
- slirp_libs="-L$PWD/slirp -lslirp"
+ slirp_cflags="-I${source_path}/slirp/src -I${build_path}/slirp/src"
+ slirp_libs="-L${build_path}/slirp -lslirp"
if test "$mingw32" = "yes" ; then
slirp_libs="$slirp_libs -lws2_32 -liphlpapi"
fi
@@ -8212,7 +8222,7 @@ fi
mv $cross config-meson.cross
rm -rf meson-private meson-info meson-logs
-NINJA=$PWD/ninjatool $meson setup \
+NINJA="${build_path}/ninjatool" $meson setup \
--prefix "${pre_prefix}$prefix" \
--libdir "${pre_prefix}$libdir" \
--libexecdir "${pre_prefix}$libexecdir" \
@@ -8232,7 +8242,7 @@ NINJA=$PWD/ninjatool $meson setup \
-Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
-Dgettext=$gettext -Dxkbcommon=$xkbcommon \
$cross_arg \
- "$PWD" "$source_path"
+ "$build_path" "$source_path"
if test "$?" -ne 0 ; then
error_exit "meson setup failed"
--
2.27.0.windows.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 5/6] meson: Fixes ninjatool can not be recognized as script under Window/MSYS2
2020-08-27 5:05 [PATCH v2 0/6] Fixes msys2 building after the meson convert luoyonggang
` (3 preceding siblings ...)
2020-08-27 5:05 ` [PATCH v2 4/6] configure: Fix include and linkage issue on msys2 luoyonggang
@ 2020-08-27 5:05 ` luoyonggang
2020-08-27 5:05 ` [PATCH v2 6/6] meson: Convert undefsym.sh to undefsym.py luoyonggang
5 siblings, 0 replies; 7+ messages in thread
From: luoyonggang @ 2020-08-27 5:05 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo, Daniel P . Berrang茅
From: Yonggang Luo <luoyonggang@gmail.com>
use ninja instead ${build_path}/ninjatool
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
configure | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure b/configure
index 3b9e79923d..2ad0c58492 100755
--- a/configure
+++ b/configure
@@ -8222,7 +8222,7 @@ fi
mv $cross config-meson.cross
rm -rf meson-private meson-info meson-logs
-NINJA="${build_path}/ninjatool" $meson setup \
+NINJA="ninja" $meson setup \
--prefix "${pre_prefix}$prefix" \
--libdir "${pre_prefix}$libdir" \
--libexecdir "${pre_prefix}$libexecdir" \
--
2.27.0.windows.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 6/6] meson: Convert undefsym.sh to undefsym.py
2020-08-27 5:05 [PATCH v2 0/6] Fixes msys2 building after the meson convert luoyonggang
` (4 preceding siblings ...)
2020-08-27 5:05 ` [PATCH v2 5/6] meson: Fixes ninjatool can not be recognized as script under Window/MSYS2 luoyonggang
@ 2020-08-27 5:05 ` luoyonggang
5 siblings, 0 replies; 7+ messages in thread
From: luoyonggang @ 2020-08-27 5:05 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo, Daniel P . Berrang茅
From: Yonggang Luo <luoyonggang@gmail.com>
undefsym.sh are not msys2 compatible, convert it to python script
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
meson.build | 2 +-
scripts/undefsym.py | 57 +++++++++++++++++++++++++++++++++++++++++++++
scripts/undefsym.sh | 20 ----------------
3 files changed, 58 insertions(+), 21 deletions(-)
create mode 100644 scripts/undefsym.py
delete mode 100755 scripts/undefsym.sh
diff --git a/meson.build b/meson.build
index 1644bbd83c..d6e3bcea7e 100644
--- a/meson.build
+++ b/meson.build
@@ -845,7 +845,7 @@ foreach d, list : modules
endforeach
nm = find_program('nm')
-undefsym = find_program('scripts/undefsym.sh')
+undefsym = find_program('scripts/undefsym.py')
block_syms = custom_target('block.syms', output: 'block.syms',
input: [libqemuutil, block_mods],
capture: true,
diff --git a/scripts/undefsym.py b/scripts/undefsym.py
new file mode 100644
index 0000000000..c690f88c7a
--- /dev/null
+++ b/scripts/undefsym.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Before a shared module's DSO is produced, a static library is built for it
+# and passed to this script. The script generates -Wl,-u options to force
+# the inclusion of symbol from libqemuutil.a if the shared modules need them,
+# This is necessary because the modules may use functions not needed by the
+# executable itself, which would cause the function to not be linked in.
+# Then the DSO loading would fail because of the missing symbol.
+
+
+"""
+Compare the static library with the shared module for compute the symbol duplication
+"""
+
+import sys
+import subprocess
+
+def filter_lines_set(stdout, is_static = True):
+ linesSet = set()
+ for line in stdout.splitlines():
+ tokens = line.split(b' ')
+ if len(tokens) >= 1:
+ if len(tokens) > 1:
+ if is_static and tokens[1] == b'U':
+ continue
+ if not is_static and tokens[1] != b'U':
+ continue
+ new_line = b'-Wl,-u,' + tokens[0]
+ if not new_line in linesSet:
+ linesSet.add(new_line)
+ return linesSet
+
+def main(args):
+ if len(args) <= 3:
+ sys.exit(0)
+
+ nm = args[1]
+ staticlib = args[2]
+ pc = subprocess.run([nm, "-P", "-g", staticlib], stdout=subprocess.PIPE)
+ if pc.returncode != 0:
+ sys.exit(-1)
+ lines_set_left = filter_lines_set(pc.stdout)
+
+ shared_modules = args[3:]
+ pc = subprocess.run([nm, "-P", "-g"] + shared_modules, stdout=subprocess.PIPE)
+ if pc.returncode != 0:
+ sys.exit(-1)
+ lines_set_right = filter_lines_set(pc.stdout, False)
+ lines = []
+ for line in sorted(list(lines_set_right)):
+ if line in lines_set_left:
+ lines.append(line)
+ sys.stdout.write(b'\n'.join(lines).decode())
+
+if __name__ == "__main__":
+ main(sys.argv)
diff --git a/scripts/undefsym.sh b/scripts/undefsym.sh
deleted file mode 100755
index b9ec332e95..0000000000
--- a/scripts/undefsym.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#! /usr/bin/env bash
-
-# Before a shared module's DSO is produced, a static library is built for it
-# and passed to this script. The script generates -Wl,-u options to force
-# the inclusion of symbol from libqemuutil.a if the shared modules need them,
-# This is necessary because the modules may use functions not needed by the
-# executable itself, which would cause the function to not be linked in.
-# Then the DSO loading would fail because of the missing symbol.
-
-if test $# -le 2; then
- exit 0
-fi
-
-NM=$1
-staticlib=$2
-shift 2
-# Find symbols defined in static libraries and undefined in shared modules
-comm -12 \
- <( $NM -P -g $staticlib | awk '$2!="U"{print "-Wl,-u," $1}' | sort -u) \
- <( $NM -P -g "$@" | awk '$2=="U"{print "-Wl,-u," $1}' | sort -u)
--
2.27.0.windows.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-08-27 5:09 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-27 5:05 [PATCH v2 0/6] Fixes msys2 building after the meson convert luoyonggang
2020-08-27 5:05 ` [PATCH v2 1/6] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
2020-08-27 5:05 ` [PATCH v2 2/6] meson: fixes relpath may fail on win32 luoyonggang
2020-08-27 5:05 ` [PATCH v2 3/6] meson: Mingw64 gcc doesn't recognize system include_type for sdl2 luoyonggang
2020-08-27 5:05 ` [PATCH v2 4/6] configure: Fix include and linkage issue on msys2 luoyonggang
2020-08-27 5:05 ` [PATCH v2 5/6] meson: Fixes ninjatool can not be recognized as script under Window/MSYS2 luoyonggang
2020-08-27 5:05 ` [PATCH v2 6/6] meson: Convert undefsym.sh to undefsym.py luoyonggang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.