Skip to content
Commits on Source (71)
......@@ -93,6 +93,7 @@ Tatsuro Enokura <fj7716hz@aa.jp.fujitsu.com>
Adam Litke <agl@us.ibm.com>
Adam Walters <adam@pandorasboxen.com>
Adrian Brzezinski <adrian.brzezinski@eo.pl>
Alan Pevec <apevec@redhat.com>
Ales Musil <amusil@redhat.com>
Alex Williamson <alex.williamson@redhat.com>
......@@ -103,6 +104,7 @@ Alexander Nusov <alexander.nusov@nfvexpress.com>
Alexander Todorov <atodorov@otb.bg>
Alexander Vasilenko <kaperang07@gmail.com>
Aline Manera <alinefm@br.ibm.com>
Allen, John <John.Allen@amd.com>
Alon Levy <alevy@redhat.com>
Alvaro Polo <apoloval@gmail.com>
Amy Fong <amy.fong@windriver.com>
......@@ -144,6 +146,7 @@ Brian Candler <b.candler@pobox.com>
Brijesh Singh <brijesh.singh@amd.com>
Bryan Kearney <bkearney@redhat.com>
Cao jin <caoj.fnst@cn.fujitsu.com>
Casey Callendrello <cdc@redhat.com>
Cedric Bosdonnat <cbosdonnat@suse.com>
Chang Liu <lingjiao.lc@taobao.com>
Chao Fan <fanc.fnst@cn.fujitsu.com>
......@@ -152,8 +155,10 @@ Chegu Vinod <chegu_vinod@hp.com>
Chen Fan <chen.fan.fnst@cn.fujitsu.com>
Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Chen Hanxiao <chenhanxiao@gmail.com>
Cheng Lin <cheng.lin130@zte.com.cn>
Chris J Arges <chris.j.arges@canonical.com>
Chris St. Pierre <chris.a.st.pierre@gmail.com>
Chris Venteicher <cventeic@redhat.com>
Chris Wong <wongc-redhat@hoku.net>
Chris Wright <chrisw@redhat.com>
Christian Benvenuti <benve@cisco.com>
......@@ -201,6 +206,7 @@ Denis Kondratenko <denis.kondratenko@gmail.com>
Dennis Chen <xschen@tnsoft.com.cn>
Derbyshev Dmitry <dderbyshev@virtuozzo.com>
Diego Elio Pettenò <flameeyes@gmail.com>
Diego Michelotto <diego.michelotto@cnaf.infn.it>
Diego Woitasen <diego.woitasen@vhgroup.net>
Dipankar Sarma <dipankar@in.ibm.com>
Dirk Herrendoerfer <d.herrendoerfer@herrendoerfer.name>
......@@ -295,6 +301,7 @@ Jaroslav Safka <jaroslavx.safka@intel.com>
Jaroslav Suchanek <jsuchane@redhat.com>
Jason Andryuk <andryuk@aero.org>
Jason Baron <jbaron@akamai.com>
Jason Dillaman <dillaman@redhat.com>
Jason J. Herne <jjherne@linux.vnet.ibm.com>
Jason Miesionczek <jmiesionczek@datto.com>
Jasper Lievisse Adriaanse <jasper@humppa.nl>
......@@ -386,6 +393,7 @@ Matthias Gatto <matthias.gatto@outscale.com>
Matthieu Coudron <mattator@gmail.com>
Mattias Bolte <matthias.bolte@googlemail.com>
Matwey V. Kornilov <matwey.kornilov@gmail.com>
Maxim Kozin <kolomaxes@gmail.com>
Maxim Perevedentsev <mperevedentsev@virtuozzo.com>
Maxime Leroy <maxime.leroy@6wind.com>
Maximilian Wilhelm <max@rfc2324.org>
......@@ -465,6 +473,7 @@ Prerna Saxena <prerna@linux.vnet.ibm.com>
Pritesh Kothari <pritesh.kothari@sun.com>
Qiao Nuohan <qiaonuohan@cn.fujitsu.com>
Qiaowei Ren <qiaowei.ren@intel.com>
Radoslaw Biernacki <radoslaw.biernacki@linaro.org>
Radostin Stoyanov <rstoyanov1@gmail.com>
Radu Caragea <dmns_serp@yahoo.com>
Rainer Müller <raimue@codingfarm.de>
......@@ -517,6 +526,7 @@ Shichangkuo <shi.changkuo@h3c.com>
Shivangi Dhir <shivangi.dhir.02@gmail.com>
Shivaprasad G Bhat <sbhat@linux.vnet.ibm.com>
Shivaprasad G Bhat <shivaprasadbhat@gmail.com>
Shotaro Gotanda <g.sho1500@gmail.com>
Shradha Shah <sshah@solarflare.com>
Shuang He <shuang.he@zstack.io>
Simon Arlott <bugzilla.redhat.simon@arlott.org>
......@@ -540,6 +550,8 @@ Steven McDonald <steven.mcdonald@anchor.net.au>
Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Sukrit Bhatnagar <skrtbhtngr@gmail.com>
Supriya Kannery <supriyak@linux.vnet.ibm.com>
Suyang Chen <dawson0xff@gmail.com>
Syed Humaid <syedhumaidbinharoon@gmail.com>
Sławek Kapłoński <slawek@kaplonski.pl>
Taisuke Yamada <tai@rakugaki.org>
Taizo ITO <taizo.ito@hde.co.jp>
......@@ -552,6 +564,7 @@ Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
Thang Pham <thang.pham@us.ibm.com>
Thibault VINCENT <thibault.vincent@smartjog.com>
Thierry Parmentelat <thierry.parmentelat@inria.fr>
Thomas Huth <thuth@redhat.com>
Thomas Treutner <thomas@scripty.at>
Thomas Woerner <twoerner@redhat.com>
Thorsten Behrens <tbehrens@suse.com>
......@@ -567,6 +580,7 @@ Tony Krowiak <aekrowia@us.ibm.com>
Tony Krowiak <akrowiak@linux.vnet.ibm.com>
Tyler Coumbes <coumbes@gmail.com>
Vasiliy Tolstov <v.tolstov@selfip.ru>
Viktor Mihajlovski <mihajlov@linux.ibm.com>
Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
Ville Skyttä <ville.skytta@iki.fi>
Vincent Bernat <vincent@bernat.im>
......
This diff is collapsed.
This diff is collapsed.
......@@ -16,20 +16,19 @@
## License along with this library. If not, see
## <http://www.gnu.org/licenses/>.
LCOV = lcov
GENHTML = genhtml
SUBDIRS = . gnulib/lib include/libvirt src tools docs gnulib/tests \
tests po examples
XZ_OPT ?= -v -T0
export XZ_OPT
# have gnulib 'make coverage' output to 'cov' dir
COVERAGE_OUT = "cov"
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = \
config-post.h \
ChangeLog-old \
libvirt.spec libvirt.spec.in \
mingw-libvirt.spec.in \
libvirt.pc.in \
......@@ -41,7 +40,17 @@ EXTRA_DIST = \
cfg.mk \
run.in \
README.md \
AUTHORS.in
AUTHORS.in \
build-aux/augeas-gentest.pl \
build-aux/check-spacing.pl \
build-aux/gitlog-to-changelog \
build-aux/header-ifdef.pl \
build-aux/minimize-po.pl \
build-aux/mock-noinline.pl \
build-aux/prohibit-duplicate-header.pl \
build-aux/useless-if-before-free \
build-aux/vc-list-files \
$(NULL)
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libvirt.pc libvirt-qemu.pc libvirt-lxc.pc libvirt-admin.pc
......@@ -77,35 +86,9 @@ check-local: all tests
check-access:
@($(MAKE) $(AM_MAKEFLAGS) -C tests check-access)
cov: clean-cov
$(MKDIR_P) $(top_builddir)/coverage
$(LCOV) -c -o $(top_builddir)/coverage/libvirt.info.tmp \
-d $(top_builddir)/src \
-d $(top_builddir)/tests
$(LCOV) -r $(top_builddir)/coverage/libvirt.info.tmp \
-o $(top_builddir)/coverage/libvirt.info
rm $(top_builddir)/coverage/libvirt.info.tmp
$(GENHTML) --show-details -t "libvirt" -o $(top_builddir)/coverage \
--legend $(top_builddir)/coverage/libvirt.info
clean-cov:
rm -rf $(top_builddir)/coverage
MAINTAINERCLEANFILES = .git-module-status
dist-hook: gen-ChangeLog gen-AUTHORS
# Generate the ChangeLog file (with all entries since the switch to git)
# and insert it into the directory we're about to use to create a tarball.
gen_start_date = 2009-07-04
.PHONY: gen-ChangeLog
gen-ChangeLog:
$(AM_V_GEN)if test -d .git; then \
$(top_srcdir)/build-aux/gitlog-to-changelog \
--since=$(gen_start_date) > $(distdir)/cl-t; \
rm -f $(distdir)/ChangeLog; \
mv $(distdir)/cl-t $(distdir)/ChangeLog; \
fi
dist-hook: gen-AUTHORS
.PHONY: gen-AUTHORS
gen-AUTHORS:
......@@ -123,3 +106,5 @@ gen-AUTHORS:
mv -f $(distdir)/AUTHORS-tmp $(distdir)/AUTHORS && \
rm -f all.list maint.list contrib.list; \
fi
include Makefile.ci
# -*- makefile -*-
# vim: filetype=make
# Figure out name and path to this file. This isn't
# portable but we only care for modern GNU make
CI_MAKEFILE = $(abspath $(firstword $(MAKEFILE_LIST)))
# The directory holding content on the host that we will
# expose to the container.
CI_SCRATCHDIR = $(shell pwd)/ci-tree
# The root directory of the libvirt.git checkout
CI_GIT_ROOT = $(shell git rev-parse --show-toplevel)
# The directory holding the clone of the git repo that
# we will expose to the container
CI_HOST_SRCDIR = $(CI_SCRATCHDIR)/src
# The directory holding the source inside the
# container. ie where we told Docker to expose
# the $(CI_HOST_SRCDIR) directory from the host
CI_CONT_SRCDIR = /src
# Relative directory to perform the build in. This
# defaults to using a separate build dir, but can be
# set to empty string for an in-source tree build.
CI_VPATH = build
# The directory holding the build output inside the
# container.
CI_CONT_BUILDDIR = $(CI_CONT_SRCDIR)/$(CI_VPATH)
# Can be overridden with mingw{32,64}-configure if desired
CI_CONFIGURE = $(CI_CONT_SRCDIR)/configure
# Default to using all possible CPUs
CI_SMP = $(shell getconf _NPROCESSORS_ONLN)
# Any extra arguments to pass to make
CI_MAKE_ARGS =
# Any extra arguments to pass to configure
CI_CONFIGURE_ARGS =
# Avoid pulling submodules over the network by locally
# cloning them
CI_SUBMODULES = $(shell git submodule | awk '{ print $$2 }')
# Location of the Docker images we're going to pull
# Can be useful to overridde to use a locally built
# image instead
CI_IMAGE_PREFIX = quay.io/libvirt/buildenv-
# Docker defaults to pulling the ':latest' tag but
# if the Docker repo above uses different conventions
# this can override it
CI_IMAGE_TAG = :master
# We delete the virtual root after completion, set
# to 0 if you need to keep it around for debugging
CI_CLEAN = 1
# We'll always freshly clone the virtual root each
# time in case it was not cleaned up before. Set
# to 1 if you want to try restarting a previously
# preserved env
CI_REUSE = 0
# We need the container process to run with current host IDs
# so that it can access the passed in build directory
CI_UID = $(shell id -u)
CI_GID = $(shell id -g)
# Docker doesn't require the IDs you run as to exist in
# the container's /etc/passwd & /etc/group files, but
# if they do not, then libvirt's 'make check' will fail
# many tests.
#
# We do not directly mount /etc/{passwd,group} as Docker
# is liable to mess with SELinux labelling which will
# then prevent the host accessing them. Copying them
# first is safer.
CI_PWDB_MOUNTS = \
--volume $(CI_SCRATCHDIR)/group:/etc/group:ro,z \
--volume $(CI_SCRATCHDIR)/passwd:/etc/passwd:ro,z \
$(NULL)
# Docker containers can have very large ulimits
# for nofiles - as much as 1048576. This makes
# libvirt very slow at exec'ing programs.
CI_ULIMIT_FILES = 1024
# Args to use when cloning a git repo.
# -c stop it complaining about checking out a random hash
# -q stop it displaying progress info for local clone
# --local ensure we don't actually copy files
CI_GIT_ARGS = \
-c advice.detachedHead=false \
-q \
--local \
$(NULL)
# Args to use when running the Docker env
# --rm stop inactive containers getting left behind
# --user we execute as the same user & group account
# as dev so that file ownership matches host
# instead of root:root
# --volume to pass in the cloned git repo & config
# --workdir to set cwd to vpath build location
# --ulimit lower files limit for performance reasons
# --interactive
# --tty Ensure we have ability to Ctrl-C the build
CI_DOCKER_ARGS = \
--rm \
--user $(CI_UID):$(CI_GID) \
--interactive \
--tty \
$(CI_PWDB_MOUNTS) \
--volume $(CI_HOST_SRCDIR):$(CI_CONT_SRCDIR):z \
--workdir $(CI_CONT_SRCDIR) \
--ulimit nofile=$(CI_ULIMIT_FILES):$(CI_ULIMIT_FILES) \
$(NULL)
ci-check-docker:
@echo -n "Checking if Docker is available and running..." && \
docker version 1>/dev/null && echo "yes"
ci-prepare-tree: ci-check-docker
@test "$(CI_REUSE)" != "1" && rm -rf $(CI_SCRATCHDIR) || :
@if ! test -d $(CI_SCRATCHDIR) ; then \
mkdir -p $(CI_SCRATCHDIR); \
cp /etc/passwd $(CI_SCRATCHDIR); \
cp /etc/group $(CI_SCRATCHDIR); \
echo "Cloning $(CI_GIT_ROOT) to $(CI_HOST_SRCDIR)"; \
git clone $(CI_GIT_ARGS) $(CI_GIT_ROOT) $(CI_HOST_SRCDIR) || exit 1; \
for mod in $(CI_SUBMODULES) ; \
do \
test -f $(CI_GIT_ROOT)/$$mod/.git || continue ; \
echo "Cloning $(CI_GIT_ROOT)/$$mod to $(CI_HOST_SRCDIR)/$$mod"; \
git clone $(CI_GIT_ARGS) $(CI_GIT_ROOT)/$$mod $(CI_HOST_SRCDIR)/$$mod || exit 1; \
done ; \
fi
# $CONFIGURE_OPTS is a env that can optionally be set in the container,
# populated at build time from the Dockerfile. A typical use case would
# be to pass --host/--target args to trigger cross-compilation
#
# This can be augmented by make local args in $(CI_CONFIGURE_ARGS)
#
# gl_public_submodule_commit= to disable gnulib's submodule check
# which breaks due to way we clone the submodules
ci-build@%: ci-prepare-tree
docker run $(CI_DOCKER_ARGS) $(CI_IMAGE_PREFIX)$*$(CI_IMAGE_TAG) \
/bin/bash -c '\
mkdir -p $(CI_CONT_BUILDDIR) || exit 1 ; \
cd $(CI_CONT_BUILDDIR) ; \
NOCONFIGURE=1 $(CI_CONT_SRCDIR)/autogen.sh || exit 1 ; \
$(CI_CONFIGURE) $${CONFIGURE_OPTS} $(CI_CONFIGURE_ARGS) ; \
if test $$? != 0 ; \
then \
test -f config.log && cat config.log ; \
exit 1 ; \
fi; \
find -name test-suite.log -delete ; \
export VIR_TEST_DEBUG=1 ; \
make -j$(CI_SMP) gl_public_submodule_commit= $(CI_MAKE_ARGS) ; \
if test $$? != 0 ; then \
LOGS=`find -name test-suite.log` ; \
if test "$${LOGS}" != "" ; then \
echo "=== LOG FILE(S) START ===" ; \
cat $${LOGS} ; \
echo "=== LOG FILE(S) END ===" ; \
fi ; \
exit 1 ;\
fi'
@test "$(CI_CLEAN)" = "1" && rm -rf $(CI_SCRATCHDIR) || :
ci-check@%:
$(MAKE) -f $(CI_MAKEFILE) ci-build@$* CI_MAKE_ARGS="check"
ci-shell@%: ci-prepare-tree
docker run $(CI_DOCKER_ARGS) $(CI_IMAGE_PREFIX)$*$(CI_IMAGE_TAG) /bin/bash
@test "$(CI_CLEAN)" = "1" && rm -rf $(CI_SCRATCHDIR) || :
ci-help:
@echo "Build libvirt inside Docker containers used for CI"
@echo
@echo "Available targets:"
@echo
@echo " ci-build@\$$IMAGE - run a default 'make'"
@echo " ci-check@\$$IMAGE - run a 'make check'"
@echo " ci-shell@\$$IMAGE - run an interactive shell"
@echo
@echo "Available x86 container images:"
@echo
@echo " centos-7"
@echo " debian-9"
@echo " debian-sid"
@echo " fedora-28"
@echo " fedora-29"
@echo " fedora-rawhide"
@echo " ubuntu-18"
@echo
@echo "Available cross-compiler container images:"
@echo
@echo " debian-{9,sid}-cross-aarch64"
@echo " debian-{9,sid}-cross-armv6l"
@echo " debian-{9,sid}-cross-armv7l"
@echo " debian-sid-cross-i686"
@echo " debian-{9,sid}-cross-mips64el"
@echo " debian-{9,sid}-cross-mips"
@echo " debian-{9,sid}-cross-mipsel"
@echo " debian-{9,sid}-cross-ppc64le"
@echo " debian-{9,sid}-cross-s390x"
@echo
@echo "Available make variables:"
@echo
@echo " CI_CLEAN=0 - do not delete '$(CI_SCRATCHDIR)' after completion"
@echo " CI_REUSE=1 - re-use existing '$(CI_SCRATCHDIR)' content"
@echo
......@@ -14,6 +14,9 @@
@SET_MAKE@
# -*- makefile -*-
# vim: filetype=make
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
......@@ -260,6 +263,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/virt-driver-xenapi.m4 \
$(top_srcdir)/m4/virt-dtrace.m4 \
$(top_srcdir)/m4/virt-external-programs.m4 \
$(top_srcdir)/m4/virt-firewalld-zone.m4 \
$(top_srcdir)/m4/virt-firewalld.m4 \
$(top_srcdir)/m4/virt-fuse.m4 $(top_srcdir)/m4/virt-gluster.m4 \
$(top_srcdir)/m4/virt-gnutls.m4 $(top_srcdir)/m4/virt-hal.m4 \
......@@ -423,12 +427,12 @@ CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/.color_coded.in \
$(srcdir)/.ycm_extra_conf.py.in $(srcdir)/Makefile.in \
$(srcdir)/config.h.in $(srcdir)/libvirt-admin.pc.in \
$(srcdir)/libvirt-lxc.pc.in $(srcdir)/libvirt-qemu.pc.in \
$(srcdir)/libvirt.pc.in $(srcdir)/libvirt.spec.in \
$(srcdir)/mingw-libvirt.spec.in $(srcdir)/run.in \
$(top_srcdir)/build-aux/compile \
$(srcdir)/.ycm_extra_conf.py.in $(srcdir)/Makefile.ci \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(srcdir)/libvirt-admin.pc.in $(srcdir)/libvirt-lxc.pc.in \
$(srcdir)/libvirt-qemu.pc.in $(srcdir)/libvirt.pc.in \
$(srcdir)/libvirt.spec.in $(srcdir)/mingw-libvirt.spec.in \
$(srcdir)/run.in $(top_srcdir)/build-aux/compile \
$(top_srcdir)/build-aux/config.guess \
$(top_srcdir)/build-aux/config.rpath \
$(top_srcdir)/build-aux/config.sub \
......@@ -530,8 +534,6 @@ CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CONFIG_INCLUDE = @CONFIG_INCLUDE@
COVERAGE_CFLAGS = @COVERAGE_CFLAGS@
COVERAGE_LDFLAGS = @COVERAGE_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURL_CFLAGS = @CURL_CFLAGS@
......@@ -1616,7 +1618,6 @@ PVCREATE = @PVCREATE@
PVREMOVE = @PVREMOVE@
PVS = @PVS@
PYTHON = @PYTHON@
QEMU = @QEMU@
QEMU_BRIDGE_HELPER = @QEMU_BRIDGE_HELPER@
QEMU_PR_HELPER = @QEMU_PR_HELPER@
RADVD = @RADVD@
......@@ -2002,44 +2003,169 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
ws_plugindir = @ws_plugindir@
LCOV = lcov
GENHTML = genhtml
SUBDIRS = . gnulib/lib include/libvirt src tools docs gnulib/tests \
tests po examples
# have gnulib 'make coverage' output to 'cov' dir
COVERAGE_OUT = "cov"
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = config-post.h ChangeLog-old libvirt.spec libvirt.spec.in \
EXTRA_DIST = config-post.h libvirt.spec libvirt.spec.in \
mingw-libvirt.spec.in libvirt.pc.in libvirt-qemu.pc.in \
libvirt-lxc.pc.in libvirt-admin.pc.in Makefile.nonreentrant \
autogen.sh cfg.mk run.in README.md AUTHORS.in \
$(srcdir)/docs/news.xml $(srcdir)/docs/news-ascii.xsl \
build-aux/augeas-gentest.pl build-aux/check-spacing.pl \
build-aux/gitlog-to-changelog build-aux/header-ifdef.pl \
build-aux/minimize-po.pl build-aux/mock-noinline.pl \
build-aux/prohibit-duplicate-header.pl \
build-aux/useless-if-before-free build-aux/vc-list-files \
$(NULL) $(srcdir)/docs/news.xml $(srcdir)/docs/news-ascii.xsl \
$(srcdir)/docs/reformat-news.py
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libvirt.pc libvirt-qemu.pc libvirt-lxc.pc libvirt-admin.pc
MAINTAINERCLEANFILES = .git-module-status
# Generate the ChangeLog file (with all entries since the switch to git)
# and insert it into the directory we're about to use to create a tarball.
gen_start_date = 2009-07-04
# Figure out name and path to this file. This isn't
# portable but we only care for modern GNU make
CI_MAKEFILE = $(abspath $(firstword $(MAKEFILE_LIST)))
# The directory holding content on the host that we will
# expose to the container.
CI_SCRATCHDIR = $(shell pwd)/ci-tree
# The root directory of the libvirt.git checkout
CI_GIT_ROOT = $(shell git rev-parse --show-toplevel)
# The directory holding the clone of the git repo that
# we will expose to the container
CI_HOST_SRCDIR = $(CI_SCRATCHDIR)/src
# The directory holding the source inside the
# container. ie where we told Docker to expose
# the $(CI_HOST_SRCDIR) directory from the host
CI_CONT_SRCDIR = /src
# Relative directory to perform the build in. This
# defaults to using a separate build dir, but can be
# set to empty string for an in-source tree build.
CI_VPATH = build
# The directory holding the build output inside the
# container.
CI_CONT_BUILDDIR = $(CI_CONT_SRCDIR)/$(CI_VPATH)
# Can be overridden with mingw{32,64}-configure if desired
CI_CONFIGURE = $(CI_CONT_SRCDIR)/configure
# Default to using all possible CPUs
CI_SMP = $(shell getconf _NPROCESSORS_ONLN)
# Any extra arguments to pass to make
CI_MAKE_ARGS =
# Any extra arguments to pass to configure
CI_CONFIGURE_ARGS =
# Avoid pulling submodules over the network by locally
# cloning them
CI_SUBMODULES = $(shell git submodule | awk '{ print $$2 }')
# Location of the Docker images we're going to pull
# Can be useful to overridde to use a locally built
# image instead
CI_IMAGE_PREFIX = quay.io/libvirt/buildenv-
# Docker defaults to pulling the ':latest' tag but
# if the Docker repo above uses different conventions
# this can override it
CI_IMAGE_TAG = :master
# We delete the virtual root after completion, set
# to 0 if you need to keep it around for debugging
CI_CLEAN = 1
# We'll always freshly clone the virtual root each
# time in case it was not cleaned up before. Set
# to 1 if you want to try restarting a previously
# preserved env
CI_REUSE = 0
# We need the container process to run with current host IDs
# so that it can access the passed in build directory
CI_UID = $(shell id -u)
CI_GID = $(shell id -g)
# Docker doesn't require the IDs you run as to exist in
# the container's /etc/passwd & /etc/group files, but
# if they do not, then libvirt's 'make check' will fail
# many tests.
#
# We do not directly mount /etc/{passwd,group} as Docker
# is liable to mess with SELinux labelling which will
# then prevent the host accessing them. Copying them
# first is safer.
CI_PWDB_MOUNTS = \
--volume $(CI_SCRATCHDIR)/group:/etc/group:ro,z \
--volume $(CI_SCRATCHDIR)/passwd:/etc/passwd:ro,z \
$(NULL)
# Docker containers can have very large ulimits
# for nofiles - as much as 1048576. This makes
# libvirt very slow at exec'ing programs.
CI_ULIMIT_FILES = 1024
# Args to use when cloning a git repo.
# -c stop it complaining about checking out a random hash
# -q stop it displaying progress info for local clone
# --local ensure we don't actually copy files
CI_GIT_ARGS = \
-c advice.detachedHead=false \
-q \
--local \
$(NULL)
# Args to use when running the Docker env
# --rm stop inactive containers getting left behind
# --user we execute as the same user & group account
# as dev so that file ownership matches host
# instead of root:root
# --volume to pass in the cloned git repo & config
# --workdir to set cwd to vpath build location
# --ulimit lower files limit for performance reasons
# --interactive
# --tty Ensure we have ability to Ctrl-C the build
CI_DOCKER_ARGS = \
--rm \
--user $(CI_UID):$(CI_GID) \
--interactive \
--tty \
$(CI_PWDB_MOUNTS) \
--volume $(CI_HOST_SRCDIR):$(CI_CONT_SRCDIR):z \
--workdir $(CI_CONT_SRCDIR) \
--ulimit nofile=$(CI_ULIMIT_FILES):$(CI_ULIMIT_FILES) \
$(NULL)
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.ci $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
$(AUTOMAKE) --foreign Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
......@@ -2049,6 +2175,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(srcdir)/Makefile.ci $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
......@@ -2581,29 +2708,7 @@ check-local: all tests
check-access:
@($(MAKE) $(AM_MAKEFLAGS) -C tests check-access)
cov: clean-cov
$(MKDIR_P) $(top_builddir)/coverage
$(LCOV) -c -o $(top_builddir)/coverage/libvirt.info.tmp \
-d $(top_builddir)/src \
-d $(top_builddir)/tests
$(LCOV) -r $(top_builddir)/coverage/libvirt.info.tmp \
-o $(top_builddir)/coverage/libvirt.info
rm $(top_builddir)/coverage/libvirt.info.tmp
$(GENHTML) --show-details -t "libvirt" -o $(top_builddir)/coverage \
--legend $(top_builddir)/coverage/libvirt.info
clean-cov:
rm -rf $(top_builddir)/coverage
dist-hook: gen-ChangeLog gen-AUTHORS
.PHONY: gen-ChangeLog
gen-ChangeLog:
$(AM_V_GEN)if test -d .git; then \
$(top_srcdir)/build-aux/gitlog-to-changelog \
--since=$(gen_start_date) > $(distdir)/cl-t; \
rm -f $(distdir)/ChangeLog; \
mv $(distdir)/cl-t $(distdir)/ChangeLog; \
fi
dist-hook: gen-AUTHORS
.PHONY: gen-AUTHORS
gen-AUTHORS:
......@@ -2622,6 +2727,104 @@ gen-AUTHORS:
rm -f all.list maint.list contrib.list; \
fi
ci-check-docker:
@echo -n "Checking if Docker is available and running..." && \
docker version 1>/dev/null && echo "yes"
ci-prepare-tree: ci-check-docker
@test "$(CI_REUSE)" != "1" && rm -rf $(CI_SCRATCHDIR) || :
@if ! test -d $(CI_SCRATCHDIR) ; then \
mkdir -p $(CI_SCRATCHDIR); \
cp /etc/passwd $(CI_SCRATCHDIR); \
cp /etc/group $(CI_SCRATCHDIR); \
echo "Cloning $(CI_GIT_ROOT) to $(CI_HOST_SRCDIR)"; \
git clone $(CI_GIT_ARGS) $(CI_GIT_ROOT) $(CI_HOST_SRCDIR) || exit 1; \
for mod in $(CI_SUBMODULES) ; \
do \
test -f $(CI_GIT_ROOT)/$$mod/.git || continue ; \
echo "Cloning $(CI_GIT_ROOT)/$$mod to $(CI_HOST_SRCDIR)/$$mod"; \
git clone $(CI_GIT_ARGS) $(CI_GIT_ROOT)/$$mod $(CI_HOST_SRCDIR)/$$mod || exit 1; \
done ; \
fi
# $CONFIGURE_OPTS is a env that can optionally be set in the container,
# populated at build time from the Dockerfile. A typical use case would
# be to pass --host/--target args to trigger cross-compilation
#
# This can be augmented by make local args in $(CI_CONFIGURE_ARGS)
#
# gl_public_submodule_commit= to disable gnulib's submodule check
# which breaks due to way we clone the submodules
ci-build@%: ci-prepare-tree
docker run $(CI_DOCKER_ARGS) $(CI_IMAGE_PREFIX)$*$(CI_IMAGE_TAG) \
/bin/bash -c '\
mkdir -p $(CI_CONT_BUILDDIR) || exit 1 ; \
cd $(CI_CONT_BUILDDIR) ; \
NOCONFIGURE=1 $(CI_CONT_SRCDIR)/autogen.sh || exit 1 ; \
$(CI_CONFIGURE) $${CONFIGURE_OPTS} $(CI_CONFIGURE_ARGS) ; \
if test $$? != 0 ; \
then \
test -f config.log && cat config.log ; \
exit 1 ; \
fi; \
find -name test-suite.log -delete ; \
export VIR_TEST_DEBUG=1 ; \
make -j$(CI_SMP) gl_public_submodule_commit= $(CI_MAKE_ARGS) ; \
if test $$? != 0 ; then \
LOGS=`find -name test-suite.log` ; \
if test "$${LOGS}" != "" ; then \
echo "=== LOG FILE(S) START ===" ; \
cat $${LOGS} ; \
echo "=== LOG FILE(S) END ===" ; \
fi ; \
exit 1 ;\
fi'
@test "$(CI_CLEAN)" = "1" && rm -rf $(CI_SCRATCHDIR) || :
ci-check@%:
$(MAKE) -f $(CI_MAKEFILE) ci-build@$* CI_MAKE_ARGS="check"
ci-shell@%: ci-prepare-tree
docker run $(CI_DOCKER_ARGS) $(CI_IMAGE_PREFIX)$*$(CI_IMAGE_TAG) /bin/bash
@test "$(CI_CLEAN)" = "1" && rm -rf $(CI_SCRATCHDIR) || :
ci-help:
@echo "Build libvirt inside Docker containers used for CI"
@echo
@echo "Available targets:"
@echo
@echo " ci-build@\$$IMAGE - run a default 'make'"
@echo " ci-check@\$$IMAGE - run a 'make check'"
@echo " ci-shell@\$$IMAGE - run an interactive shell"
@echo
@echo "Available x86 container images:"
@echo
@echo " centos-7"
@echo " debian-9"
@echo " debian-sid"
@echo " fedora-28"
@echo " fedora-29"
@echo " fedora-rawhide"
@echo " ubuntu-18"
@echo
@echo "Available cross-compiler container images:"
@echo
@echo " debian-{9,sid}-cross-aarch64"
@echo " debian-{9,sid}-cross-armv6l"
@echo " debian-{9,sid}-cross-armv7l"
@echo " debian-sid-cross-i686"
@echo " debian-{9,sid}-cross-mips64el"
@echo " debian-{9,sid}-cross-mips"
@echo " debian-{9,sid}-cross-mipsel"
@echo " debian-{9,sid}-cross-ppc64le"
@echo " debian-{9,sid}-cross-s390x"
@echo
@echo "Available make variables:"
@echo
@echo " CI_CLEAN=0 - do not delete '$(CI_SCRATCHDIR)' after completion"
@echo " CI_REUSE=1 - re-use existing '$(CI_SCRATCHDIR)' content"
@echo
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
libvirt releases
================
# v5.3.0 (2019-05-04)
* New features
- qemu: Add support for setting the emulator scheduler parameters
I/O threads and vCPU threads already support setting schedulers, but
until now it was impossible to do so for the main QEMU thread (emulator
thread in the libvirt naming). This is, however, requested for some
very specific scenarios, for example when vCPU threads are running at
such priority that could starve the main thread.
* Removed features
- vbox: Drop support for VirtualBox 4.x releases
Support for all the 4.x releases was ended by VirtualBox maintainers in
December 2015. Therefore, libvirt support for these releases is
dropped.
* Improvements
- qemu: Use PCI by default for RISC-V guests
PCI support for RISC-V guests was already available in libvirt 5.1.0,
but it required the user to opt-in by manually assigning PCI addresses:
with this release, RISC-V guests will use PCI automatically when
running against a recent enough (4.0.0+) QEMU release.
- qemu: Advertise firmware autoselection in domain capabilities
The firmware autoselection feature is now exposed in domain
capabilities and management applications can query for accepted values,
i.e. values that are accepted and for which libvirt found firmware
descriptor files. Firmware Secure Boot support is also advertised.
- Drop YAJL 1 support
YAJL 2 is widely adopted and maintaining side by side support for two
versions is unnecessary.
* Bug fixes
- rpc: cleanup in virNetTLSContextNew
Failed new gnutls context allocations in virNetTLSContextNew function
results in double free and segfault. Occasional memory leaks may also
occur.
- virsh: various completers fixes
There were some possible crashers, memory leaks, etc. which are now
fixed.
- qemu: Make hugepages work with memfd backend
Due to a bug in command line generation libvirt did not honor hugepages
setting with memfd backend.
- Enforce ACL write permission for getting guest time & hostname
Getting the guest time and hostname both require use of guest agent
commands. These must not be allowed for read-only users, so the
permissions check must validate "write" permission not "read".
# v5.2.0 (2019-04-03)
* New features
- Add Storage Pool Capabilities output
Add support to list an enumerated list of supported Storage Pools via
the virConnectGetCapabilities API when connected via a Storage Driver.
Add support to get a more detailed list XML output Storage Pool
Capabilities vis the virConnectGetStoragePoolCapabilites API.
- qemu: Support virtio-{non-}transitional device models
virtio-transitional and virtio-non-transitional model values were added
to the QEMU driver for the following devices: disk, interface,
filesystem, rng, vsock, memballoon, controller type scsi, controller
type virtio-serial, input bus virtio type passthrough, hostdev type
scsi_host. These new models can be used to give fine grained control
over what virtio device version is presented to the guest.
- qemu: Enable firmware autoselection
Libvirt allows users to provide loader path for some time now. However,
this puts some burden on users because they need to know what firmware
meets their requirements. Now that QEMU ships firmware description
files this burden can be moved onto libvirt. It is as easy as setting
the firmware attribute in the os element (accepted values are bios and
efi). Moreover, libvirt automatically enables domain features needed
for firmware it chooses.
- snapshots: Add support for topological listings
A new flag VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL is available for the
various snapshot listing APIs such as virDomainListAllSnapshots(). For
drivers that support the flag, the listed snapshots are guaranteed to
be sorted such that parents occur before children.
- Xen: Add support for max grant frames setting
Add support for Xen's max_grant_frames setting by adding a new xenbus
controller type with a maxGrantFrames attribute. E.g. <controller
type='xenbus' maxGrantFrames='64'/>
- qemu: Add support for parallel migration
With QEMU 4.0.0 libvirt can enable parallel migration which causes the
memory pages to be processed in parallel by several threads and sent to
the destination host using several connections at the same time. This
may increase migration speed in case a single thread is unable to
saturate the network link.
* Removed features
- Drop support for Upstart and "Red Hat" init scripts
Not a single one of the platforms we target still uses Upstart, and the
Upstart project itself has been abandoned for several years now; the
same is true for the "Red Hat" (really System V) init scripts, since
RHEL 7 and later releases use systemd.
* Improvements
- Report class information for PCI node device capability.
- Split setup of IPv4 and IPv6 top level chain
The requirement resulting from private chains improvement done in
v5.1.0 was refined so that only tables from corresponding IP version
are required. This means that if a network doesn't have IPv6 enabled
then those tables are not required.
- Don't default to building the QEMU driver
Historically, the QEMU driver has been special in that it was enabled
by default, with the option to explicitly opt-out of it; starting now,
we're enabling it opportunistically if we detect that all requirements
are available, just like we do with other drivers.
* Bug fixes
- virt-host-validate: Fix IOMMU check on s390x
- qemu: Allow creating pSeries guests with graphics and no USB mouse
It's now possible to prevent libvirt from automatically adding a USB
mouse to pSeries guests by including a USB tablet in the input XML:
doing so is desiderable as using a tablet results in a much better user
experience when working with GUIs.
- qemu: Set $HOME and XGD variables for qemu:///system guests
This avoids files being accidentally created under / or the guests not
being able to start because they lack the necessary permissions to
write to that location.
# v5.1.0 (2019-03-04)
* New features
- bhyve: Add support for additional command-line arguments
The bhyve driver now supports passing additional command-line arguments
to the bhyve process using the new <bhyve:commandline> element in
domain configuration.
- network: Support setting a firewalld "zone" for virtual network bridges
All libvirt virtual networks with bridges managed by libvirt (i.e.
those with forward mode of "nat", "route", "open", or no forward mode)
will now be placed in a special firewalld zone called "libvirt" by
default. The zone of any network bridge can be changed using the zone
attribute of the network's bridge element.
- bhyve: Support for ignoring unknown MSRs reads and writes
A new <features> element <msrs unknown='ignore'/> was introduced and
the bhyve driver supports it to control unknown Model Specific
Registers (MSRs) reads and writes.
- qemu: Add support for encrypted VNC TLS keys
Use the password stored in the secret driver under the uuid specified
by the vnc_tls_x509_secret_uuid option in qemu.conf.
- Add storage pool namespace options
Allow for adjustment of RBD configuration options via Storage Pool XML
Namespace adjustments.
- qemu: Add support for setting post-copy migration bandwidth
Users can now limit the bandwidth of post-copy migration, e.g. via
virsh migrate --postcopy-bandwidth.
* Improvements
- Create private chains for virtual network firewall rules
Historically firewall rules for virtual networks were added straight
into the base chains. This works but has a number of bugs and design
limitations. To address them, libvirt now puts firewall rules into its
own chains. Note that with this change the filter, nat and mangle
tables are required for both IPv4 and IPv6.
- Detect CEPH and GPFS as shared FS
When starting a migration libvirt performs some sanity checks to make
sure domain will be able to run on the destination. One of the
requirements is that the disk has to either be migrated too or be
accessible from a network filesystem. CEPH and GPFS weren't detected as
a network filesystem.
- Advertise network MTU via DHCP when specified
If network MTU is set and the network has DHCP enabled, advertise the
MTU in DHCP transaction too so that clients can adjust their link
accordingly.
- qemu: Allocate memory at the configured NUMA nodes from start
Libvirt used to just start QEMU, let it allocate memory for the guest,
and then use CGroups to move the memory to configured NUMA nodes. This
is suboptimal as huge chunks of memory have to be moved. Moreover, this
relies on ability to move memory later which is not always true. A
change was made to set process affinity correctly from the start so
that memory is allocated on the configured nodes from the beginning.
- Support for newer Wireshark
Adapt libvirt to use the more recent release requiring a source build
configuration of libvirt --with-wireshark to upgrade to the more recent
version.
- Batch mode virsh and virt-admin parsing improvements
When parsing a single-argument command_string in batch mode, virsh and
virt-admin now permit newlines in addition to semicolons for splitting
commands, and backslash-newline for splitting long lines, to be more
like shell parsing.
* Bug fixes
- qemu: Use CAP_DAC_OVERRIDE during QEMU capabilities probing
By default, libvirt runs the QEMU process as qemu:qemu which could
cause issues during probing as some features like AMD SEV might be
inaccessible to QEMU because of file system permissions. Therefore,
CAP_DAC_OVERRIDE is granted to overcome these for the purposes of
probing.
- storage: Add default mount options for fs/netfs storage pools
Altered the command line generation for fs/netfs storage pools to add
some default options. For Linux based systems, the options added are
"nodev, nosuid, noexec". For FreeBSD based systems, the options added
are "nosuid, noexec".
- qemu: Allow use of PCI for RISC-V guests
This works with QEMU 4.0.0+ only and is opt-in at the moment, since it
requires users to manually assign PCI addresses, but is otherwise fully
functional.
- network: Fix virtual networks on systems using firewalld+nftables
Because of the transitional state of firewalld's new support for
nftables, not all iptables features required by libvirt are yet
available, so libvirt must continue to use iptables for its own packet
filtering rules even when the firewalld backend is set to use nftables.
However, due to the way iptables support is implemented in kernels
using nftables (iptables rules are converted to nftables rules and
processed in a separate hook from the native nftables rules), guest
networking was broken on hosts with firewalld configured to use
nftables as the backend. This has been fixed by putting libvirt-managed
bridges in their own firewalld zone, so that guest traffic can be
forwarded beyond the host and host services can be exposed to guests on
the virtual network without opening up those same services to the rest
of the physical network. This means that host access from virtual
machines is no longer controlled by the firewalld default zone (usually
"public"), but rather by the new firewalld zone called "libvirt"
(unless configured otherwise using the new zone attribute of the
network bridge element).
- qemu: Fix i6300esb watchdog hotplug on Q35
Ensure that libvirt allocates a PCI address for the device so that QEMU
did not default to an address that would not allow for device hotplug.
- lxc: Don't reboot host on virDomainReboot
If the container is really a simple one (init is just bash and the
whole root is passed through) then virDomainReboot and
virDomainShutdown would reboot or shutdown the host. The solution is to
use different method to reboot or shutdown the container in that case
(e.g. signal).
- rpc: Various stream fixes
One particular race was fixed, one locking problem and error reporting
from streams was made better.
- qemu: Fix guestfwd hotplug/hotunplug
Fixed the generation of the guestfwd hotplug/unplug command sent to
QEMU to match the syntax used when creating the initial command line.
- qemu: Forbid CDROMs on virtio bus
Attempting to create an empty virtio-blk drive or attempting to eject
it results into an error. Forbid configurations where users would
attempt to use CDROMs in virtio bus.
- qemu: Use 'raw' for 'volume' disks without format
Storage pools might want to specify format of the image when
translating the volume thus libvirt can't add any default format when
parsing the XML. Add an explicit format when starting the VM and format
is not present neither by user specifying it nor by the storage pool
translation function.
- qemu: Assume 'raw' default storage format also for network storage
Post parse callback adds the 'raw' type only for local files. Remote
files can also have backing store (even local) so we should do this
also for network backed storage.
- qemu: Fix block job progress reporting and advocate for READY event
In some cases QEMU can get to 100% and still not reach the synchronised
phase. Initiating a pivot in that case will fail. Therefore it is
strongly advised to wait for VIR_DOMAIN_BLOCK_JOB_READY event which
does not suffer from this problem.
- qemu: Don't format image properties for empty drive
If a -drive has no image, then formatting attributes such as cache,
readonly, etc. would cause errors to be reported from QEMU. This was
fixed by not supplying the attributes for devices without an image.
- External snapshot metadata redefinition is fixed
Attempting to use VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE to reinstate the
metadata describing an external snapshot created earlier for an offline
domain no longer fails.
# v5.0.0 (2019-01-15)
* New features
......@@ -100,8 +404,6 @@ libvirt releases
minimal performance penalty when compared to regular (L1) guests on
ppc64 hardware.
* Improvements
* Bug fixes
- Xen: Handle soft reset shutdown event
......@@ -264,8 +566,6 @@ libvirt releases
example, use usb address as usb:<bus>.<port>, use sata address as
<controller>.<bus>.<unit>.
* Bug fixes
# v4.5.0 (2018-07-02)
* New features
......@@ -423,8 +723,6 @@ libvirt releases
Implement event name completion for some commands (e.g. event,
secret-event, pool-event and nodedev-event)
* Bug fixes
# v4.3.0 (2018-05-02)
* New features
......@@ -1693,4 +1991,5 @@ libvirt releases
==============================================================================
Older libvirt releases didn't have proper release notes: if you are interested
in changes between them, you should check out ChangeLog* and docs/news-*.html.
in changes between them, you should check out docs/news-*.html or the full git
log (see instructions in ChangeLog).
......@@ -1783,6 +1783,7 @@ m4_include([m4/virt-driver-vz.m4])
m4_include([m4/virt-driver-xenapi.m4])
m4_include([m4/virt-dtrace.m4])
m4_include([m4/virt-external-programs.m4])
m4_include([m4/virt-firewalld-zone.m4])
m4_include([m4/virt-firewalld.m4])
m4_include([m4/virt-fuse.m4])
m4_include([m4/virt-gluster.m4])
......
#!/usr/bin/env perl
#
# check-spacing.pl: Report any usage of 'function (..args..)'
# Also check for other syntax issues, such as correct use of ';'
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see
# <http://www.gnu.org/licenses/>.
use strict;
use warnings;
my $ret = 0;
my $incomment = 0;
foreach my $file (@ARGV) {
# Per-file variables for multiline Curly Bracket (cb_) check
my $cb_linenum = 0;
my $cb_code = "";
my $cb_scolon = 0;
open FILE, $file;
while (defined (my $line = <FILE>)) {
my $data = $line;
# For temporary modifications
my $tmpdata;
# Kill any quoted , ; = or "
$data =~ s/'[";,=]'/'X'/g;
# Kill any quoted strings
$data =~ s,"(?:[^\\\"]|\\.)*","XXX",g;
next if $data =~ /^#/;
# Kill contents of multi-line comments
# and detect end of multi-line comments
if ($incomment) {
if ($data =~ m,\*/,) {
$incomment = 0;
$data =~ s,^.*\*/,*/,;
} else {
$data = "";
}
}
# Kill single line comments, and detect
# start of multi-line comments
if ($data =~ m,/\*.*\*/,) {
$data =~ s,/\*.*\*/,/* */,;
} elsif ($data =~ m,/\*,) {
$incomment = 1;
$data =~ s,/\*.*,/*,;
}
# We need to match things like
#
# int foo (int bar, bool wizz);
# foo (bar, wizz);
#
# but not match things like:
#
# typedef int (*foo)(bar wizz)
#
# we can't do this (efficiently) without
# missing things like
#
# foo (*bar, wizz);
#
# We also don't want to spoil the $data so it can be used
# later on.
$tmpdata = $data;
while ($tmpdata =~ /(\w+)\s\((?!\*)/) {
my $kw = $1;
# Allow space after keywords only
if ($kw =~ /^(?:if|for|while|switch|return)$/) {
$tmpdata =~ s/(?:$kw\s\()/XXX(/;
} else {
print "Whitespace after non-keyword:\n";
print "$file:$.: $line";
$ret = 1;
last;
}
}
# Require whitespace immediately after keywords
if ($data =~ /\b(?:if|for|while|switch|return)\(/) {
print "No whitespace after keyword:\n";
print "$file:$.: $line";
$ret = 1;
}
# Forbid whitespace between )( of a function typedef
if ($data =~ /\(\*\w+\)\s+\(/) {
print "Whitespace between ')' and '(':\n";
print "$file:$.: $line";
$ret = 1;
}
# Forbid whitespace following ( or prior to )
# but allow whitespace before ) on a single line
# (optionally followed by a semicolon)
if (($data =~ /\s\)/ && not $data =~ /^\s+\);?$/) ||
$data =~ /\((?!$)\s/) {
print "Whitespace after '(' or before ')':\n";
print "$file:$.: $line";
$ret = 1;
}
# Forbid whitespace before ";" or ",". Things like below are allowed:
#
# 1) The expression is empty for "for" loop. E.g.
# for (i = 0; ; i++)
#
# 2) An empty statement. E.g.
# while (write(statuswrite, &status, 1) == -1 &&
# errno == EINTR)
# ;
#
if ($data =~ /\s[;,]/) {
unless ($data =~ /\S; ; / ||
$data =~ /^\s+;/) {
print "Whitespace before semicolon or comma:\n";
print "$file:$.: $line";
$ret = 1;
}
}
# Require EOL, macro line continuation, or whitespace after ";".
# Allow "for (;;)" as an exception.
if ($data =~ /;[^ \\\n;)]/) {
print "Invalid character after semicolon:\n";
print "$file:$.: $line";
$ret = 1;
}
# Require EOL, space, or enum/struct end after comma.
if ($data =~ /,[^ \\\n)}]/) {
print "Invalid character after comma:\n";
print "$file:$.: $line";
$ret = 1;
}
# Require spaces around assignment '=', compounds and '=='
if ($data =~ /[^ ]\b[!<>&|\-+*\/%\^=]?=/ ||
$data =~ /=[^= \\\n]/) {
print "Spacing around '=' or '==':\n";
print "$file:$.: $line";
$ret = 1;
}
# One line conditional statements with one line bodies should
# not use curly brackets.
if ($data =~ /^\s*(if|while|for)\b.*\{$/) {
$cb_linenum = $.;
$cb_code = $line;
$cb_scolon = 0;
}
# We need to check for exactly one semicolon inside the body,
# because empty statements (e.g. with comment only) are
# allowed
if ($cb_linenum == $. - 1 && $data =~ /^[^;]*;[^;]*$/) {
$cb_code .= $line;
$cb_scolon = 1;
}
if ($data =~ /^\s*}\s*$/ &&
$cb_linenum == $. - 2 &&
$cb_scolon) {
print "Curly brackets around single-line body:\n";
print "$file:$cb_linenum-$.:\n$cb_code$line";
$ret = 1;
# There _should_ be no need to reset the values; but to
# keep my inner peace...
$cb_linenum = 0;
$cb_scolon = 0;
$cb_code = "";
}
}
close FILE;
}
exit $ret;
#!/usr/bin/perl
#
# Validate that header files follow a standard layout:
#
# /*
# ...copyright header...
# */
# <one blank line>
# #ifndef SYMBOL
# # define SYMBOL
# ....content....
# #endif /* SYMBOL */
#
# For any file ending priv.h, before the #ifndef
# We will have a further section
#
# #ifndef SYMBOL_ALLOW
# # error ....
# #endif /* SYMBOL_ALLOW */
# <one blank line>
use strict;
use warnings;
my $STATE_COPYRIGHT_COMMENT = 0;
my $STATE_COPYRIGHT_BLANK = 1;
my $STATE_PRIV_START = 2;
my $STATE_PRIV_ERROR = 3;
my $STATE_PRIV_END = 4;
my $STATE_PRIV_BLANK = 5;
my $STATE_GUARD_START = 6;
my $STATE_GUARD_DEFINE = 7;
my $STATE_GUARD_END = 8;
my $STATE_EOF = 9;
my $STATE_PRAGMA = 10;
my $file = " ";
my $ret = 0;
my $ifdef = "";
my $ifdefpriv = "";
my $state = $STATE_EOF;
my $mistake = 0;
sub mistake {
my $msg = shift;
warn $msg;
$mistake = 1;
$ret = 1;
}
while (<>) {
if (not $file eq $ARGV) {
if ($state == $STATE_COPYRIGHT_COMMENT) {
&mistake("$file: missing copyright comment");
} elsif ($state == $STATE_COPYRIGHT_BLANK) {
&mistake("$file: missing blank line after copyright header");
} elsif ($state == $STATE_PRIV_START) {
&mistake("$file: missing '#ifndef $ifdefpriv'");
} elsif ($state == $STATE_PRIV_ERROR) {
&mistake("$file: missing '# error ...priv allow...'");
} elsif ($state == $STATE_PRIV_END) {
&mistake("$file: missing '#endif /* $ifdefpriv */'");
} elsif ($state == $STATE_PRIV_BLANK) {
&mistake("$file: missing blank line after priv header check");
} elsif ($state == $STATE_GUARD_START) {
&mistake("$file: missing '#ifndef $ifdef'");
} elsif ($state == $STATE_GUARD_DEFINE) {
&mistake("$file: missing '# define $ifdef'");
} elsif ($state == $STATE_GUARD_END) {
&mistake("$file: missing '#endif /* $ifdef */'");
}
$ifdef = uc $ARGV;
$ifdef =~ s,.*/,,;
$ifdef =~ s,[^A-Z0-9],_,g;
$ifdef =~ s,__+,_,g;
unless ($ifdef =~ /^LIBVIRT_/ && $ARGV !~ /libvirt_internal.h/) {
$ifdef = "LIBVIRT_" . $ifdef;
}
$ifdefpriv = $ifdef . "_ALLOW";
$file = $ARGV;
$state = $STATE_COPYRIGHT_COMMENT;
$mistake = 0;
}
if ($mistake ||
$ARGV =~ /config-post\.h$/ ||
$ARGV =~ /vbox_(CAPI|XPCOM)/) {
$state = $STATE_EOF;
next;
}
if ($state == $STATE_COPYRIGHT_COMMENT) {
if (m,\*/,) {
$state = $STATE_COPYRIGHT_BLANK;
}
} elsif ($state == $STATE_COPYRIGHT_BLANK) {
if (! /^$/) {
&mistake("$file: missing blank line after copyright header");
}
if ($ARGV =~ /priv\.h$/) {
$state = $STATE_PRIV_START;
} else {
$state = $STATE_GUARD_START;
}
} elsif ($state == $STATE_PRIV_START) {
if (/^$/) {
&mistake("$file: too many blank lines after copyright header");
} elsif (/#ifndef $ifdefpriv$/) {
$state = $STATE_PRIV_ERROR;
} else {
&mistake("$file: missing '#ifndef $ifdefpriv'");
}
} elsif ($state == $STATE_PRIV_ERROR) {
if (/# error ".*"$/) {
$state = $STATE_PRIV_END;
} else {
&mistake("$file: missing '# error ...priv allow...'");
}
} elsif ($state == $STATE_PRIV_END) {
if (m,#endif /\* $ifdefpriv \*/,) {
$state = $STATE_PRIV_BLANK;
} else {
&mistake("$file: missing '#endif /* $ifdefpriv */'");
}
} elsif ($state == $STATE_PRIV_BLANK) {
if (! /^$/) {
&mistake("$file: missing blank line after priv guard");
}
$state = $STATE_GUARD_START;
} elsif ($state == $STATE_GUARD_START) {
if (/^$/) {
&mistake("$file: too many blank lines after copyright header");
} elsif(/#pragma once/) {
$state = $STATE_PRAGMA;
} elsif (/#ifndef $ifdef$/) {
$state = $STATE_GUARD_DEFINE;
} else {
&mistake("$file: missing '#ifndef $ifdef'");
}
} elsif ($state == $STATE_GUARD_DEFINE) {
if (/# define $ifdef$/) {
$state = $STATE_GUARD_END;
} else {
&mistake("$file: missing '# define $ifdef'");
}
} elsif ($state == $STATE_GUARD_END) {
if (m,#endif /\* $ifdef \*/$,) {
$state = $STATE_EOF;
}
} elsif ($state == $STATE_PRAGMA) {
next;
} elsif ($state == $STATE_EOF) {
die "$file: unexpected content after '#endif /* $ifdef */'";
} else {
die "$file: unexpected state $state";
}
}
exit $ret;
#!/usr/bin/perl
my @block;
my $msgstr = 0;
my $empty = 0;
my $unused = 0;
my $fuzzy = 0;
while (<>) {
if (/^$/) {
if (!$empty && !$unused && !$fuzzy) {
print @block;
}
@block = ();
$msgstr = 0;
$fuzzy = 0;
push @block, $_;
} else {
if (/^msgstr/) {
$msgstr = 1;
$empty = 1;
}
if (/^#.*fuzzy/) {
$fuzzy = 1;
}
if (/^#~ msgstr/) {
$unused = 1;
}
if ($msgstr && /".+"/) {
$empty = 0;
}
push @block, $_;
}
}
if (@block && !$empty && !$unused) {
print @block;
}
#!/usr/bin/env perl
my %noninlined;
my %mocked;
# Functions in public header don't get the noinline annotation
# so whitelist them here
$noninlined{"virEventAddTimeout"} = 1;
# This one confuses the script as its defined in the mock file
# but is actually just a local helper
$noninlined{"virMockStatRedirect"} = 1;
foreach my $arg (@ARGV) {
if ($arg =~ /\.h$/) {
#print "Scan header $arg\n";
&scan_annotations($arg);
} elsif ($arg =~ /mock\.c$/) {
#print "Scan mock $arg\n";
&scan_overrides($arg);
}
}
my $warned = 0;
foreach my $func (keys %mocked) {
next if exists $noninlined{$func};
$warned++;
print STDERR "$func is mocked at $mocked{$func} but missing noinline annotation\n";
}
exit $warned ? 1 : 0;
sub scan_annotations {
my $file = shift;
open FH, $file or die "cannot read $file: $!";
my $func;
while (<FH>) {
if (/^\s*(\w+)\(/ || /^(?:\w+\*?\s+)+(?:\*\s*)?(\w+)\(/) {
my $name = $1;
if ($name !~ /ATTRIBUTE/) {
$func = $name;
}
} elsif (/^\s*$/) {
$func = undef;
}
if (/ATTRIBUTE_NOINLINE/) {
if (defined $func) {
$noninlined{$func} = 1;
}
}
}
close FH
}
sub scan_overrides {
my $file = shift;
open FH, $file or die "cannot read $file: $!";
my $func;
while (<FH>) {
if (/^(\w+)\(/ || /^\w+\s*(?:\*\s*)?(\w+)\(/) {
my $name = $1;
if ($name =~ /^vir/) {
$mocked{$name} = "$file:$.";
}
}
}
close FH
}
#!/usr/bin/env perl
use strict;
my $file = " ";
my $ret = 0;
my %includes = ( );
my $lineno = 0;
while (<>) {
if (not $file eq $ARGV) {
%includes = ( );
$file = $ARGV;
$lineno = 0;
}
$lineno++;
if (/^# *include *[<"]([^>"]*\.h)[">]/) {
$includes{$1}++;
if ($includes{$1} == 2) {
$ret = 1;
print STDERR "$ARGV:$lineno: $_";
print STDERR "Do not include a header more than once per file\n";
}
}
}
exit $ret;
......@@ -120,7 +120,6 @@ useless_free_options = \
--name=virConfFreeValue \
--name=virDomainActualNetDefFree \
--name=virDomainChrDefFree \
--name=virDomainChrSourceDefFree \
--name=virDomainControllerDefFree \
--name=virDomainDefFree \
--name=virDomainDeviceDefFree \
......@@ -309,6 +308,7 @@ sc_flags_usage:
{ echo '$(ME): new API should use "unsigned int flags"' 1>&2; \
exit 1; } || :
@prohibit=' flags ATTRIBUTE_UNUSED' \
exclude='virSecurityDomainImageLabelFlags' \
halt='flags should be checked with virCheckFlags' \
$(_sc_search_regexp)
@prohibit='^[^@]*([^d] (int|long long)|[^dg] long) flags[;,)]' \
......@@ -809,11 +809,11 @@ sc_prohibit_cross_inclusion:
sc_require_enum_last_marker:
@$(VC_LIST_EXCEPT) | xargs \
$(GREP) -A1 -nE '^[^#]*VIR_ENUM_IMPL *\(' /dev/null \
| $(SED) -ne '/VIR_ENUM_IMPL[^,]*,$$/N' \
-e '/VIR_ENUM_IMPL[^,]*,[^,]*[^_,][^L,][^A,][^S,][^T,],/p' \
| $(SED) -ne '/VIR_ENUM_IMPL.*,$$/N' \
-e '/VIR_ENUM_IMPL[^,]*,[^,]*,[^,]*[^_,][^L,][^A,][^S,][^T,],/p' \
-e '/VIR_ENUM_IMPL[^,]*,[^,]\{0,4\},/p' \
| $(GREP) . && \
{ echo '$(ME): enum impl needs to use _LAST marker' 1>&2; \
{ echo '$(ME): enum impl needs _LAST marker on second line' 1>&2; \
exit 1; } || :
# In Python files we don't want to end lines with a semicolon like in C
......@@ -1070,11 +1070,33 @@ sc_prohibit_backslash_alignment:
# Rule to ensure that variables declared using a cleanup macro are
# always initialized.
sc_require_attribute_cleanup_initialization:
@prohibit='VIR_AUTO((FREE|PTR)\(.+\)|CLOSE) *[^=]+;' \
@prohibit='VIR_AUTO((FREE|PTR|UNREF|CLEAN)\(.+\)|CLOSE|STRINGLIST) *[^=]+;' \
in_vc_files='\.[chx]$$' \
halt='variable declared with a cleanup macro must be initialized' \
$(_sc_search_regexp)
# "class" in headers is not good because by default Vim treats it as a keyword
# Let's prohibit it in source files as well.
sc_prohibit_class:
@prohibit=' +_?class *;' \
in_vc_files='\.[chx]$$' \
halt='use klass instead of class or _class' \
$(_sc_search_regexp)
# The dirent "d_type" field is non-portable and even when it
# exists some filesystems will only ever return DT_UNKNOWN.
# This field should only be used by code which is exclusively
# run platforms supporting "d_type" and must expect DT_UNKNOWN.
# We blacklist it to discourage accidental usage which has
# happened many times. Add an exclude rule if it is genuinely
# needed and the above restrictions are acceptable.
sc_prohibit_dirent_d_type:
@prohibit='(->|\.)d_type' \
in_vc_files='\.[chx]$$' \
halt='do not use the d_type field in "struct dirent"' \
$(_sc_search_regexp)
# We don't use this feature of maint.mk.
prev_version_file = /dev/null
......@@ -1104,7 +1126,7 @@ maint.mk Makefile: _autogen_error
# though, as it would be quite pointless
ifeq (2,$(_dry_run_result)$(_clean_requested))
$(info INFO: running autogen.sh is required, running it now...)
$(shell touch $(srcdir)/AUTHORS $(srcdir)/ChangeLog)
$(shell touch $(srcdir)/AUTHORS)
maint.mk Makefile: _autogen
endif
endif
......@@ -1263,10 +1285,10 @@ exclude_file_name_regexp--sc_prohibit_xmlURI = ^src/util/viruri\.c$$
exclude_file_name_regexp--sc_prohibit_return_as_function = \.py$$
exclude_file_name_regexp--sc_require_config_h = \
^(examples/|tools/virsh-edit\.c$$)
^(examples/|tools/virsh-edit\.c$$|tests/virmockstathelpers.c)
exclude_file_name_regexp--sc_require_config_h_first = \
^(examples/|tools/virsh-edit\.c$$)
^(examples/|tools/virsh-edit\.c$$|tests/virmockstathelpers.c)
exclude_file_name_regexp--sc_trailing_blank = \
/sysinfodata/.*\.data|/virhostcpudata/.*\.cpuinfo|^gnulib/local/.*/.*diff$$
......@@ -1282,7 +1304,7 @@ exclude_file_name_regexp--sc_correct_id_types = \
exclude_file_name_regexp--sc_m4_quote_check = m4/virt-lib.m4
exclude_file_name_regexp--sc_prohibit_include_public_headers_quote = \
^(src/internal\.h$$|tools/wireshark/src/packet-libvirt.h$$)
^(src/internal\.h$$|tools/wireshark/src/packet-libvirt.c$$)
exclude_file_name_regexp--sc_prohibit_include_public_headers_brackets = \
^(tools/|examples/|include/libvirt/(virterror|libvirt(-(admin|qemu|lxc))?)\.h$$)
......@@ -1328,3 +1350,6 @@ exclude_file_name_regexp--sc_prohibit_readdir = \
exclude_file_name_regexp--sc_prohibit_cross_inclusion = \
^(src/util/virclosecallbacks\.h|src/util/virhostdev\.h)$$
exclude_file_name_regexp--sc_prohibit_dirent_d_type = \
^(src/util/vircgroup.c)$
......@@ -44,7 +44,6 @@
# undef WITH_SYSTEMD_DAEMON
# undef WITH_VIRTUALPORT
# undef WITH_YAJL
# undef WITH_YAJL2
#endif
/*
......@@ -69,7 +68,6 @@
# undef WITH_VIRTUALPORT
# undef WITH_SECDRIVER_SELINUX
# undef WITH_SECDRIVER_APPARMOR
# undef WITH_CAPNG
#endif /* LIBVIRT_NSS */
#ifndef __GNUC__
......
......@@ -1074,9 +1074,6 @@
/* Define to 1 if you have the `ffsl' function. */
#undef HAVE_FFSL
/* whether firewalld support is enabled */
#undef HAVE_FIREWALLD
/* Define to 1 if you have the `flockfile' function. */
#undef HAVE_FLOCKFILE
......@@ -1291,9 +1288,6 @@
/* Define to 1 if you have the `sanlock_client' library (-lsanlock_client). */
#undef HAVE_LIBSANLOCK_CLIENT
/* Define to 1 if you have the `sasl2' library (-lsasl2). */
#undef HAVE_LIBSASL2
/* Define to 1 if you have the `selinux' library (-lselinux). */
#undef HAVE_LIBSELINUX
......@@ -1312,9 +1306,6 @@
/* Define to 1 if you have the <libxlutil.h> header file. */
#undef HAVE_LIBXLUTIL_H
/* Define to 1 if you have the `yajl' library (-lyajl). */
#undef HAVE_LIBYAJL
/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
......@@ -1556,6 +1547,9 @@
/* Define to 1 if you have the `rbd_get_features' function. */
#undef HAVE_RBD_GET_FEATURES
/* Define to 1 if you have the `rbd_list2' function. */
#undef HAVE_RBD_LIST2
/* Define to 1 if you have the `readlink' function. */
#undef HAVE_READLINK
......@@ -2660,6 +2654,12 @@
/* whether ESX driver is enabled */
#undef WITH_ESX
/* whether firewalld support is enabled */
#undef WITH_FIREWALLD
/* whether firewalld libvirt zone is installed */
#undef WITH_FIREWALLD_ZONE
/* whether fuse >= 2.8.6 is available */
#undef WITH_FUSE
......@@ -2753,12 +2753,9 @@
/* whether libsanlock_client is available */
#undef WITH_SANLOCK
/* whether libsasl2 is available */
/* whether libsasl2 >= 2.1.26 is available */
#undef WITH_SASL
/* whether libsasl2 is available */
#undef WITH_SASL1
/* whether AppArmor security driver is available */
#undef WITH_SECDRIVER_APPARMOR
......@@ -2837,18 +2834,15 @@
/* whether vz driver is enabled */
#undef WITH_VZ
/* whether wireshark >= 1.11.3 is available */
/* whether wireshark >= 2.4.0 is available */
#undef WITH_WIRESHARK_DISSECTOR
/* whether libxenserver is available */
#undef WITH_XENAPI
/* whether libyajl is available */
/* whether yajl >= 2.0.3 is available */
#undef WITH_YAJL
/* whether libyajl is available */
#undef WITH_YAJL2
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
......
This diff is collapsed.
......@@ -16,15 +16,21 @@ dnl You should have received a copy of the GNU Lesser General Public
dnl License along with this library. If not, see
dnl <http://www.gnu.org/licenses/>.
AC_INIT([libvirt], [5.0.0], [libvir-list@redhat.com], [], [https://libvirt.org])
AC_INIT([libvirt], [5.3.0], [libvir-list@redhat.com], [], [https://libvirt.org])
AC_CONFIG_SRCDIR([src/libvirt.c])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([config.h])
AH_BOTTOM([#include <config-post.h>])
AC_CONFIG_MACRO_DIR([m4])
dnl Make automake keep quiet about wildcards & other GNUmake-isms; also keep
dnl quiet about the fact that we intentionally cater to automake 1.9
AM_INIT_AUTOMAKE([-Wno-portability -Wno-obsolete tar-pax no-dist-gzip dist-xz subdir-objects])
dnl Make automake keep quiet about wildcards & other GNUmake-isms
AM_INIT_AUTOMAKE([
foreign
-Wno-portability
tar-pax
no-dist-gzip
dist-xz
subdir-objects
])
dnl older automake's default of ARFLAGS=cru is noisy on newer binutils;
dnl we don't really need the 'u' even in older toolchains. Then there is
dnl older libtool, which spelled it AR_FLAGS
......@@ -174,13 +180,13 @@ want_ifconfig=no
dnl Make some notes about which OS we're compiling for, as the lxc and qemu
dnl drivers require linux headers, and storage_mpath, dtrace, and nwfilter
dnl are also linux specific. The "network" and storage_fs drivers are known
dnl to not work on MacOS X presently, so we also make a note if compiling
dnl to not work on macOS presently, so we also make a note if compiling
dnl for that
with_linux=no with_osx=no with_freebsd=no with_win=no with_cygwin=no
with_linux=no with_macos=no with_freebsd=no with_win=no with_cygwin=no
case $host in
*-*-linux*) with_linux=yes ;;
*-*-darwin*) with_osx=yes ;;
*-*-darwin*) with_macos=yes ;;
*-*-freebsd*) with_freebsd=yes ;;
*-*-mingw* | *-*-msvc* ) with_win=yes ;;
*-*-cygwin*) with_cygwin=yes ;;
......@@ -246,6 +252,7 @@ LIBVIRT_ARG_CAPNG
LIBVIRT_ARG_CURL
LIBVIRT_ARG_DBUS
LIBVIRT_ARG_FIREWALLD
LIBVIRT_ARG_FIREWALLD_ZONE
LIBVIRT_ARG_FUSE
LIBVIRT_ARG_GLUSTER
LIBVIRT_ARG_HAL
......@@ -286,6 +293,7 @@ LIBVIRT_CHECK_DBUS
LIBVIRT_CHECK_DEVMAPPER
LIBVIRT_CHECK_DLOPEN
LIBVIRT_CHECK_FIREWALLD
LIBVIRT_CHECK_FIREWALLD_ZONE
LIBVIRT_CHECK_FUSE
LIBVIRT_CHECK_GLUSTER
LIBVIRT_CHECK_GNUTLS
......@@ -619,9 +627,9 @@ if test "$with_libvirtd" = "no"; then
with_storage_vstorage=no
fi
dnl storage-fs does not work on MacOS X
dnl storage-fs does not work on macOS
if test "$with_osx" = "yes"; then
if test "$with_macos" = "yes"; then
with_storage_fs=no
fi
......@@ -736,23 +744,6 @@ fi
AC_SUBST([VIR_TEST_EXPENSIVE_DEFAULT])
AM_CONDITIONAL([WITH_EXPENSIVE_TESTS], [test $VIR_TEST_EXPENSIVE_DEFAULT = 1])
LIBVIRT_ARG_ENABLE([TEST_COVERAGE], [turn on code coverage instrumentation], [no])
case "$enable_test_coverage" in
yes|no) ;;
*) AC_MSG_ERROR([bad value ${enable_test_coverga} for test-coverage option]) ;;
esac
if test "$enable_test_coverage" = yes; then
save_WARN_CFLAGS=$WARN_CFLAGS
WARN_CFLAGS=
gl_WARN_ADD([-fprofile-arcs])
gl_WARN_ADD([-ftest-coverage])
COVERAGE_FLAGS=$WARN_CFLAGS
AC_SUBST([COVERAGE_CFLAGS], [$COVERAGE_FLAGS])
AC_SUBST([COVERAGE_LDFLAGS], [$COVERAGE_FLAGS])
WARN_CFLAGS=$save_WARN_CFLAGS
fi
LIBVIRT_ARG_ENABLE([TEST_OOM], [memory allocation failure checking], [no])
case "$enable_test_oom" in
yes|no) ;;
......@@ -1000,6 +991,7 @@ LIBVIRT_RESULT_CURL
LIBVIRT_RESULT_DBUS
LIBVIRT_RESULT_DLOPEN
LIBVIRT_RESULT_FIREWALLD
LIBVIRT_RESULT_FIREWALLD_ZONE
LIBVIRT_RESULT_FUSE
LIBVIRT_RESULT_GLUSTER
LIBVIRT_RESULT_GNUTLS
......@@ -1038,7 +1030,6 @@ LIBVIRT_WIN_RESULT_WINDRES
AC_MSG_NOTICE([])
AC_MSG_NOTICE([Test suite])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([ Coverage: $enable_test_coverage])
AC_MSG_NOTICE([ Alloc OOM: $enable_test_oom])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([Miscellaneous])
......
libvirt (5.3.0-1~1.gbp5c84f4) UNRELEASED; urgency=medium
** SNAPSHOT build @5c84f4f32ef2a75a837cba4984ef05694460110e **
[ Guido Günther ]
* [fb43676] d/control: Drop dh-autoreconf build-dep
* [81d21d5] d/not-installed: Use multi-arch dirs
* [641e532] New upstream version 5.3.0
[ Christian Ehrhardt ]
* [c28c3b3] d/libvirt0.install: install translations
* [c3c4cd4] d/libvirt-daemon-system.install: drop in helper for firewalld
* [3e8b43c] d/not-installed: ignore default files /etc/sysconfig
* [c223d7f] d/libvirt-daemon-system.examples: ship sysctl config as example
* [f19acf6] d/libvirt-daemon-system.install: ship libxl-sanlock.conf
(Closes: #919484)
* [483e44a] d/libvirt-doc.docs: fix whitespace issue
* [4f4751f] d/libvirt-doc.docs: install new doc elements
* [781e22e] d/not-installed: ignore documentation already being installed
* [eda89b2] d/no-installed, d/libvirt-doc.docs: do not install fonts
* [ab67a28] d/copyright: add license for docs/fonts/
* [2e222a2] d/rules: strip symbolic-functions linker option
* [39b658c] Revert "d/libvirt-daemon-system.install: ship libxl-sanlock.conf"
* [ce46360] d/rules: install libxl-sanlock.conf dependent on xen being enabled
[ Andrea Bolognani ]
* [6a2eae3] Simplify and improve watch file
* [baef715] Rediff patches
* [82a1edc] Bump symbol versions
* [73fccd9] Specify --doc-main-package for dh_installdocs
-- Andrea Bolognani <eof@kiyuko.org> Sat, 10 Aug 2019 17:59:37 +0200
libvirt (5.2.0-2) experimental; urgency=medium
[ Guido Günther ]
* [1ec90c0] d/compat: Switch to debhelper level 12
* [fb6dd18] d/rules: s/no-restart-on-upgrade/no-stop-on-upgrade/
* [3764b71] d/rules: --prallel not needed anymore
* [1d92095] d/control: Add ${misc:Pre-Depends} for
libvirt-daemon-system. This makes sure we pull in recent enough
init-system-helpers
* [02a155b] d/rules: Switch to dh_installsystemd
dh_systemd_start is no longer used.
* [bcad111] d/control: Fix typo
* [8609192] d/control: Drop Debian revision on iptables build-dep. Any
version greater than 1.8.1 will do.
* [447dd58] libnss-libvirt: Install libnss_libvirt-guest as well
(Closes: #910288)
* [4fb7d11] d/control: Build-depend on libglusterfs-dev.
Since this is a recent addition we can drop the versioned dependency.
(Closes: #919663)
* [7b4ffeb] d/rules: Newer debhelper puts the libs into multi arch dirs.
There's no need to move them manually anymore.
[ Andrea Bolognani ]
* [dd9cdaa] Use HTTPS for all URLs.
This gets rid of the debian-watch-uses-insecure-uri informational Lintian
tag, and then some.
* [faaec12] Minimize upstream's signing key.
This gets rid of the public-upstream-key-not-minimal informational Lintian
tag.
* [8a0e6f1] Remove Priority field from binary packages.
This gets rid of the binary-control-field-duplicates-source informational
Lintian tag.
[ Christian Ehrhardt ]
* [08f3a23] d/libvirt-clients.manpages: add virkeycode and virkeyname man
pages.
* [0f359de] d/rules: mv logrotate files to silence dh_missing
* [f36ca33] dh_missing: ignore warning on libtool .la file
-- Guido Günther <agx@sigxcpu.org> Mon, 22 Apr 2019 12:20:36 +0200
libvirt (5.2.0-1) experimental; urgency=medium
* Team upload.
[ Christian Ehrhardt ]
* [3997186] d/libvirt-daemon-system.maintscript: remove obsolete conffile
/etc/logrotate.d/libvirtd.uml became obsolete since UML was dropped in
libvirt 5.0 (Closes: #920574)
* [c64d020] d/libvirt-daemon-system.libvirtd.default: clarify libvirtd_opts
example (Closes: #921713)
[ Guido Günther ]
* [dd9d74f] New upstream version 5.2.0
* [790365e] CVE-2019-3886: Don't allow unprivileged users to use the guest
agent. Apply upstream patches
remote-enforce-ACL-write-permission-for-getting-guest-tim.patch
api-disallow-virDomainGetHostname-for-read-only-connectio.patch
(Closes: #926418)
[ Andrea Bolognani ]
* [453f85d] Rediff patches. The patches
security-aa-helper-allow-virt-aa-helper-to-read-dev-dri.patch
security-aa-helper-generate-more-rules-for-gl-devices.patch
security-aa-helper-gl-devices-in-sysfs-at-arbitrary-depth.patch
security-aa-helper-nvidia-rules-for-gl-devices.patch
virt-aa-helper-generate-rules-for-gl-enabled-graphics-dev.patch
are included in libvirt 5.2.0 and have thus been dropped.
* [a4294ef] Bump symbol versions.
* [68394f6] Add tests-Avoid-writing-into-HOME-during-virsh-snapshot.patch
-- Andrea Bolognani <eof@kiyuko.org> Sun, 07 Apr 2019 18:39:49 +0200
libvirt (5.1.0-1) experimental; urgency=medium
[ Laurent Bigonville ]
* [76e2cb7] Don't recommend ebtables.
It's part of the iptables package now. (Closes: #918472)
[ Guido Günther ]
* [5814c89] New upstream version 5.1.0
* [55d063d] Rediff patches
* [1102dae] d/gbp.conf: Switch to experimental
* [cdf3787] d/rules: Adjust to now versioned wireshark module path
-- Guido Günther <agx@sigxcpu.org> Thu, 28 Mar 2019 13:03:29 +0100
libvirt (5.0.0-4) unstable; urgency=medium
* [0fdc2af] Fix multiple CVEs related to privilege escalations on R/O
......