[Numpy-discussion] ANN: 1.8.0b2 release.

Frédéric Bastien nouiz at nouiz.org
Wed Sep 11 14:12:24 EDT 2013


Hi,

I create an Ubuntu VM, cloned numpy and it compiled correctly in it.

I tried in my normal development environment (instead of a virtualenv) with
my old clone that is updated of numpy and it failed. So this isn't
virtualenv.

I created a new clone of numpy and it compiled correctly with my normal
development environment.

So this seam to indicate that the __multiarray_api.* are cached.

In the new clone, I have this after compilation:

$find . -name '*multiarray_api*'
./build/src.linux-x86_64-2.7/numpy/core/include/numpy/__multiarray_api.c
./build/src.linux-x86_64-2.7/numpy/core/include/numpy/multiarray_api.txt
./build/src.linux-x86_64-2.7/numpy/core/include/numpy/__multiarray_api.h

In my old clone, I have this:
$cd ../numpy
[bastienf at oolong numpy]$find . -name '*multiarray_api*'
./numpy/core/include/numpy/__multiarray_api.h
./build/src.linux-x86_64-2.7/numpy/core/include/numpy/__multiarray_api.c
./build/src.linux-x86_64-2.7/numpy/core/include/numpy/multiarray_api.txt
./build/src.linux-x86_64-2.7/numpy/core/include/numpy/__multiarray_api.h

So for some reason, the __multiarray_api.h file ended in the source of
numpy. When this happen all following compilation reuse it instead of
regenerating it.

If in the new numpy clone, I run: python setup.py build_ext --inplace

I get:

$find . -name '*multiarray_api*'
./numpy/core/include/numpy/__multiarray_api.c
./numpy/core/include/numpy/multiarray_api.txt
./numpy/core/include/numpy/__multiarray_api.h
./build/src.linux-x86_64-2.7/numpy/core/include/numpy/__multiarray_api.c
./build/src.linux-x86_64-2.7/numpy/core/include/numpy/multiarray_api.txt
./build/src.linux-x86_64-2.7/numpy/core/include/numpy/__multiarray_api.h

So this could explain how I ended up with a numpy clone in such state.

I think we should make numpy always regenerate the auto-generated files
even if they are present, or it would need to check if they are older the
the source of thoses files. Do you think this is the good solution too? Do
someone have guidance on where those file are generated? Do you and how do
you support the partial rebuild vs the full rebuild?

Or is it just not supported to build inplace? In the .gitignore file, there
is 41 files that seam to be generated.

thanks

Frédéric





On Mon, Sep 9, 2013 at 2:14 PM, Charles R Harris
<charlesr.harris at gmail.com>wrote:

>
>
>
> On Mon, Sep 9, 2013 at 12:04 PM, Charles R Harris <
> charlesr.harris at gmail.com> wrote:
>
>>
>>
>>
>> On Mon, Sep 9, 2013 at 11:09 AM, Frédéric Bastien <nouiz at nouiz.org>wrote:
>>
>>> I don't have CFLAGS defined. But I have iothers env variable that point
>>> to other python stuff like CPATH.
>>>
>>> But even in that case, I don't understand how other people could have
>>> compiled methods.c. The include aren't part of the env variable, but in the
>>> file.
>>>
>>> Anyway, I think your PR is the good fix. I checked our PR and now I have
>>> this new error:
>>>
>>> gcc: numpy/core/src/multiarray/multiarraymodule.c
>>>
>>> In file included from
>>> numpy/core/src/multiarray/multiarraymodule.c:3753:0:
>>>
>>> build/src.linux-x86_64-2.7/numpy/core/include/numpy/__multiarray_api.c:303:18:
>>> error: ‘PyArray_Partition’ undeclared here (not in a function)
>>>
>>> build/src.linux-x86_64-2.7/numpy/core/include/numpy/__multiarray_api.c:304:18:
>>> error: ‘PyArray_ArgPartition’ undeclared here (not in a function)
>>>
>>> In file included from
>>> numpy/core/src/multiarray/multiarraymodule.c:3753:0:
>>>
>>> build/src.linux-x86_64-2.7/numpy/core/include/numpy/__multiarray_api.c:303:18:
>>> error: ‘PyArray_Partition’ undeclared here (not in a function)
>>>
>>> build/src.linux-x86_64-2.7/numpy/core/include/numpy/__multiarray_api.c:304:18:
>>> error: ‘PyArray_ArgPartition’ undeclared here (not in a function)
>>>
>>> error: Command "gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -O2
>>> -fPIC -DHAVE_NPY_CONFIG_H=1 -Inumpy/core/include
>>> -Ibuild/src.linux-x86_64-2.7/numpy/core/include/numpy
>>> -Inumpy/core/src/private -Inumpy/core/src -Inumpy/core
>>> -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath
>>> -Inumpy/core/src/npysort -Inumpy/core/include
>>> -I/opt/lisa/os/epd-7.1.2/include/python2.7 -c
>>> numpy/core/src/multiarray/multiarraymodule.c -o
>>> build/temp.linux-x86_64-2.7/numpy/core/src/multiarray/multiarraymodule.o"
>>> failed with exit status 1
>>>
>>>
>>> So it seam we have the same problem with those 2 functions. They are
>>> defined in numpy/core/src/multiarray/item_selection.c, but not in the .h
>>> file.
>>>
>>>
>> I'm going to guess that there is something special about your virtualenv.
>>
>> <snip>
>>
>>
> The prototypes should be in `arrayobject.h` and `ndarrayobject.h`. Perhaps
> old versions are being used and cached somewhere. Are they precompiled
> somewhere?
>
> Chuck
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20130911/8564d972/attachment.html>


More information about the NumPy-Discussion mailing list