Patchwork [2/2] guest agent: remove uneeded dependencies

login
register
mail settings
Submitter Michael Roth
Date Aug. 11, 2011, 8:38 p.m.
Message ID <1313095092-25092-2-git-send-email-mdroth@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/109684/
State New
Headers show

Comments

Michael Roth - Aug. 11, 2011, 8:38 p.m.
This patch tries to cull any uneeded library dependencies from the guest
agent to improve portability across various distros. We do so by being
as explicit as possible about in-tree dependencies rather than relying
on existing *-obj-y targets, and by manually setting LIBS for the
qemu-ga target to avoid pulling in LIBS_TOOLS libraries discovered by
configure.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 Makefile      |    8 ++++----
 Makefile.objs |    9 +++++++++
 configure     |    3 +++
 3 files changed, 16 insertions(+), 4 deletions(-)
Anthony Liguori - Aug. 12, 2011, 2:07 p.m.
On 08/11/2011 03:38 PM, Michael Roth wrote:
> This patch tries to cull any uneeded library dependencies from the guest
> agent to improve portability across various distros. We do so by being
> as explicit as possible about in-tree dependencies rather than relying
> on existing *-obj-y targets, and by manually setting LIBS for the
> qemu-ga target to avoid pulling in LIBS_TOOLS libraries discovered by
> configure.
>
> Signed-off-by: Michael Roth<mdroth@linux.vnet.ibm.com>

This breaks the build for me:

qga/guest-agent-command-state.o: In function `ga_command_state_cleanup_all':
/home/anthony/git/qemu/qga/guest-agent-command-state.c:64: undefined 
reference to `g_assertion_message_expr'
qga/guest-agent-command-state.o: In function `ga_command_state_init_all':
/home/anthony/git/qemu/qga/guest-agent-command-state.c:49: undefined 
reference to `g_slist_foreach'
qga/guest-agent-command-state.o: In function `ga_command_state_cleanup_all':
/home/anthony/git/qemu/qga/guest-agent-command-state.c:65: undefined 
reference to `g_slist_foreach'

Regards,

Anthony Liguori

