pytries / datrie

Fast, efficiently stored Trie for Python. Uses libdatrie.
http://pypi.python.org/pypi/datrie/
GNU Lesser General Public License v2.1
530 stars 88 forks source link

unable to build with python 3.8 #73

Closed psteinb closed 4 years ago

psteinb commented 4 years ago

Hi, I stumbled upon this as datrie was a dependency of one of my packages. Apparently, datrie 0.8 is not built under python 3.8.

$ singularity pull docker://python:3
$ singularity shell python_3.sif

And then inside this container:

Singularity python_3.sif:~/.../singularity> python -V
Python 3.8.0
Singularity python_3.sif:~/.../singularity> pip3 install datrie
Collecting datrie
  Using cached https://files.pythonhosted.org/packages/f5/a2/49d6db3af61eb139fb8fa2cdff90a4789e8255d227baf8f9a1ec945b4aac/datrie-0.8.tar.gz
Building wheels for collected packages: datrie
  Building wheel for datrie (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-6fr9ojkv/datrie/setup.py'"'"'; __file__='"'"'/tmp/pip-install-6fr9ojkv/datrie/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-igw2fhmv --python-tag cp38
       cwd: /tmp/pip-install-6fr9ojkv/datrie/
 running bdist_wheel
  running build
  running build_clib
  building 'libdatrie' library
  creating build
  creating build/temp.linux-x86_64-3.8
  creating build/temp.linux-x86_64-3.8/libdatrie
  creating build/temp.linux-x86_64-3.8/libdatrie/datrie
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/alpha-map.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/alpha-map.o
  libdatrie/datrie/alpha-map.c: In function ‘alpha_map_char_to_trie’:
  libdatrie/datrie/alpha-map.c:500:21: warning: comparison of integer expressions of different signedness: ‘TrieIndex’ {aka ‘int’} and ‘AlphaChar’ {aka ‘unsigned int’} [-Wsign-compare]
       if (alpha_begin <= ac && ac <= alpha_map->alpha_end)
                       ^~
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/darray.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/darray.o
  libdatrie/datrie/darray.c: In function ‘da_fread’:
  libdatrie/datrie/darray.c:239:22: warning: comparison of integer expressions of different signedness: ‘TrieIndex’ {aka ‘int’} and ‘long unsigned int’ [-Wsign-compare]
       if (d->num_cells > SIZE_MAX / sizeof (DACell))
                        ^
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/dstring.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/dstring.o
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/fileutils.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/fileutils.o
  libdatrie/datrie/fileutils.c: In function ‘file_read_chars’:
  libdatrie/datrie/fileutils.c:103:52: warning: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
       return (fread (buff, sizeof (char), len, file) == len);
                                                      ^~
  libdatrie/datrie/fileutils.c: In function ‘file_write_chars’:
  libdatrie/datrie/fileutils.c:109:53: warning: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
       return (fwrite (buff, sizeof (char), len, file) == len);
                                                       ^~
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/tail.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/tail.o
  libdatrie/datrie/tail.c: In function ‘tail_fread’:
  libdatrie/datrie/tail.c:144:22: warning: comparison of integer expressions of different signedness: ‘TrieIndex’ {aka ‘int’} and ‘long unsigned int’ [-Wsign-compare]
       if (t->num_tails > SIZE_MAX / sizeof (TailBlock))
                        ^
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/trie-string.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/trie-string.o
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/trie.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/trie.o
  ar rcs build/temp.linux-x86_64-3.8/liblibdatrie.a build/temp.linux-x86_64-3.8/libdatrie/datrie/alpha-map.o build/temp.linux-x86_64-3.8/libdatrie/datrie/darray.o build/temp.linux-x86_64-3.8/libdatrie/datrie/dstring.o build/temp.linux-x86_64-3.8/libdatrie/datrie/fileutils.o build/temp.linux-x86_64-3.8/libdatrie/datrie/tail.o build/temp.linux-x86_64-3.8/libdatrie/datrie/trie-string.o build/temp.linux-x86_64-3.8/libdatrie/datrie/trie.o
  running build_ext
  building 'datrie' extension
  creating build/temp.linux-x86_64-3.8/src
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -I/usr/local/include/python3.8 -c src/datrie.c -o build/temp.linux-x86_64-3.8/src/datrie.o
  src/datrie.c: In function ‘__pyx_pf_6datrie_8BaseTrie___init__’:
  src/datrie.c:2943:53: warning: passing argument 1 of ‘trie_new’ from incompatible pointer type [-Wincompatible-pointer-types]
     __pyx_v_self->_c_trie = trie_new(__pyx_v_alpha_map->_c_alpha_map);
                                      ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
  In file included from src/datrie.c:605:
  src/../libdatrie/datrie/trie.h:120:9: note: expected ‘const AlphaMap *’ {aka ‘const struct _AlphaMap *’} but argument is of type ‘struct AlphaMap *’
   Trie *  trie_new (const AlphaMap *alpha_map);
           ^~~~~~~~
  src/datrie.c: In function ‘__pyx_pf_6datrie_8BaseTrie_6clear’:
  src/datrie.c:3521:47: warning: passing argument 1 of ‘trie_new’ from incompatible pointer type [-Wincompatible-pointer-types]
     __pyx_v__c_trie = trie_new(__pyx_v_alpha_map->_c_alpha_map);
                                ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
  In file included from src/datrie.c:605:
  src/../libdatrie/datrie/trie.h:120:9: note: expected ‘const AlphaMap *’ {aka ‘const struct _AlphaMap *’} but argument is of type ‘struct AlphaMap *’
   Trie *  trie_new (const AlphaMap *alpha_map);
           ^~~~~~~~
  src/datrie.c: In function ‘__pyx_pf_6datrie_8AlphaMap___cinit__’:
  src/datrie.c:19978:30: warning: assignment to ‘struct AlphaMap *’ from incompatible pointer type ‘AlphaMap *’ {aka ‘struct _AlphaMap *’} [-Wincompatible-pointer-types]
     __pyx_v_self->_c_alpha_map = alpha_map_new();
                                ^
  src/datrie.c: In function ‘__pyx_pf_6datrie_8AlphaMap_2__dealloc__’:
  src/datrie.c:20035:32: warning: passing argument 1 of ‘alpha_map_free’ from incompatible pointer type [-Wincompatible-pointer-types]
       alpha_map_free(__pyx_v_self->_c_alpha_map);
                      ~~~~~~~~~~~~^~~~~~~~~~~~~~
  In file included from src/datrie.c:604:
  src/../libdatrie/datrie/alpha-map.h:72:39: note: expected ‘AlphaMap *’ {aka ‘struct _AlphaMap *’} but argument is of type ‘struct AlphaMap *’
   void        alpha_map_free (AlphaMap *alpha_map);
                               ~~~~~~~~~~^~~~~~~~~
  src/datrie.c: In function ‘__pyx_f_6datrie_8AlphaMap_copy’:
  src/datrie.c:20398:61: warning: passing argument 1 of ‘alpha_map_clone’ from incompatible pointer type [-Wincompatible-pointer-types]
     __pyx_v_clone->_c_alpha_map = alpha_map_clone(__pyx_v_self->_c_alpha_map);
                                                   ~~~~~~~~~~~~^~~~~~~~~~~~~~
  In file included from src/datrie.c:604:
  src/../libdatrie/datrie/alpha-map.h:70:13: note: expected ‘const AlphaMap *’ {aka ‘const struct _AlphaMap *’} but argument is of type ‘struct AlphaMap *’
   AlphaMap *  alpha_map_clone (const AlphaMap *a_map);
               ^~~~~~~~~~~~~~~
  src/datrie.c:20398:31: warning: assignment to ‘struct AlphaMap *’ from incompatible pointer type ‘AlphaMap *’ {aka ‘struct _AlphaMap *’} [-Wincompatible-pointer-types]
     __pyx_v_clone->_c_alpha_map = alpha_map_clone(__pyx_v_self->_c_alpha_map);
                                 ^
  src/datrie.c: In function ‘__pyx_f_6datrie_8AlphaMap__add_range’:
  src/datrie.c:20939:50: warning: passing argument 1 of ‘alpha_map_add_range’ from incompatible pointer type [-Wincompatible-pointer-types]
     __pyx_v_code = alpha_map_add_range(__pyx_v_self->_c_alpha_map, __pyx_v_begin, __pyx_v_end);
                                        ~~~~~~~~~~~~^~~~~~~~~~~~~~
  In file included from src/datrie.c:604:
  src/../libdatrie/datrie/alpha-map.h:74:45: note: expected ‘AlphaMap *’ {aka ‘struct _AlphaMap *’} but argument is of type ‘struct AlphaMap *’
   int         alpha_map_add_range (AlphaMap  *alpha_map,
                                    ~~~~~~~~~~~^~~~~~~~~
  src/datrie.c: In function ‘__Pyx_InitCachedConstants’:
  src/datrie.c:24658:273: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
     __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_datrie_pyx, __pyx_n_s_to_ranges, 1122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 1122, __pyx_L1_error)
                                                                                                                                                                                                                                                                                   ^
  src/datrie.c:24658:34: error: ‘__Pyx_PyCode_New’ undeclared (first use in this function); did you mean ‘PyCode_New’?
     __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_datrie_pyx, __pyx_n_s_to_ranges, 1122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 1122, __pyx_L1_error)
                                    ^~~~~~~~~~~~~~~~
                                    PyCode_New
  src/datrie.c:24658:34: note: each undeclared identifier is reported only once for each function it appears in
  src/datrie.c:24670:282: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
     __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_datrie_pyx, __pyx_n_s_alphabet_to_ranges, 1135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 1135, __pyx_L1_error)
                                                                                                                                                                                                                                                                                            ^
  src/datrie.c:24682:267: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
     __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_datrie_pyx, __pyx_n_s_new, 1140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1140, __pyx_L1_error)
                                                                                                                                                                                                                                                                             ^
  src/datrie.c: In function ‘__Pyx_CreateCodeObjectForTraceback’:
  src/datrie.c:28716:5: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
       );
       ^
  src/datrie.c:28700:15: error: ‘__Pyx_PyCode_New’ undeclared (first use in this function); did you mean ‘PyCode_New’?
       py_code = __Pyx_PyCode_New(
                 ^~~~~~~~~~~~~~~~
                 PyCode_New
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for datrie
  Running setup.py clean for datrie
Failed to build datrie
Installing collected packages: datrie
    Running setup.py install for datrie ... error
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-6fr9ojkv/datrie/setup.py'"'"'; __file__='"'"'/tmp/pip-install-6fr9ojkv/datrie/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-56_l3lnr/install-record.txt --single-version-externally-managed --compile
         cwd: /tmp/pip-install-6fr9ojkv/datrie/
    Complete output (111 lines):
    running install
    running build
    running build_clib
    building 'libdatrie' library
    creating build
    creating build/temp.linux-x86_64-3.8
    creating build/temp.linux-x86_64-3.8/libdatrie
    creating build/temp.linux-x86_64-3.8/libdatrie/datrie
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/alpha-map.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/alpha-map.o
    libdatrie/datrie/alpha-map.c: In function ‘alpha_map_char_to_trie’:
    libdatrie/datrie/alpha-map.c:500:21: warning: comparison of integer expressions of different signedness: ‘TrieIndex’ {aka ‘int’} and ‘AlphaChar’ {aka ‘unsigned int’} [-Wsign-compare]
         if (alpha_begin <= ac && ac <= alpha_map->alpha_end)
                         ^~
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/darray.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/darray.o
    libdatrie/datrie/darray.c: In function ‘da_fread’:
    libdatrie/datrie/darray.c:239:22: warning: comparison of integer expressions of different signedness: ‘TrieIndex’ {aka ‘int’} and ‘long unsigned int’ [-Wsign-compare]
         if (d->num_cells > SIZE_MAX / sizeof (DACell))
                          ^
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/dstring.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/dstring.o
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/fileutils.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/fileutils.o
    libdatrie/datrie/fileutils.c: In function ‘file_read_chars’:
    libdatrie/datrie/fileutils.c:103:52: warning: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
         return (fread (buff, sizeof (char), len, file) == len);
                                                        ^~
    libdatrie/datrie/fileutils.c: In function ‘file_write_chars’:
    libdatrie/datrie/fileutils.c:109:53: warning: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
         return (fwrite (buff, sizeof (char), len, file) == len);
                                                         ^~
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/tail.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/tail.o
    libdatrie/datrie/tail.c: In function ‘tail_fread’:
    libdatrie/datrie/tail.c:144:22: warning: comparison of integer expressions of different signedness: ‘TrieIndex’ {aka ‘int’} and ‘long unsigned int’ [-Wsign-compare]
         if (t->num_tails > SIZE_MAX / sizeof (TailBlock))
                          ^
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/trie-string.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/trie-string.o
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -c libdatrie/datrie/trie.c -o build/temp.linux-x86_64-3.8/libdatrie/datrie/trie.o
    ar rcs build/temp.linux-x86_64-3.8/liblibdatrie.a build/temp.linux-x86_64-3.8/libdatrie/datrie/alpha-map.o build/temp.linux-x86_64-3.8/libdatrie/datrie/darray.o build/temp.linux-x86_64-3.8/libdatrie/datrie/dstring.o build/temp.linux-x86_64-3.8/libdatrie/datrie/fileutils.o build/temp.linux-x86_64-3.8/libdatrie/datrie/tail.o build/temp.linux-x86_64-3.8/libdatrie/datrie/trie-string.o build/temp.linux-x86_64-3.8/libdatrie/datrie/trie.o
    running build_ext
    building 'datrie' extension
    creating build/temp.linux-x86_64-3.8/src
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ilibdatrie -I/usr/local/include/python3.8 -c src/datrie.c -o build/temp.linux-x86_64-3.8/src/datrie.o
    src/datrie.c: In function ‘__pyx_pf_6datrie_8BaseTrie___init__’:
    src/datrie.c:2943:53: warning: passing argument 1 of ‘trie_new’ from incompatible pointer type [-Wincompatible-pointer-types]
       __pyx_v_self->_c_trie = trie_new(__pyx_v_alpha_map->_c_alpha_map);
                                        ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
    In file included from src/datrie.c:605:
    src/../libdatrie/datrie/trie.h:120:9: note: expected ‘const AlphaMap *’ {aka ‘const struct _AlphaMap *’} but argument is of type ‘struct AlphaMap *’
     Trie *  trie_new (const AlphaMap *alpha_map);
             ^~~~~~~~
    src/datrie.c: In function ‘__pyx_pf_6datrie_8BaseTrie_6clear’:
    src/datrie.c:3521:47: warning: passing argument 1 of ‘trie_new’ from incompatible pointer type [-Wincompatible-pointer-types]
       __pyx_v__c_trie = trie_new(__pyx_v_alpha_map->_c_alpha_map);
                                  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
    In file included from src/datrie.c:605:
    src/../libdatrie/datrie/trie.h:120:9: note: expected ‘const AlphaMap *’ {aka ‘const struct _AlphaMap *’} but argument is of type ‘struct AlphaMap *’
     Trie *  trie_new (const AlphaMap *alpha_map);
             ^~~~~~~~
    src/datrie.c: In function ‘__pyx_pf_6datrie_8AlphaMap___cinit__’:
    src/datrie.c:19978:30: warning: assignment to ‘struct AlphaMap *’ from incompatible pointer type ‘AlphaMap *’ {aka ‘struct _AlphaMap *’} [-Wincompatible-pointer-types]
       __pyx_v_self->_c_alpha_map = alpha_map_new();
                                  ^
    src/datrie.c: In function ‘__pyx_pf_6datrie_8AlphaMap_2__dealloc__’:
    src/datrie.c:20035:32: warning: passing argument 1 of ‘alpha_map_free’ from incompatible pointer type [-Wincompatible-pointer-types]
         alpha_map_free(__pyx_v_self->_c_alpha_map);
                        ~~~~~~~~~~~~^~~~~~~~~~~~~~
    In file included from src/datrie.c:604:
    src/../libdatrie/datrie/alpha-map.h:72:39: note: expected ‘AlphaMap *’ {aka ‘struct _AlphaMap *’} but argument is of type ‘struct AlphaMap *’
     void        alpha_map_free (AlphaMap *alpha_map);
                                 ~~~~~~~~~~^~~~~~~~~
    src/datrie.c: In function ‘__pyx_f_6datrie_8AlphaMap_copy’:
    src/datrie.c:20398:61: warning: passing argument 1 of ‘alpha_map_clone’ from incompatible pointer type [-Wincompatible-pointer-types]
       __pyx_v_clone->_c_alpha_map = alpha_map_clone(__pyx_v_self->_c_alpha_map);
                                                     ~~~~~~~~~~~~^~~~~~~~~~~~~~
    In file included from src/datrie.c:604:
    src/../libdatrie/datrie/alpha-map.h:70:13: note: expected ‘const AlphaMap *’ {aka ‘const struct _AlphaMap *’} but argument is of type ‘struct AlphaMap *’
     AlphaMap *  alpha_map_clone (const AlphaMap *a_map);
                 ^~~~~~~~~~~~~~~
    src/datrie.c:20398:31: warning: assignment to ‘struct AlphaMap *’ from incompatible pointer type ‘AlphaMap *’ {aka ‘struct _AlphaMap *’} [-Wincompatible-pointer-types]
       __pyx_v_clone->_c_alpha_map = alpha_map_clone(__pyx_v_self->_c_alpha_map);
                                   ^
    src/datrie.c: In function ‘__pyx_f_6datrie_8AlphaMap__add_range’:
    src/datrie.c:20939:50: warning: passing argument 1 of ‘alpha_map_add_range’ from incompatible pointer type [-Wincompatible-pointer-types]
       __pyx_v_code = alpha_map_add_range(__pyx_v_self->_c_alpha_map, __pyx_v_begin, __pyx_v_end);
                                          ~~~~~~~~~~~~^~~~~~~~~~~~~~
    In file included from src/datrie.c:604:
    src/../libdatrie/datrie/alpha-map.h:74:45: note: expected ‘AlphaMap *’ {aka ‘struct _AlphaMap *’} but argument is of type ‘struct AlphaMap *’
     int         alpha_map_add_range (AlphaMap  *alpha_map,
                                      ~~~~~~~~~~~^~~~~~~~~
    src/datrie.c: In function ‘__Pyx_InitCachedConstants’:
    src/datrie.c:24658:273: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
       __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_datrie_pyx, __pyx_n_s_to_ranges, 1122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 1122, __pyx_L1_error)
                                                                                                                                                                                                                                                                                     ^
    src/datrie.c:24658:34: error: ‘__Pyx_PyCode_New’ undeclared (first use in this function); did you mean ‘PyCode_New’?
       __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_datrie_pyx, __pyx_n_s_to_ranges, 1122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 1122, __pyx_L1_error)
                                      ^~~~~~~~~~~~~~~~
                                      PyCode_New
    src/datrie.c:24658:34: note: each undeclared identifier is reported only once for each function it appears in
    src/datrie.c:24670:282: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
       __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_datrie_pyx, __pyx_n_s_alphabet_to_ranges, 1135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 1135, __pyx_L1_error)
                                                                                                                                                                                                                                                                                              ^
    src/datrie.c:24682:267: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
       __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_datrie_pyx, __pyx_n_s_new, 1140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1140, __pyx_L1_error)
                                                                                                                                                                                                                                                                               ^
    src/datrie.c: In function ‘__Pyx_CreateCodeObjectForTraceback’:
    src/datrie.c:28716:5: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
         );
         ^
    src/datrie.c:28700:15: error: ‘__Pyx_PyCode_New’ undeclared (first use in this function); did you mean ‘PyCode_New’?
         py_code = __Pyx_PyCode_New(
                   ^~~~~~~~~~~~~~~~
                   PyCode_New
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-6fr9ojkv/datrie/setup.py'"'"'; __file__='"'"'/tmp/pip-install-6fr9ojkv/datrie/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-56_l3lnr/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.
Singularity python_3.sif:~/.../singularity>

Maybe this report could help resolve the issue.

sjohannes commented 4 years ago

This just needs a refresh of the bundled C code using Cython 0.29.14 (by rerunning update_c.sh). After that datrie should build, at least using GCC.

psteinb commented 4 years ago

That sounds great! But, can this be pushed to PYPI? As I reported, the error occurs when doing pip3 install datrie.

Artoria2e5 commented 4 years ago

MSVC is complaining about the same thing too, although it is complaining about more nebulous stuff like "insufficient parameters for macro __Pyx_PyCode_New" and some syntax errors on ). Bunch of thanks for the update stuff.

mbhall88 commented 4 years ago

Until #76 gets merged, I found the following worked for me

pip3 install "git+https://github.com/ashwinvis/datrie.git@python3.8"
tacaswell commented 4 years ago

fixed by #80