[libvirt] libvirt, FreeBSD portability inquiry

Matthias Bolte matthias.bolte at googlemail.com
Sun May 15 05:25:31 UTC 2011


2011/5/14 Jason Helfman <jhelfman at e-e.com>:
>> 2011/5/14 Jason Helfman <jhelfman at e-e.com>:
>>> -----BEGIN PGP SIGNED MESSAGE-----
>>> Hash: SHA256
>>>
>>> On Sat, May 14, 2011 at 09:36:17AM +0200, Matthias Bolte thus spake:
>>>>2011/5/14 Jason Helfman <jhelfman at e-e.com>:
>>>>> On Sat, May 14, 2011 at 08:45:41AM +0200, Matthias Bolte thus spake:
>>>>>>
>>>>>> 2011/5/14 Jason Helfman <jhelfman at e-e.com>:
>>>>>>>
>>>>>>> On Sat, May 14, 2011 at 08:25:13AM +0200, Matthias Bolte thus spake:
>>>>>>>>
>>>>>>>> 2011/5/14 Jason Helfman <jhelfman at e-e.com>:
>>>>>>>>>
>>>>>>>>> On Fri, May 13, 2011 at 08:38:58AM +0200, Matthias Bolte thus
>>>>>>>>> spake:
>>>>>>>>>>
>>>>>>>>>> 2011/5/12 Jason Helfman <jhelfman at e-e.com>:
>>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> I am interested in porting libvirt to FreeBSD, and am curious if
>>>>>>>>>>> there
>>>>>>>>>>> may
>>>>>>>>>>> be anything that may not be possible at this point in respect to
>>>>>>>>>>> the
>>>>>>>>>>> libvirt
>>>>>>>>>>> source code to be aware of. Here is the log of the build of the
>>>>>>>>>>> software:
>>>>>>>>>>>
>>>>>>>>>>> I know it has been ported to MacOSX, and thought it could then
>>>>>>>>>>> be
>>>>>>>>>>> possible
>>>>>>>>>>> with FreeBSD.
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Jason
>>>>>>>>>>
>>>>>>>>>> libvirt should be compilable on FreeBSD. At least it was in this
>>>>>>>>>> state
>>>>>>>>>> a while ago when I've fixed some compile errors. I just check it
>>>>>>>>>> again.
>>>>>>>>>>
>>>>>>>>>> You'll need to explicitly run
>>>>>>>>>>
>>>>>>>>>> ./configure --without-network --without-polkit
>>>>>>>>>>
>>>>>>>>>> because libvirt's virtual networking code is specific to Linux
>>>>>>>>>> bridges
>>>>>>>>>> and libvirt doesn't polkit on FreeBSD yet.
>>>>>>>>>>
>>>>>>>>>> You'll also need this patch on top of libvirt 0.9.1
>>>>>>>>>>
>>>>>>>>>> https://www.redhat.com/archives/libvir-list/2011-May/msg00831.html
>>>>>>>>>>
>>>>>>>>>> Then it compiles for me. There are still several warnings about
>>>>>>>>>> NULL
>>>>>>>>>> format strings and devname shadowing a global symbol.
>>>>>>>>>>
>>>>>>>>>> Maybe Eric knows if this warning is critical:
>>>>>>>>>>
>>>>>>>>>> util/sexpr.c: In function 'sexpr2string':
>>>>>>>>>> util/sexpr.c:250: warning: null format string [-Wformat]
>>>>>>>>>>
>>>>>>>>>> virSexprError(VIR_ERR_SEXPR_SERIAL, NULL);
>>>>>>>>>>
>>>>>>>>>> So aside from possible simple compile errors you'll need to port
>>>>>>>>>> at
>>>>>>>>>> least the virtual networking to FreeBSD when you want to run QEMU
>>>>>>>>>> using libvirt on FreeBSD. If you just want to support the libvirt
>>>>>>>>>> client side to use libvirt to control a hypervisor running on a
>>>>>>>>>> non-FreeBSD host then you're already there.
>>>>>>>>>>
>>>>>>>>>> Matthias
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Here is the port: http://jgh.devio.us/files/libvirt.shar.txt
>>>>>>>>>
>>>>>>>>> Anyone have any thoughts on it, or can report success on it?
>>>>>>>>>
>>>>>>>>> download the txt file
>>>>>>>>> run sh ./libvirt.shar.txt
>>>>>>>>> cd libvirt
>>>>>>>>> make install
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Jason
>>>>>>>>
>>>>>>>> I downloaded libvirt.shar.txt to /usr/src/jason/ and running make
>>>>>>>> in
>>>>>>>> the libvirt subdirectory complains about libvirt-0.9.1.tar.gz not
>>>>>>>> being in /usr/src/jason/libvirt/distinfo.
>>>>>>>>
>>>>>>>> I'm not really familiar with FreeBSD, did I miss something?
>>>>>>>>
>>>>>>>> Matthias
>>>>>>>>
>>>>>>>
>>>>>>> What happens if you run:
>>>>>>>
>>>>>>> make fetch
>>>>>>> make install
>>>>>>>
>>>>>>> What commands did you run to get the error? I am not having that
>>>>>>> issue.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Jason
>>>>>>
>>>>>> make fetch gives the same error
>>>>>>
>>>>>> Okay, so here's what I did:
>>>>>>
>>>>>> mkdir -p /usr/src/foobar/jason
>>>>>> cd /usr/src/foobar/jason
>>>>>> wget http://jgh.devio.us/files/libvirt.shar.txt
>>>>>> sh libvirt.shar.txt
>>>>>>
>>>>>> This outputs:
>>>>>>
>>>>>> c - libvirt/
>>>>>> x - libvirt/Makefile
>>>>>> x - libvirt/distinfo
>>>>>> c - libvirt/files
>>>>>> x - libvirt/files/patch-src__util__command.c
>>>>>> x - libvirt/pkg-descr
>>>>>> x - libvirt/pkg-plist
>>>>>>
>>>>>> Then:
>>>>>>
>>>>>> cd libvirt
>>>>>> make fetch
>>>>>>
>>>>>> This outputs:
>>>>>>
>>>>>> ===>  Vulnerability check disabled, database not found
>>>>>> ===>  License accepted by the user
>>>>>> => libvirt-0.9.1.tar.gz is not in
>>>>>> /usr/src/foobar/jason/libvirt/distinfo.
>>>>>> => Either /usr/src/foobar/jason/libvirt/distinfo is out of date, or
>>>>>> => libvirt-0.9.1.tar.gz is spelled incorrectly.
>>>>>> *** Error code 1
>>>>>> Stop in /usr/src/foobar/jason/libvirt.
>>>>>>
>>>>>> Matthias
>>>>>>
>>>>>
>>>>> Try and grab a fresh copy of the txt file again. I just re-uploaded
>>>>> it.
>>>>> If you get the same error, I would be suprised, but if you do run
>>>>> this:
>>>>
>>>>I have ports installed under /usr/ports and even the new version fails
>>>>with the same error as before:
>>>>
>>>>> make makesum
>>>>> make install
>>>>
>>>>freebsd# make makesum
>>>>===>  Vulnerability check disabled, database not found
>>>>===>  License accepted by the user
>>>>=> libvirt-0.9.1.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>>>>=> Attempting to fetch from http://libvirt.org/sources/.
>>>>libvirt-0.9.1.tar.gz                          100% of   14
>>>> MB  258 kBps 00m00s
>>>>
>>>>freebsd# less distinfo
>>>>MD5 (libvirt-0.9.1.tar.gz) = 4182dbe290cca4344a5387950dc06433
>>>>SHA256 (libvirt-0.9.1.tar.gz) =
>>>>02b3423bb188a4a904eac3ee5cb698a55f5172e4d0ac62cbbcb9245a121b7b2b
>>>>SIZE (libvirt-0.9.1.tar.gz) = 15216787
>>>>
>>>>freebsd# make
>>>>===>  Vulnerability check disabled, database not found
>>>>===>  License accepted by the user
>>>>===>  Extracting for libvirt-0.9.1
>>>>=> MD5 Checksum OK for libvirt-0.9.1.tar.gz.
>>>>=> SHA256 Checksum OK for libvirt-0.9.1.tar.gz.
>>>>===>  Patching for libvirt-0.9.1
>>>>...
>>>>
>>>>Now it start to configure and compile libgcrypt-1.4.5_1 but it's
>>>>installed already due to gnutls and curl. In the end it fails:
>>>>
>>>>...
>>>>===>  Installing for libgcrypt-1.4.5_1
>>>>===>   Generating temporary packing list
>>>>===>  Checking if security/libgcrypt already installed
>>>>===>   libgcrypt-1.4.5_1 is already installed
>>>>      You may wish to ``make deinstall'' and install this port again
>>>>      by ``make reinstall'' to upgrade it properly.
>>>>      If you really wish to overwrite the old port of
>>>> security/libgcrypt
>>>>      without deleting it first, set the variable
>>>> "FORCE_PKG_REGISTER"
>>>>      in your environment or the "make install" command line.
>>>>*** Error code 1
>>>>Stop in /usr/ports/security/libgcrypt.
>>>>*** Error code 1
>>>>Stop in /usr/src/foobar/jason/libvirt.
>>>>
>>>>When I try to resolve that as suggested and try to run make for
>>>>libvirt again it fails with a version mismatch as it seems:
>>>>
>>>>freebsd# make
>>>>===>   libvirt-0.9.1 depends on file: /usr/local/bin/python2.6 - found
>>>>===>   libvirt-0.9.1 depends on executable: gmake - found
>>>>===>   libvirt-0.9.1 depends on shared library: curl.6 - found
>>>>===>   libvirt-0.9.1 depends on shared library: gcrypt.17 - not found
>>>>===>    Verifying install for gcrypt.17 in
>>>> /usr/ports/security/libgcrypt
>>>>===>   Returning to build of libvirt-0.9.1
>>>>Error: shared library "gcrypt.17" does not exist
>>>>*** Error code 1
>>>>Stop in /usr/src/foobar/jason/libvirt.
>>>>
>>>>Maybe my ports tree is outdated? I installed this FreeBSD 8.1 virtual
>>>>machine like half a year ago and didn't update it since then.
>>>>
>>>>Matthias
>>>>
>>>
>>> Try altering the LIB_DEPENDS to this:
>>>
>>> LIB_DEPENDS+=   curl:${PORTSDIR}/ftp/curl \
>>>                 gcrypt:${PORTSDIR}/security/libgcrypt \
>>>                 xml2:${PORTSDIR}/textproc/libxml2 \
>>>                 gnutls:${PORTSDIR}/security/gnutls
>>>
>>>
>>> And rebuild. To test, you could run:
>>> make lib-depends (this will just check if you meet the library
>>> dependencies)
>>
>> Compiles fine now.
>>
>> Matthias
>>
>>
>
> does a make install work, and does it function as a library?
>
> Thanks!
>

Yes works. I can use virsh and connect to libvirtd on another box. The
only problem I currently have is that virsh fails to enter interactive
mode because sysconf(_SC_GETPW_R_SIZE_MAX) fails, but we'll get that
fixed.

Matthias




More information about the libvir-list mailing list