Re: [Qemu-devel] [PATCH] configure: save git working tree information in "pkgversion"

2016-06-01 Thread Kashyap Chamarthy
On Tue, May 31, 2016 at 05:04:04PM +0200, Laszlo Ersek wrote:
> When building QEMU from a git working tree (either in-tree or
> out-of-tree), it is useful to capture the working tree status in the QEMU
> binary, for the "-version" option to report.
> 
> Daniel suggested using the "pkgversion" variable (tied to the
> "--with-pkgversion" option) of the configure script for this. Downstream
> packagers of QEMU already use this option for customizing their builds,
> plus libvirtd captures "pkgversion" (with the "-version" option) in
> "/var/log/libvirt/qemu/$GUEST.log", whenever a guest is started.
> 
> The information we include in "pkgversion" is the output of git-describe,
> with a plus sign (+) appended if there are staged or unstaged changes to
> tracked files, at the time of "configure" being executed.
> 
> The content of "pkgversion" is not changed when "--with-pkgversion" is
> used on the command line.
> 
> Cc: "Daniel P. Berrange" 
> Cc: Kashyap Chamarthy 
> Signed-off-by: Laszlo Ersek 
> ---
>  configure | 38 ++
>  1 file changed, 38 insertions(+)

[...]

Thanks, this is quite handy as I often have multiple QEMU binaries, and
it'd be useful to associate the binary with a Git tree.

Just tested on a clean tree.

Before:

$ ./x86_64-softmmu/qemu-system-x86_64 -version
QEMU emulator version 2.5.50, Copyright (c) 2003-2008 Fabrice Bellard

After applying the patch:

$ ./x86_64-softmmu/qemu-system-x86_64 -version
QEMU emulator version 2.6.50 (v2.6.0-602-g0132639), Copyright (c) 2003-2008 
Fabrice Bellard

- - -

I see there's an in-progress discussion of "git describe --dirty" vs. the
plus-sign fallback.  For the current version:

Tested-by: Kashyap Chamarthy 

-- 
/kashyap



Re: [Qemu-devel] [PATCH] configure: save git working tree information in "pkgversion"

2016-06-01 Thread Fam Zheng
On Wed, 06/01 10:55, Laszlo Ersek wrote:
> (Anyway, this is moot now; I'll happily leave it to Fam! :))

Thanks, I wrote the code before you sent this, so I posted it today anyway.  :)

Also note that we shouldn't do this at configure time, because between
./configure and make, the tree can be modified. That's why my patch is in
Makefile, and always checks the "dirtiness".

Fam



Re: [Qemu-devel] [PATCH] configure: save git working tree information in "pkgversion"

2016-06-01 Thread Laszlo Ersek
On 05/31/16 19:45, Eric Blake wrote:
> On 05/31/2016 11:01 AM, Laszlo Ersek wrote:
> 
 Grepping git's Documentation/RelNotes/ directory, I find:
 - in "1.6.6.txt": the introduction of --dirty
 - in "1.7.6.4.txt": an apparently important bugfix for --dirty

 Version 1.7.6.4 of git was tagged on Sep 23 2011.

 Does this information help in deciding if we can use --dirty?
>>>
>>> 5 years old sounds new enough for my liking :-)
>>>
>>> I guess we could use --dirty and catch the non-zero exit code and just
>>> re-try without --dirty.
>>
>> But, if we can't use --dirty, I should probably use the plus-sign
>> fallback (we need *something* to mark a dirty state).
>>
>> In which case however, shouldn't we just go with the current patch,
>> which doesn't care about --dirty at all? Otherwise, some build hosts
>> will append "-dirty", and others will append "+".
>>
>> IMO we should either require --dirty, or go with the current patch.
> 
> Gnulib's build-aux/git-version-gen script doesn't yet use --dirty, but
> may be an inspiration for how to generate the same suffix:
> 
> # Test whether to append the "-dirty" suffix only if the version
> # string we're using came from git.  I.e., skip the test if it's "UNKNOWN"
> # or if it came from .tarball-version.
> if test "x$v_from_git" != x; then
>   # Don't declare a version "dirty" merely because a time stamp has changed.
>   git update-index --refresh > /dev/null 2>&1
> 
>   dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
>   case "$dirty" in
>   '') ;;
>   *) # Append the suffix only if there isn't one already.
>   case $v in
> *-dirty) ;;
> *) v="$v-dirty" ;;
>   esac ;;
>   esac
> fi
> 

BTW, my patch has a functionality bug. Consider the case when you change
some of the tracked files, then stage all those changes with "git add",
then *undo* the changes in the working tree only. In this case, my patch
will report "dirty" ("+"), because there will be both staged changes
(relative to the HEAD commit) and working tree changes (relative to the
index). But that's incorrect -- the working tree actually matches the
HEAD commit, so the build qualifies as "clean".

On the other hand, git-diff-index will do the right thing, namely:

   git-diff-index 
   compares the  and the files on the filesystem.

which is exactly right. The index (= the staged changes) are irrelevant
for a build; only the working tree matters.

(Anyway, this is moot now; I'll happily leave it to Fam! :))

Thanks
Laszlo



Re: [Qemu-devel] [PATCH] configure: save git working tree information in "pkgversion"

2016-05-31 Thread Laszlo Ersek
On 05/31/16 19:45, Eric Blake wrote:
> On 05/31/2016 11:01 AM, Laszlo Ersek wrote:
> 
 Grepping git's Documentation/RelNotes/ directory, I find:
 - in "1.6.6.txt": the introduction of --dirty
 - in "1.7.6.4.txt": an apparently important bugfix for --dirty

(*)


 Version 1.7.6.4 of git was tagged on Sep 23 2011.

 Does this information help in deciding if we can use --dirty?
>>>
>>> 5 years old sounds new enough for my liking :-)
>>>
>>> I guess we could use --dirty and catch the non-zero exit code and just
>>> re-try without --dirty.
>>
>> But, if we can't use --dirty, I should probably use the plus-sign
>> fallback (we need *something* to mark a dirty state).
>>
>> In which case however, shouldn't we just go with the current patch,
>> which doesn't care about --dirty at all? Otherwise, some build hosts
>> will append "-dirty", and others will append "+".
>>
>> IMO we should either require --dirty, or go with the current patch.
> 
> Gnulib's build-aux/git-version-gen script doesn't yet use --dirty, but
> may be an inspiration for how to generate the same suffix:
> 
> # Test whether to append the "-dirty" suffix only if the version
> # string we're using came from git.  I.e., skip the test if it's "UNKNOWN"
> # or if it came from .tarball-version.
> if test "x$v_from_git" != x; then
>   # Don't declare a version "dirty" merely because a time stamp has changed.
>   git update-index --refresh > /dev/null 2>&1

(
This is exactly the fix (*) that went into git v1.7.6.4 (and v1.7.7):

$ git log --oneline --reverse v1.7.6.3..v1.7.6.4

0f64bfa9567f ls-files: fix pathspec display on error
e9d4f7405b6a branch.c: use the parsed branch name
13d6ec913330 read_gitfile_gently(): rename misnamed function to read_gitfile()
9b0ebc722cfc clone: allow to clone from .git file
dbc92b072dd7 clone: allow more than one --reference
e6baf4a1ae1b clone: clone from a repository with relative alternates
2f633f41d695 check-ref-format --print: Normalize refnames that start with 
slashes
f3738c1ce919 Forbid DEL characters in reference names
385ceec1cb46 t3005: do not assume a particular order of stdout and stderr of 
git-ls-files
dff4b0ef30cd am: format is in $patch_format, not parse_patch
e622f41dcd97 git-mergetool: check return value from read
40ffc4987661 Merge branch 'gb/maint-am-patch-format-error-message' into maint
503359f13abc Merge branch 'mg/branch-set-upstream-previous' into maint
be5acb3b63af Merge branch 'mh/check-ref-format-print-normalize' into maint
406c1c4dd4a8 Merge branch 'nd/maint-clone-gitdir' into maint
84b051462fca Merge branch 'jc/maint-clone-alternates' into maint
85b3c75f4fd3 describe: Refresh the index when run with --dirty
a0b1cb60ab29 Merge branch 'cb/maint-ls-files-error-report' into maint
632052641517 Git 1.7.6.4

--> https://github.com/git/git/commit/85b3c75f4fd3
"describe: Refresh the index when run with --dirty"
)

