Skip to content

PyEDA fails to build. #196

Description

@matj1

If I try to install PyEDA with pip install pyeda, it fails with this error:

thirdparty/espresso/src/cofactor.c:351:50: error: passing argument 4 of ‘qsort’ from incompatible pointer type [-Wincompatible-pointer-types]
  351 |     qsort((char *) (T+2), ncubes, sizeof(set *), d1_order);
      |                                                  ^~~~~~~~
      |                                                  |
      |                                                  int (*)(set **, set **) {aka int (*)(unsigned int **, unsigned int **)}
In file included from thirdparty/espresso/src/utility.h:6,
                 from thirdparty/espresso/src/espresso.h:8,
                 from thirdparty/espresso/src/cofactor.c:3:
/usr/include/stdlib.h:971:34: note: expected ‘__compar_fn_t’ {aka ‘int (*)(const void *, const void *)’} but argument is of type ‘int (*)(set **, set **)’ {aka ‘int (*)(unsigned int **, unsigned int **)’}
  971 |                    __compar_fn_t __compar) __nonnull ((1, 4));
      |                    ~~~~~~~~~~~~~~^~~~~~~~
error: command '/usr/bin/gcc' failed with exit code 1

I use Python 3.13.2 on Arch Linux.

The full report
Collecting pyeda
  Using cached pyeda-0.29.0.tar.gz (486 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: pyeda
  Building wheel for pyeda (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for pyeda (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [82 lines of output]
      /tmp/pip-build-env-59e_gu21/overlay/lib/python3.13/site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.
      !!
      
              ********************************************************************************
              Please consider removing the following classifiers in favor of a SPDX license expression:
      
              License :: OSI Approved :: BSD License
      
              See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
              ********************************************************************************
      
      !!
        self._finalize_license_expression()
      running bdist_wheel
      running build
      running build_py
      creating build/lib.linux-x86_64-cpython-313/pyeda
      copying pyeda/util.py -> build/lib.linux-x86_64-cpython-313/pyeda
      copying pyeda/inter.py -> build/lib.linux-x86_64-cpython-313/pyeda
      copying pyeda/__init__.py -> build/lib.linux-x86_64-cpython-313/pyeda
      creating build/lib.linux-x86_64-cpython-313/pyeda/boolalg
      copying pyeda/boolalg/table.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg
      copying pyeda/boolalg/minimization.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg
      copying pyeda/boolalg/expr.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg
      copying pyeda/boolalg/boolfunc.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg
      copying pyeda/boolalg/bfarray.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg
      copying pyeda/boolalg/bdd.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg
      copying pyeda/boolalg/__init__.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg
      creating build/lib.linux-x86_64-cpython-313/pyeda/logic
      copying pyeda/logic/sudoku.py -> build/lib.linux-x86_64-cpython-313/pyeda/logic
      copying pyeda/logic/graycode.py -> build/lib.linux-x86_64-cpython-313/pyeda/logic
      copying pyeda/logic/aes.py -> build/lib.linux-x86_64-cpython-313/pyeda/logic
      copying pyeda/logic/addition.py -> build/lib.linux-x86_64-cpython-313/pyeda/logic
      copying pyeda/logic/__init__.py -> build/lib.linux-x86_64-cpython-313/pyeda/logic
      creating build/lib.linux-x86_64-cpython-313/pyeda/parsing
      copying pyeda/parsing/token.py -> build/lib.linux-x86_64-cpython-313/pyeda/parsing
      copying pyeda/parsing/pla.py -> build/lib.linux-x86_64-cpython-313/pyeda/parsing
      copying pyeda/parsing/lex.py -> build/lib.linux-x86_64-cpython-313/pyeda/parsing
      copying pyeda/parsing/dimacs.py -> build/lib.linux-x86_64-cpython-313/pyeda/parsing
      copying pyeda/parsing/boolexpr.py -> build/lib.linux-x86_64-cpython-313/pyeda/parsing
      copying pyeda/parsing/__init__.py -> build/lib.linux-x86_64-cpython-313/pyeda/parsing
      creating build/lib.linux-x86_64-cpython-313/pyeda/test
      copying pyeda/test/__init__.py -> build/lib.linux-x86_64-cpython-313/pyeda/test
      creating build/lib.linux-x86_64-cpython-313/pyeda/boolalg/test
      copying pyeda/boolalg/test/test_table.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg/test
      copying pyeda/boolalg/test/test_picosat.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg/test
      copying pyeda/boolalg/test/test_exxpr.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg/test
      copying pyeda/boolalg/test/test_expr.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg/test
      copying pyeda/boolalg/test/test_espresso.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg/test
      copying pyeda/boolalg/test/test_boolfunc.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg/test
      copying pyeda/boolalg/test/test_bfarray.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg/test
      copying pyeda/boolalg/test/test_bdd.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg/test
      copying pyeda/boolalg/test/__init__.py -> build/lib.linux-x86_64-cpython-313/pyeda/boolalg/test
      creating build/lib.linux-x86_64-cpython-313/pyeda/logic/test
      copying pyeda/logic/test/test_sudoku.py -> build/lib.linux-x86_64-cpython-313/pyeda/logic/test
      copying pyeda/logic/test/test_graycode.py -> build/lib.linux-x86_64-cpython-313/pyeda/logic/test
      copying pyeda/logic/test/test_addition.py -> build/lib.linux-x86_64-cpython-313/pyeda/logic/test
      copying pyeda/logic/test/__init__.py -> build/lib.linux-x86_64-cpython-313/pyeda/logic/test
      creating build/lib.linux-x86_64-cpython-313/pyeda/parsing/test
      copying pyeda/parsing/test/test_pla.py -> build/lib.linux-x86_64-cpython-313/pyeda/parsing/test
      copying pyeda/parsing/test/test_dimacs.py -> build/lib.linux-x86_64-cpython-313/pyeda/parsing/test
      copying pyeda/parsing/test/test_boolexpr.py -> build/lib.linux-x86_64-cpython-313/pyeda/parsing/test
      copying pyeda/parsing/test/__init__.py -> build/lib.linux-x86_64-cpython-313/pyeda/parsing/test
      running build_ext
      building 'pyeda.boolalg.espresso' extension
      creating build/temp.linux-x86_64-cpython-313/pyeda/boolalg
      creating build/temp.linux-x86_64-cpython-313/thirdparty/espresso/src
      gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -ffat-lto-objects -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -fPIC -Ithirdparty/espresso/src -I/home/matj1/trappist-fork-venv/include -I/usr/include/python3.13 -c pyeda/boolalg/espressomodule.c -o build/temp.linux-x86_64-cpython-313/pyeda/boolalg/espressomodule.o
      gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -ffat-lto-objects -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -fPIC -Ithirdparty/espresso/src -I/home/matj1/trappist-fork-venv/include -I/usr/include/python3.13 -c thirdparty/espresso/src/cofactor.c -o build/temp.linux-x86_64-cpython-313/thirdparty/espresso/src/cofactor.o
      thirdparty/espresso/src/cofactor.c: In function ‘simplify_cubelist’:
      thirdparty/espresso/src/cofactor.c:351:50: error: passing argument 4 of ‘qsort’ from incompatible pointer type [-Wincompatible-pointer-types]
        351 |     qsort((char *) (T+2), ncubes, sizeof(set *), d1_order);
            |                                                  ^~~~~~~~
            |                                                  |
            |                                                  int (*)(set **, set **) {aka int (*)(unsigned int **, unsigned int **)}
      In file included from thirdparty/espresso/src/utility.h:6,
                       from thirdparty/espresso/src/espresso.h:8,
                       from thirdparty/espresso/src/cofactor.c:3:
      /usr/include/stdlib.h:971:34: note: expected ‘__compar_fn_t’ {aka ‘int (*)(const void *, const void *)’} but argument is of type ‘int (*)(set **, set **)’ {aka ‘int (*)(unsigned int **, unsigned int **)’}
        971 |                    __compar_fn_t __compar) __nonnull ((1, 4));
            |                    ~~~~~~~~~~~~~~^~~~~~~~
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pyeda
Failed to build pyeda
ERROR: Failed to build installable wheels for some pyproject.toml based projects (pyeda)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions