probcomp/crosscat

"pip install crosscat" fails

Closed this issue · 3 comments

Dockerfile and output below. It builds fine from branch master with python setup.py build. Maybe the cythonize C++ code has gone stale.

# Dockerfile that builds, installs, and tests bayeslite. It is for development
# only; users should use the python package.

FROM        ubuntu:15.10
RUN         apt-get update -qq --fix-missing

# Installation dependencies:
RUN apt-get install -y -qq python2.7-dev python-pip git apt-utils pkg-config \
    libfreetype6-dev libboost-dev liblapack-dev gfortran git
RUN pip install setuptools virtualenv

WORKDIR /bayesdb
RUN     pip -q install pyzmq ipython[notebook]==3.2.1 cython numpy==1.8.2 \
        matplotlib==1.4.3 scipy pandas
RUN     BOOST_ROOT=/usr/include pip install crosscat
src/cython_code/State.cpp: In function 'int __pyx_pf_8crosscat_11cython_code_5State_7p_State___cinit__(__pyx_obj_8crosscat_11cython_code_5State_p_State*, PyObject*, PyObject*, PyObject*, PyObject*, PyObject*, PyObject*, PyObject*, PyObject*, PyObject*, PyObject*, PyObject*, PyObject*, PyObject*)':

src/cython_code/State.cpp:3765:263: error: no matching function for call to 'State::State(boost::numeric::ublas::matrix<double>&, std::vector<std::__cxx11::basic_string<char> >&, std::vector<int>&, std::vector<int>&, std::vector<int>&, std::__cxx11::string&, std::__cxx11::string&, std::vector<double>&, std::vector<double>&, std::vector<double>&, std::vector<double>&, int&, int&, int&)'

I've pushed @riastradh-probcomp's fix for #96 to pypi. Can you confirm that it fixes this issue also?

If there are Cython-generated .cpp files in the sdist on pypi, that's a mistake -- the intent has been to include only the source .pyx files in the sdist since cd874d0, in order to avoid this class of problem as well as Cython version skew.

One possible manifestation of this mistake is building the sdist from an unclean source tree -- I just noticed that the MANIFEST.in file will include .cpp files under src/cython_code, which it shouldn't. (We would have caught this earlier if exactly the intended list of files were written in MANIFEST.in, instead of a broad pattern.)

@gregory-marton: It does. Thanks.