diff mbox

[v6,8/8] block: convert block drivers linked with libs to modules

Message ID 1378906448-15834-9-git-send-email-famz@redhat.com
State New
Headers show

Commit Message

Fam Zheng Sept. 11, 2013, 1:34 p.m. UTC
The converted block drivers are:

    curl
    iscsi
    rbd
    ssh
    glusterfs

no longer adds flags and libs for them to global variables, instead
create config-host.mak variables like FOO_CFLAGS and FOO_LIBS, which is
used as per object cflags and libs.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 block/Makefile.objs | 11 ++++++++++-
 configure           | 33 +++++++++++++++------------------
 2 files changed, 25 insertions(+), 19 deletions(-)

Comments

Daniel P. Berrangé Sept. 11, 2013, 3:41 p.m. UTC | #1
On Wed, Sep 11, 2013 at 09:34:08PM +0800, Fam Zheng wrote:
> The converted block drivers are:
> 
>     curl
>     iscsi
>     rbd
>     ssh
>     glusterfs
> 
> no longer adds flags and libs for them to global variables, instead
> create config-host.mak variables like FOO_CFLAGS and FOO_LIBS, which is
> used as per object cflags and libs.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  block/Makefile.objs | 11 ++++++++++-
>  configure           | 33 +++++++++++++++------------------
>  2 files changed, 25 insertions(+), 19 deletions(-)

After this is applied, I can no longer use http:/// URIs with the
curl driver, if I do not build with  '--enable-modules' passed to
configure.

  $  ~/usr/qemu-git/bin/qemu-system-x86_64 -cdrom http://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux//releases/19/Fedora/x86_64/os/images/boot.iso
qemu-system-x86_64: -cdrom http://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux//releases/19/Fedora/x86_64/os/images/boot.iso: Unknown protocol
qemu-system-x86_64: -cdrom http://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux//releases/19/Fedora/x86_64/os/images/boot.iso: could not open disk image http://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux//releases/19/Fedora/x86_64/os/images/boot.iso: No such file or directory


So it seems driver registration is broken in some way when modules aren't
enabled at compile time.

Daniel
Fam Zheng Sept. 12, 2013, 2:07 a.m. UTC | #2
On Wed, 09/11 16:41, Daniel P. Berrange wrote:
> On Wed, Sep 11, 2013 at 09:34:08PM +0800, Fam Zheng wrote:
> > The converted block drivers are:
> > 
> >     curl
> >     iscsi
> >     rbd
> >     ssh
> >     glusterfs
> > 
> > no longer adds flags and libs for them to global variables, instead
> > create config-host.mak variables like FOO_CFLAGS and FOO_LIBS, which is
> > used as per object cflags and libs.
> > 
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> > ---
> >  block/Makefile.objs | 11 ++++++++++-
> >  configure           | 33 +++++++++++++++------------------
> >  2 files changed, 25 insertions(+), 19 deletions(-)
> 
> After this is applied, I can no longer use http:/// URIs with the
> curl driver, if I do not build with  '--enable-modules' passed to
> configure.
> 
>   $  ~/usr/qemu-git/bin/qemu-system-x86_64 -cdrom http://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux//releases/19/Fedora/x86_64/os/images/boot.iso
> qemu-system-x86_64: -cdrom http://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux//releases/19/Fedora/x86_64/os/images/boot.iso: Unknown protocol
> qemu-system-x86_64: -cdrom http://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux//releases/19/Fedora/x86_64/os/images/boot.iso: could not open disk image http://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux//releases/19/Fedora/x86_64/os/images/boot.iso: No such file or directory
> 
> 
> So it seems driver registration is broken in some way when modules aren't
> enabled at compile time.
> 
Yes, patch 05 is broken (see my reply there). Thanks for pointing out.
diff mbox

Patch

diff --git a/block/Makefile.objs b/block/Makefile.objs
index 3bb85b5..f98d379 100644
--- a/block/Makefile.objs
+++ b/block/Makefile.objs
@@ -23,4 +23,13 @@  common-obj-y += commit.o
 common-obj-y += mirror.o
 common-obj-y += backup.o
 
-$(obj)/curl.o: QEMU_CFLAGS+=$(CURL_CFLAGS)
+iscsi.o-cflags     := $(LIBISCSI_CFLAGS)
+iscsi.o-libs       := $(LIBISCSI_LIBS)
+curl.o-cflags      := $(CURL_CFLAGS)
+curl.o-libs        := $(CURL_LIBS)
+rbd.o-cflags       := $(RBD_CFLAGS)
+rbd.o-libs         := $(RBD_LIBS)
+gluster.o-cflags   := $(GLUSTERFS_CFLAGS)
+gluster.o-libs     := $(GLUSTERFS_LIBS)
+ssh.o-cflags       := $(LIBSSH2_CFLAGS)
+ssh.o-libs         := $(LIBSSH2_LIBS)
diff --git a/configure b/configure
index 275b1a0..2f02b3d 100755
--- a/configure
+++ b/configure
@@ -2221,8 +2221,6 @@  EOF
   curl_libs=`$curlconfig --libs 2>/dev/null`
   if compile_prog "$curl_cflags" "$curl_libs" ; then
     curl=yes
