New issue 2520: Missing marshal.h for PyMarshal_WriteObjectToString PyMarshal_ReadObjectFromString https://bitbucket.org/pypy/pypy/issues/2520/missing-marshalh-for
peterjc: Biopython releases until now have not attempted to compile any C extension code under PyPy. During the early days of PyPy we deliberately excluding them: https://github.com/biopython/biopython/blob/biopython-168/setup.py#L416 However, in experiments with PyPy2 v5.6 and v5.7 compiling our C code mostly works, with the exception of: ```python Extension('Bio.trie', ['Bio/triemodule.c', 'Bio/trie.c'], include_dirs=["Bio"] ), ``` The following tests are from https://github.com/peterjc/biopython/commit/ce5eed17bffff7999d7c23ebcb01a0380f30c8fb which is/was a test branch with a modified ``setup.py`` to remove the PyPy skipping code. e.g. https://travis-ci.org/peterjc/biopython/builds/214701332 vs https://travis-ci.org/peterjc/biopython/builds/214709981 where PyPy2 v5.7 (and PyPy3.5 v5.7 beta) both fail to compile ``Bio.trie`` Run locally to show the full details: ``` $ rm -rf build && ~/Downloads/pypy-5.7-linux_x86_64-portable/bin/pypy setup.py build ... building 'Bio.trie' extension gcc -pthread -DNDEBUG -O2 -fPIC -IBio -I/home/pc40583/Downloads/pypy-5.7-linux_x86_64-portable/include -c Bio/triemodule.c -o build/temp.linux-x86_64-2.7/Bio/triemodule.o Bio/triemodule.c:2:21: error: marshal.h: No such file or directory Bio/triemodule.c: In function ‘_write_value_to_handle’: Bio/triemodule.c:630: warning: assignment makes pointer from integer without a cast Bio/triemodule.c: In function ‘_read_value_from_handle’: Bio/triemodule.c:735: warning: assignment makes pointer from integer without a cast error: command 'gcc' failed with exit status 1 ``` https://github.com/biopython/biopython/blob/biopython-168/Bio/triemodule.c starts: ```C #include <Python.h> #include <marshal.h> #include "trie.h" ``` The C code references functions ``PyMarshal_WriteObjectToString`` and ``PyMarshal_ReadObjectFromString``, and constant ``Py_MARSHAL_VERSION``. It appears PyPy only supports the Python level marshal interface defined in ``pypy/lib_pypy/_marshal.py``, and not the C level API? The closest issue I could find on the PyPy tracker was #684. _______________________________________________ pypy-issue mailing list pypy-issue@python.org https://mail.python.org/mailman/listinfo/pypy-issue