> 
>   dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
>   case "$dirty" in
>   '') ;;
>   *) # Append the suffix only if there isn't one already.
>   case $v in
> *-dirty) ;;
> *) v="$v-dirty" ;;
>   esac ;;
>   esac
> fi

This seems to do the right thing, yes.

I'll submit a new version later.

Thanks!
Laszlo



Re: [Qemu-devel] [PATCH] configure: save git working tree information in "pkgversion"

2016-05-31 Thread Eric Blake
On 05/31/2016 11:01 AM, Laszlo Ersek wrote:

>>> Grepping git's Documentation/RelNotes/ directory, I find:
>>> - in "1.6.6.txt": the introduction of --dirty
>>> - in "1.7.6.4.txt": an apparently important bugfix for --dirty
>>>
>>> Version 1.7.6.4 of git was tagged on Sep 23 2011.
>>>
>>> Does this information help in deciding if we can use --dirty?
>>
>> 5 years old sounds new enough for my liking :-)
>>
>> I guess we could use --dirty and catch the non-zero exit code and just
>> re-try without --dirty.
> 
> But, if we can't use --dirty, I should probably use the plus-sign
> fallback (we need *something* to mark a dirty state).
> 
> In which case however, shouldn't we just go with the current patch,
> which doesn't care about --dirty at all? Otherwise, some build hosts
> will append "-dirty", and others will append "+".
> 
> IMO we should either require --dirty, or go with the current patch.

Gnulib's build-aux/git-version-gen script doesn't yet use --dirty, but
may be an inspiration for how to generate the same suffix:

# Test whether to append the "-dirty" suffix only if the version
# string we're using came from git.  I.e., skip the test if it's "UNKNOWN"
# or if it came from .tarball-version.
if test "x$v_from_git" != x; then
  # Don't declare a version "dirty" merely because a time stamp has changed.
  git update-index --refresh > /dev/null 2>&1

  dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
  case "$dirty" in
  '') ;;
  *) # Append the suffix only if there isn't one already.
  case $v in
*-dirty) ;;
*) v="$v-dirty" ;;
  esac ;;
  esac
fi

-- 
Eric Blake   eblake redhat com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature


Re: [Qemu-devel] [PATCH] configure: save git working tree information in "pkgversion"

2016-05-31 Thread Laszlo Ersek
On 05/31/16 17:43, Daniel P. Berrange wrote:
> On Tue, May 31, 2016 at 05:40:38PM +0200, Laszlo Ersek wrote:
>> On 05/31/16 17:14, Daniel P. Berrange wrote:
>>> On Tue, May 31, 2016 at 05:04:04PM +0200, Laszlo Ersek wrote:
 When building QEMU from a git working tree (either in-tree or
 out-of-tree), it is useful to capture the working tree status in the QEMU
 binary, for the "-version" option to report.

 Daniel suggested using the "pkgversion" variable (tied to the
 "--with-pkgversion" option) of the configure script for this. Downstream
 packagers of QEMU already use this option for customizing their builds,
 plus libvirtd captures "pkgversion" (with the "-version" option) in
 "/var/log/libvirt/qemu/$GUEST.log", whenever a guest is started.

 The information we include in "pkgversion" is the output of git-describe,
 with a plus sign (+) appended if there are staged or unstaged changes to
 tracked files, at the time of "configure" being executed.

 The content of "pkgversion" is not changed when "--with-pkgversion" is
 used on the command line.

 Cc: "Daniel P. Berrange" 
 Cc: Kashyap Chamarthy 
 Signed-off-by: Laszlo Ersek 
 ---
  configure | 38 ++
  1 file changed, 38 insertions(+)

 diff --git a/configure b/configure
 index b5aab7257b33..20a7ec5cc0fd 100755
 --- a/configure
 +++ b/configure
 @@ -4255,6 +4255,44 @@ if have_backend "dtrace"; then
  fi
  
  ##
 +# save git working tree information in pkgversion
 +
 +# If pkgversion has not been set to a non-empty string, fetch the output 
 of
 +# "git describe" into it. If the working tree is unclean (there are 
 staged or
 +# unstaged changes in tracked files), then append a plus sign.
 +#
 +# If we're not building from a git working tree, then pkgversion is not
 +# changed. Otherwise, git errors are fatal.
 +
 +if test -z "$pkgversion" && test -d "$source_path/.git"; then
 +  pkgversion=$(
 +export GIT_DIR=$source_path/.git
 +export GIT_WORK_TREE=$source_path
 +
 +git_desc=$(git describe)
 +git_exit=$?
 +if test $git_exit -ne 0; then
 +  exit $git_exit
 +fi
 +
 +git_changes=
 +for git_diff_option in "" --staged; do
 +  git diff $git_diff_option --quiet
 +  git_exit=$?
 +  case $git_exit in
 +  (0) ;;
 +  (1) git_changes=+
 +  ;;
 +  (*) exit $git_exit
 +  ;;
 +  esac
 +done
>>>
>>> An alternative to this would be to jus use
>>>
>>>  "git describe --dirty"
>>>
>>> which appends "--dirty" to its output if working tre has uncommitted
>>> changes.
>>
>> Good idea!
>>
>>> Not sure if the --dirty flag is a recent option or whether we can just
>>> assume it always exists.
>>
>> Grepping git's Documentation/RelNotes/ directory, I find:
>> - in "1.6.6.txt": the introduction of --dirty
>> - in "1.7.6.4.txt": an apparently important bugfix for --dirty
>>
>> Version 1.7.6.4 of git was tagged on Sep 23 2011.
>>
>> Does this information help in deciding if we can use --dirty?
> 
> 5 years old sounds new enough for my liking :-)
> 
> I guess we could use --dirty and catch the non-zero exit code and just
> re-try without --dirty.