> ---
>   Makefile      |    8 ++++----
>   Makefile.objs |    9 +++++++++
>   configure     |    3 +++
>   3 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 9e5871b..ccf52ab 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -166,6 +166,7 @@ test-coroutine: test-coroutine.o qemu-timer-common.o async.o $(coroutine-obj-y)
>   $(qapi-obj-y): $(GENERATED_HEADERS)
>   qapi-dir := qapi-generated
>   test-visitor.o test-qmp-commands.o qemu-ga$(EXESUF): QEMU_CFLAGS += -I $(qapi-dir)
> +qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
>
>   $(qapi-dir)/test-qapi-types.c: $(qapi-dir)/test-qapi-types.h
>   $(qapi-dir)/test-qapi-types.h: $(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-types.py
> @@ -192,12 +193,11 @@ test-visitor: test-visitor.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o $
>   test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
>   test-qmp-commands: test-qmp-commands.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o $(qapi-obj-y) error.o osdep.o qemu-malloc.o $(oslib-obj-y) qjson.o json-streamer.o json-lexer.o json-parser.o qerror.o qemu-error.o qemu-tool.o $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
>
> -QGALIB=qga/guest-agent-command-state.o qga/guest-agent-commands.o
>   QGALIB_GEN=$(addprefix $(qapi-dir)/, qga-qapi-types.c qga-qapi-types.h qga-qapi-visit.c qga-qmp-marshal.c)
> -
>   $(QGALIB_GEN): $(GENERATED_HEADERS)
> -$(QGALIB) qemu-ga.o: $(QGALIB_GEN) $(qapi-obj-y)
> -qemu-ga$(EXESUF): qemu-ga.o $(QGALIB) qemu-tool.o qemu-error.o error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) $(qapi-obj-y) qemu-timer-common.o qemu-sockets.o module.o qapi/qmp-dispatch.o qapi/qmp-registry.o $(qapi-dir)/qga-qapi-visit.o $(qapi-dir)/qga-qapi-types.o $(qapi-dir)/qga-qmp-marshal.o
> +$(qga-obj-y) qemu-ga.o: $(QGALIB_GEN)
> +
> +qemu-ga$(EXESUF): qemu-ga.o $(qga-obj-y) $(qapi-obj-y) $(trace-obj-y) $(qobject-obj-y) $(version-obj-y) $(addprefix $(qapi-dir)/, qga-qapi-visit.o qga-qapi-types.o qga-qmp-marshal.o)
>
>   QEMULIBS=libhw32 libhw64 libuser libdis libdis-user
>
> diff --git a/Makefile.objs b/Makefile.objs
> index 432b619..bb8af56 100644
> --- a/Makefile.objs
> +++ b/Makefile.objs
> @@ -393,6 +393,15 @@ qapi-nested-y = qapi-visit-core.o qmp-input-visitor.o qmp-output-visitor.o qapi-
>   qapi-nested-y += qmp-registry.o qmp-dispatch.o
>   qapi-obj-y = $(addprefix qapi/, $(qapi-nested-y))
>
> +######################################################################
> +# guest agent
> +
> +qga-nested-y = guest-agent-commands.o guest-agent-command-state.o
> +qga-obj-y = $(addprefix qga/, $(qga-nested-y))
> +qga-obj-y += qemu-ga.o qemu-tool.o qemu-error.o qemu-sockets.o module.o qemu-malloc.o qemu-option.o cutils.o osdep.o
> +qga-obj-$(CONFIG_WIN32) += oslib-win32.o
> +qga-obj-$(CONFIG_POSIX) += oslib-posix.o
> +
>   vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS)
>
>   vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS)
> diff --git a/configure b/configure
> index 0c67a4a..8a566af 100755
> --- a/configure
> +++ b/configure
> @@ -92,6 +92,7 @@ libs_tools=""
>   audio_pt_int=""
>   audio_win_int=""
>   cc_i386=i386-pc-linux-gnu-gcc
> +libs_qga=""
>
>   target_list=""
>
> @@ -1850,6 +1851,7 @@ if test "$guest_agent" != "no" ; then
>           glib_libs=`$pkg_config --libs glib-2.0 2>/dev/null`
>           libs_softmmu="$glib_libs $libs_softmmu"
>           libs_tools="$glib_libs $libs_tools"
> +        libs_qga="$glib_libs $libs_qga"
>       else
>           echo "glib-2.0 required to compile QEMU"
>           exit 1
> @@ -3109,6 +3111,7 @@ echo "ARLIBS_END=$arlibs_end">>  $config_host_mak
>   echo "LIBS+=$LIBS">>  $config_host_mak
>   echo "LIBS_TOOLS+=$libs_tools">>  $config_host_mak
>   echo "EXESUF=$EXESUF">>  $config_host_mak
> +echo "LIBS_QGA+=$libs_qga">>  $config_host_mak
>
>   # generate list of library paths for linker script
>
Michael Roth - Aug. 12, 2011, 3:11 p.m.
On 08/12/2011 09:07 AM, Anthony Liguori wrote:
> On 08/11/2011 03:38 PM, Michael Roth wrote:
>> This patch tries to cull any uneeded library dependencies from the guest
>> agent to improve portability across various distros. We do so by being
>> as explicit as possible about in-tree dependencies rather than relying
>> on existing *-obj-y targets, and by manually setting LIBS for the
>> qemu-ga target to avoid pulling in LIBS_TOOLS libraries discovered by
>> configure.
>>
>> Signed-off-by: Michael Roth<mdroth@linux.vnet.ibm.com>
>
> This breaks the build for me:
>
> qga/guest-agent-command-state.o: In function
> `ga_command_state_cleanup_all':
> /home/anthony/git/qemu/qga/guest-agent-command-state.c:64: undefined
> reference to `g_assertion_message_expr'
> qga/guest-agent-command-state.o: In function `ga_command_state_init_all':
> /home/anthony/git/qemu/qga/guest-agent-command-state.c:49: undefined
> reference to `g_slist_foreach'
> qga/guest-agent-command-state.o: In function
> `ga_command_state_cleanup_all':
> /home/anthony/git/qemu/qga/guest-agent-command-state.c:65: undefined
> reference to `g_slist_foreach'
>

Hmm, I'm not seeing it on Ubuntu or RHEL. I can reproduce if I force 
LIBS_QGA="", however. Did you re-run configure after applying?

