[libvirt] [PATCH python 4/4] setup.py: Allow running --help or clean without pkg-config

Cole Robinson crobinso at redhat.com
Tue Mar 25 17:39:26 UTC 2014


If pkg-config isn't installed, or a too old libvirt, we can't even
do 'python setup.py --help' without throwing an exception.

Have the pkg-config checks and validation only throw an exception if
being called from the 'build' step.

https://bugzilla.redhat.com/show_bug.cgi?id=1074170
---
 setup.py | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/setup.py b/setup.py
index f137b22..592c30b 100755
--- a/setup.py
+++ b/setup.py
@@ -24,19 +24,24 @@ MIN_LIBVIRT_LXC = "1.0.2"
 if not os.path.exists("build"):
     os.mkdir("build")
 
-pkgcfg = distutils.spawn.find_executable("pkg-config")
-
-if pkgcfg is None:
-    raise Exception("pkg-config binary is required to compile libvirt-python")
-
-spawn([pkgcfg,
-       "--print-errors",
-       "--atleast-version=%s" % MIN_LIBVIRT,
-       "libvirt"])
+_pkgcfg = -1
+def get_pkgcfg(do_fail=True):
+    global _pkgcfg
+    if _pkgcfg == -1:
+        _pkgcfg = distutils.spawn.find_executable("pkg-config")
+    if _pkgcfg is None and do_fail:
+        raise Exception("pkg-config binary is required to compile libvirt-python")
+    return _pkgcfg
+
+def check_minimum_libvirt_version():
+    spawn([get_pkgcfg(),
+           "--print-errors",
+           "--atleast-version=%s" % MIN_LIBVIRT,
+           "libvirt"])
 
 def have_libvirt_lxc():
     try:
-        spawn([pkgcfg,
+        spawn([get_pkgcfg(),
                "--atleast-version=%s" % MIN_LIBVIRT_LXC,
              "libvirt"])
         return True
@@ -45,7 +50,7 @@ def have_libvirt_lxc():
 
 def get_pkgconfig_data(args, mod, required=True):
     """Run pkg-config to and return content associated with it"""
-    f = os.popen("%s %s %s" % (pkgcfg, " ".join(args), mod))
+    f = os.popen("%s %s %s" % (get_pkgcfg(), " ".join(args), mod))
 
     line = f.readline()
     if line is not None:
@@ -78,6 +83,9 @@ def get_module_lists():
     Determine which modules we are actually building, and all their
     required config
     """
+    if get_pkgcfg(do_fail=False) is None:
+        return [], []
+
     c_modules = []
     py_modules = []
     ldflags = get_pkgconfig_data(["--libs-only-L"], "libvirt", False)
@@ -130,6 +138,7 @@ def get_module_lists():
 class my_build(build):
 
     def run(self):
+        check_minimum_libvirt_version()
         apis = get_api_xml_files()
 
         self.spawn([sys.executable, "generator.py", "libvirt", apis[0]])
-- 
1.8.5.3




More information about the libvir-list mailing list