But, if we can't use --dirty, I should probably use the plus-sign
fallback (we need *something* to mark a dirty state).

In which case however, shouldn't we just go with the current patch,
which doesn't care about --dirty at all? Otherwise, some build hosts
will append "-dirty", and others will append "+".

IMO we should either require --dirty, or go with the current patch.

Thanks
Laszlo



Re: [Qemu-devel] [PATCH] configure: save git working tree information in "pkgversion"

2016-05-31 Thread Daniel P. Berrange
On Tue, May 31, 2016 at 05:40:38PM +0200, Laszlo Ersek wrote:
> On 05/31/16 17:14, Daniel P. Berrange wrote:
> > On Tue, May 31, 2016 at 05:04:04PM +0200, Laszlo Ersek wrote:
> >> When building QEMU from a git working tree (either in-tree or
> >> out-of-tree), it is useful to capture the working tree status in the QEMU
> >> binary, for the "-version" option to report.
> >>
> >> Daniel suggested using the "pkgversion" variable (tied to the
> >> "--with-pkgversion" option) of the configure script for this. Downstream
> >> packagers of QEMU already use this option for customizing their builds,
> >> plus libvirtd captures "pkgversion" (with the "-version" option) in
> >> "/var/log/libvirt/qemu/$GUEST.log", whenever a guest is started.
> >>
> >> The information we include in "pkgversion" is the output of git-describe,
> >> with a plus sign (+) appended if there are staged or unstaged changes to
> >> tracked files, at the time of "configure" being executed.
> >>
> >> The content of "pkgversion" is not changed when "--with-pkgversion" is
> >> used on the command line.
> >>
> >> Cc: "Daniel P. Berrange" 
> >> Cc: Kashyap Chamarthy 
> >> Signed-off-by: Laszlo Ersek 
> >> ---
> >>  configure | 38 ++
> >>  1 file changed, 38 insertions(+)
> >>
> >> diff --git a/configure b/configure
> >> index b5aab7257b33..20a7ec5cc0fd 100755
> >> --- a/configure
> >> +++ b/configure
> >> @@ -4255,6 +4255,44 @@ if have_backend "dtrace"; then
> >>  fi
> >>  
> >>  ##
> >> +# save git working tree information in pkgversion
> >> +
> >> +# If pkgversion has not been set to a non-empty string, fetch the output 
> >> of
> >> +# "git describe" into it. If the working tree is unclean (there are 
> >> staged or
> >> +# unstaged changes in tracked files), then append a plus sign.
> >> +#
> >> +# If we're not building from a git working tree, then pkgversion is not
> >> +# changed. Otherwise, git errors are fatal.
> >> +
> >> +if test -z "$pkgversion" && test -d "$source_path/.git"; then
> >> +  pkgversion=$(
> >> +export GIT_DIR=$source_path/.git
> >> +export GIT_WORK_TREE=$source_path
> >> +
> >> +git_desc=$(git describe)
> >> +git_exit=$?
> >> +if test $git_exit -ne 0; then
> >> +  exit $git_exit
> >> +fi
> >> +
> >> +git_changes=
> >> +for git_diff_option in "" --staged; do
> >> +  git diff $git_diff_option --quiet
> >> +  git_exit=$?
> >> +  case $git_exit in
> >> +  (0) ;;
> >> +  (1) git_changes=+
> >> +  ;;
> >> +  (*) exit $git_exit
> >> +  ;;
> >> +  esac
> >> +done
> > 
> > An alternative to this would be to jus use
> > 
> >  "git describe --dirty"
> > 
> > which appends "--dirty" to its output if working tre has uncommitted
> > changes.
> 
> Good idea!
> 
> > Not sure if the --dirty flag is a recent option or whether we can just
> > assume it always exists.
> 
> Grepping git's Documentation/RelNotes/ directory, I find:
> - in "1.6.6.txt": the introduction of --dirty
> - in "1.7.6.4.txt": an apparently important bugfix for --dirty
> 
> Version 1.7.6.4 of git was tagged on Sep 23 2011.
> 
> Does this information help in deciding if we can use --dirty?

5 years old sounds new enough for my liking :-)

