* [Qemu-devel] [PATCH v2 0/2] buildsys: Fix and enable module build
@ 2015-01-13 8:53 Fam Zheng
2015-01-13 8:53 ` [Qemu-devel] [PATCH v2 1/2] configure: Default to " Fam Zheng
2015-01-13 8:53 ` [Qemu-devel] [PATCH v2 2/2] .travis.yml: Add "--disable-modules" Fam Zheng
0 siblings, 2 replies; 7+ messages in thread
From: Fam Zheng @ 2015-01-13 8:53 UTC (permalink / raw)
To: qemu-devel
Cc: Brian Jackson, Peter Maydell, Michael Tokarev, Stefan Hajnoczi,
Bharata B Rao, Paolo Bonzini, Andreas Färber,
Richard Henderson
v2: Fix on error handling nit in configure. (Andreas)
Skip rules.mak fix because Paolo applied it.
Fam
Fam Zheng (2):
configure: Default to enable module build
.travis.yml: Add "--disable-modules"
.travis.yml | 3 ++
configure | 95 ++++++++++++++++++++++++++++++++++++++++++-------------------
2 files changed, 69 insertions(+), 29 deletions(-)
--
2.1.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 1/2] configure: Default to enable module build
2015-01-13 8:53 [Qemu-devel] [PATCH v2 0/2] buildsys: Fix and enable module build Fam Zheng
@ 2015-01-13 8:53 ` Fam Zheng
2015-01-15 16:28 ` Stefan Hajnoczi
2015-02-02 19:34 ` Paolo Bonzini
2015-01-13 8:53 ` [Qemu-devel] [PATCH v2 2/2] .travis.yml: Add "--disable-modules" Fam Zheng
1 sibling, 2 replies; 7+ messages in thread
From: Fam Zheng @ 2015-01-13 8:53 UTC (permalink / raw)
To: qemu-devel
Cc: Brian Jackson, Peter Maydell, Michael Tokarev, Stefan Hajnoczi,
Bharata B Rao, Paolo Bonzini, Andreas Färber,
Richard Henderson
We have module build support around for a while, but also had it bitrot
several times. It probably makes sense to enable it by default so that
people can notice and use it.
Counterpart to --enable-modules, which is turned as default,
--disable-modules is added to suppress it. If both are omitted, the
support is guesses as usual.
Signed-off-by: Fam Zheng <famz@redhat.com>
---
configure | 95 ++++++++++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 66 insertions(+), 29 deletions(-)
diff --git a/configure b/configure
index 7539645..8280e8a 100755
--- a/configure
+++ b/configure
@@ -271,7 +271,7 @@ gcov_tool="gcov"
EXESUF=""
DSOSUF=".so"
LDFLAGS_SHARED="-shared"
-modules="no"
+modules=""
prefix="/usr/local"
mandir="\${prefix}/share/man"
datadir="\${prefix}/share"
@@ -768,6 +768,9 @@ for opt do
--enable-modules)
modules="yes"
;;
+ --disable-modules)
+ modules="no"
+ ;;
--cpu=*)
;;
--target-list=*) target_list="$optarg"
@@ -1259,7 +1262,8 @@ Advanced options (experts only):
--sysconfdir=PATH install config in PATH$confsuffix
--localstatedir=PATH install local state in PATH (set at runtime on win32)
--with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
- --enable-modules enable modules support
+ --enable-modules enable modules support (default)
+ --disable-modules enable modules support
--enable-debug-tcg enable TCG debugging
--disable-debug-tcg disable TCG debugging (default)
--enable-debug-info enable debugging information (default)
@@ -2699,22 +2703,25 @@ if test "$mingw32" = yes; then
else
glib_req_ver=2.12
fi
-glib_modules=gthread-2.0
-if test "$modules" = yes; then
- glib_modules="$glib_modules gmodule-2.0"
-fi
-for i in $glib_modules; do
- if $pkg_config --atleast-version=$glib_req_ver $i; then
- glib_cflags=`$pkg_config --cflags $i`
- glib_libs=`$pkg_config --libs $i`
- CFLAGS="$glib_cflags $CFLAGS"
- LIBS="$glib_libs $LIBS"
- libs_qga="$glib_libs $libs_qga"
- else
- error_exit "glib-$glib_req_ver $i is required to compile QEMU"
- fi
-done
+glib_module_try_config()
+{
+ if $pkg_config --atleast-version=$glib_req_ver $1; then
+ local probe_cflags=$($pkg_config --cflags $1)
+ local probe_libs=$($pkg_config --libs $1)
+ CFLAGS="$probe_cflags $CFLAGS"
+ LIBS="$probe_libs $LIBS"
+ libs_qga="$probe_libs $libs_qga"
+ glib_cflags="$probe_cflags $glib_cflags"
+ glib_libs="$probe_libs $glib_libs"
+ return 0
+ else
+ return 1
+ fi
+}
+
+glib_module_try_config gthread-2.0 || \
+ error_exit "glib-$glib_req_ver gthread-2.0 is required to compile QEMU"
# g_test_trap_subprocess added in 2.38. Used by some tests.
glib_subprocess=yes
@@ -2723,19 +2730,49 @@ if ! $pkg_config --atleast-version=2.38 glib-2.0; then
fi
##########################################
-# SHA command probe for modules
-if test "$modules" = yes; then
- shacmd_probe="sha1sum sha1 shasum"
- for c in $shacmd_probe; do
- if has $c; then
- shacmd="$c"
- break
- fi
- done
- if test "$shacmd" = ""; then
- error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
+# SHA command and gmodule-2.0 probe for modules
+# return 0 if probe succeeds
+# $1: true - force mode, exit if probe fail
+# false - optoinal mode, return 1 if probe fail
+module_try_enable()
+{
+ force=$1
+ shacmd_probe="sha1sum sha1 shasum"
+ for c in $shacmd_probe; do
+ if has $c; then
+ shacmd="$c"
+ break
fi
-fi
+ done
+ if test "$shacmd" = ""; then
+ if $force; then
+ error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
+ else
+ modules="no"
+ return
+ fi
+ fi
+ if ! glib_module_try_config gmodule-2.0; then
+ if $force; then
+ error_exit "glib-$glib_req_ver gthread-2.0 is required to compile QEMU"
+ else
+ modules="no"
+ return
+ fi
+ fi
+ modules="yes"
+}
+
+case "$modules" in
+ yes)
+ module_try_enable true
+ ;;
+ "")
+ module_try_enable false
+ ;;
+ no)
+ ;;
+esac
##########################################
# pixman support probe
--
2.1.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 2/2] .travis.yml: Add "--disable-modules"
2015-01-13 8:53 [Qemu-devel] [PATCH v2 0/2] buildsys: Fix and enable module build Fam Zheng
2015-01-13 8:53 ` [Qemu-devel] [PATCH v2 1/2] configure: Default to " Fam Zheng
@ 2015-01-13 8:53 ` Fam Zheng
1 sibling, 0 replies; 7+ messages in thread
From: Fam Zheng @ 2015-01-13 8:53 UTC (permalink / raw)
To: qemu-devel
Cc: Brian Jackson, Peter Maydell, Michael Tokarev, Stefan Hajnoczi,
Bharata B Rao, Paolo Bonzini, Andreas Färber,
Richard Henderson
Now we default to "--enable-modules", let's cover the old way in travis.
Signed-off-by: Fam Zheng <famz@redhat.com>
---
.travis.yml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/.travis.yml b/.travis.yml
index ad66e5b..12bf1db 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -98,3 +98,6 @@ matrix:
EXTRA_PKGS="liblttng-ust-dev liburcu-dev"
EXTRA_CONFIG="--enable-trace-backends=ust"
compiler: gcc
+ - env: TARGETS=i386-softmmu,x86_64-softmmu
+ EXTRA_CONFIG="--disable-modules"
+ compiler: gcc
--
2.1.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] configure: Default to enable module build
2015-01-13 8:53 ` [Qemu-devel] [PATCH v2 1/2] configure: Default to " Fam Zheng
@ 2015-01-15 16:28 ` Stefan Hajnoczi
2015-02-02 19:34 ` Paolo Bonzini
1 sibling, 0 replies; 7+ messages in thread
From: Stefan Hajnoczi @ 2015-01-15 16:28 UTC (permalink / raw)
To: Fam Zheng
Cc: Brian Jackson, Peter Maydell, Michael Tokarev, qemu-devel,
Stefan Hajnoczi, Bharata B Rao, Paolo Bonzini,
Andreas Färber, Richard Henderson
[-- Attachment #1: Type: text/plain, Size: 3028 bytes --]
On Tue, Jan 13, 2015 at 04:53:58PM +0800, Fam Zheng wrote:
> We have module build support around for a while, but also had it bitrot
> several times. It probably makes sense to enable it by default so that
> people can notice and use it.
>
> Counterpart to --enable-modules, which is turned as default,
> --disable-modules is added to suppress it. If both are omitted, the
> support is guesses as usual.
"Add --disable-modules as a counterpart to --enable-modules, which is
now turned on by default. If both are omitted, support is guessed as
usual."
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
> configure | 95 ++++++++++++++++++++++++++++++++++++++++++++-------------------
> 1 file changed, 66 insertions(+), 29 deletions(-)
>
> diff --git a/configure b/configure
> index 7539645..8280e8a 100755
> --- a/configure
> +++ b/configure
> @@ -271,7 +271,7 @@ gcov_tool="gcov"
> EXESUF=""
> DSOSUF=".so"
> LDFLAGS_SHARED="-shared"
> -modules="no"
> +modules=""
> prefix="/usr/local"
> mandir="\${prefix}/share/man"
> datadir="\${prefix}/share"
> @@ -768,6 +768,9 @@ for opt do
> --enable-modules)
> modules="yes"
> ;;
> + --disable-modules)
> + modules="no"
> + ;;
> --cpu=*)
> ;;
> --target-list=*) target_list="$optarg"
> @@ -1259,7 +1262,8 @@ Advanced options (experts only):
> --sysconfdir=PATH install config in PATH$confsuffix
> --localstatedir=PATH install local state in PATH (set at runtime on win32)
> --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
> - --enable-modules enable modules support
> + --enable-modules enable modules support (default)
> + --disable-modules enable modules support
> --enable-debug-tcg enable TCG debugging
> --disable-debug-tcg disable TCG debugging (default)
> --enable-debug-info enable debugging information (default)
> @@ -2699,22 +2703,25 @@ if test "$mingw32" = yes; then
> else
> glib_req_ver=2.12
> fi
> -glib_modules=gthread-2.0
> -if test "$modules" = yes; then
> - glib_modules="$glib_modules gmodule-2.0"
> -fi
>
> -for i in $glib_modules; do
> - if $pkg_config --atleast-version=$glib_req_ver $i; then
> - glib_cflags=`$pkg_config --cflags $i`
> - glib_libs=`$pkg_config --libs $i`
> - CFLAGS="$glib_cflags $CFLAGS"
> - LIBS="$glib_libs $LIBS"
> - libs_qga="$glib_libs $libs_qga"
> - else
> - error_exit "glib-$glib_req_ver $i is required to compile QEMU"
> - fi
> -done
> +glib_module_try_config()
I guess "module" here means glib package or component?
It's a little confusing since gmodule-2.0 is needed for QEMU modular
build support :).
How about just glib_pkg_config()?
> + if ! glib_module_try_config gmodule-2.0; then
> + if $force; then
> + error_exit "glib-$glib_req_ver gthread-2.0 is required to compile QEMU"
s/gthread-2.0/gmodule-2.0/
[-- Attachment #2: Type: application/pgp-signature, Size: 473 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] configure: Default to enable module build
2015-01-13 8:53 ` [Qemu-devel] [PATCH v2 1/2] configure: Default to " Fam Zheng
2015-01-15 16:28 ` Stefan Hajnoczi
@ 2015-02-02 19:34 ` Paolo Bonzini
2015-02-03 1:29 ` Fam Zheng
1 sibling, 1 reply; 7+ messages in thread
From: Paolo Bonzini @ 2015-02-02 19:34 UTC (permalink / raw)
To: Fam Zheng, qemu-devel
Cc: Brian Jackson, Peter Maydell, Michael Tokarev, Stefan Hajnoczi,
Bharata B Rao, Andreas Färber, Richard Henderson
On 13/01/2015 09:53, Fam Zheng wrote:
> We have module build support around for a while, but also had it bitrot
> several times. It probably makes sense to enable it by default so that
> people can notice and use it.
>
> Counterpart to --enable-modules, which is turned as default,
> --disable-modules is added to suppress it. If both are omitted, the
> support is guesses as usual.
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
I squashed this to unbreak static compilation, but Peter reported that
module linking fails on ARM host:
LINK block/curl.so
/usr/bin/ld: block/curl.o: relocation R_ARM_THM_MOVW_ABS_NC against
`__stack_chk_guard' can not be used when making a shared object;
recompile with -fPIC
block/curl.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
diff --git a/configure b/configure
index a9ae57a..4fae00a 100755
--- a/configure
+++ b/configure
@@ -1536,9 +1536,6 @@ if compile_prog "-Werror -fno-gcse" "" ; then
fi
if test "$static" = "yes" ; then
- if test "$modules" = "yes" ; then
- error_exit "static and modules are mutually incompatible"
- fi
if test "$pie" = "yes" ; then
error_exit "static and pie are mutually incompatible"
else
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? y
@@ -2763,6 +2760,14 @@ fi
module_try_enable()
{
force=$1
+ if test "$static" = "yes"; then
+ if $force; then
+ error_exit "static and modules are mutually incompatible"
+ else
+ modules="no"
+ return
+ fi
+ fi
shacmd_probe="sha1sum sha1 shasum"
for c in $shacmd_probe; do
if has $c; then
Is the above ok?
Paolo
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] configure: Default to enable module build
2015-02-02 19:34 ` Paolo Bonzini
@ 2015-02-03 1:29 ` Fam Zheng
2015-02-03 8:33 ` Paolo Bonzini
0 siblings, 1 reply; 7+ messages in thread
From: Fam Zheng @ 2015-02-03 1:29 UTC (permalink / raw)
To: Paolo Bonzini, Peter Maydell
Cc: Brian Jackson, Michael Tokarev, qemu-devel, Stefan Hajnoczi,
Bharata B Rao, Andreas Färber, Richard Henderson
On Mon, 02/02 20:34, Paolo Bonzini wrote:
>
>
> On 13/01/2015 09:53, Fam Zheng wrote:
> > We have module build support around for a while, but also had it bitrot
> > several times. It probably makes sense to enable it by default so that
> > people can notice and use it.
> >
> > Counterpart to --enable-modules, which is turned as default,
> > --disable-modules is added to suppress it. If both are omitted, the
> > support is guesses as usual.
> >
> > Signed-off-by: Fam Zheng <famz@redhat.com>
>
> I squashed this to unbreak static compilation, but Peter reported that
> module linking fails on ARM host:
> LINK block/curl.so
> /usr/bin/ld: block/curl.o: relocation R_ARM_THM_MOVW_ABS_NC against
> `__stack_chk_guard' can not be used when making a shared object;
> recompile with -fPIC
> block/curl.o: could not read symbols: Bad value
> collect2: error: ld returned 1 exit status
I don't see how -fPIC is missed in ARM host :( Does the below patch fix this?
>
> diff --git a/configure b/configure
> index a9ae57a..4fae00a 100755
> --- a/configure
> +++ b/configure
> @@ -1536,9 +1536,6 @@ if compile_prog "-Werror -fno-gcse" "" ; then
> fi
>
> if test "$static" = "yes" ; then
> - if test "$modules" = "yes" ; then
> - error_exit "static and modules are mutually incompatible"
> - fi
> if test "$pie" = "yes" ; then
> error_exit "static and pie are mutually incompatible"
> else
> Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? y
> @@ -2763,6 +2760,14 @@ fi
> module_try_enable()
> {
> force=$1
> + if test "$static" = "yes"; then
> + if $force; then
> + error_exit "static and modules are mutually incompatible"
> + else
> + modules="no"
> + return
> + fi
> + fi
> shacmd_probe="sha1sum sha1 shasum"
> for c in $shacmd_probe; do
> if has $c; then
>
>
> Is the above ok?
Yes, it looks correct.
Fam
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] configure: Default to enable module build
2015-02-03 1:29 ` Fam Zheng
@ 2015-02-03 8:33 ` Paolo Bonzini
0 siblings, 0 replies; 7+ messages in thread
From: Paolo Bonzini @ 2015-02-03 8:33 UTC (permalink / raw)
To: Fam Zheng, Peter Maydell
Cc: Brian Jackson, Michael Tokarev, qemu-devel, Stefan Hajnoczi,
Bharata B Rao, Andreas Färber, Richard Henderson
On 03/02/2015 02:29, Fam Zheng wrote:
> > Peter reported that module linking fails on ARM host:
> > LINK block/curl.so
> > /usr/bin/ld: block/curl.o: relocation R_ARM_THM_MOVW_ABS_NC against
> > `__stack_chk_guard' can not be used when making a shared object;
> > recompile with -fPIC
> > block/curl.o: could not read symbols: Bad value
> > collect2: error: ld returned 1 exit status
>
> I don't see how -fPIC is missed in ARM host :( Does the below patch fix this?
I haven't yet tested on ARM host, hope to do so some time this week.
Paolo
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-02-03 8:33 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-13 8:53 [Qemu-devel] [PATCH v2 0/2] buildsys: Fix and enable module build Fam Zheng
2015-01-13 8:53 ` [Qemu-devel] [PATCH v2 1/2] configure: Default to " Fam Zheng
2015-01-15 16:28 ` Stefan Hajnoczi
2015-02-02 19:34 ` Paolo Bonzini
2015-02-03 1:29 ` Fam Zheng
2015-02-03 8:33 ` Paolo Bonzini
2015-01-13 8:53 ` [Qemu-devel] [PATCH v2 2/2] .travis.yml: Add "--disable-modules" Fam Zheng
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).