kvm tools: Add 'kvm version' command

Add a 'kvm version' command which prints the version of the kernel
used to build kvm tools.

Part of the code is based on and was loaned from perf.

Suggested-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Sasha Levin
2011-07-09 00:56:08 +03:00
committed by Will Deacon
parent 6d6a4d41b1
commit 16b2bb87b9
7 changed files with 92 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
kvm-version(1)
================
NAME
----
kvm-version - Print the version of the kernel tree kvm tools
was built on.
SYNOPSIS
--------
[verse]
'kvm version'
DESCRIPTION
-----------
The command prints the version of the kernel that was used to build
kvm tools.
Note that the version is not the version of the kernel which is currently
running on the host, but is the version of the kernel tree from which kvm
tools was built.
+7
View File
@@ -61,6 +61,7 @@ OBJS += kvm-pause.o
OBJS += kvm-balloon.o
OBJS += kvm-list.o
OBJS += kvm-run.o
OBJS += kvm-version.o
OBJS += mptable.o
OBJS += rbtree.o
OBJS += threadpool.o
@@ -124,6 +125,7 @@ endif
DEFINES += -D_FILE_OFFSET_BITS=64
DEFINES += -D_GNU_SOURCE
DEFINES += -DKVMTOOLS_VERSION='"$(KVMTOOLS_VERSION)"'
KVM_INCLUDE := include
CFLAGS += $(CPPFLAGS) $(DEFINES) -I$(KVM_INCLUDE) -I../../include -I../../arch/$(ARCH)/include/ -Os -g
@@ -152,6 +154,10 @@ CFLAGS += $(WARNINGS)
all: $(PROGRAM)
KVMTOOLS-VERSION-FILE:
@$(SHELL_PATH) util/KVMTOOLS-VERSION-GEN $(OUTPUT)
-include $(OUTPUT)KVMTOOLS-VERSION-FILE
$(PROGRAM): $(DEPS) $(OBJS)
$(E) " LINK " $@
$(Q) $(CC) $(OBJS) $(LIBS) -o $@
@@ -168,6 +174,7 @@ $(OBJS):
rbtree.o: ../../lib/rbtree.c
$(Q) $(CC) -c $(CFLAGS) $< -o $@
%.o: %.c
$(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) $< -o $@
+1
View File
@@ -4,3 +4,4 @@
#
kvm-run mainporcelain common
kvm-pause common
kvm-version common
+6
View File
@@ -0,0 +1,6 @@
#ifndef KVM__VERSION_H
#define KVM__VERSION_H
int kvm_cmd_version(int argc, const char **argv, const char *prefix);
#endif
+2
View File
@@ -9,6 +9,7 @@
#include "kvm/kvm-pause.h"
#include "kvm/kvm-balloon.h"
#include "kvm/kvm-list.h"
#include "kvm/kvm-version.h"
#include "kvm/kvm-help.h"
#include "kvm/kvm-cmd.h"
#include "kvm/kvm-run.h"
@@ -18,6 +19,7 @@ struct cmd_struct kvm_commands[] = {
{ "debug", kvm_cmd_debug, NULL, 0 },
{ "balloon", kvm_cmd_balloon, NULL, 0 },
{ "list", kvm_cmd_list, NULL, 0 },
{ "version", kvm_cmd_version, NULL, 0 },
{ "help", kvm_cmd_help, NULL, 0 },
{ "run", kvm_cmd_run, kvm_run_help, 0 },
{ NULL, NULL, NULL, 0 },
+15
View File
@@ -0,0 +1,15 @@
#include <kvm/util.h>
#include <kvm/kvm-cmd.h>
#include <kvm/kvm-version.h>
#include <kvm/kvm.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
int kvm_cmd_version(int argc, const char **argv, const char *prefix)
{
printf("%s\n", KVMTOOLS_VERSION);
return 0;
}
+40
View File
@@ -0,0 +1,40 @@
#!/bin/sh
if [ $# -eq 1 ] ; then
OUTPUT=$1
fi
GVF=${OUTPUT}KVMTOOLS-VERSION-FILE
LF='
'
# First check if there is a .git to get the version from git describe
# otherwise try to get the version from the kernel makefile
if test -d ../../.git -o -f ../../.git &&
VN=$(git describe --abbrev=4 HEAD 2>/dev/null) &&
case "$VN" in
*$LF*) (exit 1) ;;
v[0-9]*)
git update-index -q --refresh
test -z "$(git diff-index --name-only HEAD --)" ||
VN="$VN-dirty" ;;
esac
then
VN=$(echo "$VN" | sed -e 's/-/./g');
else
VN=$(MAKEFLAGS= make -sC ../.. kernelversion)
fi
VN=$(expr "$VN" : v*'\(.*\)')
if test -r $GVF
then
VC=$(sed -e 's/^KVMTOOLS_VERSION = //' <$GVF)
else
VC=unset
fi
test "$VN" = "$VC" || {
echo >&2 "KVMTOOLS_VERSION = $VN"
echo "KVMTOOLS_VERSION = $VN" >$GVF
}