Uploaded image for project: 'MariaDB Connector/Python'
  1. MariaDB Connector/Python
  2. CONPY-292

Failed building wheel for mariadb

    XMLWordPrintable

Details

    • 3.12.6

    Description

      Attempting to build the mariadb-connector-python version 1.1.10 results in a compilation error related to incompatible pointer types in the C extension code. The build process fails when compiling the _mariadb extension, specifically in the mariadb_cursor.c file.

      Command:

      pip install ./mariadb-connector-python-1.1.10

      Output:

      Processing ./mariadb-connector-python-1.1.10
        Installing build dependencies ... done
        Getting requirements to build wheel ... done
        Preparing metadata (pyproject.toml) ... done
      Collecting packaging (from mariadb==1.1.10)
        Using cached packaging-24.1-py3-none-any.whl.metadata (3.2 kB)
      Using cached packaging-24.1-py3-none-any.whl (53 kB)
      Building wheels for collected packages: mariadb
        Building wheel for mariadb (pyproject.toml) ... error
        error: subprocess-exited-with-error
        
        × Building wheel for mariadb (pyproject.toml) did not run successfully.
        │ exit code: 1
        ╰─> [44 lines of output]
            running bdist_wheel
            running build
            running build_py
            creating build/lib.linux-x86_64-cpython-312/mariadb
            copying mariadb/__init__.py -> build/lib.linux-x86_64-cpython-312/mariadb
            copying mariadb/connectionpool.py -> build/lib.linux-x86_64-cpython-312/mariadb
            copying mariadb/connections.py -> build/lib.linux-x86_64-cpython-312/mariadb
            creating build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/__init__.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/CAPABILITY.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/CLIENT.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/CURSOR.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/ERR.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/FIELD_FLAG.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/EXT_FIELD_TYPE.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/INDICATOR.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/INFO.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/STATUS.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/constants/TPC_STATE.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
            copying mariadb/cursors.py -> build/lib.linux-x86_64-cpython-312/mariadb
            copying mariadb/dbapi20.py -> build/lib.linux-x86_64-cpython-312/mariadb
            copying mariadb/field.py -> build/lib.linux-x86_64-cpython-312/mariadb
            copying mariadb/release_info.py -> build/lib.linux-x86_64-cpython-312/mariadb
            running build_ext
            building 'mariadb._mariadb' extension
            creating build/temp.linux-x86_64-cpython-312/mariadb
            gcc -fno-strict-overflow -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -fexceptions -fcf-protection -fexceptions -fcf-protection -fexceptions -fcf-protection -fPIC -DPY_MARIADB_MAJOR_VERSION=1 -DPY_MARIADB_MINOR_VERSION=1 -DPY_MARIADB_PATCH_VERSION=10 -DPY_MARIADB_PRE_RELEASE_SEGMENT=\"None\" -DPY_MARIADB_PRE_RELEASE_NR=\"0\" -DPY_MARIADB_POST_RELEASE_SEGMENT=\"None\" -DPY_MARIADB_POST_RELEASE_NR=\"0\" -I/usr/include/mysql -I/usr/include/mysql/mysql -I./include -I/home/rsiddhu/dev/django/.env/include -I/usr/include/python3.12 -c mariadb/mariadb.c -o build/temp.linux-x86_64-cpython-312/mariadb/mariadb.o -DDEFAULT_PLUGINS_SUBDIR=\"/usr/lib64/mariadb/plugin\"
            gcc -fno-strict-overflow -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -fexceptions -fcf-protection -fexceptions -fcf-protection -fexceptions -fcf-protection -fPIC -DPY_MARIADB_MAJOR_VERSION=1 -DPY_MARIADB_MINOR_VERSION=1 -DPY_MARIADB_PATCH_VERSION=10 -DPY_MARIADB_PRE_RELEASE_SEGMENT=\"None\" -DPY_MARIADB_PRE_RELEASE_NR=\"0\" -DPY_MARIADB_POST_RELEASE_SEGMENT=\"None\" -DPY_MARIADB_POST_RELEASE_NR=\"0\" -I/usr/include/mysql -I/usr/include/mysql/mysql -I./include -I/home/rsiddhu/dev/django/.env/include -I/usr/include/python3.12 -c mariadb/mariadb_codecs.c -o build/temp.linux-x86_64-cpython-312/mariadb/mariadb_codecs.o -DDEFAULT_PLUGINS_SUBDIR=\"/usr/lib64/mariadb/plugin\"
            gcc -fno-strict-overflow -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -fexceptions -fcf-protection -fexceptions -fcf-protection -fexceptions -fcf-protection -fPIC -DPY_MARIADB_MAJOR_VERSION=1 -DPY_MARIADB_MINOR_VERSION=1 -DPY_MARIADB_PATCH_VERSION=10 -DPY_MARIADB_PRE_RELEASE_SEGMENT=\"None\" -DPY_MARIADB_PRE_RELEASE_NR=\"0\" -DPY_MARIADB_POST_RELEASE_SEGMENT=\"None\" -DPY_MARIADB_POST_RELEASE_NR=\"0\" -I/usr/include/mysql -I/usr/include/mysql/mysql -I./include -I/home/rsiddhu/dev/django/.env/include -I/usr/include/python3.12 -c mariadb/mariadb_connection.c -o build/temp.linux-x86_64-cpython-312/mariadb/mariadb_connection.o -DDEFAULT_PLUGINS_SUBDIR=\"/usr/lib64/mariadb/plugin\"
            gcc -fno-strict-overflow -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -fexceptions -fcf-protection -fexceptions -fcf-protection -fexceptions -fcf-protection -fPIC -DPY_MARIADB_MAJOR_VERSION=1 -DPY_MARIADB_MINOR_VERSION=1 -DPY_MARIADB_PATCH_VERSION=10 -DPY_MARIADB_PRE_RELEASE_SEGMENT=\"None\" -DPY_MARIADB_PRE_RELEASE_NR=\"0\" -DPY_MARIADB_POST_RELEASE_SEGMENT=\"None\" -DPY_MARIADB_POST_RELEASE_NR=\"0\" -I/usr/include/mysql -I/usr/include/mysql/mysql -I./include -I/home/rsiddhu/dev/django/.env/include -I/usr/include/python3.12 -c mariadb/mariadb_cursor.c -o build/temp.linux-x86_64-cpython-312/mariadb/mariadb_cursor.o -DDEFAULT_PLUGINS_SUBDIR=\"/usr/lib64/mariadb/plugin\"
            mariadb/mariadb_cursor.c: In function 'MrdbCursor_execute_text':
            mariadb/mariadb_cursor.c:1138:39: error: passing argument 2 of 'PyBytes_AsStringAndSize' from incompatible pointer type [-Wincompatible-pointer-types]
             1138 |         PyBytes_AsStringAndSize(stmt, &statement, (Py_ssize_t *)&statement_len);
                  |                                       ^~~~~~~~~~
                  |                                       |
                  |                                       const char **
            In file included from /usr/include/python3.12/Python.h:50,
                             from ./include/mariadb_python.h:21,
                             from mariadb/mariadb_cursor.c:20:
            /usr/include/python3.12/bytesobject.h:56:12: note: expected 'char **' but argument is of type 'const char **'
               56 |     char **s,           /* pointer to buffer variable */
                  |     ~~~~~~~^
            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 mariadb
      Failed to build mariadb
      ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (mariadb)
      

      Cause: The error indicates a type mismatch in the C extension code where a

      const char **
      

      is being passed to a function that expects a

      char **
      

      . This might be due to stricter type checking in Python 3.12 or changes in the Python C API.

      Suggested Fix
      Package installed successfully after changing line 1128 of 'mariadb/mariadb_cursor.c' from

      const char *statement;


      to

      char *statement;

      Attachments

        Issue Links

          Activity

            People

              georg Georg Richter
              RohanSiddhu Rohan Siddhu
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.