Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-84904

qtbase fails to build using CMake due to posix_iconv issues

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 6.0
    • 6.0
    • Build System: CMake
    • openSUSE Tumbleweed x86_64 (other details can be seen in the config)

    Description

      Building the latest qtbase dev (60f83a76756342de66d0d97353e8392083deae3a at the time of writing) fails when using CMake while functioning normally with QMake.

      /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec.cpp: In member function ‘virtual QString QIconvCodec::convertToUnicode(const char*, int, QTextCodec::ConverterState*) const’:
      /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec.cpp:206:39: error: invalid conversion from ‘const char**’ to ‘char**’ [-fpermissive]
        206 |         size_t ret = iconv(state->cd, &inBytes, &inBytesLeft, &outBytes, &outBytesLeft);
            |                                       ^~~~~~~~
            |                                       |
            |                                       const char**
      In file included from /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec_p.h:59,
                       from /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec.cpp:42:
      /usr/include/iconv.h:42:54: note:   initializing argument 2 of ‘size_t iconv(iconv_t, char**, size_t*, char**, size_t*)’
         42 | extern size_t iconv (iconv_t __cd, char **__restrict __inbuf,
            |                                    ~~~~~~~~~~~~~~~~~~^~~~~~~
      /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec.cpp: In function ‘bool setByteOrder(iconv_t)’:
      /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec.cpp:287:19: error: invalid conversion from ‘const char**’ to ‘char**’ [-fpermissive]
        287 |     if (iconv(cd, inBytesPtr, &inBytesLeft, &outBytes, &outBytesLeft) == (size_t) -1) {
            |                   ^~~~~~~~~~
            |                   |
            |                   const char**
      In file included from /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec_p.h:59,
                       from /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec.cpp:42:
      /usr/include/iconv.h:42:54: note:   initializing argument 2 of ‘size_t iconv(iconv_t, char**, size_t*, char**, size_t*)’
         42 | extern size_t iconv (iconv_t __cd, char **__restrict __inbuf,
            |                                    ~~~~~~~~~~~~~~~~~~^~~~~~~
      /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec.cpp: In member function ‘virtual QByteArray QIconvCodec::convertFromUnicode(const QChar*, int, QTextCodec::ConverterState*) const’:
      /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec.cpp:360:30: error: invalid conversion from ‘const char**’ to ‘char**’ [-fpermissive]
        360 |         if (iconv(state->cd, inBytesPtr, &inBytesLeft, &outBytes, &outBytesLeft) == (size_t) -1) {
            |                              ^~~~~~~~~~
            |                              |
            |                              const char**
      In file included from /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec_p.h:59,
                       from /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec.cpp:42:
      /usr/include/iconv.h:42:54: note:   initializing argument 2 of ‘size_t iconv(iconv_t, char**, size_t*, char**, size_t*)’
         42 | extern size_t iconv (iconv_t __cd, char **__restrict __inbuf,
            |                                    ~~~~~~~~~~~~~~~~~~^~~~~~~
      

      Attached are the configuration logs for both a CMake and a QMake build.

       

      Building qiconvcodec.cpp with CMake:

      [ 39%] Building CXX object src/corelib/CMakeFiles/Core.dir/codecs/qiconvcodec.cpp.o
      cd /home/max/qt-dev/dev.cmake/qtbase.cmake/src/corelib && /usr/bin/c++  -DCore_EXPORTS -DELF_INTERPRETER=\"/lib64/ld-linux-x86-64.so.2\" -DPCRE2_CODE_UNIT_WIDTH=16 -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_CORE_LIB -DQT_CORE_LIB -DQT_CORE_QOBJECT_LIB -DQT_DEPRECATED_WARNINGS -DQT_MOC_COMPAT -DQT_NO_CAST_TO_ASCII -DQT_NO_FOREACH -DQT_NO_USING_NAMESPACE -DQT_USE_QSTRINGBUILDER -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -Ddeprecations -I/home/max/qt-dev/dev.cmake/qtbase.cmake/src/corelib/Core_autogen/include -I/home/max/qt-dev/dev.cmake/qtbase.cmake/include -I/home/max/qt-dev/dev.cmake/qtbase.cmake/include/QtCore -I/home/max/qt-dev/dev/qtbase/src/corelib -I/home/max/qt-dev/dev.cmake/qtbase.cmake/src/corelib -I/home/max/qt-dev/dev.cmake/qtbase.cmake/src/corelib/global -I/home/max/qt-dev/dev/qtbase/src/corelib/../3rdparty/tinycbor/src -I/home/max/qt-dev/dev.cmake/qtbase.cmake/include/QtCore/6.0.0 -I/home/max/qt-dev/dev.cmake/qtbase.cmake/include/QtCore/6.0.0/QtCore -I/home/max/qt-dev/dev/qtbase/src/corelib/../3rdparty/double-conversion/.. -I/home/max/qt-dev/dev/qtbase/src/corelib/../3rdparty/double-conversion/include -I/home/max/qt-dev/dev/qtbase/src/corelib/../3rdparty/forkfd -I/home/max/qt-dev/dev.cmake/qtbase.cmake/src/corelib/.rcc -I/home/max/qt-dev/dev/qtbase/mkspecs/linux-g++ -I/home/max/qt-dev/dev/qtbase/src/3rdparty/pcre2/src  -g -fPIC -fvisibility=hidden -fvisibility-inlines-hidden   -Wall -Wextra -fPIC -std=gnu++17 -Winvalid-pch -include /home/max/qt-dev/dev.cmake/qtbase.cmake/src/corelib/CMakeFiles/Core.dir/cmake_pch.hxx -o CMakeFiles/Core.dir/codecs/qiconvcodec.cpp.o -c /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec.cpp

      and with QMake:

      g++ -c -include .pch/Qt6Core -pipe -O3 -std=c++1z -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -Wvla -Wdate-time -Wshift-overflow=2 -Wduplicated-cond -Wno-stringop-overflow -Wno-format-overflow -D_REENTRANT -fPIC -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQFLOAT16_INCLUDE_FAST -DELF_INTERPRETER=\"/lib64/ld-linux-x86-64.so.2\" -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DPCRE2_CODE_UNIT_WIDTH=16 -I/home/max/qt-dev/dev/qtbase/src/corelib -I. -Iglobal -I/home/max/qt-dev/dev/qtbase/src/3rdparty/md5 -I/home/max/qt-dev/dev/qtbase/src/3rdparty/md4 -I/home/max/qt-dev/dev/qtbase/src/3rdparty/sha3 -I/home/max/qt-dev/dev/qtbase/src/3rdparty -I/home/max/qt-dev/dev/qtbase/src/3rdparty/double-conversion/include -I/home/max/qt-dev/dev/qtbase/src/3rdparty/forkfd -I/home/max/qt-dev/dev/qtbase/src/3rdparty/tinycbor/src -I.rcc -I../../include -I../../include/QtCore -I../../include/QtCore/6.0.0 -I../../include/QtCore/6.0.0/QtCore -I.moc -I.tracegen -I/home/max/qt-dev/dev/qtbase/src/3rdparty/pcre2/src -I/home/max/qt-dev/dev/qtbase/mkspecs/linux-g++ -o .obj/qiconvcodec.o /home/max/qt-dev/dev/qtbase/src/corelib/codecs/qiconvcodec.cpp
      

      Attachments

        1. config_cmake.log
          66 kB
        2. configure.log
          28 kB
        3. configure_posix_libiconv.log
          69 kB

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              alexandru.croitor Alexandru Croitor
              max.goldstein Maximilian Goldstein
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes