I frequently need to have latest KVM, QEMU, libvirt and libguestfs while testing with OpenStack RDO. I either build from upstream
git master branch or from Fedora Rawhide (mostly this suffices). Below I describe the exact sequence I try to build from git. These instructions are available in some form in the README files of the said packages, just noting them here explicitly for convenience. My primary development/test environment is Fedora, but it should be similar on other distributions. (Maybe I should just script it all.)
Build KVM from git
I think it’s worth noting the distinction (from traditional master branch) of these KVM git branches:
remotes/origin/next. queue and next branches are same most of the time with the distinction that KVM queue is the branch where patches are usually tested before moving them to the KVM next branch. And, commits from next branch are submitted (as a PULL request) to Linus during the next Kernel merge window. (I recall this from an old conversation with Gleb Natapov (thank you), one of the previous KVM maintainers on IRC).
# Clone the repo $ git clone \ git://git.kernel.org/pub/scm/virt/kvm/kvm.git # To test out of tree patches, # it's cleaner to do in a new branch $ git checkout -b test_branch # Make a config file $ make defconfig # Compile $ make -j4 && make bzImage && make modules # Install $ sudo -i $ make modules_install && make install
Build QEMU from git
To build QEMU (only x86_64 target) from its git:
# Install buid dependencies of QEMU $ yum-builddep qemu # Clone the repo $ git clone git://git.qemu.org/qemu.git # Create a build directory to isolate source directory # from build directory $ mkdir -p ~/build/qemu && cd ~/build/qemu # Run the configure script $ ~/src/qemu/./configure --target-list=x86_64-softmmu \ --disable-werror --enable-debug # Compile $ make -j4
I previously discussed about QEMU building here.
Build libvirt from git
To build libvirt from its upstream git:
# Install build dependencies of libvirt $ yum-builddep libvirt # Clone the libvirt repo $ git clone git://libvirt.org/libvirt.git && cd libvirt # Create a build directory to isolate source directory # from build directory $ mkdir -p ~/build/libvirt && cd ~/build/libvirt # Run the autogen script $ ../src/libvirt/autogen.sh # Compile $ make -j4 # Run tests $ make check # Invoke libvirt programs without having to install them $ ./run tools/virsh [. . .] [Or, prepare RPMs and install them] # Make RPMs (assumes Fedora `rpmbuild` setup # is properly configured) $ make rpm # Install/update $ yum update *.rpm
Build libguestfs from git
To build libguestfs from its upstream git:
# Install build dependencies of libvirt $ yum-builddep libguestfs # Clone the libguestfs repo $ git clone git://github.com/libguestfs/libguestfs.git \ && cd libguestfs # Run the autogen script $ ./autogen.sh # Compile $ make -j4 # Run tests $ make check # Invoke libguestfs programs without having to install them $ ./run guestfish [. . .]
If you’d rather prefer libguestfs to use the custom QEMU built from git (as noted above), QEMU wrappers are useful in this case.
Alternate to building from upstream
git, if you’d prefer to build the above components locally from Fedora master here are some instructions .