I guess we could use --dirty and catch the non-zero exit code and just
re-try without --dirty.

Regards,
Daniel
-- 
|: http://berrange.com  -o-http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org  -o- http://virt-manager.org :|
|: http://autobuild.org   -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org   -o-   http://live.gnome.org/gtk-vnc :|



Re: [Qemu-devel] [PATCH] configure: save git working tree information in "pkgversion"

2016-05-31 Thread Laszlo Ersek
On 05/31/16 17:14, Daniel P. Berrange wrote:
> On Tue, May 31, 2016 at 05:04:04PM +0200, Laszlo Ersek wrote:
>> When building QEMU from a git working tree (either in-tree or
>> out-of-tree), it is useful to capture the working tree status in the QEMU
>> binary, for the "-version" option to report.
>>
>> Daniel suggested using the "pkgversion" variable (tied to the
>> "--with-pkgversion" option) of the configure script for this. Downstream
>> packagers of QEMU already use this option for customizing their builds,
>> plus libvirtd captures "pkgversion" (with the "-version" option) in
>> "/var/log/libvirt/qemu/$GUEST.log", whenever a guest is started.
>>
>> The information we include in "pkgversion" is the output of git-describe,
>> with a plus sign (+) appended if there are staged or unstaged changes to
>> tracked files, at the time of "configure" being executed.
>>
>> The content of "pkgversion" is not changed when "--with-pkgversion" is
>> used on the command line.
>>
>> Cc: "Daniel P. Berrange" 
>> Cc: Kashyap Chamarthy 
>> Signed-off-by: Laszlo Ersek 
>> ---
>>  configure | 38 ++
>>  1 file changed, 38 insertions(+)
>>
>> diff --git a/configure b/configure
>> index b5aab7257b33..20a7ec5cc0fd 100755
>> --- a/configure
>> +++ b/configure
>> @@ -4255,6 +4255,44 @@ if have_backend "dtrace"; then
>>  fi
>>  
>>  ##
>> +# save git working tree information in pkgversion
>> +
>> +# If pkgversion has not been set to a non-empty string, fetch the output of
>> +# "git describe" into it. If the working tree is unclean (there are staged 
>> or
>> +# unstaged changes in tracked files), then append a plus sign.
>> +#
>> +# If we're not building from a git working tree, then pkgversion is not
>> +# changed. Otherwise, git errors are fatal.
>> +
>> +if test -z "$pkgversion" && test -d "$source_path/.git"; then
>> +  pkgversion=$(
>> +export GIT_DIR=$source_path/.git
>> +export GIT_WORK_TREE=$source_path
>> +
>> +git_desc=$(git describe)
>> +git_exit=$?
>> +if test $git_exit -ne 0; then
>> +  exit $git_exit
>> +fi
>> +
>> +git_changes=
>> +for git_diff_option in "" --staged; do
>> +  git diff $git_diff_option --quiet
>> +  git_exit=$?
>> +  case $git_exit in
>> +  (0) ;;
>> +  (1) git_changes=+
>> +  ;;
>> +  (*) exit $git_exit
>> +  ;;
>> +  esac
>> +done
> 
> An alternative to this would be to jus use
> 
>  "git describe --dirty"
> 
> which appends "--dirty" to its output if working tre has uncommitted
> changes.

Good idea!

> Not sure if the --dirty flag is a recent option or whether we can just
> assume it always exists.

Grepping git's Documentation/RelNotes/ directory, I find:
- in "1.6.6.txt": the introduction of --dirty
- in "1.7.6.4.txt": an apparently important bugfix for --dirty

Version 1.7.6.4 of git was tagged on Sep 23 2011.

Does this information help in deciding if we can use --dirty?

For example, Debian oldstable ("wheezy"), which I tend to use as one
reference point for "ancient but still supported", has 1.7.10.4:

https://packages.debian.org/wheezy/git

Another example: the latest git package in EPEL-5 is 1.8.2.3:

http://koji.fedoraproject.org/koji/buildinfo?buildID=757915

Thanks
Laszlo




Re: [Qemu-devel] [PATCH] configure: save git working tree information in "pkgversion"

2016-05-31 Thread Daniel P. Berrange
On Tue, May 31, 2016 at 05:04:04PM +0200, Laszlo Ersek wrote:
> When building QEMU from a git working tree (either in-tree or
> out-of-tree), it is useful to capture the working tree status in the QEMU
> binary, for the "-version" option to report.
> 
> Daniel suggested using the "pkgversion" variable (tied to the
> "--with-pkgversion" option) of the configure script for this. Downstream
> packagers of QEMU already use this option for customizing their builds,
> plus libvirtd captures "pkgversion" (with the "-version" option) in
> "/var/log/libvirt/qemu/$GUEST.log", whenever a guest is started.
> 
> The information we include in "pkgversion" is the output of git-describe,
> with a plus sign (+) appended if there are staged or unstaged changes to
> tracked files, at the time of "configure" being executed.
> 
> The content of "pkgversion" is not changed when "--with-pkgversion" is
> used on the command line.
> 
> Cc: "Daniel P. Berrange" 
> Cc: Kashyap Chamarthy 
> Signed-off-by: Laszlo Ersek 
> ---
>  configure | 38 ++
>  1 file changed, 38 insertions(+)
> 
> diff --git a/configure b/configure
> index b5aab7257b33..20a7ec5cc0fd 100755
> --- a/configure
> +++ b/configure
> @@ -4255,6 +4255,44 @@ if have_backend "dtrace"; then
>  fi
>  
>  ##
> +# save git working tree information in pkgversion
> +
> +# If pkgversion has not been set to a non-empty string, fetch the output of
> +# "git describe" into it. If the working tree is unclean (there are staged or
> +# unstaged changes in tracked files), then append a plus sign.
> +#
> +# If we're not building from a git working tree, then pkgversion is not
> +# changed. Otherwise, git errors are fatal.
> +
> +if test -z "$pkgversion" && test -d "$source_path/.git"; then
> +  pkgversion=$(
> +export GIT_DIR=$source_path/.git
> +export GIT_WORK_TREE=$source_path
> +
> +git_desc=$(git describe)
> +git_exit=$?
> +if test $git_exit -ne 0; then
> +  exit $git_exit
> +fi
> +
> +git_changes=
> +for git_diff_option in "" --staged; do
> +  git diff $git_diff_option --quiet
> +  git_exit=$?
> +  case $git_exit in
> +  (0) ;;
> +  (1) git_changes=+
> +  ;;
> +  (*) exit $git_exit
> +  ;;
> +  esac
> +done

An alternative to this would be to jus use

 "git describe --dirty"

which appends "--dirty" to its output if working tre has uncommitted
changes.

Not sure if the --dirty flag is a recent option or whether we can just
assume it always exists.

Regards,
Daniel
-- 
|: http://berrange.com  -o-http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org  -o- http://virt-manager.org :|
|: http://autobuild.org   -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org   -o-   http://live.gnome.org/gtk-vnc :|