> Regards,
>
> Anthony Liguori
>
>> ---
>> Makefile | 8 ++++----
>> Makefile.objs | 9 +++++++++
>> configure | 3 +++
>> 3 files changed, 16 insertions(+), 4 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 9e5871b..ccf52ab 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -166,6 +166,7 @@ test-coroutine: test-coroutine.o
>> qemu-timer-common.o async.o $(coroutine-obj-y)
>> $(qapi-obj-y): $(GENERATED_HEADERS)
>> qapi-dir := qapi-generated
>> test-visitor.o test-qmp-commands.o qemu-ga$(EXESUF): QEMU_CFLAGS += -I
>> $(qapi-dir)
>> +qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
>>
>> $(qapi-dir)/test-qapi-types.c: $(qapi-dir)/test-qapi-types.h
>> $(qapi-dir)/test-qapi-types.h: $(SRC_PATH)/qapi-schema-test.json
>> $(SRC_PATH)/scripts/qapi-types.py
>> @@ -192,12 +193,11 @@ test-visitor: test-visitor.o qfloat.o qint.o
>> qdict.o qstring.o qlist.o qbool.o $
>> test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c
>> test-qapi-types.h test-qapi-visit.c test-qapi-visit.h
>> test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
>> test-qmp-commands: test-qmp-commands.o qfloat.o qint.o qdict.o
>> qstring.o qlist.o qbool.o $(qapi-obj-y) error.o osdep.o qemu-malloc.o
>> $(oslib-obj-y) qjson.o json-streamer.o json-lexer.o json-parser.o
>> qerror.o qemu-error.o qemu-tool.o $(qapi-dir)/test-qapi-visit.o
>> $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
>>
>> -QGALIB=qga/guest-agent-command-state.o qga/guest-agent-commands.o
>> QGALIB_GEN=$(addprefix $(qapi-dir)/, qga-qapi-types.c qga-qapi-types.h
>> qga-qapi-visit.c qga-qmp-marshal.c)
>> -
>> $(QGALIB_GEN): $(GENERATED_HEADERS)
>> -$(QGALIB) qemu-ga.o: $(QGALIB_GEN) $(qapi-obj-y)
>> -qemu-ga$(EXESUF): qemu-ga.o $(QGALIB) qemu-tool.o qemu-error.o
>> error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y)
>> $(version-obj-y) $(qapi-obj-y) qemu-timer-common.o qemu-sockets.o
>> module.o qapi/qmp-dispatch.o qapi/qmp-registry.o
>> $(qapi-dir)/qga-qapi-visit.o $(qapi-dir)/qga-qapi-types.o
>> $(qapi-dir)/qga-qmp-marshal.o
>> +$(qga-obj-y) qemu-ga.o: $(QGALIB_GEN)
>> +
>> +qemu-ga$(EXESUF): qemu-ga.o $(qga-obj-y) $(qapi-obj-y) $(trace-obj-y)
>> $(qobject-obj-y) $(version-obj-y) $(addprefix $(qapi-dir)/,
>> qga-qapi-visit.o qga-qapi-types.o qga-qmp-marshal.o)
>>
>> QEMULIBS=libhw32 libhw64 libuser libdis libdis-user
>>
>> diff --git a/Makefile.objs b/Makefile.objs
>> index 432b619..bb8af56 100644
>> --- a/Makefile.objs
>> +++ b/Makefile.objs
>> @@ -393,6 +393,15 @@ qapi-nested-y = qapi-visit-core.o
>> qmp-input-visitor.o qmp-output-visitor.o qapi-
>> qapi-nested-y += qmp-registry.o qmp-dispatch.o
>> qapi-obj-y = $(addprefix qapi/, $(qapi-nested-y))
>>
>> +######################################################################
>> +# guest agent
>> +
>> +qga-nested-y = guest-agent-commands.o guest-agent-command-state.o
>> +qga-obj-y = $(addprefix qga/, $(qga-nested-y))
>> +qga-obj-y += qemu-ga.o qemu-tool.o qemu-error.o qemu-sockets.o
>> module.o qemu-malloc.o qemu-option.o cutils.o osdep.o
>> +qga-obj-$(CONFIG_WIN32) += oslib-win32.o
>> +qga-obj-$(CONFIG_POSIX) += oslib-posix.o
>> +
>> vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS)
>>
>> vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS)
>> diff --git a/configure b/configure
>> index 0c67a4a..8a566af 100755
>> --- a/configure
>> +++ b/configure
>> @@ -92,6 +92,7 @@ libs_tools=""
>> audio_pt_int=""
>> audio_win_int=""
>> cc_i386=i386-pc-linux-gnu-gcc
>> +libs_qga=""
>>
>> target_list=""
>>
>> @@ -1850,6 +1851,7 @@ if test "$guest_agent" != "no" ; then
>> glib_libs=`$pkg_config --libs glib-2.0 2>/dev/null`
>> libs_softmmu="$glib_libs $libs_softmmu"
>> libs_tools="$glib_libs $libs_tools"
>> + libs_qga="$glib_libs $libs_qga"
>> else
>> echo "glib-2.0 required to compile QEMU"
>> exit 1
>> @@ -3109,6 +3111,7 @@ echo "ARLIBS_END=$arlibs_end">> $config_host_mak
>> echo "LIBS+=$LIBS">> $config_host_mak
>> echo "LIBS_TOOLS+=$libs_tools">> $config_host_mak
>> echo "EXESUF=$EXESUF">> $config_host_mak
>> +echo "LIBS_QGA+=$libs_qga">> $config_host_mak
>>
>> # generate list of library paths for linker script
>>
>

