Hi, I am assembling a Python setup including PyTables for AcuSim that must run on Windows 32 bit, Windows 64 bit, Linux 64 bit, and Linux 32 bit. The support desk of HDF5 advised to use hdf5-1.8.0-alpha, because it supports Win64. I am using MicroSoft Visual Studio 2005 because it supports Win32 and Win64. In addition, hdf5-1.8.0 supports this toolset on Win64.
The attached patch for PyTables addresses the following issues on Windows:
1. PyTables will build against the hdf5 debug libraries when the --debug option
is given.
2. it undefines the DEBUG macro on Windows. Somehow the DEBUG macro makes that
dflcn.h gets included in utils.c, but I did not figure out why.
3. the declaration of config in set_cache_size() in utils.c must be before the
statement 'code = 0;' (gcc accepts this C++ idiom, but MSVS2005 does not).
4. Win64 is a bit of a strange platform, because a long has 32 bits and as a
consequence Numeric has no 64 bit integer type. Actually, I would rename
is64bits_platform to has64_bits_long as indicated in the comments in the
patch and use the struct module to determine the size of a long.
I applied this patch trying to solve some of the failures in the unit tests
(output attached) due to Numeric not having a 64 bit integer type on Win64.
In a separate posts (because of SF's 40 kB length restriction) follow the output
of regression tests for Win32 (test.pytables.bw32) and Win64
(test.pytables.bw64).
I worry less about the regression test failures on Win64 than on Win32:
1. The failure in test_earray.CharTypeComprNumpyTestCase occurs on all platforms
(Linux32, Linux64, Windows32, Windows64)
2. The output in test.pytables.bw64 for
python test_Numeric.py verbose Basic0DOneTestCase
shows the 64 bit integer problem:
Running test for array with typecode 'l' for class check: Rank-0 case 1
Type is not equal: Int32 <> Int64
Write and read arrays differ!
Array written: 3
Array written shape: ()
Array written itemsize: 4
Array written type: l
Array read: 3
Array read shape: ()
Array read itemsize: 4
Array read type: l
Type is not equal: Int32 <> Int64
F.
All other failures in test.pytables.bw64 are due to this issue, as far as I
can tell.
3. The output of the regression tests in test.pytables.bw32 shows that the tests
on Win32 provoke HDF5-DIAG messages. The strange thing is that it looks
history dependent, because the invokation:
python test_vlarray.py verbose BasicPythonTestCase.test02_appendVLArray
succeeds, while the invocations:
python test_vlarray.py verbose BasicNumArrayTestCase BasicNumericTestCase \
BasicNumpyTestCase BasicPythonTestCase
and
python test_vlarray.py
fail (see test.pytables.bw32).
Additional observations:
1. All HDF5-1.8.0-alpha3 tests succeed on Win32
2. I have also built HDF5-1.6.5 and PyTables on Win32 with MSVS2005 and I
observe the same problems (but some of the HDF5-1.6.5 tests crash).
3. Occasionally, I have also seen HDF5-DIAG messages on Linux64, but as far as
I can tell, the messages occur only when the pthreads option has been
disabled.
Gerard
PS: I have patches for Python-2.4.3 and the Numerical Python extensions, if you
need or want them.
pytables-1.3.2.win64.patch
Description: Binary data
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________ Pytables-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/pytables-users
