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.

Attachment: 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

Reply via email to