-    libs_tools="$curl_libs $libs_tools"
-    libs_softmmu="$curl_libs $libs_softmmu"
   else
     if test "$curl" = "yes" ; then
       feature_not_found "curl"
@@ -2382,8 +2380,6 @@  EOF
   rbd_libs="-lrbd -lrados"
   if compile_prog "" "$rbd_libs" ; then
     rbd=yes
-    libs_tools="$rbd_libs $libs_tools"
-    libs_softmmu="$rbd_libs $libs_softmmu"
   else
     if test "$rbd" = "yes" ; then
       feature_not_found "rados block device"
@@ -2400,9 +2396,6 @@  if test "$libssh2" != "no" ; then
     libssh2_cflags=`$pkg_config libssh2 --cflags`
     libssh2_libs=`$pkg_config libssh2 --libs`
     libssh2=yes
-    libs_tools="$libssh2_libs $libs_tools"
-    libs_softmmu="$libssh2_libs $libs_softmmu"
-    QEMU_CFLAGS="$QEMU_CFLAGS $libssh2_cflags"
   else
     if test "$libssh2" = "yes" ; then
       error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
@@ -2618,9 +2611,6 @@  if test "$glusterfs" != "no" ; then
     glusterfs="yes"
     glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
     glusterfs_libs=`$pkg_config --libs glusterfs-api`
-    CFLAGS="$CFLAGS $glusterfs_cflags"
-    libs_tools="$glusterfs_libs $libs_tools"
-    libs_softmmu="$glusterfs_libs $libs_softmmu"
     if $pkg_config --atleast-version=5 glusterfs-api; then
       glusterfs_discard="yes"
     fi
@@ -2988,11 +2978,9 @@  EOF
     libiscsi="yes"
     libiscsi_cflags=$($pkg_config --cflags libiscsi)
     libiscsi_libs=$($pkg_config --libs libiscsi)
-    CFLAGS="$CFLAGS $libiscsi_cflags"
-    LIBS="$LIBS $libiscsi_libs"
   elif compile_prog "" "-liscsi" ; then
     libiscsi="yes"
-    LIBS="$LIBS -liscsi"
+    libiscsi_libs="-liscsi"
   else
     if test "$libiscsi" = "yes" ; then
       feature_not_found "libiscsi"
@@ -3907,8 +3895,9 @@  if test "$bswap_h" = "yes" ; then
   echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
 fi
 if test "$curl" = "yes" ; then
-  echo "CONFIG_CURL=y" >> $config_host_mak
+  echo "CONFIG_CURL=m" >> $config_host_mak
   echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
+  echo "CURL_LIBS=$curl_libs" >> $config_host_mak
 fi
 if test "$brlapi" = "yes" ; then
   echo "CONFIG_BRLAPI=y" >> $config_host_mak
@@ -3997,7 +3986,9 @@  if test "$glx" = "yes" ; then
 fi
 
 if test "$libiscsi" = "yes" ; then
-  echo "CONFIG_LIBISCSI=y" >> $config_host_mak
+  echo "CONFIG_LIBISCSI=m" >> $config_host_mak
+  echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
+  echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
 fi
 
 if test "$seccomp" = "yes"; then
@@ -4018,7 +4009,9 @@  if test "$qom_cast_debug" = "yes" ; then
   echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
 fi
 if test "$rbd" = "yes" ; then
-  echo "CONFIG_RBD=y" >> $config_host_mak
+  echo "CONFIG_RBD=m" >> $config_host_mak
+  echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
+  echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
 fi
 
 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
@@ -4056,7 +4049,9 @@  if test "$getauxval" = "yes" ; then
 fi
 
 if test "$glusterfs" = "yes" ; then
-  echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
+  echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
+  echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
+  echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
 fi
 
 if test "$glusterfs_discard" = "yes" ; then
@@ -4064,7 +4059,9 @@  if test "$glusterfs_discard" = "yes" ; then
 fi
 
 if test "$libssh2" = "yes" ; then
-  echo "CONFIG_LIBSSH2=y" >> $config_host_mak
+  echo "CONFIG_LIBSSH2=m" >> $config_host_mak
+  echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
+  echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
 fi
 
 if test "$virtio_blk_data_plane" = "yes" ; then