Patch

diff --git a/Makefile b/Makefile
index 9e5871b..ccf52ab 100644
--- a/Makefile
+++ b/Makefile
@@ -166,6 +166,7 @@  test-coroutine: test-coroutine.o qemu-timer-common.o async.o $(coroutine-obj-y)
 $(qapi-obj-y): $(GENERATED_HEADERS)
 qapi-dir := qapi-generated
 test-visitor.o test-qmp-commands.o qemu-ga$(EXESUF): QEMU_CFLAGS += -I $(qapi-dir)
+qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
 
 $(qapi-dir)/test-qapi-types.c: $(qapi-dir)/test-qapi-types.h
 $(qapi-dir)/test-qapi-types.h: $(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-types.py
@@ -192,12 +193,11 @@  test-visitor: test-visitor.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o $
 test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
 test-qmp-commands: test-qmp-commands.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o $(qapi-obj-y) error.o osdep.o qemu-malloc.o $(oslib-obj-y) qjson.o json-streamer.o json-lexer.o json-parser.o qerror.o qemu-error.o qemu-tool.o $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
 
-QGALIB=qga/guest-agent-command-state.o qga/guest-agent-commands.o
 QGALIB_GEN=$(addprefix $(qapi-dir)/, qga-qapi-types.c qga-qapi-types.h qga-qapi-visit.c qga-qmp-marshal.c)
-
 $(QGALIB_GEN): $(GENERATED_HEADERS)
-$(QGALIB) qemu-ga.o: $(QGALIB_GEN) $(qapi-obj-y)
-qemu-ga$(EXESUF): qemu-ga.o $(QGALIB) qemu-tool.o qemu-error.o error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) $(qapi-obj-y) qemu-timer-common.o qemu-sockets.o module.o qapi/qmp-dispatch.o qapi/qmp-registry.o $(qapi-dir)/qga-qapi-visit.o $(qapi-dir)/qga-qapi-types.o $(qapi-dir)/qga-qmp-marshal.o
+$(qga-obj-y) qemu-ga.o: $(QGALIB_GEN)
+
+qemu-ga$(EXESUF): qemu-ga.o $(qga-obj-y) $(qapi-obj-y) $(trace-obj-y) $(qobject-obj-y) $(version-obj-y) $(addprefix $(qapi-dir)/, qga-qapi-visit.o qga-qapi-types.o qga-qmp-marshal.o)
 
 QEMULIBS=libhw32 libhw64 libuser libdis libdis-user
 
diff --git a/Makefile.objs b/Makefile.objs
index 432b619..bb8af56 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -393,6 +393,15 @@  qapi-nested-y = qapi-visit-core.o qmp-input-visitor.o qmp-output-visitor.o qapi-
 qapi-nested-y += qmp-registry.o qmp-dispatch.o
 qapi-obj-y = $(addprefix qapi/, $(qapi-nested-y))
 
+######################################################################
+# guest agent
+
+qga-nested-y = guest-agent-commands.o guest-agent-command-state.o
+qga-obj-y = $(addprefix qga/, $(qga-nested-y))
+qga-obj-y += qemu-ga.o qemu-tool.o qemu-error.o qemu-sockets.o module.o qemu-malloc.o qemu-option.o cutils.o osdep.o
+qga-obj-$(CONFIG_WIN32) += oslib-win32.o
+qga-obj-$(CONFIG_POSIX) += oslib-posix.o
+
 vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS)
 
 vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS)
diff --git a/configure b/configure
index 0c67a4a..8a566af 100755
--- a/configure
+++ b/configure
@@ -92,6 +92,7 @@  libs_tools=""
 audio_pt_int=""
 audio_win_int=""
 cc_i386=i386-pc-linux-gnu-gcc
+libs_qga=""
 
 target_list=""
 
@@ -1850,6 +1851,7 @@  if test "$guest_agent" != "no" ; then
         glib_libs=`$pkg_config --libs glib-2.0 2>/dev/null`
         libs_softmmu="$glib_libs $libs_softmmu"
         libs_tools="$glib_libs $libs_tools"
+        libs_qga="$glib_libs $libs_qga"
     else
         echo "glib-2.0 required to compile QEMU"
         exit 1
@@ -3109,6 +3111,7 @@  echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
 echo "LIBS+=$LIBS" >> $config_host_mak
 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
 echo "EXESUF=$EXESUF" >> $config_host_mak
+echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
 
 # generate list of library paths for linker script