Blob Blame History Raw
2019-11-26  Daniel P. Berrangé  <>

	Bump version & update NEWS for 3.0.0 release

2019-10-01  Fabiano Fidêncio  <>

	gconfig-domain-video: Add bochs video device

	Reviewed-by: Daniel P. Berrangé <>

2019-09-05  Fabiano Fidêncio  <>

	tests,test-gconfig: Check _domain_os_get_machine()
	Let's add one more simple check for gvir_config_domain_os_get_machine().

	Reviewed-by: Michal Privoznik <>

	gconfig: Add _domain_os_get_firmware()
	Add a way to get the value of <os firmware="bios|efi"/> which has been
	set to the domain XML.

	Reviewed-by: Michal Privoznik <>

2019-08-19  Daniel P. Berrangé  <>

	Set desired glib min/max API versions
	Setting GLIB_VERSION_MAX_ALLOWED ensures we get warnings if
	we use APIs that are newer than our declared minimum glib

	Setting GLIB_VERSION_MIN_REQUIRED ensures that we get
	warnings if we use APIs deprecated in versions preceeding

	If the latter is omitted then we get warnings for all
	deprecations in glib, which is undesirable if we want to
	keep compat with older versions.

	This avoids a build error with latest glib

	  ./../libvirt-gconfig/libvirt-gconfig-capabilities-cpu-model.c: In function 'gvir_config_capabilities_cpu_model_init':
	  ../../libvirt-gconfig/libvirt-gconfig-capabilities-cpu-model.c:44:13: error: G_ADD_PRIVATE [-Werror]
	     44 |     model->priv = GVIR_CONFIG_CAPABILITIES_CPU_MODEL_GET_PRIVATE(model);
	        |             ^~~~~~~~~~~~~~~

	Caused by G_TYPE_INSTANCE_GET_PRIVATE being deprecated.

	Reviewed-by: Michal Privoznik <>

	gobject: remove use of G_PARAM_PRIVATE
	This enum field is a deprecated synonym for G_PARAM_STATIC_NAME
	which is already set by G_PARAM_STATIC_STRINGS.

	Reviewed-by: Michal Privoznik <>

2019-05-27  Fabiano Fidêncio  <>

	gtk-doc.make: Remove the file
	Now that we're using gtkdocisze as part of, there's no reason
	to keep our own gtk-doc.make file.

	Reviewed-by: Michal Privoznik <> Simplify
	Let's use an based on libosinfo's one, which is cleaner and
	matches the current GNOME guidelines.

	Reviewed-by: Michal Privoznik <>

	docs: explicitly link against libvirt-g{config,lib,object}
	Let's explicitly link against the built libvirt-gconfig, libvirt-glib,
	and libvirt-gobject libtool files for introspecting the gobjects.

	In case it's *not* done we can run into some issues when where we try to
	link against installed library, causing failures related to undefined
	reference of the new symbols.

	Reviewed-by: Andrea Bolognani <>

2019-05-23  Fabiano Fidêncio  <>

	event-test: Change sha-bang line to use python3
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	event-test: Handle exceptions in a py3 compatible way
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	event-test: Use print() in a py3 compatible way
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	event-test: Ensure the right versions of LibvirtGLib and Gtk get loaded
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	event-test: Don't use ";" in the end of lines
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	event-test: LibvirtGLib.init() takes (at maximum) 1 argment
	The previous behaviour with pygobject required 2 arguments to be passed
	to LibvirtGLib.init().

	As it's been changed, whenever we try to run event-test we'd get:
	Using uri:qemu:///system
	Traceback (most recent call last):
	  File "", line 62, in <module>
	  File "", line 51, in main
	    LibvirtGLib.init(0, "")
	TypeError: LibvirtGLib.init() takes exactly 1 argument (2 given)

	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

2019-05-20  Fabiano Fidêncio  <>

	conn-test: Change sha-bang line to use python3
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	conn-test: Handle exceptions in a py3 compatible way
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	conn-test: Use print() in a py3 compatible way
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	conn-test: Ensure the right versions of LibvirtGObject and Gtk get loaded
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	conn-test: Don't use ";" in the end of lines
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	config-demo: Change sha-bang line to use python3
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	config-demo: Use octal when setting mode
	Basically, just change 0744 to 0o744 in order to be compatible with

	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	config-demo: Use print() in a py3 compatible way
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	config-demo: Ensure the right LibvirtGConfig version gets loaded
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	config-demo: Don't use ";" in the end of lines
	Reviewed-by: Daniel P. Berrangé <>
	Reviewed-by: Michal Privoznik <>

	gobject: Wrap virConnectGetDomainCapabilities()
	In order to do so, 3 new APIs have been added:
	- gvir_connection_get_domain_capabilities();
	- gvir_connection_get_domain_capabilities_async();
	- gvir_connection_get_domain_capabilities_finish();

	The returned object is a GVirConfigDomainCapabilities, from which
	consumers will be able to access a few other objects representing the
	XML returned by virConnectGetDomainCapabilities().

	Reviewed-by: Michal Privoznik <>

	tests: Add basic test for domain capabilities
	This basic test only ensures that we can properly parse:
	    <enum name="firmeware">

	Reviewed-by: Michal Privoznik <>

	gconfig: Add _domain_capabilities_os_get_firmwares()
	Add a way to access the <enum name="firmware"/> element's conent from

	Reviewed-by: Michal Privoznik <>

	gconfig: Add _domain_capabilities_get_os()
	Add a way to access the object which represents the <os/> element from
	the <domainCapabilities/>.

	Reviewed-by: Michal Privoznik <>

	gconfig: Add GVirConfigDomainCapabilitiesOs
	GVirConfigDomainCapabilitiesOs object has been introduced in order to
	represent the <os/> element under <domainCapabilities/>.

	For now it's not used anywhere, but it's addition allows us to start
	building the needed machinery for:
	- Returning a representation os <os/> element;
	- Having the most basic machinery to start adding functions to return
	  any child element we may need to query from <os/> element;

	Reviewed-by: Michal Privoznik <>

	gconfig: Add GVirConfigDomainCapabilities
	GVirConfigDomainCapabilities object has been introduced in order to
	represent the output of virConnectGetDomainCapabilities().

	For now it's not used anywhere, but its addition allows us to start
	building the needed machinery for:
	- Creating a wrapper around virConnectGetDomainCapabilities();
	- Creating new objects that will be used to return each of the elements
	  present in the output of virConnectGetDomainCapabilities(),
	  accordingly to the consumers of this library's need;

	Reviewed-by: Michal Privoznik <>

	gobject: Use the proper return type in _connection_get_capabilities_finish()
	Instead of returning FALSE, return NULL.

	Reviewed-by: Michal Privoznik <>

	gconfig: Add _domain_os_set_firmware()
	Add a way to set <os firmware="bios|efi"/> to the domain XML.

	Reviewed-by: Michal Privoznik <>

2019-02-20  Daniel P. Berrangé  <>

	po: refresh translations from zanata

	po: minimize uk ur vi wba yo zh_CN zh_HK zh_TW zu

	po: minimize sq sr@latin sr sv ta te tg th tr tw

	po: minimize or pa pl pt_BR pt ro ru si sk sl

	po: minimize mn mr ms nb nds ne nl nn nso

	po: minimize kw_GB kw@kkcor kw kw@uccor ky lt lv mai mk ml

	po: minimize id ilo is it ja ka kk km kn ko

	po: minimize fr gl gu he hi hr hu ia

	po: minimize de el en_GB eo es et eu fa fi

	po: minimize bn bo br brx bs ca cs cy da de_CH

	po: minimize af am anp ar as ast bal be bg bn_IN

	po: minimize & canonicalize translations stored in git
	Similar to the libvirt-glib.pot, .po files contain line numbers and file
	names identifying where in the source a translatable string comes from.
	The source locations in the .po files are thrown away and replaced with
	content from the libvirt-glib.pot whenever msgmerge is run, so this is not
	precious information that needs to be stored in git.

	When msgmerge processes a .po file, it will add in any msgids from the
	libvirt-glib.pot that were not already present. Thus, if a particular msgid
	currently has no translation, it can be considered redundant and again
	does not need storing in git.

	When msgmerge processes a .po file and can't find an exact existing
	translation match, it will try todo fuzzy matching instead, marking such
	entries with a "# fuzzy" comment to alert the translator to take a
	look and either discard, edit or accept the match. Looking at the
	existing fuzzy matches in .po files shows that the quality is awful,
	with many having a completely different set of printf format specifiers
	between the msgid and fuzzy msgstr entry. Fortunately when msgfmt
	generates the .gmo, the fuzzy entries are all ignored anyway. The fuzzy
	entries could be useful to translators if they were working on the .po
	files directly from git, but Libvirt-Glib outsourced translation to the
	Fedora Zanata system, so keeping fuzzy matches in git is not much help.

	Finally, by default msgids are sorted based on source location. Thus, if
	a bit of code with translatable text is moved from one file to another,
	it may shift around in the .po file, despite the msgid not itself changing.
	If the msgids were sorted alphabetically, the .po files would have
	stable ordering when code is refactored.

	This patch takes advantage of the above observations to canonicalize
	and minimize the content stored for .po files in git. Instead of storing
	the real .po files, we now store .mini.po files.

	The .mini.po files are the same file format as .po files, but have no
	source location comments, are sorted alphabetically, and all fuzzy
	msgstrs and msgids with no translation are discarded. This cuts the size
	of content in the po directory.

	Users working from a libvirt-glib git checkout who need the full .po files
	can run "make update-po", which merges the libvirt-glib.pot and .mini.po
	file to create a .po file containing all the content previously stored
	in git.

	Conversely if a full .po file has been modified, for example, by
	downloading new content from Zanata, the .mini.po files can be updated
	by running "make update-mini-po". The resulting diffs of the .mini.po
	file will clearly show the changed translations without any of the noise
	that previously obscured content. Being able to see content changes
	clearly actually identified a bug in the zanata python client where it
	was adding bogus "fuzzy" annotations to many messages:

	Users working from libvirt-glib releases should not see any difference in
	behaviour, since the tarballs only contain the full .po files, not the
	.mini.po files.

	As an added benefit, generating tarballs with "make dist", will no
	longer cause creation of dirty files in git, since it won't touch the
	.mini.po files, only the .po files which are no longer kept in git.

	The languages are minimized in the following commit since it is a
	large mechanical process.

	po: add rules for integration with zanata
	Add rules to handle pushing libvirt-glib.pot to zanata, and refreshing .po
	files with new content from zanata.

	po: remove language list from zanata configuration
	The <locales> element in zanata.xml is no longer relevant as this info
	is recorded server side.

	po: provide custom make rules for po file management
	Historically we have relied on intltool to install a standard
	po/ which has very limited scope for customization.
	intltool is deprecated in favour of standard gettextize tools,
	but these share the same disadvantages.

	Writing make rules for po file management is no more difficult
	than any other rules libvirt-glib has, so stop using intltool
	and don't use gettextize ether.

2019-02-14  Christophe Fergeau  <>

	events: Mark 'eventlock' as static
	It's not used outside of the libvirt-glib-event.c file, so there is no
	good reason for not having it static. As it was not listed in
	libvirt-glib.sym, this will make no change to the publicly exported
	symbols (ie this is not an ABI change).

	Reviewed-by: Fabiano Fidêncio <>

	object: Fix gvir_connection_create_storage_pool() leak
	We need to free the string returned by gvir_config_object_to_xml() after
	using it.

	Reviewed-by: Fabiano Fidêncio <>

	config: Fix gvir_config_xml_node_to_string() leak
	If xmlNodeDump() fails, we would be leaking the xmlBuffer we created.
	This commit ensures we don't return early before this buffer is freed.

	Reviewed-by: Fabiano Fidêncio <>

2019-02-12  Christophe Fergeau  <>

	gconfig: Add gvir_config_storage_vol_target_set_features
	Only one feature is supported at the moment, 'lazy refcount'

	Reviewed-by: Cole Robinson <>

2018-10-12  Daniel P. Berrangé  <>

	Bump version to 2.0.0 for new release

	Re-add script for doing release build testing

	Refresh translations from zanata

2018-10-12  Fabiano Fidêncio  <>

	tests: Add tests for _domain_os_{set, get}_machine()
	Reviewed-by: Cole Robinson <>
	Reviewed-by: Daniel P. Berrangé <>

	gconfig: add _domain_os_get_machine()
	Reviewed-by: Cole Robinson <>
	Reviewed-by: Daniel P. Berrangé <>

	gconfig-domain-sound: Add ich9 sound device
	Reviewed-by: Cole Robinson <>
	Reviewed-by: Daniel P. Berrangé <>

2018-10-03  Fabiano Fidêncio  <>

	domain: Introduce gvir_config_domain_set_custom_xml_ns_children()
	gvir_config_domain_set_custom_xml_ns_children() basically has the same
	functionallity as gvir_config_domain_set_custom_xml() but also sets the
	namespace to the nodes' children.

	object: Also add the ns to the node's children
	With the current code, we can only create a custom XML that looks like:
	  <boxes:gnome-boxes xmlns:boxes="">

	Although it works well for some use cases, there are use cases where
	we'd like to have something a bit more complex libosinfo or nova
	  <libosinfo:libosinfo xmlns:libosinfo="">
	    <libosinfo:os id=""/>
	  <nova:instance xmlns:nova="">
	    <nova:flavor name="m1.small">

	And for the latter case we'd have to go through the node's children and
	also set the namespace for each children.

	Commit 7190c5024d introduced the usage of new GObject define macros with
	private. However as the conversion hasn't been done for abstract types
	(G_DEFINE_ABSTRACT_TYPE) and the addition of the private classes for the
	abstract types has been removed as part of the commit, crashes can be
	seen in Apps consuming libvirt-glib, as this one from GNOME Boxes:

	 Thread 1 "gnome-boxes" received signal SIGSEGV, Segmentation fault.
	 0x00007ffff7ef2b35 in g_type_check_instance_is_fundamentally_a () from /usr/lib/x86_64-linux-gnu/
	 (gdb) bt
	 #0  0x00007ffff7ef2b35 in g_type_check_instance_is_fundamentally_a () from /usr/lib/x86_64-linux-gnu/
	 #1  0x00007ffff7ed2e75 in g_object_unref () from /usr/lib/x86_64-linux-gnu/
	 #2  0x00007ffff6ef094e in gvir_domain_device_set_property (object=0x555556680950, prop_id=2, value=0x7fffffffcbe0,
	     pspec=0x555556772540) at libvirt-gobject-domain-device.c:89
	 #3  0x00007ffff7ed3b19 in ?? () from /usr/lib/x86_64-linux-gnu/
	 #4  0x00007ffff7ed5624 in g_object_new_valist () from /usr/lib/x86_64-linux-gnu/
	 #5  0x00007ffff7ed5959 in g_object_new () from /usr/lib/x86_64-linux-gnu/
	 #6  0x00005555555d8257 in boxes_libvirt_machine_get_domain_disk (self=0x5555560e6790, error=0x55555615a630)
	     at /run/build/gnome-boxes/src/libvirt-machine.vala:547
	 #7  0x00005555555d0e7e in boxes_libvirt_machine_update_io_stat_co (_data_=0x55555615a320)
	     at /run/build/gnome-boxes/src/libvirt-machine.vala:280
	 #8  0x00005555555d09b2 in boxes_libvirt_machine_update_io_stat (self=0x5555560e6790, info=0x555555f25990, stat=0x555556736a90,
	     _callback_=0x5555555d2992 <boxes_libvirt_machine_update_stats_ready>, _user_data_=0x555556736a50)
	     at /run/build/gnome-boxes/src/libvirt-machine.vala:5
	 #9  0x00005555555d3120 in boxes_libvirt_machine_update_stats_co (_data_=0x555556736a50)
	     at /run/build/gnome-boxes/src/libvirt-machine.vala:332
	 #10 0x00005555555d29dd in boxes_libvirt_machine_update_stats_ready (source_object=0x5555567bb840, _res_=0x55555677ae00,
	     _user_data_=0x555556736a50) at /run/build/gnome-boxes/src/libvirt-machine.vala:328
	 #11 0x00007ffff72adc89 in ?? () from /usr/lib/x86_64-linux-gnu/
	 #12 0x00007ffff72adcc9 in ?? () from /usr/lib/x86_64-linux-gnu/
	 #13 0x00007ffff7dec948 in g_main_context_dispatch () from /usr/lib/x86_64-linux-gnu/
	 #14 0x00007ffff7decd38 in ?? () from /usr/lib/x86_64-linux-gnu/
	 #15 0x00007ffff7decdcc in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/
	 #16 0x00007ffff72c2dbd in g_application_run () from /usr/lib/x86_64-linux-gnu/
	 #17 0x00005555556004b6 in _vala_main (args=0x7fffffffd4f8, args_length1=1) at /run/build/gnome-boxes/src/main.vala:84
	 #18 0x0000555555600517 in main (argc=1, argv=0x7fffffffd4f8) at /run/build/gnome-boxes/src/main.vala:68

	In order to solve the issue, let's just replace G_DEFINE_ABSTRACT_TYPE

2018-08-16  Michal Privoznik  <>

	configure: Drop GLIB2_TEST_REQUIRED
	Introduced in eb1f97a4b49a6e it is not needed anymore. The
	minimal required version of glib is now the same as the one
	required for tests.

	This practically reverts the referenced commit.

	Reviewed-by: Andrea Bolognani <>

	Use new GObject define macros with private
	G_ADD_PRIVATE was added in 2.38 and older functions are getting deprecated:

	This also means, that the minimal required glib version is
	increased to 2.38.

	Reviewed-by: Andrea Bolognani <>

2018-04-24  Daniel P. Berrangé  <>

	git: add config file telling git-publish how to send patches
	The "git-publish" tool is a useful git extension for sending patch
	series for code review. It automatically creates versioned tags
	each time code on a branch is sent, so that there is a record of
	each version. It also remembers the cover letter so it does not
	need re-entering each time the series is reposted.

	With this config file present it is now sufficient[1] to run

	  $ git publish

	to send all patches in a branch to the list for review, with the
	correct subject prefix added for this non-core libvirt module.

	[1] Assuming your $HOME/.gitconfig has an SMTP server listed
	at least e.g.

	        smtpserver =

2018-02-20  Daniel P. Berrangé  <>

	m4: disable gcc8 -Wcast-function-type warnings from -Wextra
	The -Wextra flag bundle gained a new warning -Wcast-function-type.
	This complains if you cast between two function prototypes where
	the number of parameters or their data types are not compatible.
	Unfortunately we need such "bad" function casts for our event
	callbacks. It is possible to silence the warning by first casting
	to the generic "void (*)(void)" function prototype, but that is
	rather ugly to add throughout libvirt code.

2018-01-17  Daniel P. Berrange  <>

	remove bogus casts of arg to g_object_ref
	Latest version of glib uses typeof() magic to cast the
	return value of g_object_ref to match its argument,
	instead of returning a 'void *'. A few places in the
	code were casting the arg to G_OBJECT() which was then
	incompatible with the variable we assigned the result
	to. The parameter casts were always redundant so just
	remove them.

2017-12-04  Daniel P. Berrange  <>

	Refresh po files from zanata

2017-10-30  Marek Kasik  <>

	spec: Enable unit tests during build
	Enable unit tests so that we can catch some problems soon enough
	before the package gets to the users.
	Show test suite log if a test fail.

2017-09-21  Andrea Bolognani  <>

	scripts: Fix sha-bang lines
	This is particularly useful on operating systems that don't ship
	Perl or Python as part of the base system (eg. FreeBSD) while still
	working just as well as it did before on Linux.

	While at it, make it explicit that our scripts are only going to
	work with Python 2, add a couple of missing sha-bang lines and
	tweak a couple more that just didn't look very nice.

	Reviewed-by: Daniel P. Berrange <>

	tests: Don't rely on non-portable paths
	The test-events program sets up a watch on /bin/true; however,
	that path is not portable: FreeBSD uses /usr/bin/true for example.

	Remove the portability issue by using /dev/null instead.

	Reviewed-by: Daniel P. Berrange <>

	configure: Look for Perl interpreter path
	The $(PERL) variable is used in several places, but configure is
	not actually looking for the Perl interpreter path, so it will
	always end up being empty.

	Reviewed-by: Daniel P. Berrange <>

	configure: Bump required libvirt version to 1.2.5
	That's the version that introduced VIR_DOMAIN_TIME_SYNC, which we
	use in the library.

	Reviewed-by: Daniel P. Berrange <>

	maint: Drop
	The Test-AutoBuild project, that this script is supposed to be used
	with, hasn't seen any activity in ~6 years; libvirt's own CI, which
	also performs periodic builds of libvirt-glib, is running on Jenkins
	with a completely independent setup that doesn't use the script at

	Reviewed-by: Daniel P. Berrange <>

2017-08-14  Daniel P. Berrange  <>

	Set LC_CTYPE when running glib-mkenums

	Revert "Don't set LC_ALL=C during build as that breaks python apps"
	This reverts commit dae25f53293919bb2c22419c236bef5aa628e9be.

2017-07-25  Daniel P. Berrange  <>

	Don't set LC_ALL=C during build as that breaks python apps
	Setting LC_ALL=C breaks python apps doing I/O on UTF-8 source
	files. In particular this broke glib-mkenums

	  GEN      libvirt-gconfig-enum-types.h
	Traceback (most recent call last):
	  File "/usr/bin/glib-mkenums", line 669, in <module>
	  File "/usr/bin/glib-mkenums", line 406, in process_file
	    line = curfile.readline()
	  File "/usr/lib64/python3.6/encodings/", line 26, in decode
	    return codecs.ascii_decode(input, self.errors)[0]
	UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 849: ordinal not in range(128)

2017-05-30  Daniel P. Berrange  <>

	Add missing dep on intltool
	Libvirt-glib requires intltool at build time. Previously it
	was pulled in transitively via another RPM dependancy. As of
	Fedora 26, this no longer happens, exposing the missing RPM

2017-03-25  Guido Günther  <>

	examples: make detail strings match event details

2016-11-04  Daniel P. Berrange  <>

	Post release version bump to 1.1.0
	NB, this will change to 2.0.0 if no new release is made
	during 2016

	Update NEWS for 1.0.0 release

	bump release to 1.0.0 to match libvirt numbering scheme
	Switch to follow the libvirt release numbering scheme

	- Major is incremented at start of each year
	- Minor is incremented each release during a year
	- Micro is reserved for stable branch releases (if any)

2016-11-04  Christophe Fergeau  <>

	tests: Don't leak xml data in test-gconfig-device-unknown

2016-11-04  Zeeshan Ali  <>

	gconfig,tests: Add test case for unknown devices

2016-11-03  Zeeshan Ali  <>

	gconfig,tests: Separate XML loading function
	We'll need to load XML from file in another function, that will be added
	in a following patch.

	gconfig: Create objects for all domain device nodes
	Currently we can and do get into serious trouble with this kind of code:

	devices = gvir_config_domain_get_devices(domain);
	gvir_config_domain_set_devices(domain, domain);

	since the first call above won't return a complete list of objects present
	in the domain but only the ones we have specific classes for and the
	second call above overwrites all device nodes under the domain. This
	lately made Boxes break against the latest libvirt, where a new device
	node was made compulsory[1].

	Although we should add support for all know domain devices ASAP, new
	devices will be added in future and this can happen again. So let's first
	ensure that gvir_config_domain_get_devices() always returns all devices
	under the domain. All unknown/unimplemented devices will now be returned
	as the very generic DomainDevice objects. Once we add support for a
	particular device, there will be no API/ABI breakage since the new class
	will inherit from DomainDevice class.


2016-11-01  Zeeshan Ali  <>

	gconfig: DomainDevice now instantiable
	We'll need to instatiate DomainDevice baseclass itself for unknown (think
	new devices added to libvirt XML) devices in a following patch. This
	change makes that possible.

	This doesn't break any API or ABI to the best of my knowledge and this
	assumption was confirmed by Emmanuele Bassi and Tim-Philipp Muller.

	gconfig: Allow schema to be NULL
	Validation (if attempted) should just fail in this case instead of

2016-08-02  Daniel P. Berrange  <>

	Delete the manually written python binding
	The python binding only supports python2, only supports
	1 single API in libvirt-glib and has not even been enabled
	in RPM builds since Fedora 15. Any distro these days should
	have gobject introspection and pygobject available, so
	there's no compelling reason to continue to have the python
	binding exist.

2016-07-28  Daniel P. Berrange  <>

	Remove accidental debug code which changed version

	Fix check for libvirt optional functions
	The checks for virDomainOpenGraphicsFD and
	virNetworkGetDHCPLeases in configure are simply trying
	to compile and link a test program. This was assuming
	that libvirt was installed in /usr/lib & /usr/include,
	which is not always the case. Using a pkg-config version
	check avoids needing to compile and thus avoids the
	bad assumptions about install locations.

	Avoid unused variable in DHCP lease finalize method
	If the network DHCP lease support is not detected, the build
	will generate a warning / error:

	libvirt-gobject-network-dhcp-lease.c: In function 'gvir_network_dhcp_lease_finalize':
	libvirt-gobject-network-dhcp-lease.c:99:27: error: unused variable 'lease' [-Werror=unused-variable]
	     GVirNetworkDHCPLease *lease = GVIR_NETWORK_DHCP_LEASE(object);
	cc1: all warnings being treated as errors

2016-07-27  Guido Günther  <>

	docs: Document gvir_connection_get_{storage_pools,networks,domains}
	In contrast to libvirt itself all get_* methods need to prefetch the
	corresponding information first so document this.

	Acked-by: Christophe Fergeau <>

2016-07-25  Zeeshan Ali (Khattak)  <>

	tests: Add test for GVirConfigDomainHostdevPci API

2016-07-25  Christophe Fergeau  <>

	gconfig: Add GVirConfigDomainAddressPci getters
	They will be useful to do more checks in the GVirDomainDeviceHostdev
	unit test.

2016-07-25  Zeeshan Ali (Khattak)  <>

	gconfig: Add GVirConfigDomainHostdevPci
	Add API to read and write PCI hostdev nodes.

2016-07-22  Zeeshan Ali (Khattak)  <>

	gconfig: Add GVirConfigDomainHostdev
	Add API to read and write domain/devices/hostdev nodes. This patch only
	adds the baseclass and hence is not useful on it's own. A more specific
	subclass to represent PCI devices will be added in a following patch.

2016-07-21  Christophe Fergeau  <>

	gconfig: Add gvir_config_object_has_child

2016-07-21  Zeeshan Ali (Khattak)  <>

	gconfig: Add gvir_config_domain_video_get_model()
	Add a getter for model of domain video device.

2016-02-26  Marc-André Lureau  <>

	config: add accel3d setter
	Learn to set the accel3d attribute on video model.

	config: add virtio video model

	config: add spice gl child
	Learn to set  "gl" on spice (to have -spice gl=on on qemu)

	tests: fix potential crash
	The idle source is not always removed and may crash next tests

2016-02-14  Marc-André Lureau  <>

	build-sys: fix gir introspection warnings
	Enable GIR warnings and fix them, since they are all useful.

2015-12-26  Michal Privoznik  <> Correctly mark variable
	In the pkg-config file for libvirt-glib we have a typo:

	  Libs.private: @LIBVIRT_LIBS @GLIB2_LIBS@

	Noticed the missing '@' after LIBVIRT_LIBS? Well, I just did.

2015-12-16  Daniel P. Berrange  <>

	Post release version bump

	Update NEWS for 0.2.3 release

	Refresh translations from zanata

2015-12-07  Michal Privoznik  <>

	Drop unused finalize function
	After 1225a160ac3b4 where I'm dropping some unused variables, the
	functions I was touching became sort of redundant too.
	Specifically, gvir_domain_disk_finalize() and

2015-12-05  Michal Privoznik  <>

	gobject: Drop some unused variables
	After abe983ddf8a569 there are some variables, that are unused:

	  CC       libvirt_gobject_1_0_la-libvirt-gobject-domain-disk.lo
	  CC       libvirt_gobject_1_0_la-libvirt-gobject-domain-interface.lo
	  CC       libvirt_gobject_1_0_la-libvirt-gobject-domain.lo
	  CC       libvirt_gobject_1_0_la-libvirt-gobject-interface.lo
	../../libvirt-gobject/libvirt-gobject-domain-interface.c: In function 'gvir_domain_interface_finalize':
	../../libvirt-gobject/libvirt-gobject-domain-interface.c:54:26: error: unused variable 'self' [-Werror=unused-variable]
	     GVirDomainInterface *self = GVIR_DOMAIN_INTERFACE(object);
	cc1: all warnings being treated as errors
	Makefile:724: recipe for target 'libvirt_gobject_1_0_la-libvirt-gobject-domain-interface.lo' failed
	make[3]: *** [libvirt_gobject_1_0_la-libvirt-gobject-domain-interface.lo] Error 1
	make[3]: *** Waiting for unfinished jobs....
	../../libvirt-gobject/libvirt-gobject-domain-disk.c: In function 'gvir_domain_disk_finalize':
	../../libvirt-gobject/libvirt-gobject-domain-disk.c:54:21: error: unused variable 'self' [-Werror=unused-variable]
	     GVirDomainDisk *self = GVIR_DOMAIN_DISK(object);
	cc1: all warnings being treated as errors
	Makefile:717: recipe for target 'libvirt_gobject_1_0_la-libvirt-gobject-domain-disk.lo' failed

2015-12-04  Zeeshan Ali (Khattak)  <>

	gobject,gconfig: Drop redundant debug logging
	The g_debug messages in libvirt-gobject creation/destruction were to aid
	troubleshooting of object reference leaks. GObject has built-in systemtap
	probes that allow the same to be achieved in a more flexible manner, so
	the g_debug calls can be removed

2015-11-26  Zeeshan Ali (Khattak)  <>

	gobject: Port to GTask API
	Drop usage of deprecated GSimpleAsyncResult API.

2015-11-23  Zeeshan Ali (Khattak)  <>

	gobject,gconfig: Drop redundant glib compatibility code
	We already require and use glib >= 2.36 so there is no reason to keep
	around code to ensure compatibility with glib older than that.

	gobject: Add wrapper virDomainSetTime()

2015-09-23  Zeeshan Ali (Khattak)  <>

	gobject: Correct docs for gvir_storage_pool_get_info()
	The returned GVirStoragePoolInfo pointer is not a GObject so it must not
	be unrefed using g_object_unref(). Since gvir_storage_pool_info_free()
	is private function, callers must either use g_slice_free() or

2015-07-24  Daniel P. Berrange  <> update min required versions
	Based on the distro target policy we have the following
	min versions in various distros

	                   libvirt  glib2    gobject-introspection
	        RHEL 7.0:  1.1.1    2.36.3   1.36.0
	       Fedora 21:  1.2.9    2.42.1   1.42.0
	    Ubuntu 14.10:  1.2.8    2.42.0   1.41.0
	Ubuntu LTS 14.04:  1.2.2    2.40.0   1.40.0
	       Suse 12.0:  1.2.5    2.38.2   1.38.0
	   OpenSUSE 13.1:  1.1.2    2.38.2   1.38.0
	        Debian 8:  1.2.9    2.42.0   1.42.0

	Which means we can reasonably depend on

	  libvirt >= 1.1.1
	  glib2 >= 2.36.0
	  gobject-introspection >= 1.36.0

	NB, choosen 2.36.0 rather than 2.36.3 because they are
	API compatible, the micro digit just indicates a bug
	fix release.

	README: formally document intended platform support targets
	Give users an indication of what distro platforms the project
	intends to be buildable on. This policy will be used to decide
	when it is appropriate to increase the minimum required versions
	of external dependancies.

	As an example, as of July 1st 2015, this policy would aim to pick the
	min versions based on what's available across the following sample

	 - RHEL: 7.0, 7.1
	 - Fedora: 21, 22
	 - Ubuntu LTS: 14.04 (Trusty)
	 - Ubuntu: 14.10 (Utopic), 15.04 (Vivid)
	 - Suse: 12.0
	 - OpenSUSE: 13.1, 13.2
	 - Debian: 8.0 (Jessie)

2015-07-22  Christophe Fergeau  <>

	examples: Don't leak mainloop in conn-test.c
	The program exits right after this, so it's no big deal, but this gives
	us a clean valgrind --leak-check=full output.

	gconfig: Use GVirConfigObject helpers for <video> XML
	GVirConfigDomainVideo is using raw libxml calls to set the 'heads' and
	'vram' XML attributes rather than the helpers provided by
	GVirConfigObject. This commit changes that, making the code a bit

	test-gconfig: Test video heads/vram setting

	test-gconfig: Fix various leaks
	Running test-gconfig under valgrind reports a few leaks that this commit

	gconfig: Fix leak in gvir_config_domain_filesys_set_ram_usage
	The object returned by gvir_config_object_replace_child() must be
	unref'ed when no longer needed.

2015-07-21  Daniel P. Berrange  <>

	Post release version bump to 0.2.3

	Update NEWS for 0.2.2 release

	Make use of DHCP API conditionally compiled
	Previously the use of virDomainOpenGraphicsFD API from libvirt
	1.2.8 was made to be conditionally compiled. Given this past
	practice, make use of the virNetworkGetDHCPLeases API
	conditional too, rather than requiring newer libvirt.

2015-07-17  T A Mahadevan  <>

	Add ram and vgamem attributes for graphics model.

	buildsys: Add missing libraries to LDFLAGS
	Without these changes 'make check' would not
	run on Ubuntu because of a link failure as
	the tests are directly using glib/libvirt

	Add LibvirtGConfigDomainChardevSourceUnix
	This is needed to be able to add UNIX channels

2015-07-13  Zeeshan Ali (Khattak)  <>

	Require libvirt-glib >= 1.2.6
	With bindings added to API that came in 1.2.6:

	81c5969 - gobject: Add wrapper for virNetworkGetDHCPLeases
	deed153 - gobject: Add wrapper for virNetworkDHCPLease

	we better make our requirement explicit.

	The alternative would be to make use of #ifdef to only use newer symbols
	from libvirt if installed version is >= 1.2.6 but that would require at
	least 12 #ifdef in different places and hence very ugly IMO. Keeping in
	mind that 1.2.6 is more than an year old now and it doesn't make much
	sense to wanting to upgrade to latest libvirt-glib but not wanting to
	upgrade to even an year old libvirt, this is very unlikely to cause any
	real issues.

2015-07-08  Cédric Bosdonnat  <>

	Dsitribute the whole tests/xml folder

	Don't overwrite filesystem type when writing format
	When setting filesystem driver format first and type, only the type
	remained and vice-versa.

2015-07-07  Zeeshan Ali (Khattak)  <>

	gobject: Add wrapper for virNetworkGetDHCPLeases

	gobject: Add wrapper for virNetworkDHCPLease

	gobject: Add API to query connection networks
	Add API to query networks from a connection.

	gobject: Add API to query connection interfaces
	Add API to query network interfaces from a connection.

	gobject: Port GVirConnection to GTask
	GSimpleAsyncResult has been deprecated in favour of GTask and with
	latest glib headers, we get tons of warnings about use of deprecated
	API. This patch ports the GVirConnection class to GTask.

	gobject: Plug 2 virConnect leaks
	A virConnect reference is leaked in error cases. This patch moves the
	unref after the label we jump to on errors, to avoid this leak.

	gobject: Simplify gvir_connection_list*() implementations
	Make use of virConnectListAll* functions to avoid making 4 calls and
	hence avoid race conditions and complicated code.

2015-07-03  Zeeshan Ali (Khattak)  <>

	Bump version

2015-06-27  Zeeshan Ali (Khattak)  <>

	gobject: Add gvir_interface_get_mac()
	Add a wrapper for virInterfaceGetMACString().

2015-06-17  Christophe Fergeau  <>

	gconfig: Fix small leak in test-domain-create
	The object returned by gvir_config_domain_disk_get_driver() must be
	unref'ed when no longer used.

2015-06-16  Daniel P. Berrange  <>

	Update NEWS for 0.2.1 release

	Refresh translations from zanata

2015-06-16  Cédric Bosdonnat  <>

	domain config: add API to set the filesystem image format
	Add the gvir_config_domain_filesys_set_driver_format function to allow
	setting nbd driver type + image format for containers filesystems.

	Add loop, nbd and ploop filesystem types

	gvir_config_domain_filesys_set_driver_type: replace the driver node
	Replace the driver node in case the user calls the function more than
	one time.

	test-gconfig: add filesystem test

2015-06-01  Zeeshan Ali (Khattak)  <>

	storage-pool: API to get/set autostart flag
	Add binding for virStoragePoolGetAutostart & virStoragePoolSetAutostart.

2015-06-01  Christophe Fergeau  <>

	gconfig: Don't try to return value from gvir_config_domain_set_memory
	gvir_config_domain_set_memory() is a void function, so using
	g_return_val_if_fail() is not correct. This causes a warning/compilation
	failure on CentOS CI framework:

	gconfig: Add precondition checks to some public entry points
	It's currently possible to trigger a crash by passing eg NULL to these
	functions. Better to return a prominent warning to the caller without

2015-05-18  Zeeshan Ali (Khattak)  <>

	Bump version to 0.2.1

2015-04-13  Richa Sehgal  <>

	gconfig: Add support for 'compat' storage volume node
	This change adds support for setting of compat XML node in
	libvirt-gconfig storage volumes target.

2015-03-24  Christophe Fergeau  <>

	build-sys: Fix libtoolize detection in is currently checking for the libtool binary, but
	it's libtoolize which is needed by autoreconf, not libtool.

	These binaries are packaged separately on Debian/Ubuntu so this can
	cause actual issues on some systems.

	Bug reported by Frederic Peters

2015-02-18  Daniel P. Berrange  <>

	Switch over to using zanata for translation
	Remove obsolete transifex config and add zanata config,
	re-generating all po files

2014-12-15  Daniel P. Berrange  <>

	Update NEWS for 0.2.0 release

	Fix build on win32 due to missing sys/socket.h

2014-11-27  Zeeshan Ali (Khattak)  <>

	Add gvir_domain_open_graphics_fd()
	Add binding for virDomainOpenGraphicsFD. If virDomainOpenGraphicsFD is
	not available, it means we are dealing with older libvirt so we create
	the socket pair ourselves if that is the case.

2014-11-13  Martin Kletzander  <>

	Revert back deleted glib-specific warning options
	Commit f525ba7796a2fd35bf55e88fb94459b2277fcd67 copied warning macros
	from gnulib without keeping glib-specific settings.  This build-breaker
	brings back those needed ones except unused-parameter, which is no
	longer needed.

	Properly mark unused parameters

2014-11-13  Michal Privoznik  <>

	m4: sync macros with libvirt
	The macros under the m4 directory are outdated a bit. When trying
	to compile with newer gcc I see some errors:

	make[2]: Entering directory '/home/zippy/work/libvirt/libvirt-glib.git/libvirt-glib'
	  CC       libvirt_glib_1_0_la-libvirt-glib-error.lo
	gcc: warning: switch '-Wmudflap' is no longer supported

2014-09-29  Zeeshan Ali (Khattak)  <>

	Add missing enum type for keyboard input device.

2014-08-20  Daniel P. Berrange  <>

	Post-release version bump to 0.2.0

	Update NEWS for 0.1.9 release

	Refresh translations from transifex

2014-08-20  Timm Bäder  <>

	GVirDomainSnapshot: Add async version of _delete

	GVirDomain: Add async version of _create_snapshot

	GVirDomainSnapshot: Add async version of _revert_to

	GVirDomain: Fix some doc comments of the snapshot API
	Fixes the following warnings from g-ir-scanner and some cosmetic issues:

	libvirt-gobject-domain.c:1532: Warning: LibvirtGObject: unknown
	annotation: transfer-none
	libvirt-gobject-domain.c:1650: Error: LibvirtGObject: identifier not
	found on the first line:

	GVirDomain: Add _get_has_current_snapshot
	... which uses virDomainHasCurrentSnapshot to determine if the given
	domain has a current snapshot or not.

	GVirDomainSnapshot: Add _set_config
	... which is basically analogous to gvir_domain_set_config

	GVirDomainSnapshot: Add _revert_to
	Add a way to revert a domain to one of its snapshots.

	GVirDomainSnapshot: Add _get_is_current
	Add a way to determine if the given GVirDomainSnapshot is the current
	snapshot of its GVirDomain.

2014-08-04  Timm Bäder  <>

	GVirDomain: Add async version of _fetch_snapshots

	libvirt-gobject-domain: Add _get_snapshots
	... which returns a GList of GVirDomainSnapshots, i.e. without any tree
	structure or other relationship between the snapshots.

	libvirt-gobject-domain: Add _fetch_snapshots
	This function can be used to fetch the snapshots of a domain (according
	to the given GVirDomainSnapshotListFlags) and save them in a
	domain-internal GHashTable. A function to access them from outside will
	be added in a later patch.

2014-08-04  Christophe Fergeau  <>

	spec: Substitute minimum glib2 version from
	This way we don't have to keep track of the minimum glib2 version we
	need in 2 separate places.

	gobject: Fix GEnum generation through glib-mkenums
	We were only passing libvirt-gobject-domain.h and
	libvirt-gobject-connection.h through glib-mkenums, which causes it to
	only generate GEnum information for enums found in these headers.
	We want to do that for all enums defined in installed headers, so
	passing all headers listed in libvirt_gobject_1_0_la_HEADERS is more

2014-08-01  Zeeshan Ali (Khattak)  <>

	Add gvir_config_domain_cpu_set_model()
	Add a method to set model of domain CPU.

	Add GVirConfigDomainCpuModel class
	Add a class to represent 'model' node under domain/cpu.

	Add gvir_config_capabilities_cpu_get_model()
	Add a method to get the model of the CPU from capabilities.

2014-07-15  Zeeshan Ali (Khattak)  <>

	Add GVirConfigCapabilitiesCpuModel class
	Add a class to represent 'model' node under capabilities/host/cpu.

2014-06-17  Cédric Bosdonnat  <>

	Add API to get security models from host capabilities

2014-06-04  Michael Catanzaro  <>

	build: fix race in vapi/ subdirectory
	libvirt-gobject-1.0.vapi depends on libvirt-gconfig-1.0.vapi

2014-06-04  Christophe Fergeau  <>

	spec: Move .vapi files to -devel RPMs
	.vapi files are only needed when building vala programs using
	libvirt-glib, so they belong to the -devel RPMs, not to the non-devel
	RPMs which only hold files needed at runtime.

2014-06-03  Timm Bäder  <>

	GVirDomainSnapshot: Add gvir_domain_snapshot_delete

	Remove #if 0's from libvirt-gobject-domain-snapshot
	The code seems to be fine.

2014-06-03  Christophe Fergeau  <>

	tests: Fix make distcheck
	Some files are missing from EXTRA_DIST, causing make distcheck to fail
	when tests are enabled.

	tests: Move EXTRA_DIST back into ENABLE_TESTS conditional
	When deciding which files to put into the make dist tarball, automake is
	clever enough to ignore conditional blocks, and to pick all files which are
	needed for all values of the conditional.

	Having EXTRA_DIST=xxx at the beginning of tests/ causes
	warnings from automake when ENABLE_TESTS is true as will
	unconditionally empty it.

	Keeping EXTRA_DIST+=xxx outside of the ENABLE_TESTS conditional would
	cause a different warning from automake when ENABLE_TESTS is false as
	we'd be appending to a variable which was never set.

	Moving EXTRA_DIST+= back into the conditional solves these 2 warnings.

2014-05-16  Marc-André Lureau  <>

	tests: test spiceport chardev

	gconfig: add spiceport chardev

2014-05-12  Timm Bäder  <>

	domain-device-private: fix typo in header guard

2014-02-21  Daniel P. Berrange  <>

	Post release version bump to 0.1.9

	Update NEWS for 0.1.8 release

	Disable test suite unless glib >= 2.38
	The TAP harness for glib only works with version 2.38 or later,
	so must be disabled for earlier versions

2014-02-20  Pavel Hrdina  <>

	gobject-stream: fix issue found by coverity
	The coverity server found issue in gvir_stream_close function that
	we ignore return values of g_input_stream_close and
	g_output_stream_close, but we also ignore the error message and we
	assume that it's closed without error.

	Now we will check return values and also propagate the error message
	to the upper layers. We should try to close both streams even if
	closing the first one will fails. We can propagate only one error

2014-02-14  Daniel P. Berrange  <>

	Avoid false positive in diagnostic check against

	Add <config.h> to test cases

	Remove doubled 'on on' word in

	Don't mandate test files to call bindtextdomain

	Fix symfile checks in VPATH build
	The check-symfile and check-symsorting rules were not
	taking $(srcdir) into account when accessing the symfile

2014-02-04  Christophe Fergeau  <>

	build-sys: Update .gitignore

	glib: Add unit test for libvirt/glib mainloop integration
	It's currently only testing removal of disabled timer/watches

	gconfig: Start adding more formal unit tests
	Rather than the ever growing standalone libvirt-gconfig/tests/test-domain-create
	program, this commit adds support for glib GTester framework as well as 2
	smaller tests cases for GVirConfigDomain and GVirConfigDomainClock.

	glib: Don't leak GIOChannel when destroying IO handle
	gvir_event_handle_add() creates a GIOChannel in order to watch the fd it
	was given for changes.
	gvir_event_handle_remove() is freeing all the resources allocated by
	gvir_event_handle_add() except for this GIOChannel. This commit adds
	the needed g_io_channel_unref() call to gvir_event_handle_remove()

	glib: Allow to remove disabled timers and handles
	Trying to remove a disabled timer or handle will cause
	gvir_{event,timer}_handle_remove() to return an error
	rather than removing it.

	glib: Don't create glib IO watch for disabled handles
	It's possible to create a handle to watch for file events which do not
	watch for any file event. Such a handle can be enabled later with
	gvir_event_handle_update() by setting some conditions to watch for.

	When a handle is disabled after it has been created,
	gvir_event_handle_update() makes sure it removes the corresponding
	gvir_event_handle::source IO watch if any was set.
	gvir_event_handle_add() will always create a gvir_event_handle::source
	IO watch even if the handle is not watching for any events.

	This commit makes consistent by only creating a watch with g_io_add_watch()
	when the caller asked to watch for some events.

	gconfig: Fix removal of GVirConfigDomainCpu from domains
	A wrong precondition in gvir_config_domain_set_cpu() would reject NULL
	GVirConfigDomainCpus instead of accepting them.

	gconfig: Fix removal of GVirConfigCapabilitiesCpu topology
	Calling gvir_config_capabilities_cpu_set_topology with a NULL topology
	would not remove the topology as expected as NULL would be rejected by
	this method preconditions.

	gconfig: Implement getters for GVirConfigDomainInput

	gconfig: Add various clock-related getters

	gconfig: Adjust transfer annotation for gvir_config_domain_os_get_boot_devices()
	(transfer container) is more correct than (transfer full) for GList of
	scalar values, it's not clear whether it's an issue or not, but better be
	safe than sorry.

	gconfig: Fix gvir_config_domain_os_get_boot_devices() API doc
	The elements of the returned list are integer enum values, so they cannot
	be unreffed.

	gconfig: Fix GVirConfigDomainTimerPit parent class/object
	GVirConfigDomainTimerPit is correctly define as inheriting from
	GVirConfigDomainTimer in the G_DEFINE_TYPE macro, but it only
	embeds GVirConfigObject/GVirConfigObjectClass structs.

	This is an ABI break as this changes the size of the
	GVirConfigDomainTimerPit/GVirConfigDomainTimerPitClass structs
	However, since these structs only have non-public members, users of the
	library will not be trying to access fields of the struct past the first
	field (which is the one which changed size). This would also be an issue
	if anything had subclassed GVirConfigDomainTimerPit, which is unlikely at
	this point.
	All in all, it's imo more convenient to silently fix this without an soname
	bump. I've tested that GNOME Boxes built with an older version of
	libvirt-gconfig still generates the correct GVirConfigDomainTimerPit
	elements when using a version of libvirt-gconfig with this patch.

2014-01-28  Daniel P. Berrange  <>

	Fix event loop implementation on win32
	Libvirt uses gnulib for making winsock look like POSIX
	sockets. This means that in the libvirt event handle
	callbacks the application will be given a file descriptor
	rather than a winsock HANDLE object. The g_io_channel_unix_new
	method will detect that it is an FD and delegate to the
	g_io_channel_win32_new_fd method. Unfortunately the glib Win32
	event loop impl is not very good at dealing with FD objects,
	simulating poll() by doing a read() on the FD :-(

	The API docs for g_io_channel_win32_new_fd say

	 "All reads from the file descriptor should be done by
	  this internal GLib thread. Your code should call only

	This isn't going to fly for libvirt, since it has zero
	knowledge of glib at all, so is just doing normal read().

	Fortunately we can work around this problem by turning
	the FD we get from libvirt back into a HANDLE using the
	_get_osfhandle() method.

2014-01-21  Christophe Fergeau  <>

	Add GVirConfigDomainTimerHpet
	This will be needed in order to solve

	Add gvir_config_domain_timer_[gs]et_present()

	Add getters for some GVirConfigDomainGraphics* attributes
	Now that there is a gvir_config_object_get_attribute_boolean(), these
	are trivial to implement.

	Implement gvir_config_object_get_attribute_boolean()
	gvir_config_object_set_attribute() converts (TRUE, FALSE) to ("yes", "no"),
	but we don't have the corresponding getter. This commit adds this.

	Add scripts for validating the libvirt-glib symbol files
	Import two test scripts from libvirt code which validate that
	all symbols in libvirt-glib symbol files exist in the ELF binary, and also
	validate the alphabetical sorting. These are hooked up to run with 'make

	This commit is based on a libosinfo patch from Daniel P. Berrange

	Fix typo in symbol name in libvirt-gobject.sym
	gvir_connection_restore_domain_from_file_finish was not properly exported
	because of a typo in the symbol name.
	This commit also removes a newer occurrence of this symbol in the file
	(without the typo). This can be done without breaking ABI as we haven't
	made a release since this duplicate symbol was added in the symbol file.

	Remove gvir_config_domain_cpu_get_features() from sym file
	This method was never exported. GVirConfigDomainCpu inherits from
	GVirConfigCapabilitiesCpu so gvir_config_capabilities_cpu_get_features()
	should be used to get these features (this calls the virtual method
	GVirConfigCapabilities::get_features() which GVirConfigDomainCpu

	Alphabetically sort libvirt-glib sym files
	This is in preparation to enforcing this sorting during make check.
	The script only checks for alphabetical sorting, which leads to unexpected
	sorting between classes sharing a common prefix (eg the correct order is:

	instead of


	if we want to keep methods from the same class grouped in the symbol file.

	Add basic test for gvir_config_domain_disk_driver_set_copy_on_read()

	Deprecate gvir_config_domain_disk_[gs]et_driver_*
	They are replaced by equivalent methods in GVirConfigDomainDiskDriver.
	Initially, we had only one or two attributes to set on the 'driver' child
	of the 'disk' node. Nowadays, we more than 5 attributes to set on this
	node, mapping it as a separate object is more consistent with the rest of
	libvirt-gconfig API.

	Implement gvir_config_domain_disk_[gs]et_driver()

	Add GVirConfigDomainDiskDriver
	This class wraps creation of configuration data for the driver part of a
	domain disk device. The methods needed for this are currently part of
	GVirConfigDomainDisk, but since the disk driver is getting more and more
	attributes, it's better to move such configuration to a dedicated class to
	avoid a too big API in GVirConfigDomainDisk

	config: Fix typo preventing clock removal from a domain
	Commit 1c8ce29 added a way to unset a GVirConfigDomainClock set on a
	GVirConfigDomain by calling gvir_config_domain_set_clock() with a NULL
	However, a typo in a g_return_if_fail precondition prevents this code from
	ever being called: g_return_if_fail(clock != NULL) is used while it should
	have been g_return_if_fail(clock == NULL) as in all other preconditions in

2014-01-21  Daniel P. Berrange  <>

	Switch over to using standard gobject introspection macros
	Remove hand crafted and rules in
	favour of the standard macros.

2013-10-31  Ian Main  <>

	Quick fix for
	I guess this must have been changed and the demo not updated.  Fix the
	demo so it uses the right value.

	Add filterref and filterref parameter support.
	This patch adds support for setting filterref's on interfaces.  Also
	supported are parameters to the filterref's.

2013-09-27  Christophe Fergeau  <>

	Use latest warnings.m4 from gnulib
	The one we were using does not work properly with clang, causing
	the build process to try to use -f/-W options that are not
	supported by clang.

2013-09-19  Daniel P. Berrange  <>

	Add intltool as a build req in mingw RPM

2013-08-28  Christophe Fergeau  <>

	Add missing symbols to .sym files
	These symbols are in public headers, but were not listed in the
	corresponding .sym file, causing them to be unavailable from
	the resulting shared library.
	I would have preferred not to export gvir_config_object_new_from_xml()
	at all, but since the similar gvir_config_object_new() is already exported,
	I've chosen to export it as well.

2013-08-19  Daniel P. Berrange  <>

	Remove unused 'gint i' variable from list helpers
	The previous change made the 'gint i' variable unused.

2013-08-15  Daniel P. Berrange  <>

	Remove dead cleanup code in object fetch_list helpers
	The fetch_list helper cleanup code iterates over the
	elements in 'lst' array free'ing each one. This is dead
	code, however, since the only way to get there is from
	codepaths which do not populate 'lst' elements.

	This fixes two coverity DEADCODE reports

2013-07-09  Daniel P. Berrange  <>

	Refresh translations from transifex

	Post-release version bump to 0.1.8

	Add support for reading/writing UUID attribute in domain config

2013-07-08  Daniel P. Berrange  <>

	Update NEWS for 0.1.7 release

2013-07-04  Daniel P. Berrange  <>

	Add missing file from previous commit
	The commit 35a310c62a8bf704aceb3a5b3ecce36c11525914 forgot
	to add libvirt-gconfig/libvirt-gconfig-domain-chardev-source-private.h

	Add API to access device alias names
	Add gvir_config_domain_device_get_alias to read the
	<alias name="foo"/> XML in each device.

	Add APIs to access chardev source information
	Enable apps to determine the current source path of a chardev
	with a pty based source.

	Fix name of gvir_config_domain_chardev_source_pty_set_path
	The method gvir_config_domain_chardev_source_pty_set_path was
	accidentally called gvir_config_domain_source_pty_set_path.
	This naming flaw in turn caused the introspection data to
	be incorrectly generated, putting a 'source_pty_set_path'
	method on the GVirConfigDomain object.

2013-06-07  Christophe Fergeau  <>

	gconfig: Add GVirConfigDomainSnapshot getters/setters

	gconfig: Add GVirConfigDomainSnapshotDisk getters/setters

	gconfig: Add GVirConfigDomainSnapshotDisk skeleton

	gconfig: Add gvir_config_domain_disk_[gs]et_driver_format
	libvirt commit;a=commit;h=e2c41e486018ee74f6a75c1f717622
	strongly hints that driver type for a disk domain should be an
	enum rather than a raw string. Since we already have setters/getters
	for this attribute, we can't use the same name as in the XML. However,
	as Daniel Berrangé pointed out,
	gvir_config_domain_disk_[gs]et_driver_format is a better name for this,
	so we add the API accepting an enum under this name.

	I did not set "Rename to: gvir_config_domain_disk_[gs]et_driver_format"
	in a gtk-doc comment to force bindings to use this better version
	as this would break Boxes for example.

	gconfig: Add GVirConfigDomainDiskFormat enum

	gconfig: Allow not found child in gvir_config_object_get_child_with_type
	This will be useful when implementing gvir_domain_snapshot_get_parent()
	as the child node 'parent' is not always present in the XML.

2013-05-12  Christophe Fergeau  <>

	automake outputs a warning about AM_CPPFLAGS being the recommended
	name to use for INCLUDES

	glib: Add G_GNUC_PRINTF where appropriate
	This is used to tell the compiler about printf-like format strings
	used by some functions. Without this marking, gcc 4.8 is outputs
	warnings to recommend using it.

	Adjust examples for gvir_config_object_get_conf rename
	It was renamed to gvir_config_object_to_xml() a long while ago.

2013-05-02  Christophe Fergeau  <>

	object: Add "transfer none" annotation to argv parameter
	This makes the parameter to be passed "unowned" in Vala. This was
	previously done using a vala metadata file, but it's better to do
	it directly through a gtk-doc annotation, as this means the gir
	file will know about this, and thus any gir-based binding can
	make use of this info.

	This also makes libvirt-gobject consistent with what was done
	for gconfig and glib in commit 431720.

2013-05-01  Christophe Fergeau  <>

	Rename misnamed 'conn' variable everywhere
	Through copy and paste from libvirt-gobject-connection.c, we end
	up with an instance variable named 'conn' in most of our classes
	even if we are not manipulating a connection object. This commit
	renames all 'conn' occurrences in libvirt-gobject and
	libvirt-gconfig with a name more consistent with the type of the
	variable named 'conn'.

	gconfig: Fix gvir_config_domain_graphics_new_from_tree
	It does not handle the recently added
	GVirConfigDomainGraphicsRdp and GVirConfigDomainGraphicsDesktop

2013-04-19  Daniel P. Berrange  <>

	Adopt saner libtool versioning scheme from libvirt
	The current way libtool versioning is calculated has a timebomb
	when the package version number changes to 1.0.0, which will
	cause the library soname to change. Adapt to the latest libvirt
	macros for libtool versioning, which use an explicit variable
	LIBVIRT_GLIB_SONUM setting for changing soname.

2013-04-16  Christophe Fergeau  <>

	Fix year in NEWS
	We switched from 2012 to 2013!!

2013-04-10  Daniel P. Berrange  <>

	Auto-generate AUTHORS file from GIT logs during make dist
	Instead of manually keeping the AUTHORS file in sync with
	GIT, auto-generate it during make dist phase

	Add framework for i18n of error message strings

2013-04-08  Daniel P. Berrange  <>

	Add printf/sentinel attribute annotations to helper functions
	To allow the compiler to check args add G_GNUC_PRINTF and
	G_GNUC_NULL_TERMINATED to libvirt-gconfig-helpers-private.h

2013-04-03  Christophe Fergeau  <>

	gconfig: Add GvirConfigStoragePermission getters

	gconfig: Add GvirConfigStoragePoolTarget getters

	gconfig: Add GVirConfigStoragePoolSource getters

	gconfig: Add GVirConfigStoragePool getters

	gconfig: Add calls to [gs]et_virt_type to domain tests
	Setting GVirConfigDomain::virt_type is required for a working
	domain configuration, using it in the test programs will be helpful
	if people are using this as a base when starting to use libvirt-gconfig

	config: Add GVirConfigDomainChannel getters

	config: Add GVirConfigDomainGraphicsDesktop class

	config: Add GVirConfigDomainGraphicsRdp class

	config: Add gvir_config_domain_graphics_sdl_set_fullscreen()

	config: Fix 2 leaks in domain memory setters

2013-04-03  Stefano Facchini  <>

	build: Replace obsolete macro in
	Fix the build for newer automake

2013-04-02  Daniel P. Berrange  <>

	Disable static libraries by default
	Every source file is currently built twice by libtool, once for
	the shared library and once for the static library. Static libs
	are not commonly packaged by distros and slow down compilation
	time by more than 50% compared to a shared-only build time.

	Time for non-parallel make

	      shared only: 52 secs
	  shared + static: 1 min 26 secs

	Those few people who really want them, can pass --enable-static
	to configure

	Disabling them by default requires use of LT_INIT. We don't need
	to support older libtool, so drop use of AM_PROG_LIBTOOL entirely

2013-03-19  Daniel P. Berrange  <>

	Post release version bump

2013-03-18  Daniel P. Berrange  <>

	Update NEWS for 0.1.6 release

	Add Claudio Bley to AUTHORS

2013-03-14  Zeeshan Ali (Khattak)  <>

	gconfig: API for SPICE image compression
	This patch adds API to set/get image compression configuration on
	domain/graphics[@type='spice'] nodes.

	Also included are simple tests for this API.

	Add gvir_config_object_replace_child_with_attribute_enum()
	Internal libvirt-gconfig helper to replace enum XML attributes.

2013-03-12  Christophe Fergeau  <>

	Remove FSF address from source file headers
	The FSF moved a while ago which made the address we use in every
	source file header invalid. Follow the recommendation from and don't put any address
	in these headers, just a link to the fsf website.

2013-02-07  Claudio Bley  <>

	gvir_stream_receive: annotate buffer parameter with "element-type guint8"
	Vala automatically regards parameters as strings when an array of char
	is used. We need to prevent this as the data given is an array of octets
	ie. arbitrary data, not chars.

	Add "transfer none" annotation to argv parameter
	This makes the parameter to be passed "unowned" in Vala.

	Fix typo in gvir_config_init's comment
	This broke the generated Vala API.

2013-01-24  Christophe Fergeau  <>

	Fix potential crashes in error cases
	fetch_list implementations in libvirt-gobject-connection.c and
	libvirt-gobject-storage-pool.c can misbehave in error situations
	or when the call is cancelled:
	- when the call is cancelled, 'lst' will be NULL and 'n' non-0 so
	we'll try to iterate over 'lst', which will cause a crash
	- when list_func fails, 'lst' is likely to be uninitialized, which
	will lead to invalid frees in the memory cleanup in the error: branch.
	We can avoid this issue by making sure 'lst' is initialized to 0
	when it's created.

	Use g_strlcpy instead of strncpy
	This guarantees that the string will be nul-terminated. Coverity
	warned about this issue.

2013-01-22  Michal Privoznik  <>

	Don't redefine _FORTIFY_SOURCE macro
	If the _FORTIFY_SOURCE has been already defined, we unconditionally
	redefine it, leaving us with warning/error thrown at compilation time.

2013-01-14  Daniel P. Berrange  <>

	Post-release version bump

	Add libvirt-gobject-storage-pool-private.h to noinst_HEADERS

	Replace tabs with spaces

	Update NEWS for 0.1.5 release

2013-01-11  Zeeshan Ali (Khattak)  <>

	gconfig: Entertain bridge interface devices
	Currently we ignore bridge interface devices from domain XML. This patch
	fixes that.

2013-01-09  Zeeshan Ali (Khattak)  <>

	gobject: API to open read-only connection to libvirt
	Also a utility method to check if connection is open in read-only mode.

2012-12-19  Alexander Larsson  <>

	Add smartcard support to libvirt-gconfig
	This handles <smartcard> devices.

2012-11-21  Zeeshan Ali (Khattak)  <>

	gobject: Also delete storage volume from its pool's list
	Without this patch, storage pool still lists the volume even after it is

	Related Boxes bug:

2012-11-16  Daniel P. Berrange  <>

	Post release version increment

	Remove tabs in source directory

	Update NEWS for 0.1.4 release

2012-11-14  Christophe Fergeau  <>

	gobject: Add gvir_storage_pool_get_{active,persistent}

	gobject: Wrap virStoragePoolDelete

	gobject: Wrap virStoragePoolUndefine

	gobject: Wrap virStoragePoolDestroy

	gobject: don't try to use pool's volumes before a successful refresh
	gvir_storage_pool_refresh must be called and must be successful before
	trying to use gvir_storage_pool_get_volume,
	gvir_storage_pool_get_volumes and gvir_storage_pool_create_volume.
	As the storage pool refresh can fail for reasons external to
	libvirt/libvirt-gobject, the library user should check _refresh
	errors. This commit outputs runtime warnings when these functions
	are called and GVirObjectStoragePool::priv::volumes is NULL.

	gobject: Fix GMutex leak
	When GLib deprecated g_mutex_new/g_mutex_free, we introduced a
	compatibility wrapper to implement these using non-deprecated
	functions. This was done by allocating 0-filled memory by the
	mutex, and then letting GLib initialize the structure when
	needed. However, we must call g_mutex_clear when destroying
	the mutex to free these resources, which this patch fix.

	Fix glib version check for g_type_init
	g_type_init has been deprecated in glib 2.35, not 2.34. With versions
	older than 2.35, we have to call it or we'll get a runtime failure.

2012-11-14  Zeeshan Ali (Khattak)  <>

	docs: Specify correct function to free GVirDomainInfo

	gobject: Add GVirDomainRebootFlags
	Add flags to be used with gvir_domain_reboot().

2012-11-14  Christophe Fergeau  <>

	Don't call g_type_init on newer glib
	This function call is deprecated and calling it causes a compilation

	test: Remove redundant call to g_type_init
	test-domain-parse calls both g_type_init and gvir_config_init. Given
	that gvir_config_init calls g_type_init, the g_type_init call is
	redundant, so let's remove it.

	stream: Fix small error in gvir_stream_receive doc

	gobject: Fix handle leak on wrapper object creation
	When creating an object wrapping a libvirt object (GVirDomain,
	GVirStoragePool, GVirStorageVol), libvirt-gobject gets a reference
	to a libvirt object to be used as a handle, and then creates the wrapper
	object by calling g_object_new(..., "handle", handle, NULL);

	However, the underlying libvirt object is registered as a boxed type
	with the gobject type system, and the handle setter for these object
	calls g_value_dup_boxed, which in turn adds a reference on the libvirt
	handle. Thus we must release the initial ref we hold on the libvirt
	handle after calling g_object_new().

	I noticed this bug after running in valgrind some code which calls
	gvir_storage_pool_refresh and gvir_connection_fetch_storage_pools.

	gobject: Error out on NULL name in gvir_storage_pool_get_volume
	Without this change, gvir_storage_pool_get_volume segfaults when
	trying to do the hash table lookup with a NULL 'name' key.

	Introduce gvir_warning/gvir_critical
	They are similar to g_warning/g_critical, but also log the last
	libvirt error. They are meant to be called right after a libvirt
	call failed, in other cases g_warning/g_critical are still to be

2012-11-14  Alexander Larsson  <>

	gobject: Add gvir_domain_update_device() and enums needed for it
	This is a wrapper for virDomainUpdateDeviceFlags.

2012-10-10  Zeeshan Ali (Khattak)  <>

	gconfig: Add API to set domain/pm tree
	API for new domain power management configuration.

2012-10-09  Daniel P. Berrange  <>

	Post-release version bump

2012-10-08  Daniel P. Berrange  <>

	Update NEWS for 0.1.3 release

	Add Alex to AUTHORS file

2012-10-04  Alexander Larsson  <>

	Add wrappers for virDomainPMWakeup

2012-10-03  Christophe Fergeau  <>

	build-sys: Raise libvirt requirement to 0.10.2
	The recent PMSuspend changes need libvirt 0.10.2 or newer.

	spec: Get min libvirt version from
	The minimum libvirt version we need is duplicated in
	and Since already gets some variables
	substituted, we can also substitute LIBVIRT_REQUIRED to avoid the

2012-09-28  Christophe Fergeau  <>

	gobject: Emit a signal on WAKEUP events
	This avoids a runtime warning about this kind of event not
	being handled.

	gobject: Handle PMSUSPENDED state from libvirt
	Emit a signal when switching to the PMSUSPENDED state, and add
	an enum entry to describe this state. This avoids runtime warnings
	with newer libvirt.

2012-09-26  Christophe Fergeau  <>

	Implement gvir_config_domain_graphics_spice_get_port

	Add a few GVirConfigDomainGraphicsVnc getters

	Implement gvir_config_domain_graphics_vnc_set_socket

	Fix *_new_from_xml
	For objects with a subtype 'type' attribute, when the _new_from_xml
	function was called, the 'type' attribute was forcefully set to the
	right value rather than checking that the passed-in value matches
	the type of the subclass we are trying to instantiate. This commit
	changes this, and returns NULL when the value of the 'type' attribute
	of the passed-in XML document does not match the expected type.

2012-09-26  Jovanka Gulicoska  <>

	Don't call g_set_error with a NULL format string
	The format string passed to g_set_error cannot be NULL or a runtime
	warning will be printed.

2012-09-18  Michal Privoznik  <>

	autobuild: Init AUTOBUILD_INSTALL_ROOT variable
	Otherwise autobuild sets prefix to / resulting in
	Permission denied when building as non-root as
	'make install' tries to write to /lib. We need to
	set this var to accessible path like $HOME/builder.

2012-09-13  Michal Privoznik  <>

	gobject: Introduce gvir_connection_get_version
	which is basically a wrapper for virConnectGetVersion().

	gobject: Introduce gvir_connection_get_hypervisor_name
	which is basically a wrapper for virConnectGetType().

2012-09-12  Timo Juhani Lindfors  <>

	Use 1 GB of RAM in Python example (instead of 1 TB)

	Specify virtualization type in Python example
	Without this creating the domain fails:

	gi._glib.GError: Failed to create domain: internal error missing domain type attribute

2012-09-04  Christophe Fergeau  <>

	config: Add gvir_config_domain_[gs]et_current_memory
	libvirt will insert a <currentMemory> node when setting the domain
	maximum memory. If we want to be able to later increase the domain
	maximum memory, libvirt-gconfig needs to be able to set this
	currentMemory node as well, otherwise this will cap the available
	memory in the domain.

	config: Handle units in gvir_config_[gs]et_memory
	gvir_config_[gs]et_memory have an optional 'unit' attribute which
	indicates the unit used to express the memory size. This commit
	adds support for parsing this unit, and adjusting the returned
	value accordingly.

	config: Improve documentation of GVirConfigDomain::set_memory
	Explicit the fact that it sets the maximum domain memory.

	config: Allow NULL node name to gvir_config_object_set_content
	This is useful when you want to set the content of the current node.

2012-08-20  Daniel P. Berrange  <>

	Post release version bump

	Update NEWS for 0.1.2 release

	Don't hold events lock when dispatching free callbacks
	The _event_timeout_remove and _event_handle_remove methods
	were holding onto the global lock when invoking the free
	callback. This is a violation of the libvirt events API
	contract which requires free callbacks to be invoked in
	a re-entrant safe context.

2012-08-09  Christophe Fergeau  <>

	Fix small typo in error message ('downlaod')

2012-08-07  Marc-André Lureau  <>

	libvirt-gobject.sym: fix resume() symbols version

	Post-release version bump

2012-08-07  Zeeshan Ali (Khattak)  <>

	Add async variant of gvir_domain_resume()

2012-08-06  Zeeshan Ali (Khattak)  <>

	Release 0.1.1

2012-08-03  Jovanka Gulicoska  <>

	Add bindings for virDomainSnapshotCreateFlags

	Add bindings for virDomainSnapshotCreateXML()

2012-07-31  Jovanka Gulicoska  <>

	Add bindings for virDomainRestore*()

2012-07-20  Marc-André Lureau  <>

	gobject: add GVir.DomainShutdownFlags binding

2012-07-18  Marc-André Lureau  <>

	gobject: add GVir.DomainXMLFlags binding

	Post-release version bump

2012-07-16  Daniel P. Berrange  <>

	Update NEWS for 0.1.0 release

	Add Jovanka Gulicoska to AUTHORS

2012-07-14  Jovanka Gulicoska  <>

	Add bindings for virStorageDownload() & virStorageUpload()

	Add bindings for virDomainSave*()

2012-06-27  Zeeshan Ali (Khattak)  <>

	Test cases for new domain CPU APIs

	Add GVirConfigDomainCpu class
	API to handle 'domain/cpu' nodes.

	Make GVirConfigCapabilitiesCpu.get_features virtual
	Also provide helper function for subclasses that will have the exact
	same implementation except that they'll return instances of another type
	(subclasses of GVirConfigDomainCpuFeature rather than
	GVirConfigDomainCpuFeature itself).

2012-06-26  Zeeshan Ali (Khattak)  <>

	Add GVirConfigDomainCpuFeature class
	API to handle 'domain/cpu/feature' nodes.

	Add gvir_config_capabilities_cpu_feature_set_name()
	Setter for

	Setters for CapabilitiesCpuTopology props

	Add gvir_config_capabilities_cpu_topology_new*
	Provide constructor methods for GVirConfigCapabilitiesCpuTopology.

	Setters/adders for GVirConfigCapabilitiesCpu props
	- gvir_config_capabilities_cpu_add_feature
	- gvir_config_capabilities_cpu_set_topology

2012-06-25  Christophe Fergeau  <>

	Add API doc for GVirConfigDomainControllerUsb

2012-06-25  Daniel P. Berrange  <>

	Bump version to 0.1.0

	Update NEWS for 0.0.9 release

	Move gvir_config_domain_filesys_set_ram_usage sym to correct version block

	Tweaks to

	Add support for domain filesystems with type=bind|ram
	This adds support for filesystems with type=bind or type=ram,


	   <filesystem type='bind'>
	     <source dir="/some/guest/file"/>
	     <target dir=/other/guest/file"/>


	   <filesystem type='ram'>
	      <source usage='102400'/>
	      <target dir='/run'/>

2012-06-25  Christophe Fergeau  <>

	mainloop: don't reschedule deleted timeouts/watches
	The deletion of libvirt timeouts/watches is done in 2 steps:
	- the first step is synchronous and unregisters the timeout/watch
	  from glib mainloop
	- the second step is asynchronous and triggered from the first step.
	  It releases the memory used for bookkeeping for the timeout/watch
	  being deleted

	This is done this way to avoid some possible deadlocks when
	reentering the sync callback while freeing the memory associated
	with the timeout/watch.

	However, it's possible to call gvir_event_update_handle after
	gvir_event_remove_handle but before _event_handle_remove does
	the final cleanup. When this happen, _update_handle will reregister
	the handle with glib mainloop, and bad things will happen when
	a glib callback is triggered for this event after _event_handle_remove
	has freed the memory associated with this handle watch.

	This commit marks the timeouts and watches as removed in the
	synchronous _remove callback and makes sure removed timeouts/watches
	are ignored in _update callbacks.

	mainloop: protect 'handles' and 'timeouts' against concurrent accesses
	Timeout and watch deletion is done from an idle callback. However,
	we cannot assume that all libvirt event calls (the callbacks passed
	to virEventRegisterImpl) will be done from the mainloop thread. It's
	thus possible that a libvirt event call will run a thread while
	one of the idle deletion callbacks runs.
	Given that the 'handles' and 'timeouts' arrays are shared among all
	threads, we need to make sure we hold the 'eventlock' mutex before
	modifying them.

	mainloop: remove unused gvir_event_{handle,timeout}_update arg

	mainloop: add missing debug message
	All timeout and watch additions/updates/removals are logged except
	successful watch updates. This commit adds such a log message.

	mainloop: improve handle operations debug messages
	Make sure the watch ID and the address of the structure libvirt-glib
	uses to watch the handle are always printed to make tracking operation
	on the same watch easier.

2012-06-23  Marc-André Lureau  <>

	Add async version of gvir_domain_start

2012-06-20  Daniel P. Berrange  <>

	Switch over to mingw64 toolchain for Windows builds

2012-06-19  Zeeshan Ali (Khattak)  <>

	Add getter for GVirConfigDomainOs.os_type

2012-06-18  Daniel P. Berrange  <>

	Remove bogus check against -1 of gvir_config_genum_get_value return value
	The gvir_config_domain_disk class was checking the return value
	of gvir_config_genum_get_value against -1. This is impossible,
	since this method will return the default enum value

	Fix generation of filesystem device source XML element
	When setting the filesystem source type, the code forgot to
	update priv->type. Thus when setting the source element,
	the incorrect attribute was being used.

2012-06-13  Christophe Fergeau  <>

	build: allow building with newer glibc-headers and -O0
	Commit log and autoconf snippet written by Eric Blake for libvirt.

	glibc 2.15 (on Fedora 17) coupled with explicit disabling of
	optimization during development dies a painful death:

	In file included from /usr/include/limits.h:27:0,
	                 from /usr/lib/gcc/x86_64-redhat-linux/4.7.0/include/limits.h:169,.
	                 from /usr/lib/gcc/x86_64-redhat-linux/4.7.0/include/syslimits.h:7,
	                 from /usr/lib/gcc/x86_64-redhat-linux/4.7.0/include/limits.h:34,
	                 from util/bitmap.c:26:
	/usr/include/features.h:314:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp]
	cc1: all warnings being treated as errors

	Work around this by only conditionally defining _FORTIFY_SOURCE,
	in the case where glibc can actually use it.  The trick is using

	* m4/virt-compile-warnings.m4 (LIBVIRT_GLIB_COMPILE_WARNINGS): Squelch
	_FORTIFY_SOURCE when needed to avoid glibc #warnings.

2012-06-04  Zeeshan Ali (Khattak)  <>

	API to get/set domain title

2012-06-01  Michal Privoznik  <>

	glib-events: Allow zero timeouts for timer
	In libvirt, it's perfectly possible and widely used to have disabled
	timers (timeout=-1) and fire them up 'randomly' with timeout=0.
	However, with current mapping into glib mainloop it's not possible
	and causing troubles.

2012-05-25  Zeeshan Ali (Khattak)  <>

	API to deal with topology information of CPU capabilities

	Add gvir_config_object_get_attribute_uint64()
	Another internal libvirt-gconfig helper to get uint64 XML attributes.

2012-05-23  Christophe Fergeau  <>

	Check arguments to public libvirt-gobject methods
	Some public methods in libvirt-gobject don't have g_return_if_fail
	checks on their arguments. It happens that GNOME Boxes tries to call
	gvir_connection_find_storage_pool_by_name with a NULL GVirConnection
	causing a crash While
	GNOME Boxes needs to be fixed not to pass an invalid value to this
	function, it's better if libvirt-object sanity checks the argument it is
	passed by the caller before using them.  In this commit, I've went over
	all libvirt-gobject public functions to add g_return_if_fail checks
	where needed.

2012-05-22  Zeeshan Ali (Khattak)  <>

	Add getter for GVirConfigDomainOS.arch

2012-05-21  Christophe Fergeau  <>

	Check arguments to public GVirConfigObject methods
	GVirConfigObject public methods don't have g_return_if_fail checks
	on their arguments. It happens that GNOME Boxes tries to call
	gvir_config_object_to_xml with a NULL GVirConfigObject causing a
	While GNOME Boxes needs to be fixed not to pass an invalid value
	to gvir_config_object_to_xml, it's better if libvirt-gconfig sanity
	checks the argument it is passed by the caller before using them.

2012-05-16  Zeeshan Ali (Khattak)  <>

	Add getter for GVirConfigDomain.virt_type

2012-05-15  Christophe Fergeau  <>

	Make sure %with_vala is defined for newer RHELs
	We want to build the vala bindings on recent RHELs. Given than
	%with_introspection is defined for fedora >= 15 and rhel > 6 which
	are exactly the versions for which we want to build the vala bindings,
	and given that the vala bindings are to be disabled when introspection
	is disabled, we can set %with_vala to the same value as %with_introspection.

2012-05-15  Zeeshan Ali (Khattak)  <>

	Forgotten fixes to capabilities API test app

2012-05-14  Zeeshan Ali (Khattak)  <>

	Add missing domain OS type enums

	Add some tests for new capabilities APIs

	Add guest capabilities API
	Not quite complete but its a good start.

	Add host capabilities API
	Not quite complete but its a good start.

2012-05-11  Christophe Fergeau  <>

	Make memory-handling more explicit in API doc
	Explain how the return value of the (transfer full) methods should
	be freed. I also made some cosmetic changes in the API doc of some
	of the files as I was modifying them.

2012-05-11  Zeeshan Ali (Khattak)  <>

	API to get capabilities from connection

	Add gvir_config_domain_os_get_boot_devices()

	Allow unsetting of object properties
	This changes gvir_config_object_attach_replace to accept a NULL
	child object. Since we need to be able to find the node to remove
	when this happens, gvir_config_object_attach_replace gets a third
	argument with the name of the node to add/remove.

	Allow unsetting of string properties
	This changes gvir_config_object_set_node_content to accept a NULL
	content and to remove the corresponding node when this happens

	Add gvir_config_domain_get_os()

2012-05-10  Zeeshan Ali (Khattak)  <>

	More internal helpers for GVirConfigObject subclasses
	- gvir_config_object_get_child()
	- gvir_config_object_get_child_with_type()

2012-05-09  Zeeshan Ali (Khattak)  <>

	Correct gvir_config_domain_source_pty_set_path()
	This function should set 'path' as attribute of 'source' node rather
	than as child node.

2012-05-08  Zeeshan Ali (Khattak)  <>

	Remove a redundant struct field

2012-05-02  Zeeshan Ali (Khattak)  <>

	Corrections to satisfy latest GIR

2012-05-02  Daniel P. Berrange  <>

	Add complete docs for the Libvirt GLib library
	Flesh out the section intros for each of the Libvirt GLib
	library modules, providing using examples where needed, and
	adding any missing function docs.

2012-05-01  Zeeshan Ali (Khattak)  <>

	Bump version

2012-04-27  Daniel P. Berrange  <>

	Prep NEWS for 0.0.8 release

2012-04-27  Daniel P. Berrange  <>

	Add Michael to AUTHORS

2012-04-27  Christophe Fergeau  <>

	Add GVirConfigDomainTimerPit class

	Add GVirConfigDomainTimerRtc class

	Implement gvir_config_domain_clock_add_timer

	Implement gvir_config_domain_timer_[gs]et_tick_policy

	Make GVirConfigDomainTimer abstract
	Specialized timer classes will inherit from it

2012-04-24  Michal Privoznik  <>

	test-domain-create: Don't shadow global variable
	In function create_usb_controller variable 'index' shadows a global

2012-04-19  Zeeshan Ali (Khattak)  <>

	Add async variant of gvir_domain_get_info()

	Correct some minor typos in docs

2012-04-18  Christophe Fergeau  <>

	Parse GVirConfigDomainRedirdev nodes
	Update gvir_config_domain_device_new_from_tree to handle
	GVirConfigDomainRedirdev nodes

	Parse GVirConfigDomainController nodes
	Update gvir_config_domain_device_new_from_tree to handle
	GVirConfigDomainController nodes. For now, libvirt-gconfig only
	has a GVirConfigDomainControllerUsb class, so only this type of
	controllers can be parsed.

2012-04-17  Christophe Fergeau  <>

	test-domain-create: set an address for redirdev devices

	Implement gvir_config_domain_redirdev_set_address

	Implement GVirConfigDomainAddressUsb

	Improve USB device creation in test-domain-create

	Implement gvir_config_domain_controller_set_address

	Implement GVirConfigDomainAddressPci
	It already has the needed setters.

	Add GVirConfigDomainAddress abstract type
	This is an abstract type which will be the base class for device

	test-domain-create: add USB controller creation

	Implement gvir_config_domain_controller_usb_set_master

	Add gvir_config_domain_controller_usb_set_model

	Add GVirConfigDomainControllerUsb boilerplate

	Implement gvir_config_domain_controller_[gs]et_index

	Add GVirConfigDomainController skeleton

2012-04-12  Zeeshan Ali (Khattak)  <>

	Getter/setter for disk source's startupPolicy attribute

2012-04-12  Guido Günther  <>

	Explicitly link conn-test against libvirt-gconfig libvirt-glib
	otherwise the build fails with:

	$ CCLD   conn-test
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_domain_new_from_xml@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_set_error@LIBVIRT_GLIB_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_network_new_from_xml@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_storage_pool_new_from_xml@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_init_check@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_domain_get_type@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_object_to_xml@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_event_register@LIBVIRT_GLIB_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_init_check@LIBVIRT_GLIB_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_domain_get_devices@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_storage_vol_new_from_xml@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_secret_new_from_xml@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_interface_new_from_xml@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_domain_disk_get_type@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_domain_disk_get_target_dev@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_domain_interface_get_type@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_node_device_new_from_xml@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_domain_device_get_type@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_object_get_type@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_error_new_literal@LIBVIRT_GLIB_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_domain_snapshot_new_from_xml@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_network_filter_new_from_xml@LIBVIRT_GCONFIG_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_set_error_literal@LIBVIRT_GLIB_0.0.4'
	../libvirt-gobject/.libs/ undefined reference to `gvir_config_domain_interface_get_ifname@LIBVIRT_GCONFIG_0.0.4'
	collect2: ld returned 1 exit status

	This is caused by a Debian specific libtool change that doesn't emit the
	dependency_libs in the .la file.

2012-04-11  Guido Günther  <>

	Raise symbol version number
	since new symbols were introduced since 0.0.4

2012-04-04  Daniel P. Berrange  <>

	Ensure libvirt-gobject-devel pulls in libvirt-devel RPM

2012-03-30  Daniel P. Berrange  <>

	Bump release number

	Update NEWS for 0.0.7 release

	Update RPM specs to required libvirt 0.9.10


	Fix generation of docs in a VPATH builder
	The DOC_SOURCE_DIR variable was missing the $(top_srcdir) variable
	so it could not find the source files when run from a VPATH build.
	Empirically the previous comment saying that $(top_srcdir) was not
	needed is wrong.

2012-03-28  Christophe Fergeau  <>

	Do not encode entities in XML attributes
	libxml2 will properly escape < > and " in XML attribute content. If
	we use xmlEncodeEntitiesReentrant for attributes, this causes issues
	with UTF8 filenames (gvir_config_domain_disk_set_source for example):
	the filename UTF8 characters will be substituted with entities
	(é -> &#xE9;), but when it uses this filename, libvirt will use it as
	is and will fail to find the file.
	I've tested that with this change gnome-boxes can open ISOs in directories
	with 'é' in their names, and in directories with '&foo;xx<' in their names.

	Remove unneeded call in libvirt-gconfig test
	Because of a copy and paste error, the test program is making an
	unneeded call to gvir_config_domain_channel_set_target_type
	when setting up its USB redirection device.

2012-03-22  Zeeshan Ali (Khattak)  <>

	Bump version

2012-03-14  Christophe Fergeau  <>

	Add GVirConfigDomainRedirdev
	This is used to add the SPICE USB redirection channel. Even if
	the libvirt doc doesn't document it with the other devices deriving
	from GVirConfigDomainChardev, I think it makes sense to have this
	class derivers from GVirConfigDomainChardev too since it needs a
	GVirConfigDomainChardevSource, and it's documented as using a
	character device for redirection.

	Add LibvirtGConfigDomainChardevSourceSpiceVmc
	This is needed to be able to add the SPICE agent channels

2012-03-13  Christophe Fergeau  <>

	turn confused glib-mkenums, leading to a wrong value being generated
	in the XML when trying to use this enumeration.

2012-03-12  Christophe Fergeau  <>

	Remove the _glib xml helpers
	The reason for them being there was that they were more expensive
	than the helpers returning an xmlChar* (additional g_strdup). Now
	that we are returning a pointer to const data inside the xml node,
	the _glib helpers only use is to cast from const xmlChar * to
	const char *. Removing them makes the code simpler.

2012-03-12  Zeeshan Ali (Khattak)  <>

	All string getters should return 'const'
	There is no need for all the memory (de)allocations and especially
	forcing the app developers to free the strings. They can always
	g_strdup() the returned string if they need.

	Reviewer and co-author: Christophe Fergeau <>

2012-03-06  Zeeshan Ali (Khattak)  <>

	Keep domain devices list sorted
	While we don't guarantee the order of devices in the list returned from
	gvir_domain_get_devices(), its not a bad idea to keep them sorted the
	same way we get them from configuration (XML).

2012-03-05  Zeeshan Ali (Khattak)  <>

	Release 0.0.6

	Distribute GNUmakefile, and files

2012-03-02  Marc-André Lureau  <>

	Don't leak GVirStream
	Do not give away a reference to virStreamEventAddCallback, but manage
	stream life-time and event instead.

	It seems to be a bug in current implementation of libvirt
	remoteStreamCallbackFree() that doesn't call the free/notify cb for
	some reason. (even if it did, I am not sure it would work correctly,
	so I prefer that patch)

2012-03-01  Zeeshan Ali (Khattak)  <>

	Correct a check

	RFC: Empty statistics for user-mode interfaces
	One of the limitations of user-mode networking of libvirt is that you
	can't get statistics for it (not yet, at least). Instead of erroring-out
	in that case, simply return empty statistics result and spit a debug

	I will merge this into my 'Remove now redundant 'path' property' patch
	once someone tells me that this makes sense. :)

	Add gvir_domain_get_devices()
	Currently we only support existing DomainDevice implementations:
	DomainDisk and DomainInterface.

	Remove now redundant 'path' property
	Remove now redundant 'path' property from GVirDomainDevice subclasses.
	These classes now have access to their configurations, from which they
	can easily get the path (among other properties) internally.

2012-02-29  Zeeshan Ali (Khattak)  <>

	Add 'config' property to GVirDomainDevice
	GVirDomainDevice should have an associated GVirConfigDomainDevice.

	Getters for GVirConfigDomainInterface attributes

	Add gvir_domain_device_get_domain()
	Getter for the associated domain of a domain device.

	Set correct target node attribute for domain interface
	gvir_config_domain_interface_set_ifname() should be setting 'dev'
	attribute under 'target', not 'device'.

	Add gvir_domain_disk_resize()
	Binding for virDomainBlockResize().

2012-02-28  Zeeshan Ali (Khattak)  <>

	Bump version

2012-02-20  Zeeshan Ali (Khattak)  <>

	Use strncpy rather than g_utf8_strncpy
	We need to copy fixed number of bytes (not characters) so use strncpy.

2012-02-20  Daniel P. Berrange  <>

	Add notes for 0.0.5 release

2012-02-20  Zeeshan Ali (Khattak)  <>

	Fixes to gvir_domain_*save*() docs
	The saved state of a domain is restored using gvir_domain_start() rather
	than gvir_domain_resume().

2012-02-19  Zeeshan Ali (Khattak)  <>

	API to get node information about the connection
	Mostly just a wrapper around virNodeGetInfo() and virNodeInfo struct.

	Add Flags for use with gvir_domain_delete()

2012-02-16  Christophe Fergeau  <>

	Add more sanity checks to libvirt-gconfig test

	Add gvir_config_domain_disk_[gs]et_cache

	Fix [gs]et_custom_xml-related leaks
	I forgot to run the testing code through valgrind before pushing
	the patches so a few small memory leaks crept in.

2012-02-16  Zeeshan Ali (Khattak)  <>

	Add gvir_domain_get_saved()
	Binding for virDomainHasManagedSaveImage().

	Correct docs for gir_domain_save*()
	A saved domain is stopped/shutdown on a successful save operation, not

	Tell CC to ignore unused macros

2012-02-15  Daniel P. Berrange  <>

	Avoid triggering deprecation warnings on newest GLib

2012-02-14  Zeeshan Ali (Khattak)  <>

	Add gvir_storage_vol_resize()
	Add wrapper for virStorageVolResize().

	Volume keeps an weak ref to its parent pool

2012-02-10  Daniel P. Berrange  <>

	Rename 'unlink' variable to avoid clash on Win32

	Switch over to use GNULIB's compile warning macros

	Add missing default: in example program

	Simplify condition that is always true

	Disable unused macro for debug

2012-02-06  Christophe Fergeau  <>

	Add testcase for gvir_config_domain_[gs]et_custom_xml

	API to get/set custom metadata from/to domain config
	Based on a patch from Zeeshan Ali (Khattak) <>

	Add gvir_config_object_set_namespace helper

	Handle namespaces in gvir_config_object_delete_child{ren}
	These functions now take an additional argument corresponding to
	a namespace href. It's optional and can be NULL when namespaces
	should be ignored.
	The 'child_name' argument can now be NULL in order to remove all nodes
	belonging to a given namespace.

	Factorize xml dumping code
	Use the new gvir_config_xml_node_to_string to implement
	gvir_config_object_to_xml, this avoids duplicating this code.

	Add gvir_config_xml_node_to_string helper

	Make root_node optional in gvir_config_xml_parse
	It's only used to make some sanity checks on what was just parsed,
	so allowing NULL root_node is fine.

	Fix gvir_config_object_new_from_xml error reporting
	It's currently failing to report parsing errors if the passed in
	error is NULL.

2012-02-05  Christophe Fergeau  <>

	Don't assign const char * to non-const
	This causes a gcc warning.

2012-01-31  Christophe Fergeau  <>

	Replace g_error with g_warning in constructors
	g_error generates a fatal error message, meaning it will abort
	the currently running process. It's nicer to use g_warning here.

	Don't use g_error in xxx_get_name
	g_error will trigger an abort of the running process so it's not
	desirable to call it in a library. This commit uses g_warning when
	this occurs and returns NULL. libvirt will only return NULL for these
	strings if some kind of memory corruption is going on, or if we are
	using an invalid pointer.

	Add proper error reporting to gvir_storage_vol_get_path
	gvir_storage_vol_get_name currently call g_error when an error occurs.
	Since g_error trigger a coredump, calling it in a library is harmful.
	Replace this with proper GError error reporting.

2012-01-26  Zeeshan Ali (Khattak)  <>

	Don't loop forever on blank nodes

2012-01-20  Christophe Fergeau  <>

	Remove 2 unwanted exports
	These 2 GVirObject helpers are declared in libvirt-gobject-private.h
	and so shouldn't be exported.

	Split gvir_config_object_attach
	Most of the time we want gvir_config_object_attach to replace
	existing nodes, but sometimes (for <devices> subnodes) we want
	it to append the new node and to keep the existing nodes with
	the same name. This commit solves this by adding 2 distinct helpers,
	_attach_add and _attach_replace.
	This should fix some unexpected behaviour of various _set_ functions
	which were appending new nodes instead of replacing the existing one.

	Add gvir_config_object_delete_children

	Refactor gvir_config_object_delete_child
	By changing gvir_config_xml_foreach_child to make it robust against
	current node deletion in the "foreach" callback, we can use
	gvir_config_object_foreach_child to implement

2012-01-18  Zeeshan Ali (Khattak)  <>

	Correct return type of gvir_storage_pool_create_volume()

	Handle failure of virDomainIsPersistent() correctly
	virDomainIsPersistent() failing most probably means that domain is no
	longer available so flaging it as transient isn't exactly wrong.

	API to get/set 'description' node in domain config

2012-01-18  Daniel P. Berrange  <>

	Fix syntax-check violations

2012-01-18  Christophe Fergeau  <>

	Fix compilation with glib 2.22
	This commit raises glib required version to 2.22 or newer, adds a few
	missing functions to libvirt-gobject-compat.h and includes it in the
	files using these functions.

2012-01-16  Zeeshan Ali (Khattak)  <>

	Make use of G_PARAM_STATIC_STRINGS everywhere

	Add gvir_config_domain_disk_set_readonly()

2012-01-16  Christophe Fergeau  <>

	Raise libvirt requirement to 0.9.8
	We are using VIR_DOMAIN_EVENT_SHUTDOWN which was introduced
	in libvirt 0.9.8. Reflect this requirement by bumping the minimum
	version of libvirt we require in
	This issue was reported by Nirbheek Chauhan <>

2012-01-13  Zeeshan Ali (Khattak)  <>

	Post-release version bump

2012-01-13  Marc-André Lureau  <>

	Fix libvirt error message after finishing a stream
	The callback is now added & removed from libvirt-gobject-stream.c

	It should have been part of c5a239423a215435626bf6d1af75458c5ec03147.

	 #0  virErrorMsg (error=VIR_ERR_INTERNAL_ERROR, info=0x7fffffffcf00 "no stream callback registered") at util/virterror.c:760
	 #1  0x00007ffff627f304 in virReportErrorHelper (domcode=7, errcode=1, filename=0x7ffff6479a4d "rpc/virnetclientstream.c",
	     funcname=0x7ffff6479ca0 "virNetClientStreamEventRemoveCallback", linenr=514, fmt=<optimized out>) at util/virterror.c:1260
	 #2  0x00007ffff6339aa4 in virNetClientStreamEventRemoveCallback (st=0x1de8ef0) at rpc/virnetclientstream.c:513
	 #3  0x00007ffff631a6ba in remoteStreamEventRemoveCallback (st=<optimized out>) at remote/remote_driver.c:3713
	 #4  0x00007ffff62fe97d in virStreamEventRemoveCallback (stream=0x1db9e00) at libvirt.c:14781
	 #5  0x00007ffff69114f3 in gvir_stream_update_events (stream=0x1db2570) at libvirt-gobject-stream.c:561
	 #6  0x00007ffff6911616 in gvir_stream_source_finalize (source=0x1da25e0) at libvirt-gobject-stream.c:606

2012-01-12  Daniel P. Berrange  <>

	Update NEWS & syms files for 0.0.4 release

	Support setting target attributes for console & channel devices

2012-01-12  Zeeshan Ali (Khattak)  <>

	Add API to check if domain is persistent
	Add a predicate and property to check if domain is persistent or not.

2012-01-11  Daniel P. Berrange  <>

	Add support for shutdown event to avoid console warnings

	Add support for configuring serial, parallel & channel devices
	The basic config of serial, parallel & channel devices is just
	the same as console devices. Add basic stubs for these new

2012-01-09  Christophe Fergeau  <>

	Use g_simple_async_result_is_valid in _finish functions
	The _finish functions for async operations can be simplified by
	using g_simple_async_result_is_valid instead of doing the checks
	it does by ourselves.

2012-01-08  Christophe Fergeau  <>

	Follow glib conventions for SimpleAsyncResult source tag
	g_simple_async_result_is_valid() API documentation says that the
	source tag field for SimpleAsyncResult objects "by convention, is a
	pointer to the _async function corresponding to the _finish function from
	which this function is called"
	The stream functions were already following this convention, but
	other places were using the sync function name as the source tag.
	This commit uses the async function name everywhere.

2012-01-06  Zeeshan Ali (Khattak)  <>

	API to save and suspend
	Its just a set of synchronous and asynchronous wrappers around

	API to suspend a domain

	Correct namespace prefix for GVirConfig symbols
	Breaks API and ABI on the fundamental level but lets fix this now while
	we don't guarantee any API/ABI stability.

2012-01-06  Christophe Fergeau  <>

	Don't mix g_new0 and g_slice_free
	There were 2 places where memory was allocated with g_new0 and was
	later freed with g_slice_free. This commit uses g_slice_new0 instead.
	After this, there are no other occurrences of g_new0 in gobject/ so
	the rest of the codebase should be safe from this issue.

	Add GVirConfigDomainDisk getters

	Add more parsing helpers to GVirConfigObject
	Add gvir_config_object_get_node_content_genum,
	and gvir_config_object_get_attribute_genum to complement the existing
	methods. They all act on a child node of the current node. The
	_get_attribute functions can also act on the root node of the
	GVirConfigObject instance if it's passed NULL instead of a child name.

	Implement gvir_config_domain_get_devices
	There are some devices which we are not able to parse yet, in these
	cases a runtime debug warning is printed in debug mode to tell what's
	going on.

	Add gvir_config_object_foreach_child helper
	When iterating over xmlNodePtr children to parse an XML document
	describing a libvirt configuration item, we want to ignore blank
	nodes that may have been added to make the initial XML document
	"more human readable". Since this will be useful in several places,
	move this code to a helper function.

	Add gvir_config_object_new_from_tree
	This helper function will be useful to create instances of
	GVirConfigXXX objects when we already have a "top-level" instance
	(eg to create a GVirConfigDomainDisk using the tree stored in a
	GVirConfigDomain instance).

	Add helpers to parse xml trees
	This will be helpful to implement GVirConfig getters.

	Introduce libvirt-gconfig-private.h
	This header groups all libvirt-gconfig private headers.

	Add {replace,add}_with_attribute
	These functions may seem very specialized, and the same can easily
	be achieved with 2 separate API calls, but since this is something
	that is commonly done, these helpers save quite a few lines of code.

	Remove FIXME from gvir_config_domain_filesys_set_driver_type
	All that was missing to fix it was gvir_config_object_remove_attribute
	which now exists.

	Overwrite attributes in GVirObject::set_attribute
	Zeeshan reported an issue where calling
	gvir_config_domain_disk_set_target_dev several times would result in
	duplicated 'dev' attributes in the resulting XML instead of overwriting
	the existing 'dev' attribute. Since there are no cases interesting to
	libvirt-gconfig where having several attributes with the same name is
	useful, when calling gvir_config_object_set_attribute*, we can just
	remove attributes with the same names as the one we are setting.

	Add gvir_gconfig_object_remove_attribute helper

2012-01-04  Zeeshan Ali (Khattak)  <>

	Add docs for gvir_config_domain_set/get_memory
	Its not obvious what units these functions deal with so docs are
	critical for these functions.

	Correct gvir_storage_pool_get_volumes' return annotation

2012-01-04  Christophe Fergeau  <>

	Call gvir_init_config() in GVirConfig test programs
	While not strictly necessary, this sets up glib logging properly on
	older glib so that debug logs are not shown by default.

2012-01-03  Christophe Fergeau  <>

	Add gvir_config_domain_graphics_vnc_set_password
	Based on the similar patch for SPICE

2012-01-02  Zeeshan Ali (Khattak)  <>

	API to set SPICE password

2011-12-23  Christophe Fergeau  <>

	Fix gvir_config_domain_sound_set_model
	It's creating an unwanted extra <sound> XML node:
	  <sound model="xxx">
	instead of the correct
	<sound model="xxx">

2011-12-22  Zeeshan Ali (Khattak)  <>

	Bump version

2011-12-22  Christophe Fergeau  <>

	Add GVirConfigDomainSound

	Add python example for LibvirtGConfig

2011-12-19  Daniel P. Berrange  <>

	Ignore generated .vapi files

	Update min libvirt to 0.9.7

	Update NEWS for 0.0.3 release

	Fix build by exporting missing gvir_config_xml_doc APIs

	Update version in all .sym files
	Since there are ABI changes, update the version in all .sym
	files to force a rebuild of apps

	Add binding for virDomainOpenGraphics

	Add binding for virDomainOpenConsole

	Add support for configuring network bridges

2011-12-15  Christophe Fergeau  <>

	Add annotations for gvir_stream_add_watch{_full}
	This should silence this compile warning:
	  GEN    LibvirtGObject-1.0.gir
	libvirt-gobject-stream.c:603: Warning: LibvirtGObject:
	gvir_stream_add_watch: a rgument func: Missing (scope) annotation for
	callback without GDestroyNotify (v alid: call, async)

	This also adds API documentation for these functions.

	Add gvir_config_storage_pool_set_pool_type

2011-12-13  Christophe Fergeau  <>

	Add GVirConfigStorage* to creation test

	Add methods to link GVirStorage* classes together
	GVirConfigStorageVolBackingStore and GVirConfigStorageVolTarget can be
	associated with a GVirConfigStorageVol.

	GVirConfigStoragePoolSource and GVirConfigStoragePoolTarget can be
	associated with a GVirConfigStoragePool.

	GVirConfigStoragePermissions can be set on either a
	GVirConfigStorageVolTarget or a GVirConfigStoragePoolTarget.

	Add GVirConfigStoragePermissions setters

	Add gvir_config_storage_pool_target_set_path

	Add GVirConfigStoragePoolSource setters

	Add GVirConfigStorageVolBackingStore setters

	Add gvir_config_storage_vol_target_set_format

	Add GObject boilerplate for GVirConfigStorage*
	We'll need several helper classes to implement configuration of
	storage pools and volumes. This commit introduces all of these
	in one go. It's just the GObject boilerplate, the actual code will
	come in other commits. GVirConfigStoragePermissions is namespaced this
	way because it will be used by both GVirConfigStoragePoolTarget and

	Add GVirConfigStoragePool setters

	Add some GVirConfigStorageVol setters

	Add missing items in GVirConfigDomainVirtType
	Put all the items available in virDomainVirt

	Fix gvir_config_domain_disk_set_target_bus API
	The bus type is actually an enum, let's reflect that in
	libvirt-gconfig API

	Add GVirConfigDomainInterface setters
	These attributes are valid for all types deriving from
	GVirConfigDomainInterface so we add it to the base class.

	Add GVirConfigDomainInterfaceUser boilerplate

2011-12-07  Christophe Fergeau  <>

	Add "priority" argument to gvir_stream_add_watch_full
	This is more consistent with what all the other glib _full APIs
	are doing.

2011-12-07  Daniel P. Berrange  <>

	Only enable vala for Fedora 16 and later

2011-12-06  Daniel P. Berrange  <>

	Allow cancelling gvir_stream_send_all & gvir_stream_receive_all
	Add GCancellable parameters to gvir_stream_send_all and
	gvir_stream_receive_all to allow I/O to be interrupted
	before completion

	Add flags for controling how domains are started

	Fix copyright header on chardev related classes

	Add vala files to RPM spec

2011-12-06  Christophe Fergeau  <>

	Add test for GVirConfigConsole

	Add GVirConfigDomainChardevSourcePty

	Implement gvir_config_domain_chardev_add_source
	This is used to associate a ChardevSource (pty, file, ...) with a
	Chardev (console, serial, ...).

	Introduce GVirConfigDomainChardevSource

	Add objects for dealing with <console> devices
	Add an abstract GVirConfigDomainChardev object for <console>,
	<serial>, ... devices and a GVirConfigDomainConsole implementation.
	This needs to be completed with a separate GVirConfigDomainChardevSource
	inheritance tree which will be specialized to
	GVirConfigDomainChardevSourcePty, ... and GVirConfigDomainChardev will
	offer a helper function to attach a GVirConfigDomainChardevSource to
	a GVirConfigDomainChardev

	Use gvir_error_set_literal in more places
	GVirConnection has some gvir_set_error uses that can be replaced
	by gvir_set_error_set_literal. When passing a single string, this is
	safer since we are guaranteed that unwanted printf-format sequences
	in the string won't cause issues.

2011-12-05  Christophe Fergeau  <>

	Add gvir_config_domain_set_lifecycle
	This is used to control what happens (restart, stop, ...) to the VM
	when it crashes, shuts down, ...

2011-12-05  Zeeshan Ali (Khattak)  <>

	Add wrapper for volume deletion API

2011-12-05  Daniel P. Berrange  <>

	Introduce gvir_set_error (and friends) & convert all code
	The pattern

	    GError **error;
	    *err = gvir_error_new(...)

	is dangerous because 'err' could be NULL, and it is tedious
	to expect everyone to check. Introduce a new set of APIs
	for setting errors

	    gvir_set_error(err, ...)

	and convert all callers to this new pattern

2011-12-01  Daniel P. Berrange  <>

	Update copyright dates s/2010/2010-2011/

	Add files for 'make syntax-check' rules from GNULIB
	The 'syntax-check' rule validates various coding style requirements.
	It is run as part of the regular automated builds

	* GNUmakefile, syntax-check rules (from GNULIB)
	* Local extra rules & exclusions
	* build-aux/useless-if-before-free,
	  build-aux/vc-list-files: Helpers for syntax check (from
	* Run syntax-check as part of build
	* Ensure GNUmakefile exists in VPATH builds

	Add <config.h> to test case files

	Remove trailing whitespace from

	Use test -d FOO && test -d BAR instead of test -d FOO -a -d BAR
	For greater portability do not rely on the test binary having
	a -a option

	Remove trailing blank lines from all files

	Remove use of '@' in makefiles
	*, python/ Remove use of @FOO@ in favour
	  of $(FOO)

	Fix copyright header  s/Red Hat/Red Hat, Inc./

	Remove useless if before xmlFreeDoc

	Remove indentation with TABs from &

	Ensure that the generated XML is indented in a pretty format

	Add more files to ignore list

	Add the domain OS type for containers

	Add support for <memballoon> configuration

	Fix missing backslash in noinst_HEADERS for libvirt-gconfig

2011-12-01  Zeeshan Ali (Khattak)  <>

	Correct size of GVirStoragePoolInfo.available

	Wrap storage volume info API

	Wrap storage pool info API

2011-12-01  Daniel P. Berrange  <>

	Fix file headers / description in gconfig classes

	Remove redundant #includes from all gconfig files
	The #include <string.h> and #include <libxml/tree.h> is not
	required in the vast majority of files

	Add support for setting security labels
	Add support for the <seclabel> element via a new object

	* libvirt-gconfig-domain-seclabel.c, libvirt-gconfig-domain-seclabel.h,, libvirt-gconfig.h, libvirt-gconfig.sym: New objects
	* libvirt-gconfig-domain.c, libvirt-gconfig-domain.h: API to
	  associate seclabel with an domain

	Add objects for dealing with SDL and VNC graphics config
	Add GVirConfigDomainGraphicsSdl and GVirConfigDomainGraphicsVnc
	Also change SPICE to use a signed int for port number and add
	ability to set autoport & tls port attributes

	* libvirt-gconfig/,
	  libvirt-gconfig/libvirt-gconfig.sym: Add new objects
	* libvirt-gconfig/libvirt-gconfig-domain-graphics-spice.c,
	  Add autoport & tls port setter, change port setter to use
	  a signed int

	Add API for appending a new device to the domain
	The gvir_config_domain_set_devices API replaces the entire
	list of devices, but when building up a config incrementally
	it is useful to append device one at a time. Thus we need
	a gvir_config_domain_add_device method

	* libvirt-gconfig/libvirt-gconfig-domain.c,
	  libvirt-gconfig/libvirt-gconfig.syms: gvir_config_domain_add_device

	Add API for setting virt type
	Add gvir_config_domain_set_virt_type and

	* libvirt-gconfig-domain.c, libvirt-gconfig-domain.h,
	  libvirt-gconfig.h, libvirt-gconfig.sym: Add new APIs

	Ensure internal copy of URI is not NULL
	It is permissible to pass in NULL for a URI to libvirt, which
	causes it to probe for a supported driver. In such a case we
	should populate priv->uri with the resulting probed URI after
	opening the connection

	* libvirt-gobject/libvirt-gobject-connection.c: Populate URI
	  after opening connection, if NULL

	Add support for setting <filesystem> elements
	Create a new GVirConfigDomainFilesys object for dealing with
	the <filesystem> element.

	* libvirt-gconfig-domain-filesys.c, libvirt-gconfig-domain-filesys.h,, libvirt-gconfig.sym, libvirt-gconfig.h: New
	  GVirConfigDomainFilesys object
	* libvirt-gconfig-object.c, libvirt-gconfig-object-private.h: Add
	  gvir_config_object_delete_node for removing an XML node

	Add setters for kernel/ramdisk/cmdline/init in GVirConfigDomainOS
	Enable setting of the <kernel>, <ramdisk>, <cmdline> and <init>
	elements inside <os>...</os>.

	* libvirt-gconfig/libvirt-gconfig-domain-os.c,
	  libvirt-gconfig/libvirt-gconfig.sym: Add new setters

2011-11-30  Christophe Fergeau  <>

	Fix potential race in GVirObjectConnection::domain_event_cb
	This method starts by looking up a domain in priv->domains, and later,
	depending on the kind of event that occurred, it may remove this
	domain from priv->domains. While the individual operations (lookup,
	removal) are protected by priv->lock, there is no guarantee that the
	looked up domain and even priv->domains will stay unchanged when
	priv->lock isn't held.

	In particular, gvir_connection_close will destroy priv->domains which
	will unreference all the domains it contains (potentially destroying
	them too), and gvir_connection_fetch_domains will change priv->domains

	To avoid these issues, this commit takes a reference on priv->domains
	so that it doesn't get away behind our back, and it takes a reference
	on the looked up domain too to ensure it stays alive for the duration
	of domain_event_cb run.

	Fix memory leaks in test-domain-create
	Before the introduction of GVirConfigXmlDoc, we couldn't
	destroy the objects deriving from GVirConfigObject without
	memory corruption. Now that we have GVirConfigXmlDoc, we can
	make sure the memory we allocate for our various
	GVirConfigObject instances are properly cleaned up.

	Return a GVirConfigObject from gvir_config_object_replace_child
	This makes it possible to use the other GVirConfigObject helpers
	with the new child, and hides libxml from one more place in our API.

	Return a GVirConfigObject from gvir_config_object_add_child
	This makes it possible to use the other GVirConfigObject helpers
	with the new child, and hides libxml from one more place in our API.

	Simplify GVirConfigDomainGraphicsSpice creation
	Now that we have gvir_config_object_set_attribute, we can use
	the gvir_config_object_new{_from_xml} helpers.

	Simplify GVirConfigDomainInterfaceNetwork creation
	Now that we have gvir_config_object_set_attribute, we can use
	the gvir_config_object_new{_from_xml} helpers.

	Use gvir_config_object_set_attribute where appropriate

	Add gvir_config_object_set_attribute{_with_type}

	Use gvir_config_object_attach where appropriate
	This allows us to properly refcount the underlying xmlDocPtr (and
	the associated xmlNodes) to avoid trying to free twice the same
	xmlNodes when disposing of GVirConfigObject referencing the same

	Add gvir_config_object_attach
	It's needed to be able to keep track of references on the underlying
	GVirConfigXmlDoc when building a bigger xml tree from smaller
	separate xml nodes.

	GVirConfigObject is no longer an abstract type
	Since we want to use GVirConfigObject as a simple wrapper over
	xmlNodePtr, we need to be able to create instances of this type for
	"arbitrary" xml nodes.

	Set GVirConfigObject::doc during object creation
	Now that we have a refcounted GVirConfigXmlDoc type, make sure we use
	it when creating objects deriving from GVirConfigObject.

	Add GVirConfigObject::doc property
	It will be used to refcount the xml data and make sure we only
	free it when all references have went away.

	Add GVirConfigXmlDoc type
	This class derives from GObject and wraps an xmlDocPtr. It will be
	useful to refcount xmlDoc so that it can be shared between multiple
	GVirConfigObject instances.

	Fix gvir_config_domain_clock_set_variable_offset
	It was creating an extra <clock> node as a child of the "main" one
	which is not what was intended

2011-11-30  Zeeshan Ali (Khattak)  <>

	Remove transient domain reference on shutdown

	Rely on libvirt API to detect transient domains

2011-11-29  Christophe Fergeau  <>

	gir: use libraries from build tree, not installed ones
	If we don't explicitly mention path to our uninstalled libraries
	to g-ir-scanner, it will use installed libvirt-* libraries instead
	of the ones we just built to run a binary during the generation of
	the gir file. However this binary will have been compiled with the
	uninstalled ones,
	This is an issue if the installed libraries are not ABI compatible
	with the uninstalled one, and will cause a compile failure because
	the binary will fail to run.
	This fix has been suggested by Colin Walters (gobject-introspection

	gir: Use --pkg=libxml-2.0 instead of LIBXML2_CFLAGS
	g-ir-scanner has a standard way of getting the flags for libraries
	providing .pc files, this commit uses this --pkg flag for libxml
	instead of using LIBXML2_CFLAGS we computed ourselves.

	Fix make distcheck
	Do not ship autogenerated glib enum definitions in the tarball,
	otherwise they won't get regenerated in the build directory when
	using a tarball, and rules trying to find these files in the build
	directory will fail (eg the gir generation rule)

	Cleanup GIR generation rules
	Remove some redundant arguments (--pkg seems unneeded when
	--include is used), most include paths are unneeded, ...

	Fix GIR generation
	Overriding PKG_CONFIG_PATH when generating LibvirtGObject-1.0.gir
	is wrong since this means that if glib/gio/... are installed in
	a prefix that is not one of the default pkg-config paths, then
	they won't be found. PKG_CONFIG_PATH is overridden so that
	g-ir-scanner can find LibvirtGLib-1.0 and LibvirtGConfig-1.0 in
	the build tree. Since g-ir-scanner provides --include-uninstalled
	for that purpose, use that instead.

	Link libvirt-gobject with gthread
	It uses GMutex so it needs to be linked with gthread

	Add various missing packages to libvirt-gobject-1.0.pc

2011-11-29  Daniel P. Berrange  <>

	Ensure debug defaults to off for all glib versions
	The previous patch changed all code to directly call g_debug().
	This relies on the fact that glib >= 2.31 defaults to not
	printing debug messages. The result is that for older glib we
	now pollute the stderr with debug messages.

	This introduces 3 env vars for controlling libvirt debug,
	though on glib >= 2.31 the standard G_LOG_MESSAGES env can
	be used instead.

	* libvirt-glib/libvirt-glib-main.c: Check for LIBVIRT_GLIB_DEBUG
	  env var
	* libvirt-gobject/libvirt-gobject-main.c: Check for
	* libvirt-gconfig/libvirt-gconfig-main.c: Check for
	* libvirt-gconfig/libvirt-gconfig-main.h, libvirt-gconfig/libvirt-gconfig.h,
	  libvirt-gconfig/libvirt-gconfig.sym: Add new files
	* libvirt-gconfig/, libvirt-glib/,
	  libvirt-gobject/ Set a default G_LOG_DOMAIN to
	  allow filtering the library messages

2011-11-29  Zeeshan Ali (Khattak)  <>

	Remove now redundant debug system
	GLib >= 2.31 filters debug messages by default now[1] and provides ways
	to output debug log from selected domains only. This patch won't be any
	good without defining proper fine-grained log domains though.

	Ensure 'domain-added' signal on transient domain creation

2011-11-29  Daniel P. Berrange  <>

	Convert GVirInputStream/GVirOutputStream over to use watches
	Since virStreamEventAddCallback only allows a single callback
	to be registered,  GVirInputStream/GVirOutputStream should not
	use that directly. Instead they should use the gvir_stream_add_watch

	* libvirt-gobject/libvirt-gobject-input-stream.c,
	  libvirt-gobject/libvirt-gobject-output-stream.c: Convert to
	  use gvir_stream_add_watch

	Cleanup streams coding style violations

	Add missing exports of GVirStream APIs
	* libvirt-gobject/libvirt-gobject.sym: Export gvir_stream_receive,
	  gvir_stream_send, gvir_stream_send_all

	Add support for creating watches on streams
	The GIO GInputStream/GOutputStream async model for I/O does not
	work for working with non-blocking bi-directional streams. To
	allow that to be done more effectively, add an API to allow
	main loop watches to be registered against streams.

	Since the libvirt level virStreamEventAddCallback API only allows
	a single callback to be registered to a stream at any time, the
	GVirStream object needs to be multiplexing of multiple watches into
	a single libvirt level callback.

	Watches can be removed in the normal way with g_source_remove

	* libvirt-gobject/libvirt-gobject-stream.c,
	  libvirt-gobject/libvirt-gobject.sym: Add gvir_stream_add_watch

	Document some of the coding style conventions required
	* HACKING: Add notes on coding style conventions

2011-11-24  Zeeshan Ali (Khattak)  <>

	Bump version

2011-11-24  Daniel P. Berrange  <>

	Fix VPATH build wrt enum types
	* libvirt-gconfig/ Built files should live in builddir
	* libvirt-gconfig/libvirt-gconfig.sym: Export enum types

2011-11-23  Christophe Fergeau  <>

	Don't memset GObject private data to 0
	The GObject private data allocated with g_type_class_add_private
	will be automatically zero'ed when the GObject is created so we
	don't need to memset it to 0.

	Add GVirConfigDomainVideo
	v2: use g_return_if_fail to test function args for sanity
	v3: rename to GVirConfigDomainVideo

	Add basic GVirConfigDomainGraphicsSpice
	Only the (non-TLS) port can be set on it

	v2: rename to GVirConfigDeviceGraphicsSpice
	    fix node creation (missing "type" attribute)
	    derive GVirConfigDeviceGraphicsSpice from GVirConfigDeviceGraphics
	    use g_return_if_fail to test function args for sanity
	v3: rename to GVirConfigDomainGraphicsSpice

	Add GObject boilerplate for GVirConfigDomainGraphics
	This is an abstract type which will be used as a base class for the
	various type of <graphics> devices (spice, vnc, ...)

	v3: rename to GVirConfigDomainGraphics

	Add GVirConfigDomainInput
	v2: use enum for input bus type
	    use g_return_if_fail to test function args for sanity
	v3: rename to GVirConfigDomainInput

	Add <network> to creation test

	Add gvir_config_domain_interface_network_set_source

	Add GVirConfigDomainInterfaceNetwork
	v2: use g_return_if_fail to test function args for sanity
	v3: rename to GVirConfigDomainInterfaceNetwork

	Add GObject boilerplate for GVirConfigDomainInterface
	This base class is mainly useful as a generic type when we manipulate
	list of interfaces regardless of their actual type.

	v3: rename to GVirConfigDomainInterface since GVirConfigInterface
	    has a different purpose

	Add test for adding a disk device

	More GVirConfigDomainDisk setters
	v2: fix gvir_config_device_disk_set_source
	    use g_return_if_fail to test function args for sanity

	Add gvir_config_object_add_child
	It's similar to gvir_config_object_replace_child except that if the
	current node already has a child with the correct name, it returns
	the existing child instead of replacing it.

	v2: instead of adding an argument to gvir_config_object_new_child,
	split the function in 2 separate ones, gvir_config_object_add_child
	and gvir_config_object_replace_child.
	    use g_return_if_fail to test function args for sanity

	Add gvir_config_domain_set_devices
	v2: use g_return_if_fail to test function args for sanity

	Add various GVirConfigDomainDisk setters
	v2: use g_return_if_fail to test function args for sanity

	Add gobject boilerplate for GVirConfigDomainDisk
	v3: rename to GVirConfigDomainDisk

	Add gobject boilerplate for GVirConfigDomainDevice
	This is an abstract type which will be used as a base class for
	all objects stored in the <devices> section of a domain.

	v3: rename to GVirConfigDomainDevice

	Add GVirConfigDomain::vcpu

	Add test for GVirConfigDomainOs

	Implement gvir_config_domain_set_os
	v2: use g_return_if_fail to test function args for sanity

	Add some GVirConfigDomainOs setters
	v2: merged several related commits
	    use safer g_strcmp0 for string comparison
	    use g_return_if_fail to test function args for sanity

	Add gobject boilerplate for GVirConfigDomainOs
	v3: rename from GVirConfigOs to GVirConfigDomainOs

	Create clock object in domain creation test

	Add gvir_config_genum_get_nick helper
	We will often need to convert from an enum to its string
	representation, add an helper for that to avoid duplicating that

	v2: moved before gvir_config_clock_set_offset implementation since
	it needs it

	Use glib-mkenums to register enums with glib
	We don't currently have any enum in our API, but we will need some.
	This commit adds the generation of libvirt-gconfig-enum-types.[ch]
	using glib-mkenums. These files will register the various enums
	that will get added to libvirt-gconfig header files with glib.

	v2: move libvirt-gconfig-enum-types.h to HEADERS in so that
	it's installed

	Add gvir_config_domain_set_clock
	The implementation is likely to need to be completed later. We
	might want to store pointers from GVirConfigDomain to the associated
	GVirConfigDomainClock, from GVirConfigDomainClock to the GVirConfigDomain
	that contains it. Since I'm not sure yet if they will be needed, I chose
	to keep the implementation simple.

	v2: use g_return_if_fail to test function args for sanity

	Add some GVirDomainConfigClock setters
	v2: use g_return_if_fail to test function args for sanity
	v3: fix typo in gvir_config_domain_clock_set_variable_offset
	    ("timezone" -> "adjustment")

2011-11-22  Christophe Fergeau  <>

	Add gobject boilerplate for GVirConfigDomain{Clock,Timer}
	v3: rename from GVirConfig* to GVirConfigDomain*

	Use new helpers to simplify gvir_config_domain_set_features

	Add gvir_config_object_replace_child helper
	This allows us to factor the code to add an XML node to a config

	v2: use g_return_if_fail to test function args for sanity

	replace object

	Make some GVirConfigObject helpers private
	At this point, I'm not sure how/if the library user should be able
	to directly manipulate the XML data wrapped by a GVirConfigObject.
	It's preferrable to hide this API from the user until we have a
	clearer idea how to expose it.

	Remove unused prototype for gvir_config_object_parse
	There is no corresponding implementation so no need to keep this

	Remove unneeded blank line in *_class_init

2011-11-22  Daniel P. Berrange  <>

	Update NEWs with more 0.0.2 release notes

	Update COPYING file to have newer FSF address

	Update RPM specfile with latest Fedora review feedback

	Don't reference GError **err parameter if it is NULL

	Ensure domains & pools hash tables in connection are non-NULL

	Add API for creating transient domains

	Uncomment & fix code for returning config objects

	Change all flags from guint64 to guint to match libvirt type

	Add support for writing to streams

2011-11-22  Zeeshan Ali (Khattak)  <>

	Release 0.0.2

2011-11-21  Zeeshan Ali (Khattak)  <>

	Add API to redefine an existing domain

2011-11-18  Guido Günther  <>

	Adjust example to pygobject-3.0
	which doesn't allow to "import gtk" anymore. Use the gir version

2011-11-17  Daniel P. Berrange  <>

	Add libxml-2.0 to libvirt-gconfig-1.0.pc
	The libvirt-gconfig header files depend on the libxml header
	files, so this must be expressed in the pkgconfig file to
	ensure the include path for libxml2 gets added to the compiler

2011-11-16  Marc-André Lureau  <>

	Expicitely call virInitialize() to avoid connection races
	Credits to Daniel for pointing out the solution.

2011-11-16  Daniel P. Berrange  <>

	Fix typo in

	Add missing deps on libxml2-devel & libtool. Don't introspect on RHEL6

	Add download / mailing list links to README

2011-11-16  Nirbheek Chauhan  <>

	Fix parallel build with vala bindings

2011-11-16  Zeeshan Ali (Khattak)  <>

	Release 0.0.1

	Add some basic information to README

2011-11-15  Zeeshan Ali (Khattak)  <>

	Also distribute private headers
	Private headers just shouldn't be installed but still distributed as
	they are required during the build. Fixes `make distcheck`.

2011-11-14  Marc-André Lureau  <>

	Use G_DEFINE_BOXED_TYPE for boxed types

	Copy G_DEFINE_BOXED_TYPE from GObject 2.26+

	Add GVirDomainDisk

	Add GVirDomainInterface

	Add GVirDomainDevice abstract class

2011-11-08  Christophe Fergeau  <>

	Use new creation helpers everywhere
	Use the new gvir_config_object_new{_from_xml} in all classes
	inheriting from GVirConfigObject. This simplifies the code in the
	_new methods creating empty objects. This commit also adds
	_new_from_xml methods to all these objects.

	Fix creation of empty XML document
	It's not enough to assign xmlDocPtr::children to set the
	document root, xmlDocSetRootElement must be used instead.

	Add gvir_config_object_new{_from_xml} helpers
	This factors the code that is repeated in the _new methods of
	all classes deriving from GVirObject

	Add GVirConfigDomain::features

	Add GVirConfigDomain::memory

	Validate document in parsing test
	Add a call to gvir_config_object_validate in test-domain-parse.c
	However at the moment this call is purely informative since none
	of the tests is a valid domain XML description.

	Add test-domain-duplicate.xml which currently fails
	This test has 3 duplicate "name" nodes in the domain XML, I don't
	know what the right behaviour is in this case :)

	Add gvir_config_object_set_node_content
	It's used to set the content of a node in a GVirConfigObject to
	a given value, and will replace any existing node with the same

	Add gvir_config_object_get_node_content
	There will be quite a few getter functions returning a string
	contained in one of the nodes of a GVirConfigObject, so better to
	make it a one-liner to achieve this.

	Remove GVirConfigObject::doc
	Now that the parsing is done before creating the object, this
	member is no longer useful. Moreover, it's redundant with the ::node
	member. Remove it and rely on always having an xmlNodePtr available
	to represent the config object.

	Remove GError argument from GVirConfigObject::node getter
	Since this function no longer tries to do XML parsing, there is
	no error to report.

	Only do XML parsing when creating config objects
	This commit changes gvir_config_domain_new_from_xml not to operate
	on an existing object. This makes it possible to call it to create
	an appropriate xmlNodePtr object which can then be used to construct
	an object derived from GVirConfigObject. This will also makes it
	possible to remove GVirConfigObject::doc in a subsequent commit.

	Remove xml parsing from gvir_config_*_new functions
	These functions now create empty config objects to be consistent
	with what gvir_config_domain_new does.

	Remove GVirConfigObject::docHandle
	GVirConfigObject also contains an xmlNodePtr which is more useful
	since it indicates the position of the current config object in
	the source XML file. Since xmlNode has a 'doc' member, having
	both an xmlNodePtr and an xmlDocPtr in GVirConfigObject is

	Add domain creation/parsing test

	Use gvir_config_object_to_xml

	Prefer gvir_config_object_to_xml over gvir_config_object_get_doc
	since the latter will be removed soon.

	Add gvir_config_object_to_xml

	Make the GVirConfigDomain::name property writable

	Implement gvir_config_domain_set_name

	Add gvir_config_domain_new to create an empty domain

	Rename gvir_config_domain_new
	Rename it to gvir_config_domain_new_from_xml since it takes an
	XML string as input. gvir_config_domain_new will be used to create
	a new empty domain.

	Add GVir::Config::Domain::name property
	For now, it's read-only, but is exposed as a gobject property too.

	Add GVirConfigObject::node property
	This property stores the XML node corresponding to the current
	configuration object in the XML tree. When creating configuration
	objects from a XML string, the XML file will be lazily loaded, and
	this property will be set.

	Add getters for GVirConfig xmlNode and xmlDoc
	They will be useful in subclasses to access the parsed document,
	and to external users needing to directly interact with the
	generated XML.

	gvir_config_object_parse: don't parse empty documents
	Report an error when trying to parse the current XML document
	associated with the GVirConfig object when no document has been

	Add helpers in libvirt-gconfig-helpers.[ch]
	These helper functions will be useful later on. These functions are
	not made available to the library user since we don't want to expose
	too much our libxml internals.

2011-11-07  Daniel P. Berrange  <>

	Add script for automatically generating the changelog during make dist

	Update .gitignore rules to include docs & other misc files

	Update AUTHORS file content

2011-11-07  Nirbheek Chauhan  <>

	Update to min libvirt 0.9.4 & fix invocation of vapigen
	libvirt-0.9.4 is needed for at least VIR_DOMAIN_EVENT_SUSPENDED_RESTORED

	$VAPIGEN from AC_PATH_PROG should be used instead of the raw binary `vapigen`
	otherwise it's not possible to override the vapigen binary to be used.

	* Use $VAPIGEN, and s/0.5.0/0.9.4/
	*, s/0.5.0/0.9.4/

2011-11-04  Daniel P. Berrange  <>

	Ensure enum header is installed

	Fix typo in

2011-11-03  Daniel P. Berrange  <>

	Fix compiler / linker flags passed to gtk-doc

2011-11-03  Zeeshan Ali (Khattak)  <>

	Ask gtkdoc-scan to generate the sections file
	This frees us from maintaining the sections file.

2011-11-03  Daniel P. Berrange  <>

	Don't include GTK docs in mingw32 RPM

	Add documentation to -devel RPMs

	Fix previous broken change to install header files

	Check vapigen supports --metadatadir in

	Disable gtk-doc in automated builds

	Ensure libvirt-gobject-1.0.deps is included in dist

	Fix passing of generated enum files to g-ir-scanner in VPATH builds

	Annotation unused variables in example program

	Ensure make distcheck enables gtkdoc and introspection

2011-11-01  Zeeshan Ali (Khattak)  <>

	Generate docs
	This patch adds gtk-doc-based documentation. The generated docs aren't
	very complete (or even correct) but this is a good start.

2011-10-27  Zeeshan Ali (Khattak)  <>

	Correct 2 signal signatures

	Async API to build & start storage pools

	Add API to build & start storage pools

2011-10-26  Zeeshan Ali (Khattak)  <>

	Add gvir_connection_create_storage_pool()
	API to create new storage pools.

2011-10-25  Zeeshan Ali (Khattak)  <>

	Set GError even if libvirt error is unknown

2011-10-21  Zeeshan Ali (Khattak)  <>

	Add 2 forgotten functions to libvirt-gobject.sym

2011-10-21  Marc-André Lureau  <>

	Fix vapigen on uninstalled environment

2011-10-20  Marc-André Lureau  <>

	Fix GIR scanner on uninstalled environment

2011-10-19  Marc-André Lureau  <>

	Fix wrong signals arguments

	Add gvir_domain_resume()
	A binding for virDomainResume().

	Remove vir_ prefix from default signal handler
	Let's keep the signal and default signal handler name in sync.

	gobject signals are generally not namespaced this way, removing
	this prefix makes things look a bit nicer.

	Add vapi bindings generation

2011-10-14  Christophe Fergeau  <>

	Use gvir-stream as GVirStream quark name
	The previous vir-g-stream name isn't consistent with the naming of
	all the other quarks used in libvirt-glib

	Remove vir- prefix from signals
	gobject signals are generally not namespaced this way, removing
	this prefix makes things look a bit nicer.

2011-10-13  Marc-André Lureau  <>

	Don't leak virStreams, take the reference
	Without this change, after virStreamNew() and
	g_value_dup_boxed() it will have refcnt = 2
	and will leak when GVirStream is destroyed.

2011-10-11  Marc-André Lureau  <>

	The input stream is owned by GVirStream, don't ref it

	Fail gracefully when hashtables are NULL
	Instead of the message:
	GLib-CRITICAL **: g_hash_table_get_values: assertion `hash_table !=
	NULL' failed

2011-10-06  Christophe Fergeau  <>

	Only call gvir_error_new after failed libvirt calls
	gvir_error_new is only meant to be used right after a failed
	libvirt function call, in other cases we should be calling
	g_error_new directly.

	Don't use empty message when building a GError
	After testing that 'message' is NULL, gvir_xml_error_new_literal
	is using it to build a GError. What was meant was to use

	Don't use empty message when building a GError
	After testing that 'message' is NULL, gvir_error_new_literal
	is using it to build a GError. What was meant was to use

2011-10-03  Marc-André Lureau  <>

	event: remove timeout and handle from arrays
	Otherwise, it will crash next time it goes find().

	==9856== Invalid read of size 4
	==9856==    at 0x84E4888: gvir_event_timeout_find (libvirt-glib-event.c:293)
	==9856==    by 0x84E48E4: gvir_event_timeout_update (libvirt-glib-event.c:308)
	==9856==    by 0x31AB04BBDB: virEventUpdateTimeout (event.c:122)
	==9856==    by 0x31AB148758: virNetClientStreamEventTimerUpdate (virnetclientstream.c:81)
	==9856==    by 0x31AB14991C: virNetClientStreamEventAddCallback (virnetclientstream.c:471)
	==9856==    by 0x31AB12944F: remoteStreamEventAddCallback (remote_driver.c:3484)
	==9856==    by 0x31AB108EAC: virStreamEventAddCallback (libvirt.c:14036)
	==9856==  Address 0x143be760 is 0 bytes inside a block of size 40 free'd
	==9856==    at 0x4A06928: free (vg_replace_malloc.c:427)
	==9856==    by 0x84E4AD6: gvir_event_timeout_remove (libvirt-glib-event.c:361)
	==9856==    by 0x31AB04BC2C: virEventRemoveTimeout (event.c:136)
	==9856==    by 0x31AB149B24: virNetClientStreamEventRemoveCallback (virnetclientstream.c:521)
	==9856==    by 0x31AB129566: remoteStreamEventRemoveCallback (remote_driver.c:3525)
	==9856==    by 0x31AB10918F: virStreamEventRemoveCallback (libvirt.c:14114)

	Turn GVirStream into a GIOStream
	Allows to read async from a stream with GVirInputStream.
	This is modelled after GSocket.

	enums: fix incorrect prefix strip

	gir: fix introspection of asyncs and array delegate
	For some weird reason, gir doesn't like "opaque" for closure data,
	but only "user_data".

	delay event handle/timeout freeing to avoid dead lock
	Can be reproduced with the updated test.

	Daniel commented:
	"the libvirt default event loop already does a very similar
	thing, since we need to be re-entrant safe."

	build: Add missing <package> and <c:include> in gir
	This is required for generating source-level bindings, for vala

	Silence a compilation warning

	Connect a bunch of domain event to signals

	Make get_uuid() return a const string
	The string is not so large, we avoid fragmentation and duplication (especially in hashtable)

	Update GVirConnection signals

	Add a few GVirDomain detailled signals

	Plug a memleak

	Add .mailmap for common aliases

	Register event using GOnce to avoid multiple initializations

2011-10-03  Marc-André Lureau  <>

	doc: add some missing return value documentation

2011-10-02  Guido Günther  <>

	Explicitly link conn-test example against libgobject
	Otherwise the build fails with:

	/usr/bin/ld: conn_test-conn-test.o: undefined reference to symbol 'g_type_check_instance_cast'
	/usr/bin/ld: note: 'g_type_check_instance_cast' is defined in DSO /usr/lib/ so try adding it to the linker command line
	/usr/lib/ could not read symbols: Invalid operation
	collect2: ld returned 1 exit status

2011-09-28  Zeeshan Ali (Khattak)  <>

	API for storage pool volume management

	Actually provide gvir_storage_vol_get_path()
	This was only declared in header previously but not implemented.

2011-09-27  Zeeshan Ali (Khattak)  <>

	Refactor two very huge functions a bit

	Plug a leak

	Remove redundant 'Config' in GIR identifiers
	libvirt-gconfig is in a separate namespace than libvirt-gobject so there
	is not reason to expose 'Config' part of identifiers to high-level

	Correct some more C&P mistakes

	Correct some C&P mistakes

	API to deal with storage pool(s)
	Add API to fetch, list, retrieve & find storage pool(s) on a connection.

	Ability to create new domains

2011-09-26  Zeeshan Ali (Khattak)  <>

	Remove redundant empty line

	Fix some obvious c&p mistakes

2011-09-16  Zeeshan Ali (Khattak)  <>

	GVirConfigObjct should be abstract

2011-08-10  Daniel P. Berrange  <>

	Fix typo in include path s/buildir/builddir/

2011-07-14  Marc-André Lureau  <>

	Remove useless g_print debugging message

	Add gvir_domain_screenshot

	Add a binding for virStreamPtr as GVirStream

	Fix incorrect object freeing
	The code updating object handles incorrectly used g_object_unref
	instead of virDomainFree or equivalent method

	Expose virConnectPtr handle as a property
	The GVirConnection object needs to have a 'handle' property
	which exposes the virConnectPtr handle

	Fix gi-scanner warnings by adding missing annotation
	Add missing annotations, remove currently unsupported 'default 0'
	annotation and comment out unimplemented methods

	Introspection: Update to new g-i command syntax
	Add --warn-all, use --identifier-prefix and
	--symbol-prefix (--strip-prefix is deprecated).

2011-07-14  Daniel P. Berrange  <>

	Fix error quark strings
	Error quark strings should be of the form 'gvir-storage_pool'
	not 'vir-g-storage_pool'

	Add validation of XML documents against RNG
	Implement the gvir_config_object_validate using libxml2's RNG
	schema validation APIs.

	Add a base set of wrapper objects for every libvirt object
	Create a new subclass of GVirObject for every libvirt
	managed object type. Also update the GVirConnection refresh
	code to be threadsafe

	Add basic object configuration classes
	Every libvirt object needs to have a corresponding object for
	managing documents in the object's XML schema. For this task
	create a subclass of GVirConfigObject for each libvirt object.

2011-06-07  Daniel P. Berrange  <>

	Add note reminding people how to run from the source tree

	Split the XML config mgmt objects into a separate libvirt-gconfig library
	The XML configuration management objects are useful even for apps
	which don't wish to use the object management classes, eg for people
	using the CIM/SNMP/AMQP agents to talk to libvirt, instead of the
	native libvirt API. Split them out into a separate libvirt-gconfig
	library, which does not link to

	Also split the RPM up into libvirt-glib, libvirt-gconfig and
	libvirt-gobject to match the library names

2011-02-11  Daniel P. Berrange  <>

	Add missing LIBVIRT_CFLAGS for building exmaple programs

2010-09-10  Daniel P. Berrange  <>

	Allow domain fetch to run async. Allow connection open cancel
	Allow the domain fetch operation to be run asynchronously and
	be cancelled at any time. Also allow synchronous connection
	open to be cancelled.

	* examples/conn-test.js, examples/ Make tests
	  mirror images of each other
	* libvirt-gobject/libvirt-gobject-connection.c,
	  libvirt-gobject/libvirt-gobject-connection.c: Allow async
	  domain fetch & connection open cancel
	* libvirt-gobject/libvirt-gobject-domain.c,
	  libvirt-gobject/libvirt-gobject-domain.h: Add flags params

	Introduce config manager class and connection manager
	Introduce a GVirXmlConfig class for representing an object's
	XML configuration. Subclass it with GVirDomainConfig.
	Introduce a GVirManager class to look after a list of
	connection objects.

	* libvirt-gobject/libvirt-gobject-connection.c: Add annotation
	  to allow null opaque param
	* libvirt-gobject/libvirt-gobject-connection.h: Remove redundant
	* libvirt-gobject/libvirt-gobject-domain-config.c,
	  libvirt-gobject/libvirt-gobject-domain-config.h: New class
	  for domain configs
	* libvirt-gobject/libvirt-gobject-domain.c,
	  libvirt-gobject/libvirt-gobject-domain.h: Return a
	  GVirDomainConfig instead of the direct char *xml string
	* libvirt-gobject/libvirt-gobject-main.c,
	  libvirt-gobject/libvirt-gobject-main.h: Fix up includes
	* libvirt-gobject/libvirt-gobject-manager.c,
	  libvirt-gobject/libvirt-gobject-manager.h: New class
	  for managing a list of connections
	* libvirt-gobject/libvirt-gobject-xml-config.c,
	  libvirt-gobject/libvirt-gobject-xml-config.h: Generic
	  base class for handling XML configs
	* libvirt-gobject/libvirt-gobject.h: Add new includes
	* libvirt-gobject/libvirt-gobject.sym: Add new symbols
	* libvirt-glib/, libvirt-gobject/ Make
	  g-ir-scanner run quietly
	* examples/, examples/conn-test.js: More examples
	* Silent build

2010-09-09  Daniel P. Berrange  <>

	Fix pkgconfig files and include header locations
	To avoid potential version clashes, the headers should be
	installed into /usr/include/libvirt-glib-1.0/libvirt-glib
	instead of just /usr/include/libvirt-glib-1.0. The pkgconfig
	file should then use -I/usr/include/libvirt-glib-1.0

	*, Add
	* libvirt-glib/, libvirt-gobject/ Fix
	  include header directory
	*, Add
	  libvirt-gobject library
	* Rename to

2010-08-06  Daniel P. Berrange  <>

	Make GIR tools less verbose
	Remove the '-v/--verbose' flag from GIR tools & remove unused
	include paths

	Add API for accessing URI
	Add gvir_connection_get_uri() method. Fix lookup based on URI.
	Fix version name in symbols version file

	Flesh out GVirDomain class
	Add an API for converting a virErrorPtr into a GError *.

	Flesh out the GVirDomain class with basic constructor and

	Add APIs to GVirConnection class to allow fetching of
	GVirDomain objects

2010-07-27  Daniel P. Berrange  <>

	Change method/class prefix to gvir/GVir
	GObject introspection doesn't do so well at generating sensible
	method/class names if methods and classes use a different
	prefix (vir_g vs VirG). It can only cope with changes in case.
	Change the prefix to be 'gvir' (methods) and 'GVir' (classes)

	Provide a non-async open method for simple usage
	Not all apps require a full async open API call, so provide a
	blocking version as well. Renaming the async version to have
	an _async suffix

2010-07-26  Daniel P. Berrange  <>

	Add example program using javascript

	Register the event loop when loading libvirt gobject library

	Add some gobject introspection annotations

	Only initialize threading if it isn't already initialized

	Add libvirt-gobject library wrapping libvirt objects
	The library provides a wrapper around
	the libvirt API that exposes all its objects as GObject classes.
	This allows integration with the gobject signal system and gio
	async callback APIs.

	Re-arrange source to put it all under libvirt-glib/ subdir
	Remove the src/ and include/ directories, merging them into
	a single libvirt-glib to more closely align with standard
	glib style layout

	Add support for GObject Introspection
	Generate GObject introspection data for libvirt-glib, also make
	the library be versioned.

	Ensure event callbacks are threadsafe
	Take a global lock whenever changing any event callbacks to
	ensure thread safety

	Rename APIs to use lowercase + underscores to match glib style
	The libvirt style is virEventRegister while the GLib style is
	vir_g_event_register. This switches from the former to the
	latter so the API looks nicer to people familiar with GLib.

2009-08-03  Daniel P. Berrange  <>

	Add missing details argument to python demo (Guido Günther)
	* examples/ Add 'detail' argument

	Fix import of gtk module in python demo (Guido Günther)
	* examples/ Change import pygtk to import gtk

	Switch .hgignore to .gitignore

2009-05-19  Daniel P. Berrange  <>

	Fix recording of timers/handles

2008-11-28  Daniel P. Berrange  <>

	Add mingw32 specfile, and fix libvirt version to 0.5.0

	Fix mistaken use of POLL constants

2008-11-25  Daniel P. Berrange  <>

	Fix pkgconfig install path

	Use g_debug for logging

	Include event detail in printout

	Remove bogus configure flag

	Update for changes in public API to add freefunc

2008-11-04  Daniel P. Berrange  <>

	Fix FD event constant usage, and implement FD remove event

	Add python binding to glib & example program

2008-10-19  Daniel P. Berrange  <>

	Initial checkin