[Kimchi-devel] [PATCH 1/2] config version API support: add a method to get kimchi version
shaohef at linux.vnet.ibm.com
shaohef at linux.vnet.ibm.com
Mon Apr 14 05:19:24 UTC 2014
From: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
add a method to get kimchi version in config.py
If kimchi run after package install, just get the version.
Or get the build nubmer.
Signed-off-by: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
---
src/kimchi/Makefile.am | 4 +++-
src/kimchi/config.py.in | 47 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 50 insertions(+), 1 deletion(-)
diff --git a/src/kimchi/Makefile.am b/src/kimchi/Makefile.am
index 957d2c9..e2b5bea 100644
--- a/src/kimchi/Makefile.am
+++ b/src/kimchi/Makefile.am
@@ -41,7 +41,9 @@ do_substitution = \
-e 's,[@]sysconfdir[@],$(sysconfdir),g' \
-e 's,[@]localstatedir[@],$(localstatedir),g' \
-e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \
- -e 's,[@]kimchidir[@],$(kimchidir),g'
+ -e 's,[@]kimchidir[@],$(kimchidir),g' \
+ -e 's,[@]kimchiversion[@],$(PACKAGE_VERSION),g' \
+ -e 's,[@]kimchirelease[@],$(PACKAGE_RELEASE),g'
config.py: config.py.in Makefile
diff --git a/src/kimchi/config.py.in b/src/kimchi/config.py.in
index 04218c2..a260885 100644
--- a/src/kimchi/config.py.in
+++ b/src/kimchi/config.py.in
@@ -21,6 +21,7 @@
import libvirt
import os
import platform
+import subprocess
import threading
@@ -29,6 +30,8 @@ from ConfigParser import SafeConfigParser
from kimchi.xmlutils import xpath_get_text
+__version__ = "@kimchiversion@"
+__release__ = "@kimchirelease@"
DEFAULT_LOG_LEVEL = "debug"
@@ -54,6 +57,50 @@ def get_debugreports_path():
return os.path.join(paths.state_dir, 'debugreports')
+def check_in_source_directory():
+ if __file__.startswith("/"):
+ base = os.path.dirname(__file__)
+ else:
+ base = os.path.dirname('./%s' % __file__)
+
+ if os.access('%s/../../src/kimchi/config.py' % base, os.F_OK):
+ return True
+
+ return False
+
+
+def check_in_packaged_directory():
+ # FIXME
+ # 1. We can not guarantee only one kimchid is running at the same time.
+ # Maybe a kimchid by make install is running, another kimchid by package
+ # isntall is also running with different http/https port and directory.
+ # 2. Even kimchid is installed by package, we can still stop it, and run
+ # kimchid in make install directory
+ try:
+ cmd = ["rpm", "-qa", "kimchi"]
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ out, error = proc.communicate()
+ if out != "" and proc.returncode == 0:
+ return True
+ except OSError:
+ cmd = ["dpkg", "--get-selections", "kimchi"]
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ out, error = proc.communicate()
+ if "install" in out and proc.returncode == 0:
+ return True
+
+ return False
+
+
+def get_version():
+ if check_in_source_directory() or not check_in_packaged_directory():
+ return "-".join([__version__, __release__])
+
+ return __version__
+
+
def find_qemu_binary(find_emulator=False):
try:
connect = libvirt.open('qemu:///system')
--
1.8.5.3
More information about the Kimchi-devel
mailing list