From 1d8478a6437e9eb4cd12c679c8dbd26dc2c344e1 Mon Sep 17 00:00:00 2001 From: David Sommerseth Date: Thu, 11 Jun 2009 15:07:47 +0200 Subject: Improved setup.py/setup-dbg.py even more Get libxml2 compile time info from xml2-config. Retrieve version number from src/version.h --- src/setup_common.py | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/setup_common.py (limited to 'src/setup_common.py') diff --git a/src/setup_common.py b/src/setup_common.py new file mode 100644 index 0000000..fda01a8 --- /dev/null +++ b/src/setup_common.py @@ -0,0 +1,83 @@ +# +# setup-common.py +# Helper functions for retrieving libxml2 arguments needed for compilation +# and other functions which is used in both setup.py and setup-dbg.py +# +# Copyright 2009 David Sommerseth +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# For the avoidance of doubt the "preferred form" of this code is one which +# is in an open unpatent encumbered format. Where cryptographic key signing +# forms part of the process of creating an executable the information +# including keys needed to generate an equivalently functional executable +# are deemed to be part of the source code. +# + +import commands, sys + +# libxml2 - C flags +def libxml2_include(incdir): + (res, libxml2_cflags) = commands.getstatusoutput("xml2-config --cflags") + if res != 0: + print "Could not build python-dmidecode." + print "Could not run xml2-config, is libxml2 installed?" + print "Also the development libraries?" + sys.exit(1) + + # Parse the xml2-config --cflags response + for l in libxml2_cflags.split(" "): + if l.find('-I') == 0: + incdir.append(l.replace("-I", "", 1)) + + + +# libxml2 - library flags +def libxml2_lib(libdir, libs): + (res, libxml2_libs) = commands.getstatusoutput("xml2-config --libs") + if res != 0: + print "Could not build python-dmidecode." + print "Could not run xml2-config, is libxml2 installed?" + print "Also the development libraries?" + sys.exit(1) + + # Parse the xml2-config --libs response + for l in libxml2_libs.split(" "): + if l.find('-L') == 0: + libdir.append(l.replace("-L", "", 1)) + elif l.find('-l') == 0: + libs.append(l.replace("-l", "", 1)) + + # this library is not reported and we need it anyway + libs.append('xml2mod') + + + +# Get version from src/version.h +def get_version(): + f = open("src/version.h") + version = "0.0.0" + try: + for line in f: + part = line.split(" ") + if part[0] == "#define": + if part[1] == "VERSION": + version = part[2].strip().strip('"') + break + finally: + f.close() + + return version + -- cgit From 67a5695ed2b709cf934763ef34c1d239542fedf4 Mon Sep 17 00:00:00 2001 From: David Sommerseth Date: Thu, 11 Jun 2009 15:26:47 +0200 Subject: Make get_version() look for version.h one more place --- src/setup_common.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/setup_common.py') diff --git a/src/setup_common.py b/src/setup_common.py index fda01a8..e55bf4f 100644 --- a/src/setup_common.py +++ b/src/setup_common.py @@ -67,8 +67,12 @@ def libxml2_lib(libdir, libs): # Get version from src/version.h def get_version(): - f = open("src/version.h") version = "0.0.0" + try: + f = open("src/version.h") + except: + f = open("version.h") + try: for line in f: part = line.split(" ") -- cgit From 392a9976b14d558d4b2f331b5a44ee97912fc5e3 Mon Sep 17 00:00:00 2001 From: Nima Talebi Date: Mon, 3 Aug 2009 20:16:22 +1000 Subject: Moved a OS-specific library settings out to common The libxml2 path is now handled by `setup_common.py', so the actual setup files are clean from any OS-specific (Debian/RedHat) hacks. --- src/setup_common.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/setup_common.py') diff --git a/src/setup_common.py b/src/setup_common.py index e55bf4f..fdf5c8c 100644 --- a/src/setup_common.py +++ b/src/setup_common.py @@ -27,6 +27,8 @@ # import commands, sys +from os import path as os_path +from distutils.sysconfig import get_python_lib # libxml2 - C flags def libxml2_include(incdir): @@ -46,6 +48,10 @@ def libxml2_include(incdir): # libxml2 - library flags def libxml2_lib(libdir, libs): + libdir.append(get_python_lib(1)) + if os_path.exists("/etc/debian_version"): #. XXX: Debian Workaround... + libdir.append("/usr/lib/pymodules/python%d.%d"%sys.version_info[0:2]) + (res, libxml2_libs) = commands.getstatusoutput("xml2-config --libs") if res != 0: print "Could not build python-dmidecode." -- cgit