mirror of
https://github.com/clearlinux/kvmtool.git
synced 2026-08-23 06:28:00 +00:00
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:
@@ -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.
|
||||
@@ -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 $@
|
||||
|
||||
@@ -4,3 +4,4 @@
|
||||
#
|
||||
kvm-run mainporcelain common
|
||||
kvm-pause common
|
||||
kvm-version common
|
||||
|
||||
@@ -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
|
||||
@@ -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 },
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
Executable
+40
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user