Skip to content
Snippets Groups Projects
Commit 0616e96b authored by SVN-Git Migration's avatar SVN-Git Migration
Browse files

Imported Upstream version 3.12.2

parent 6978f890
No related branches found
No related tags found
No related merge requests found
*.pyc
...@@ -38,11 +38,19 @@ ...@@ -38,11 +38,19 @@
#. $AutoHeaderSerial::20100225 $ #. $AutoHeaderSerial::20100225 $
#. ******* AUTOHEADER END v1.2 ******* #. ******* AUTOHEADER END v1.2 *******
VERSION := $(shell cd src;python -c "from setup_common import *; print get_version();") PY_BIN := python2
VERSION := $(shell cd src;$(PY_BIN) -c "from setup_common import *; print(get_version());")
PACKAGE := python-dmidecode PACKAGE := python-dmidecode
PY_VER := $(shell python -c 'import sys; print "%d.%d"%sys.version_info[0:2]') PY_VER := $(shell $(PY_BIN) -c 'import sys; print("%d.%d"%sys.version_info[0:2])')
PY_MV := $(shell echo $(PY_VER) | cut -b 1)
PY := python$(PY_VER) PY := python$(PY_VER)
SO := build/lib.linux-$(shell uname -m)-$(PY_VER)/dmidecodemod.so SO_PATH := build/lib.linux-$(shell uname -m)-$(PY_VER)
ifeq ($(PY_MV),2)
SO := $(SO_PATH)/dmidecodemod.so
else
SOABI := $(shell $(PY_BIN) -c 'import sysconfig; print(sysconfig.get_config_var("SOABI"))')
SO := $(SO_PATH)/dmidecodemod.$(SOABI).so
endif
SHELL := /bin/bash SHELL := /bin/bash
############################################################################### ###############################################################################
...@@ -71,6 +79,7 @@ clean: ...@@ -71,6 +79,7 @@ clean:
-rm -rf build -rm -rf build
-rm -rf rpm -rm -rf rpm
-rm -rf src/setup_common.py[oc] -rm -rf src/setup_common.py[oc]
-rm -rf __pycache__ src/__pycache__
-rm -rf $(PACKAGE)-$(VERSION) $(PACKAGE)-$(VERSION).tar.gz -rm -rf $(PACKAGE)-$(VERSION) $(PACKAGE)-$(VERSION).tar.gz
$(MAKE) -C unit-tests clean $(MAKE) -C unit-tests clean
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
Summary: Python module to access DMI data Summary: Python module to access DMI data
Name: python-dmidecode Name: python-dmidecode
Version: 3.12.1 Version: 3.12.2
Release: 1%{?dist} Release: 1%{?dist}
License: GPLv2 License: GPLv2
Group: System Environment/Libraries Group: System Environment/Libraries
...@@ -49,6 +49,9 @@ rm -rf $RPM_BUILD_ROOT ...@@ -49,6 +49,9 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/python-dmidecode/ %{_datadir}/python-dmidecode/
%changelog %changelog
* Mon Jun 08 2015 Nima Talebi <ntd@amazon.com> - 3.12.2-1
- Update to new release
* Mon Jul 8 2013 David Sommerseth <dazo@users.sourceforge.net> - 3.12.1-1 * Mon Jul 8 2013 David Sommerseth <dazo@users.sourceforge.net> - 3.12.1-1
- Updated against upstream v3.12.1, which realigns against dmidecode 2.12 - Updated against upstream v3.12.1, which realigns against dmidecode 2.12
......
...@@ -48,7 +48,7 @@ class dmidecodeXML: ...@@ -48,7 +48,7 @@ class dmidecodeXML:
elif type == DMIXML_DOC: elif type == DMIXML_DOC:
self.restype = DMIXML_DOC self.restype = DMIXML_DOC
else: else:
raise TypeError, "Invalid result type value" raise TypeError("Invalid result type value")
return True return True
def QuerySection(self, sectname): def QuerySection(self, sectname):
...@@ -65,7 +65,7 @@ class dmidecodeXML: ...@@ -65,7 +65,7 @@ class dmidecodeXML:
result_type=self.restype, result_type=self.restype,
section=sectname) ) section=sectname) )
else: else:
raise TypeError, "Invalid result type value" raise TypeError("Invalid result type value")
return ret return ret
...@@ -83,7 +83,7 @@ class dmidecodeXML: ...@@ -83,7 +83,7 @@ class dmidecodeXML:
result_type=self.restype, result_type=self.restype,
typeid=tpid)) typeid=tpid))
else: else:
raise TypeError, "Invalid result type value" raise TypeError("Invalid result type value")
return ret return ret
...@@ -35,24 +35,24 @@ def print_warnings(): ...@@ -35,24 +35,24 @@ def print_warnings():
"Simple function, dumping out warnings with a prefix if warnings are found and clearing warning buffer" "Simple function, dumping out warnings with a prefix if warnings are found and clearing warning buffer"
warn = dmidecode.get_warnings() warn = dmidecode.get_warnings()
if warn: if warn:
print "### WARNING: %s" % warn print("### WARNING: %s" % warn)
dmidecode.clear_warnings() dmidecode.clear_warnings()
# Check if running as root .... provide a warning if not # Check if running as root .... provide a warning if not
root_user = (os.getuid() == 0 and True or False) root_user = (os.getuid() == 0 and True or False)
if not root_user: if not root_user:
print "####" print("####")
print "#### NOT RUNNING AS ROOT" print("#### NOT RUNNING AS ROOT")
print "####" print("####")
print "#### The first run must always be done as root for this example to work." print("#### The first run must always be done as root for this example to work.")
print "#### When not run as root, quite some permission errors might appear" print("#### When not run as root, quite some permission errors might appear")
print "####" print("####")
print "#### If this script is first run as root, it should be possible to run this script" print("#### If this script is first run as root, it should be possible to run this script")
print "#### as an unprivileged user afterwards, with less warnings." print("#### as an unprivileged user afterwards, with less warnings.")
print "####" print("####")
print print()
print print()
#. Test for presence of important functions using /dev/mem... Using the legacy API #. Test for presence of important functions using /dev/mem... Using the legacy API
...@@ -61,101 +61,101 @@ if not root_user: ...@@ -61,101 +61,101 @@ if not root_user:
#. for presence of the legacy API, which "under the hood" uses #. for presence of the legacy API, which "under the hood" uses
#. dmidecode.QuerySection(name), where name can be 'bios', 'system', etc. #. dmidecode.QuerySection(name), where name can be 'bios', 'system', etc.
if root_user: if root_user:
print "*** bios ***\n"; dmidecode.bios() print("*** bios ***\n"); dmidecode.bios()
print_warnings() print_warnings()
print "*** system ***\n"; dmidecode.system() print("*** system ***\n"); dmidecode.system()
print_warnings() print_warnings()
print "*** baseboard ***\n"; dmidecode.baseboard() print("*** baseboard ***\n"); dmidecode.baseboard()
print_warnings() print_warnings()
print "*** chassis ***\n"; dmidecode.chassis() print("*** chassis ***\n"); dmidecode.chassis()
print_warnings() print_warnings()
print "*** processor ***\n"; dmidecode.processor() print("*** processor ***\n"); dmidecode.processor()
print_warnings() print_warnings()
print "*** memory ***\n"; dmidecode.memory() print("*** memory ***\n"); dmidecode.memory()
print_warnings() print_warnings()
print "*** cache ***\n"; dmidecode.cache() print("*** cache ***\n"); dmidecode.cache()
print_warnings() print_warnings()
print "*** connector ***\n"; dmidecode.connector() print("*** connector ***\n"); dmidecode.connector()
print_warnings() print_warnings()
print "*** slot ***\n"; dmidecode.slot() print("*** slot ***\n"); dmidecode.slot()
print_warnings() print_warnings()
#. Now test get/set of memory device file... #. Now test get/set of memory device file...
print "*** get_dev()" print("*** get_dev()")
print dmidecode.get_dev() print(dmidecode.get_dev())
print_warnings() print_warnings()
print "*** set_dev('dmidata.dump')" print("*** set_dev('dmidata.dump')")
print dmidecode.set_dev("dmidata.dump"); print(dmidecode.set_dev("dmidata.dump"));
print_warnings() print_warnings()
print "*** get_dev()" print("*** get_dev()")
print dmidecode.get_dev() print(dmidecode.get_dev())
print_warnings() print_warnings()
#. Test taking a dump... #. Test taking a dump...
if root_user: if root_user:
print "*** Dumping DMI data to dump file" print("*** Dumping DMI data to dump file")
print dmidecode.dump() print(dmidecode.dump())
print_warnings() print_warnings()
#. Test reading the dump... Using the preferred API #. Test reading the dump... Using the preferred API
print "*** bios ***\n"; pprint(dmidecode.QuerySection('bios')) print("*** bios ***\n"); pprint(dmidecode.QuerySection('bios'))
print_warnings() print_warnings()
print "*** system ***\n"; pprint(dmidecode.QuerySection('system')) print("*** system ***\n"); pprint(dmidecode.QuerySection('system'))
print_warnings() print_warnings()
print "*** baseboard ***\n"; pprint(dmidecode.QuerySection('baseboard')) print("*** baseboard ***\n"); pprint(dmidecode.QuerySection('baseboard'))
print_warnings() print_warnings()
print "*** chassis ***\n"; pprint(dmidecode.QuerySection('chassis')) print("*** chassis ***\n"); pprint(dmidecode.QuerySection('chassis'))
print_warnings() print_warnings()
print "*** processor ***\n"; pprint(dmidecode.QuerySection('processor')) print("*** processor ***\n"); pprint(dmidecode.QuerySection('processor'))
print_warnings() print_warnings()
print "*** memory ***\n"; pprint(dmidecode.QuerySection('memory')) print("*** memory ***\n"); pprint(dmidecode.QuerySection('memory'))
print_warnings() print_warnings()
print "*** cache ***\n"; pprint(dmidecode.QuerySection('cache')) print("*** cache ***\n"); pprint(dmidecode.QuerySection('cache'))
print_warnings() print_warnings()
print "*** connector ***\n"; pprint(dmidecode.QuerySection('connector')) print("*** connector ***\n"); pprint(dmidecode.QuerySection('connector'))
print_warnings() print_warnings()
print "*** slot ***\n"; pprint(dmidecode.QuerySection('slot')) print("*** slot ***\n"); pprint(dmidecode.QuerySection('slot'))
print_warnings() print_warnings()
print "*** Extracting memory information" print("*** Extracting memory information")
for v in dmidecode.memory().values(): for v in dmidecode.memory().values():
if type(v) == dict and v['dmi_type'] == 17: if type(v) == dict and v['dmi_type'] == 17:
pprint(v['data']['Size']), pprint(v['data']['Size']),
print "*** Querying for DMI type 3 and 7" print("*** Querying for DMI type 3 and 7")
pprint(dmidecode.type(3)) # <-- Legacy API pprint(dmidecode.type(3)) # <-- Legacy API
pprint(dmidecode.QueryTypeId(7)) # <-- preferred API pprint(dmidecode.QueryTypeId(7)) # <-- preferred API
print_warnings() print_warnings()
print "*** Querying for the BIOS section" print("*** Querying for the BIOS section")
pprint(dmidecode.QuerySection('bios')) pprint(dmidecode.QuerySection('bios'))
print_warnings() print_warnings()
# #
# Test XML stuff # Test XML stuff
# #
print print()
print print()
print print()
print "---------------------------------------" print("---------------------------------------")
print "*** *** *** Testing XML API *** *** ***" print("*** *** *** Testing XML API *** *** ***")
print "---------------------------------------" print("---------------------------------------")
print print()
print print()
dmixml = dmidecode.dmidecodeXML() dmixml = dmidecode.dmidecodeXML()
# Fetch all DMI data into a libxml2.xmlDoc object # Fetch all DMI data into a libxml2.xmlDoc object
print "*** Getting all DMI data into a XML document variable" print("*** Getting all DMI data into a XML document variable")
dmixml.SetResultType(dmidecode.DMIXML_DOC) # Valid values: dmidecode.DMIXML_DOC, dmidecode.DMIXML_NODE dmixml.SetResultType(dmidecode.DMIXML_DOC) # Valid values: dmidecode.DMIXML_DOC, dmidecode.DMIXML_NODE
xmldoc = dmixml.QuerySection('all') xmldoc = dmixml.QuerySection('all')
# Dump the XML to dmidump.xml - formated in UTF-8 decoding # Dump the XML to dmidump.xml - formated in UTF-8 decoding
print "*** Dumping XML document to dmidump.xml" print("*** Dumping XML document to dmidump.xml")
xmldoc.saveFormatFileEnc('dmidump.xml','UTF-8',1) xmldoc.saveFormatFileEnc('dmidump.xml','UTF-8',1)
# Do some XPath queries on the XML document # Do some XPath queries on the XML document
print "*** Doing some XPath queries against the XML document" print("*** Doing some XPath queries against the XML document")
dmixp = xmldoc.xpathNewContext() dmixp = xmldoc.xpathNewContext()
# What to look for - XPath expressions # What to look for - XPath expressions
...@@ -168,12 +168,12 @@ keys = ['/dmidecode/SystemInfo/Manufacturer', ...@@ -168,12 +168,12 @@ keys = ['/dmidecode/SystemInfo/Manufacturer',
for k in keys: for k in keys:
data = dmixp.xpathEval(k) data = dmixp.xpathEval(k)
for d in data: for d in data:
print "%s: %s" % (k, d.get_content()) print("%s: %s" % (k, d.get_content()))
del dmixp del dmixp
del xmldoc del xmldoc
# Query for only a particular DMI TypeID - 0x04 - Processor # Query for only a particular DMI TypeID - 0x04 - Processor
print "*** Quering for Type ID 0x04 - Processor - dumping XML document to stdout" print("*** Quering for Type ID 0x04 - Processor - dumping XML document to stdout")
dmixml.QueryTypeId(0x04).saveFormatFileEnc('-','UTF-8',1) dmixml.QueryTypeId(0x04).saveFormatFileEnc('-','UTF-8',1)
print_warnings() print_warnings()
...@@ -40,4 +40,19 @@ ...@@ -40,4 +40,19 @@
#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None #define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
#endif #endif
// Python 2 vs Python 3 compat
#if PY_MAJOR_VERSION >= 3
#define IS_PY3K
#define MODINITERROR return NULL
#define PYNUMBER_FROMLONG PyLong_FromLong
#define PYTEXT_FROMSTRING PyUnicode_FromString
#else
#include <bytesobject.h>
#define MODINITERROR return
#define PYNUMBER_FROMLONG PyInt_FromLong
#define PYTEXT_FROMSTRING PyString_FromString
#define PyCapsule_New(pointer, name, destructor) \
(PyCObject_FromVoidPtr(pointer, destructor))
#endif
#endif #endif
...@@ -53,6 +53,17 @@ ...@@ -53,6 +53,17 @@
#include "dmidump.h" #include "dmidump.h"
#include <mcheck.h> #include <mcheck.h>
#if (PY_VERSION_HEX < 0x03030000)
char *PyUnicode_AsUTF8(PyObject *unicode) {
PyObject *as_bytes = PyUnicode_AsUTF8String(unicode);
if (!as_bytes) {
return NULL;
}
return PyBytes_AsString(as_bytes);
}
#endif
static void init(options *opt) static void init(options *opt)
{ {
opt->devmem = DEFAULT_MEM_DEV; opt->devmem = DEFAULT_MEM_DEV;
...@@ -470,7 +481,12 @@ static PyObject *dmidecode_get_slot(PyObject * self, PyObject * args) ...@@ -470,7 +481,12 @@ static PyObject *dmidecode_get_slot(PyObject * self, PyObject * args)
static PyObject *dmidecode_get_section(PyObject *self, PyObject *args) static PyObject *dmidecode_get_section(PyObject *self, PyObject *args)
{ {
char *section = PyString_AsString(args); char *section = NULL;
if (PyUnicode_Check(args)) {
section = PyUnicode_AsUTF8(args);
} else if (PyBytes_Check(args)) {
section = PyBytes_AsString(args);
}
if( section != NULL ) { if( section != NULL ) {
return dmidecode_get_group(global_options, section); return dmidecode_get_group(global_options, section);
...@@ -588,7 +604,7 @@ static PyObject *dmidecode_dump(PyObject * self, PyObject * null) ...@@ -588,7 +604,7 @@ static PyObject *dmidecode_dump(PyObject * self, PyObject * null)
static PyObject *dmidecode_get_dev(PyObject * self, PyObject * null) static PyObject *dmidecode_get_dev(PyObject * self, PyObject * null)
{ {
PyObject *dev = NULL; PyObject *dev = NULL;
dev = PyString_FromString((global_options->dumpfile != NULL dev = PYTEXT_FROMSTRING((global_options->dumpfile != NULL
? global_options->dumpfile : global_options->devmem)); ? global_options->dumpfile : global_options->devmem));
Py_INCREF(dev); Py_INCREF(dev);
return dev; return dev;
...@@ -596,9 +612,14 @@ static PyObject *dmidecode_get_dev(PyObject * self, PyObject * null) ...@@ -596,9 +612,14 @@ static PyObject *dmidecode_get_dev(PyObject * self, PyObject * null)
static PyObject *dmidecode_set_dev(PyObject * self, PyObject * arg) static PyObject *dmidecode_set_dev(PyObject * self, PyObject * arg)
{ {
if(PyString_Check(arg)) { char *f = NULL;
if(PyUnicode_Check(arg)) {
f = PyUnicode_AsUTF8(arg);
} else if(PyBytes_Check(arg)) {
f = PyBytes_AsString(arg);
}
if(f) {
struct stat buf; struct stat buf;
char *f = PyString_AsString(arg);
if( (f != NULL) && (global_options->dumpfile != NULL ) if( (f != NULL) && (global_options->dumpfile != NULL )
&& (strcmp(global_options->dumpfile, f) == 0) ) { && (strcmp(global_options->dumpfile, f) == 0) ) {
...@@ -638,12 +659,17 @@ static PyObject *dmidecode_set_dev(PyObject * self, PyObject * arg) ...@@ -638,12 +659,17 @@ static PyObject *dmidecode_set_dev(PyObject * self, PyObject * arg)
static PyObject *dmidecode_set_pythonxmlmap(PyObject * self, PyObject * arg) static PyObject *dmidecode_set_pythonxmlmap(PyObject * self, PyObject * arg)
{ {
if(PyString_Check(arg)) { char *fname = NULL;
if (PyUnicode_Check(arg)) {
fname = PyUnicode_AsUTF8(arg);
} else if (PyBytes_Check(arg)) {
fname = PyBytes_AsString(arg);
}
if (fname) {
struct stat fileinfo; struct stat fileinfo;
char *fname = PyString_AsString(arg);
memset(&fileinfo, 0, sizeof(struct stat)); memset(&fileinfo, 0, sizeof(struct stat));
if( stat(fname, &fileinfo) != 0 ) { if( stat(fname, &fileinfo) != 0 ) {
PyReturnError(PyExc_IOError, "Could not access the file '%s'", fname); PyReturnError(PyExc_IOError, "Could not access the file '%s'", fname);
} }
...@@ -664,7 +690,7 @@ static PyObject * dmidecode_get_warnings(PyObject *self, PyObject *null) ...@@ -664,7 +690,7 @@ static PyObject * dmidecode_get_warnings(PyObject *self, PyObject *null)
warn = log_retrieve(global_options->logdata, LOG_WARNING); warn = log_retrieve(global_options->logdata, LOG_WARNING);
if( warn ) { if( warn ) {
ret = PyString_FromString(warn); ret = PYTEXT_FROMSTRING(warn);
free(warn); free(warn);
} else { } else {
ret = Py_None; ret = Py_None;
...@@ -711,7 +737,7 @@ static PyMethodDef DMIDataMethods[] = { ...@@ -711,7 +737,7 @@ static PyMethodDef DMIDataMethods[] = {
{(char *)"pythonmap", dmidecode_set_pythonxmlmap, METH_O, {(char *)"pythonmap", dmidecode_set_pythonxmlmap, METH_O,
(char *) "Use another python dict map definition. The default file is " PYTHON_XML_MAP}, (char *) "Use another python dict map definition. The default file is " PYTHON_XML_MAP},
{(char *)"xmlapi", dmidecode_xmlapi, METH_KEYWORDS, {(char *)"xmlapi", dmidecode_xmlapi, METH_VARARGS | METH_KEYWORDS,
(char *) "Internal API for retrieving data as raw XML data"}, (char *) "Internal API for retrieving data as raw XML data"},
...@@ -726,6 +752,9 @@ static PyMethodDef DMIDataMethods[] = { ...@@ -726,6 +752,9 @@ static PyMethodDef DMIDataMethods[] = {
void destruct_options(void *ptr) void destruct_options(void *ptr)
{ {
#ifdef IS_PY3K
ptr = PyCapsule_GetPointer(ptr, NULL);
#endif
options *opt = (options *) ptr; options *opt = (options *) ptr;
if( opt->mappingxml != NULL ) { if( opt->mappingxml != NULL ) {
...@@ -763,8 +792,25 @@ void destruct_options(void *ptr) ...@@ -763,8 +792,25 @@ void destruct_options(void *ptr)
free(ptr); free(ptr);
} }
#ifdef IS_PY3K
static struct PyModuleDef dmidecodemod_def = {
PyModuleDef_HEAD_INIT,
"dmidecodemod",
NULL,
-1,
DMIDataMethods,
NULL,
NULL,
NULL,
NULL
};
PyMODINIT_FUNC initdmidecodemod(void) PyMODINIT_FUNC
PyInit_dmidecodemod(void)
#else
PyMODINIT_FUNC
initdmidecodemod(void)
#endif
{ {
char *dmiver = NULL; char *dmiver = NULL;
PyObject *module = NULL; PyObject *module = NULL;
...@@ -777,19 +823,29 @@ PyMODINIT_FUNC initdmidecodemod(void) ...@@ -777,19 +823,29 @@ PyMODINIT_FUNC initdmidecodemod(void)
opt = (options *) malloc(sizeof(options)+2); opt = (options *) malloc(sizeof(options)+2);
memset(opt, 0, sizeof(options)+2); memset(opt, 0, sizeof(options)+2);
init(opt); init(opt);
#ifdef IS_PY3K
module = PyModule_Create(&dmidecodemod_def);
#else
module = Py_InitModule3((char *)"dmidecodemod", DMIDataMethods, module = Py_InitModule3((char *)"dmidecodemod", DMIDataMethods,
"Python extension module for dmidecode"); "Python extension module for dmidecode");
#endif
if (module == NULL)
MODINITERROR;
version = PyString_FromString(VERSION); version = PYTEXT_FROMSTRING(VERSION);
Py_INCREF(version); Py_INCREF(version);
PyModule_AddObject(module, "version", version); PyModule_AddObject(module, "version", version);
opt->dmiversion_n = dmidecode_get_version(opt); opt->dmiversion_n = dmidecode_get_version(opt);
dmiver = dmixml_GetContent(opt->dmiversion_n); dmiver = dmixml_GetContent(opt->dmiversion_n);
PyModule_AddObject(module, "dmi", dmiver ? PyString_FromString(dmiver) : Py_None); PyModule_AddObject(module, "dmi", dmiver ? PYTEXT_FROMSTRING(dmiver) : Py_None);
// Assign this options struct to the module as well with a destructor, that way it will // Assign this options struct to the module as well with a destructor, that way it will
// clean up the memory for us. // clean up the memory for us.
PyModule_AddObject(module, "options", PyCObject_FromVoidPtr(opt, destruct_options)); // TODO: destructor has wrong type under py3?
PyModule_AddObject(module, "options", PyCapsule_New(opt, NULL, destruct_options));
global_options = opt; global_options = opt;
#ifdef IS_PY3K
return module;
#endif
} }
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
<Map keytype="constant" key="ROM Size" valuetype="string" <Map keytype="constant" key="ROM Size" valuetype="string"
value="concat(ROMsize,' ',ROMsize/@unit)"/> value="concat(ROMsize,' ',ROMsize/@unit)"/>
<Map keytype="constant" key="Address" valuetype="string" value="Address"/> <Map keytype="constant" key="Address" valuetype="string" value="Address"/>
<Map keytype="constant" key="Relase Date" valuetype="string" value="ReleaseDate"/> <Map keytype="constant" key="Release Date" valuetype="string" value="ReleaseDate"/>
</Map> </Map>
<Map keytype="constant" key="dmi_type" valuetype="integer" value="@type"/> <Map keytype="constant" key="dmi_type" valuetype="integer" value="@type"/>
<Map keytype="constant" key="dmi_handle" valuetype="string" value="@handle"/> <Map keytype="constant" key="dmi_handle" valuetype="string" value="@handle"/>
......
...@@ -26,17 +26,19 @@ ...@@ -26,17 +26,19 @@
# are deemed to be part of the source code. # are deemed to be part of the source code.
# #
import commands, sys import subprocess, sys
if sys.version_info[0] < 3:
import commands as subprocess
from os import path as os_path from os import path as os_path
from distutils.sysconfig import get_python_lib from distutils.sysconfig import get_python_lib
# libxml2 - C flags # libxml2 - C flags
def libxml2_include(incdir): def libxml2_include(incdir):
(res, libxml2_cflags) = commands.getstatusoutput("xml2-config --cflags") (res, libxml2_cflags) = subprocess.getstatusoutput("xml2-config --cflags")
if res != 0: if res != 0:
print "Could not build python-dmidecode." print("Could not build python-dmidecode.")
print "Could not run xml2-config, is libxml2 installed?" print("Could not run xml2-config, is libxml2 installed?")
print "Also the development libraries?" print("Also the development libraries?")
sys.exit(1) sys.exit(1)
# Parse the xml2-config --cflags response # Parse the xml2-config --cflags response
...@@ -52,11 +54,11 @@ def libxml2_lib(libdir, libs): ...@@ -52,11 +54,11 @@ def libxml2_lib(libdir, libs):
if os_path.exists("/etc/debian_version"): #. XXX: Debian Workaround... if os_path.exists("/etc/debian_version"): #. XXX: Debian Workaround...
libdir.append("/usr/lib/pymodules/python%d.%d"%sys.version_info[0:2]) libdir.append("/usr/lib/pymodules/python%d.%d"%sys.version_info[0:2])
(res, libxml2_libs) = commands.getstatusoutput("xml2-config --libs") (res, libxml2_libs) = subprocess.getstatusoutput("xml2-config --libs")
if res != 0: if res != 0:
print "Could not build python-dmidecode." print("Could not build python-dmidecode.")
print "Could not run xml2-config, is libxml2 installed?" print("Could not run xml2-config, is libxml2 installed?")
print "Also the development libraries?" print("Also the development libraries?")
sys.exit(1) sys.exit(1)
# Parse the xml2-config --libs response # Parse the xml2-config --libs response
......
#define VERSION "3.12.1" #define VERSION "3.12.2"
...@@ -85,6 +85,7 @@ ...@@ -85,6 +85,7 @@
#include "dmilog.h" #include "dmilog.h"
#include "xmlpythonizer.h" #include "xmlpythonizer.h"
#include "version.h" #include "version.h"
#include "compat.h"
/** /**
...@@ -646,7 +647,7 @@ inline PyObject *StringToPyObj(Log_t *logp, ptzMAP *val_m, const char *instr) { ...@@ -646,7 +647,7 @@ inline PyObject *StringToPyObj(Log_t *logp, ptzMAP *val_m, const char *instr) {
switch( val_m->type_value ) { switch( val_m->type_value ) {
case ptzINT: case ptzINT:
case ptzLIST_INT: case ptzLIST_INT:
value = PyInt_FromLong(atoi(workstr)); value = PYNUMBER_FROMLONG(atoi(workstr));
break; break;
case ptzFLOAT: case ptzFLOAT:
...@@ -661,7 +662,7 @@ inline PyObject *StringToPyObj(Log_t *logp, ptzMAP *val_m, const char *instr) { ...@@ -661,7 +662,7 @@ inline PyObject *StringToPyObj(Log_t *logp, ptzMAP *val_m, const char *instr) {
case ptzSTR: case ptzSTR:
case ptzLIST_STR: case ptzLIST_STR:
value = PyString_FromString(workstr); value = PyBytes_FromString(workstr);
break; break;
default: default:
...@@ -850,7 +851,7 @@ PyObject *_deep_pythonize(Log_t *logp, PyObject *retdata, ...@@ -850,7 +851,7 @@ PyObject *_deep_pythonize(Log_t *logp, PyObject *retdata,
switch( map_p->type_value ) { switch( map_p->type_value ) {
case ptzCONST: case ptzCONST:
if( _get_key_value(logp, key, 256, map_p, xpctx, 0) != NULL ) { if( _get_key_value(logp, key, 256, map_p, xpctx, 0) != NULL ) {
value = PyString_FromString(map_p->value); value = PyBytes_FromString(map_p->value);
PyADD_DICT_VALUE(retdata, key, value); PyADD_DICT_VALUE(retdata, key, value);
} else { } else {
PyReturnError(PyExc_ValueError, "Could not get key value: %s [%i] (Defining key: %s)", PyReturnError(PyExc_ValueError, "Could not get key value: %s [%i] (Defining key: %s)",
......
PY_BIN := python2
test : test :
python unit -vv $(PY_BIN) unit -vv
clean : clean :
rm -f *.{py[oc],o,so} *~ rm -f *.{py[oc],o,so} *~
......
...@@ -2,8 +2,9 @@ ...@@ -2,8 +2,9 @@
#.awk '$0 ~ /case [0-9]+: .. 3/ { sys.stdout.write($2 }' src/dmidecode.c|tr ':\n' ', ' #.awk '$0 ~ /case [0-9]+: .. 3/ { sys.stdout.write($2 }' src/dmidecode.c|tr ':\n' ', '
from pprint import pprint from pprint import pprint
import os, sys, random, tempfile, time import os, sys, subprocess, random, tempfile, time
import commands if sys.version_info[0] < 3:
import commands as subprocess
from getopt import getopt from getopt import getopt
# Setup temporary sys.path() with our build dir # Setup temporary sys.path() with our build dir
...@@ -32,7 +33,7 @@ try: ...@@ -32,7 +33,7 @@ try:
COLOR = True COLOR = True
elif o in ("-h", "--help"): elif o in ("-h", "--help"):
HELP = True HELP = True
except getopt.GetoptError, err: except getopt.GetoptError as err:
# print help information and exit: # print help information and exit:
HELP = True HELP = True
ERROR = True ERROR = True
...@@ -138,7 +139,7 @@ def vwrite(msg, vLevel=0): ...@@ -138,7 +139,7 @@ def vwrite(msg, vLevel=0):
################################################################################ ################################################################################
#. Let's ignore warnings from the module for the test units... #. Let's ignore warnings from the module for the test units...
err = open('/dev/null', 'a+', 0) err = open('/dev/null', 'a+', 1)
os.dup2(err.fileno(), sys.stderr.fileno()) os.dup2(err.fileno(), sys.stderr.fileno())
vwrite(LINE, 1) vwrite(LINE, 1)
...@@ -208,7 +209,7 @@ try: ...@@ -208,7 +209,7 @@ try:
"Skip testing API function, missing root privileges: dmidecode.dump()" "Skip testing API function, missing root privileges: dmidecode.dump()"
), 1) ), 1)
types = range(0, 42)+range(126, 128) types = list(range(0, 42))+list(range(126, 128))
bad_types = [-1, -1000, 256] bad_types = [-1, -1000, 256]
sections = [ sections = [
"bios", "bios",
...@@ -263,7 +264,7 @@ try: ...@@ -263,7 +264,7 @@ try:
test(output is not False) test(output is not False)
if output: if output:
vwrite(" * %s\n"%black(output.keys()), 1) vwrite(" * %s\n"%black(output.keys()), 1)
except LookupError, e: except LookupError as e:
failed(e, 1) failed(e, 1)
for i in bad_types: for i in bad_types:
...@@ -279,15 +280,15 @@ try: ...@@ -279,15 +280,15 @@ try:
try: try:
output = dmidecode.type(i) output = dmidecode.type(i)
if dmidecode_bin: if dmidecode_bin:
_output = commands.getoutput("dmidecode -t %d"%i).strip().split('\n') _output = subprocess.getoutput("dmidecode -t %d"%i).strip().split('\n')
test(len(_output) == 1 and len(output) == 0 or True) test(len(_output) == 1 and len(output) == 0 or True)
else: else:
test(output is not False) test(output is not False)
if output: if output:
vwrite(" * %s\n"%output.keys(), 1) vwrite(" * %s\n"%output.keys(), 1)
except IOError, e: except IOError as e:
failed(e, 1) failed(e, 1)
except LookupError, e: except LookupError as e:
failed(e, 1) failed(e, 1)
...@@ -330,7 +331,7 @@ try: ...@@ -330,7 +331,7 @@ try:
try: try:
output_node = dmixml.QueryTypeId(i) output_node = dmixml.QueryTypeId(i)
test(isinstance(output_node, libxml2.xmlNode)) test(isinstance(output_node, libxml2.xmlNode))
except Exception, e: except Exception as e:
failed(e, 1) failed(e, 1)
except: except:
failed() failed()
...@@ -347,7 +348,7 @@ try: ...@@ -347,7 +348,7 @@ try:
try: try:
output_doc = dmixml.QuerySection(section) output_doc = dmixml.QuerySection(section)
test(isinstance(output_doc, libxml2.xmlDoc)) test(isinstance(output_doc, libxml2.xmlDoc))
except Exception, e: except Exception as e:
failed(e, 1) failed(e, 1)
except: except:
failed() failed()
...@@ -355,9 +356,9 @@ try: ...@@ -355,9 +356,9 @@ try:
except IOError: except IOError:
skipped() skipped()
except ImportError, err: except ImportError as err:
failed() failed()
print err print(err)
vwrite(LINE, 1) vwrite(LINE, 1)
vwrite("Devices : %s\n"%cyan(len(devices)), 1) vwrite("Devices : %s\n"%cyan(len(devices)), 1)
......
...@@ -13,6 +13,7 @@ fi ...@@ -13,6 +13,7 @@ fi
NEW_VERSION=$1 NEW_VERSION=$1
OLD_VERSION=$(cd src;python -c "from setup_common import *; print get_version();") OLD_VERSION=$(cd src;python -c "from setup_common import *; print get_version();")
rm -f src/setup_common.py[co]
# Prepare ChangeLog entry for the python-dmidecode.spec file # Prepare ChangeLog entry for the python-dmidecode.spec file
TSTAMP="$(date +%a\ %b\ %d\ %Y)" TSTAMP="$(date +%a\ %b\ %d\ %Y)"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment