libtcod / python-tcod

A high-performance Python port of libtcod. Includes the libtcodpy module for backwards compatibility with older projects.
BSD 2-Clause "Simplified" License
410 stars 36 forks source link

tcod-11.1.1 fails to install on Archlinux #82

Closed Athemis closed 5 years ago

Athemis commented 5 years ago

Hi, when trying to install tcod I get the following output. I guess this may be caused by the combination of cffi module (1.12.3) and SDL (2.0.10) versions installed

# LC_ALL=C pip install --user tcod
Collecting tcod
  Using cached https://files.pythonhosted.org/packages/39/f3/a7ad346df47bd02be9f821a0c8a3f65fa856e39744d170b2e6bbbe8978ab/tcod-11.1.1.tar.gz
    Complete output from command python setup.py egg_info:
    fatal: not a git repository (or any parent up to mount point /)
    Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
    Error parsing 'SDL_pixels.h' code:
    typedef enum
    {
        SDL_PIXELFORMAT_UNKNOWN,
        SDL_PIXELFORMAT_INDEX1LSB =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
                                   1, 0),
        SDL_PIXELFORMAT_INDEX1MSB =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
                                   1, 0),
        SDL_PIXELFORMAT_INDEX4LSB =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
                                   4, 0),
        SDL_PIXELFORMAT_INDEX4MSB =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
                                   4, 0),
        SDL_PIXELFORMAT_INDEX8 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),
        SDL_PIXELFORMAT_RGB332 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
                                   SDL_PACKEDLAYOUT_332, 8, 1),
        SDL_PIXELFORMAT_RGB444 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
                                   SDL_PACKEDLAYOUT_4444, 12, 2),
        SDL_PIXELFORMAT_RGB555 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
                                   SDL_PACKEDLAYOUT_1555, 15, 2),
        SDL_PIXELFORMAT_BGR555 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
                                   SDL_PACKEDLAYOUT_1555, 15, 2),
        SDL_PIXELFORMAT_ARGB4444 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
                                   SDL_PACKEDLAYOUT_4444, 16, 2),
        SDL_PIXELFORMAT_RGBA4444 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
                                   SDL_PACKEDLAYOUT_4444, 16, 2),
        SDL_PIXELFORMAT_ABGR4444 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
                                   SDL_PACKEDLAYOUT_4444, 16, 2),
        SDL_PIXELFORMAT_BGRA4444 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
                                   SDL_PACKEDLAYOUT_4444, 16, 2),
        SDL_PIXELFORMAT_ARGB1555 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
                                   SDL_PACKEDLAYOUT_1555, 16, 2),
        SDL_PIXELFORMAT_RGBA5551 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
                                   SDL_PACKEDLAYOUT_5551, 16, 2),
        SDL_PIXELFORMAT_ABGR1555 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
                                   SDL_PACKEDLAYOUT_1555, 16, 2),
        SDL_PIXELFORMAT_BGRA5551 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
                                   SDL_PACKEDLAYOUT_5551, 16, 2),
        SDL_PIXELFORMAT_RGB565 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
                                   SDL_PACKEDLAYOUT_565, 16, 2),
        SDL_PIXELFORMAT_BGR565 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
                                   SDL_PACKEDLAYOUT_565, 16, 2),
        SDL_PIXELFORMAT_RGB24 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
                                   24, 3),
        SDL_PIXELFORMAT_BGR24 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
                                   24, 3),
        SDL_PIXELFORMAT_RGB888 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
                                   SDL_PACKEDLAYOUT_8888, 24, 4),
        SDL_PIXELFORMAT_RGBX8888 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
                                   SDL_PACKEDLAYOUT_8888, 24, 4),
        SDL_PIXELFORMAT_BGR888 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
                                   SDL_PACKEDLAYOUT_8888, 24, 4),
        SDL_PIXELFORMAT_BGRX8888 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
                                   SDL_PACKEDLAYOUT_8888, 24, 4),
        SDL_PIXELFORMAT_ARGB8888 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
                                   SDL_PACKEDLAYOUT_8888, 32, 4),
        SDL_PIXELFORMAT_RGBA8888 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
                                   SDL_PACKEDLAYOUT_8888, 32, 4),
        SDL_PIXELFORMAT_ABGR8888 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
                                   SDL_PACKEDLAYOUT_8888, 32, 4),
        SDL_PIXELFORMAT_BGRA8888 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
                                   SDL_PACKEDLAYOUT_8888, 32, 4),
        SDL_PIXELFORMAT_ARGB2101010 =
            SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
                                   SDL_PACKEDLAYOUT_2101010, 32, 4),

        SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888,
        SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888,
        SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888,
        SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888,

        SDL_PIXELFORMAT_YV12 =
            SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'),
        SDL_PIXELFORMAT_IYUV =
            SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'),
        SDL_PIXELFORMAT_YUY2 =
            SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'),
        SDL_PIXELFORMAT_UYVY =
            SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'),
        SDL_PIXELFORMAT_YVYU =
            SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'),
        SDL_PIXELFORMAT_NV12 =
            SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'),
        SDL_PIXELFORMAT_NV21 =
            SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'),
        SDL_PIXELFORMAT_EXTERNAL_OES =
            SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ')
    } SDL_PixelFormatEnum;
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-6gmanyef/tcod/setup.py", line 157, in <module>
        license="Simplified BSD License",
      File "/usr/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup
        return distutils.core.setup(**attrs)
      File "/usr/lib/python3.7/distutils/core.py", line 108, in setup
        _setup_distribution = dist = klass(attrs)
      File "/usr/lib/python3.7/site-packages/setuptools/dist.py", line 444, in __init__
        k: v for k, v in attrs.items()
      File "/usr/lib/python3.7/distutils/dist.py", line 292, in __init__
        self.finalize_options()
      File "/usr/lib/python3.7/site-packages/setuptools/dist.py", line 732, in finalize_options
        ep.load()(self, ep.name, value)
      File "/usr/lib/python3.7/site-packages/cffi/setuptools_ext.py", line 217, in cffi_modules
        add_cffi_module(dist, cffi_module)
      File "/usr/lib/python3.7/site-packages/cffi/setuptools_ext.py", line 49, in add_cffi_module
        execfile(build_file_name, mod_vars)
      File "/usr/lib/python3.7/site-packages/cffi/setuptools_ext.py", line 25, in execfile
        exec(code, glob, glob)
      File "build_libtcod.py", line 335, in <module>
        parse_sdl2.add_to_ffi(ffi, SDL2_INCLUDE)
      File "/tmp/pip-install-6gmanyef/tcod/parse_sdl2.py", line 175, in add_to_ffi
        ffi.cdef(code, **cdef_args)
      File "/usr/lib/python3.7/site-packages/cffi/api.py", line 112, in cdef
        self._cdef(csource, override=override, packed=packed, pack=pack)
      File "/usr/lib/python3.7/site-packages/cffi/api.py", line 126, in _cdef
        self._parser.parse(csource, override=override, **options)
      File "/usr/lib/python3.7/site-packages/cffi/cparser.py", line 347, in parse
        self._internal_parse(csource)
      File "/usr/lib/python3.7/site-packages/cffi/cparser.py", line 387, in _internal_parse
        decl.type, name=decl.name, partial_length_ok=True)
      File "/usr/lib/python3.7/site-packages/cffi/cparser.py", line 629, in _get_type_and_quals
        tp = self._get_struct_union_enum_type('enum', type, name)
      File "/usr/lib/python3.7/site-packages/cffi/cparser.py", line 738, in _get_struct_union_enum_type
        tp = self._build_enum_type(explicit_name, type.values)
      File "/usr/lib/python3.7/site-packages/cffi/cparser.py", line 885, in _build_enum_type
        nextenumvalue = self._parse_constant(enum.value)
      File "/usr/lib/python3.7/site-packages/cffi/cparser.py", line 872, in _parse_constant
        "simple numeric constant" % exprnode.coord.line)
    cffi.FFIError: :5: unsupported expression: expected a simple numeric constant

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-6gmanyef/tcod/
HexDecimal commented 5 years ago

Should be fixed now. The current setup is sometimes sensitive to minor changes in SDL's headers.