Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug] libmysqlclient doesn't compile on Windows with MinGW12 #26663

Open
reawakingFudge opened this issue Feb 21, 2025 · 1 comment
Open

[bug] libmysqlclient doesn't compile on Windows with MinGW12 #26663

reawakingFudge opened this issue Feb 21, 2025 · 1 comment

Comments

@reawakingFudge
Copy link

Describe the bug

Environment:

[settings]
arch=x86_64
os=Windows
compiler=gcc
compiler.cppstd=20
compiler.libcxx=libstdc++11
compiler.version=12
[buildenv]
CC=C:/msys64/mingw64/bin/gcc.exe
CXX=C:/msys64/mingw64/bin/g++.exe

to install/build

libmysqlclient/8.1.0
[  4%] Building CXX object vio/CMakeFiles/vio_objlib.dir/viosocket.cc.obj
In file included from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/my_io.h:32,
                 from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\vio\vio.cc:41:
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/components/services/bits/my_io_bits.h:53:13: error: conflicting declaration 'typedef int mode_t'
   53 | typedef int mode_t;
      |             ^~~~~~
In file included from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\vio\vio.cc:35:
C:/msys64/mingw64/include/sys/types.h:77:17: note: previous declaration as 'typedef _mode_t mode_t'
   77 | typedef _mode_t mode_t;
      |                 ^~~~~~
In file included from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/psi/mysql_socket.h:40,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/violite.h:48,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/vio/vio_priv.h:37,
                 from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\vio\viosocket.cc:58:
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/my_dir.h:39: warning: "S_IROTH" redefined
   39 | #define S_IROTH _S_IREAD
      |
In file included from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/my_dir.h:31:
C:/msys64/mingw64/include/sys/stat.h:160: note: this is the location of the previous definition
  160 | #define S_IROTH    (S_IRGRP >> 3)
      |
[  5%] Building CXX object libmysql/authentication_win/CMakeFiles/auth_win_client_objlib.dir/handshake.cc.obj
In file included from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/my_sys.h:66,
                 from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\mysys\array.cc:42:
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/components/services/bits/my_io_bits.h:53:13: error: conflicting declaration 'typedef int mode_t'
   53 | typedef int mode_t;
      |             ^~~~~~
In file included from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\mysys\array.cc:34:
C:/msys64/mingw64/include/sys/types.h:77:17: note: previous declaration as 'typedef _mode_t mode_t'
   77 | typedef _mode_t mode_t;
      |                 ^~~~~~
In file included from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/vio/vio_priv.h:37,
                 from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\vio\vio.cc:49:
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/violite.h:411:29: warning: missing initializer for member '_OVERLAPPED::InternalHigh' [-Wmissing-field-initializers]
  411 |   OVERLAPPED overlapped = {0};
      |                             ^
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/violite.h:411:29: warning: missing initializer for member '_OVERLAPPED::<anonymous>' [-Wmissing-field-initializers]
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/violite.h:411:29: warning: missing initializer for member '_OVERLAPPED::hEvent' [-Wmissing-field-initializers]
In file included from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/my_sys.h:66,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/sql/malloc_allocator.h:31,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/map_helpers.h:36,
                 from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\mysys\charset.cc:47:
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/components/services/bits/my_io_bits.h:53:13: error: conflicting declaration 'typedef int mode_t'
   53 | typedef int mode_t;
      |             ^~~~~~
In file included from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\mysys\charset.cc:33:
C:/msys64/mingw64/include/sys/types.h:77:17: note: previous declaration as 'typedef _mode_t mode_t'
   77 | typedef _mode_t mode_t;
      |                 ^~~~~~
mingw32-make.exe[2]: *** [mysys\CMakeFiles\mysys_objlib.dir\build.make:76: mysys/CMakeFiles/mysys_objlib.dir/array.cc.obj] Error 1
mingw32-make.exe[2]: *** Waiting for unfinished jobs....
mingw32-make.exe[2]: *** [vio\CMakeFiles\vio_objlib.dir\build.make:76: vio/CMakeFiles/vio_objlib.dir/vio.cc.obj] Error 1
mingw32-make.exe[2]: *** Waiting for unfinished jobs....
In file included from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\mysys\charset.cc:54:
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/psi/mysql_file.h: In function 'int inline_mysql_file_fprintf(MYSQL_FILE*, const char*, ...)':
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/psi/mysql_file.h:628:20: warning: function 'int inline_mysql_file_fprintf(MYSQL_FILE*, const char*, ...)' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
  628 |   result = vfprintf(file->m_file, format, args);
      |            ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/psi/mysql_file.h: In function 'int inline_mysql_file_vfprintf(MYSQL_FILE*, const char*, va_list)':
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/psi/mysql_file.h:663:20: warning: function 'int inline_mysql_file_vfprintf(MYSQL_FILE*, const char*, va_list)' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
  663 |   result = vfprintf(file->m_file, format, args);
      |            ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
[  5%] Building CXX object libmysql/authentication_win/CMakeFiles/auth_win_client_objlib.dir/handshake_client.cc.obj
[  5%] Building CXX object libmysql/authentication_win/CMakeFiles/auth_win_client_objlib.dir/log_client.cc.obj
In file included from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/my_io.h:32,
                 from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\vio\viosocket.cc:54:
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/components/services/bits/my_io_bits.h:53:13: error: conflicting declaration 'typedef int mode_t'
   53 | typedef int mode_t;
      |             ^~~~~~
In file included from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\vio\viosocket.cc:40:
C:/msys64/mingw64/include/sys/types.h:77:17: note: previous declaration as 'typedef _mode_t mode_t'
   77 | typedef _mode_t mode_t;
      |                 ^~~~~~
[  5%] Building CXX object libchangestreams/src/libstandalone/CMakeFiles/changestreams_standalone_static.dir/__/lib/mysql/cs/reader/binary/mysqlproto.cpp.obj
[  6%] Linking CXX executable ..\runtime_output_directory\uca9dump.exe
mingw32-make.exe[2]: *** [mysys\CMakeFiles\mysys_objlib.dir\build.make:91: mysys/CMakeFiles/mysys_objlib.dir/charset.cc.obj] Error 1
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:1162: mysys/CMakeFiles/mysys_objlib.dir/all] Error 2
mingw32-make.exe[1]: *** Waiting for unfinished jobs....
[  7%] Building CXX object libmysql/authentication_win/CMakeFiles/auth_win_client_objlib.dir/plugin_client.cc.obj
[  7%] Building CXX object libchangestreams/src/libstandalone/CMakeFiles/changestreams_standalone_static.dir/__/lib/mysql/cs/reader/binary/tracker.cpp.obj
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/violite.h:411:29: warning: missing initializer for member '_OVERLAPPED::InternalHigh' [-Wmissing-field-initializers]
  411 |   OVERLAPPED overlapped = {0};
      |                             ^
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/violite.h:411:29: warning: missing initializer for member '_OVERLAPPED::<anonymous>' [-Wmissing-field-initializers]
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/violite.h:411:29: warning: missing initializer for member '_OVERLAPPED::hEvent' [-Wmissing-field-initializers]
[  7%] Built target mytime_objlib
mingw32-make.exe[2]: *** [vio\CMakeFiles\vio_objlib.dir\build.make:91: vio/CMakeFiles/vio_objlib.dir/viosocket.cc.obj] Error 1
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:1058: vio/CMakeFiles/vio_objlib.dir/all] Error 2
[  8%] Building CXX object libchangestreams/src/libstandalone/CMakeFiles/changestreams_standalone_static.dir/__/lib/mysql/cs/reader/state.cpp.obj
[  8%] Built target uca9dump
C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\libmysql\authentication_win\log_client.cc: In function 'void error_log_vprint(error_log_level::type, const char*, va_list)':
C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\libmysql\authentication_win\log_client.cc:51:11: warning: function 'void error_log_vprint(error_log_level::type, const char*, va_list)' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
   51 |   vfprintf(stderr, fmt, args);
      |   ~~~~~~~~^~~~~~~~~~~~~~~~~~~
C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\libmysql\authentication_win\plugin_client.cc:51:26: warning: 'win_auth_client_plugin' initialized and declared 'extern'
   51 | extern "C" auth_plugin_t win_auth_client_plugin = {
      |                          ^~~~~~~~~~~~~~~~~~~~~~
[  8%] Built target auth_win_client_objlib
In file included from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/my_io.h:32,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libbinlogevents/include/binlog_event.h:48,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libchangestreams/include/mysql/cs/reader/binary/mysqlproto.h:29,
                 from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\libchangestreams\src\lib\mysql\cs\reader\binary\mysqlproto.cpp:27:
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/components/services/bits/my_io_bits.h:53:13: error: conflicting declaration 'typedef int mode_t'
   53 | typedef int mode_t;
      |             ^~~~~~
In file included from C:/msys64/mingw64/include/pthread.h:64,
                 from C:/msys64/mingw64/include/c++/12.2.0/x86_64-w64-mingw32/bits/gthr-default.h:35,
                 from C:/msys64/mingw64/include/c++/12.2.0/x86_64-w64-mingw32/bits/gthr.h:148,
                 from C:/msys64/mingw64/include/c++/12.2.0/ext/atomicity.h:35,
                 from C:/msys64/mingw64/include/c++/12.2.0/bits/ios_base.h:39,
                 from C:/msys64/mingw64/include/c++/12.2.0/ios:42,
                 from C:/msys64/mingw64/include/c++/12.2.0/istream:38,
                 from C:/msys64/mingw64/include/c++/12.2.0/sstream:38,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libbinlogevents/include/gtids/gtid.h:27,
                 from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\libchangestreams\src\lib\mysql\cs\reader\binary\mysqlproto.cpp:26:
C:/msys64/mingw64/include/sys/types.h:77:17: note: previous declaration as 'typedef _mode_t mode_t'
   77 | typedef _mode_t mode_t;
      |                 ^~~~~~
In file included from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/my_io.h:32,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libbinlogevents/include/binlog_event.h:48,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libbinlogevents/include/control_events.h:45,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libbinlogevents/include/trx_boundary_parser.h:40,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libchangestreams/include/mysql/cs/reader/binary/tracker.h:31,
                 from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\libchangestreams\src\lib\mysql\cs\reader\binary\tracker.cpp:23:
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/components/services/bits/my_io_bits.h:53:13: error: conflicting declaration 'typedef int mode_t'
   53 | typedef int mode_t;
      |             ^~~~~~
In file included from C:/msys64/mingw64/include/pthread.h:64,
                 from C:/msys64/mingw64/include/c++/12.2.0/x86_64-w64-mingw32/bits/gthr-default.h:35,
                 from C:/msys64/mingw64/include/c++/12.2.0/x86_64-w64-mingw32/bits/gthr.h:148,
                 from C:/msys64/mingw64/include/c++/12.2.0/ext/atomicity.h:35,
                 from C:/msys64/mingw64/include/c++/12.2.0/bits/ios_base.h:39,
                 from C:/msys64/mingw64/include/c++/12.2.0/ios:42,
                 from C:/msys64/mingw64/include/c++/12.2.0/ostream:38,
                 from C:/msys64/mingw64/include/c++/12.2.0/iostream:39,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libchangestreams/include/mysql/cs/reader/binary/tracker.h:26:
C:/msys64/mingw64/include/sys/types.h:77:17: note: previous declaration as 'typedef _mode_t mode_t'
   77 | typedef _mode_t mode_t;
      |                 ^~~~~~
mingw32-make.exe[2]: *** [libchangestreams\src\libstandalone\CMakeFiles\changestreams_standalone_static.dir\build.make:76: libchangestreams/src/libstandalone/CMakeFiles/changestreams_standalone_static.dir/__/lib/mysql/cs/reader/binary/mysqlproto.cpp.obj] Error 1
mingw32-make.exe[2]: *** Waiting for unfinished jobs....
In file included from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/my_io.h:32,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libbinlogevents/include/binlog_event.h:48,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libbinlogevents/include/control_events.h:45,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libbinlogevents/include/trx_boundary_parser.h:40,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libchangestreams/include/mysql/cs/reader/state.h:33,
                 from C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\src\libchangestreams\src\lib\mysql\cs\reader\state.cpp:23:
C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/include/mysql/components/services/bits/my_io_bits.h:53:13: error: conflicting declaration 'typedef int mode_t'
   53 | typedef int mode_t;
      |             ^~~~~~
In file included from C:/msys64/mingw64/include/pthread.h:64,
                 from C:/msys64/mingw64/include/c++/12.2.0/x86_64-w64-mingw32/bits/gthr-default.h:35,
                 from C:/msys64/mingw64/include/c++/12.2.0/x86_64-w64-mingw32/bits/gthr.h:148,
                 from C:/msys64/mingw64/include/c++/12.2.0/ext/atomicity.h:35,
                 from C:/msys64/mingw64/include/c++/12.2.0/bits/ios_base.h:39,
                 from C:/msys64/mingw64/include/c++/12.2.0/ios:42,
                 from C:/msys64/mingw64/include/c++/12.2.0/ostream:38,
                 from C:/msys64/mingw64/include/c++/12.2.0/iostream:39,
                 from C:/Users/me/.conan2/p/b/libmyf97e582ca468f/b/src/libchangestreams/include/mysql/cs/reader/state.h:26:
C:/msys64/mingw64/include/sys/types.h:77:17: note: previous declaration as 'typedef _mode_t mode_t'
   77 | typedef _mode_t mode_t;
      |                 ^~~~~~
mingw32-make.exe[2]: *** [libchangestreams\src\libstandalone\CMakeFiles\changestreams_standalone_static.dir\build.make:91: libchangestreams/src/libstandalone/CMakeFiles/changestreams_standalone_static.dir/__/lib/mysql/cs/reader/binary/tracker.cpp.obj] Error 1
mingw32-make.exe[2]: *** [libchangestreams\src\libstandalone\CMakeFiles\changestreams_standalone_static.dir\build.make:106: libchangestreams/src/libstandalone/CMakeFiles/changestreams_standalone_static.dir/__/lib/mysql/cs/reader/state.cpp.obj] Error 1
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:1551: libchangestreams/src/libstandalone/CMakeFiles/changestreams_standalone_static.dir/all] Error 2
mingw32-make.exe: *** [Makefile:155: all] Error 2

libmysqlclient/8.1.0: ERROR:
Package '915e38bbaf4fda329a5474cdf90d98be8febce6d' build failed
libmysqlclient/8.1.0: WARN: Build folder C:\Users\me\.conan2\p\b\libmyf97e582ca468f\b\build\Release
ERROR: libmysqlclient/8.1.0: Error in build() method, line 243
        cmake.build()
        ConanException: Error 2 while executing

How to reproduce it

I was trying to install libmysqlclient/8.1.0 using --build missing

I didn't set any CPLUS_INCLUDE_PATH as was suggested in other tickets. I looked into the header files and tried some of the macros, but it didn't change the outcome.

@memsharded memsharded self-assigned this Feb 21, 2025
@memsharded
Copy link
Member

Hi @reawakingFudge

Thanks for you feedback.

This wouldn't be a Conan bug, but it might be an issue of the ConanCenter recipe, or even an issue of the library itself.

Please note that all packages in ConanCenter are built and tested in Windows with msvc compiler only. That means that support for other compilers such as Mingw is not guaranteed. Some recipes might work, some other recipes might fail. It is also possible that some libraries do not build with Mingw at all (the recipe could be improved with raising a ConanInvalidConfiguration for MinGW, but as ConanCenter does not cover it yet, it is possible that the recipes don't include that).

I am moving this ticket to the conan-center-index Github repo. Please be patience, the backlog there is very large, and support for other compilers might not always be a priority. If starting with Conan, I'd strongly suggest using msvc compiler.

As a note, for reporting issues against the Conan client it is much better to use a minimal example, for example using one of the built-in templates such as conan new cmake_lib.

@memsharded memsharded transferred this issue from conan-io/conan Feb 21, 2025
@memsharded memsharded removed their assignment Feb 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants