[prev in list] [next in list] [prev in thread] [next in thread] 

List:       amarok-bugs-dist
Subject:    [amarok] [Bug 418962] New: MySqlStorage.h defines global type MYSQL
From:       Victor Mataré <bugzilla_noreply () kde ! org>
Date:       2020-03-17 14:33:20
Message-ID: bug-418962-71684 () http ! bugs ! kde ! org/
[Download RAW message or body]

https://bugs.kde.org/show_bug.cgi?id=418962

            Bug ID: 418962
           Summary: MySqlStorage.h defines global type MYSQL
           Product: amarok
           Version: kf5
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: amarok-bugs-dist@kde.org
          Reporter: matare@fh-aachen.de
  Target Milestone: kf5

MySqlStorage.h defines a global typedef MYSQL, which breaks recent versions of
mysql-connector-c (at least from 8.0 onwards), which defines a struct with the
same name:

/usr/bin/x86_64-pc-linux-gnu-g++ -DKCOREADDONS_LIB -DKGUIADDONS_LIB
-DNO_MYSQL_EMBEDDED -DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_DBUS_LIB
-DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_NO_URL
_CAST_FROM_STRING -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICKWIDGETS_LIB
-DQT_QUICK_LIB -DQT_SCRIPTTOOLS_LIB -DQT_SCRIPT_LIB -DQT_SQL_LIB -DQT_SVG_LIB
-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST
_OPERATOR_PLUS -DQT_WIDGETS_LIB -DQT_XML_LIB -D_GNU_SOURCE
-D_LARGEFILE64_SOURCE -Damarok_storage_mysqlserverstorage_EXPORTS
-Isrc/core-impl/storage/sql/mysqlserverstorage -I/var/tmp/portage/
media-sound/amarok-9999/work/amarok-9999/src/core-impl/storage/sql/mysqlserverstorage
-Isrc/core-impl/storage/sql/mysqlserverstorage/amarok_storage-mysqlserverstorage_autogen/include
                
-I/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/shared -Ishared
-I/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/src -Isrc
-Isrc/core-impl/collections/db/sql -Isrc/core
-I/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/src/core
-I/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/src/core/support
-I/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/src/core/meta
-Isrc/context/popupdropper/libpud
-I/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/src/context/popupdropper/libpud
                
-Isrc/context
-I/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/src/context
-Isrc/transcoding
-I/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/src/transcoding
-I/usr/include/mysql -isystem /usr/include/KF5/KCodecs -isystem
/usr/include/KF5 -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtCore
-isystem /usr/lib64/qt5/mkspecs/linux-g++ -isystem /usr/include/qt5/QtGui
-isystem /usr/include/qt5/QtNetwork -isystem /usr/include/KF5/KIOCore -isystem
/usr/include/KF5/KCoreAddons -isystem /usr/include/KF5/KService -isystem
/usr/include/KF5/KConfigCore -isystem /usr/include/qt5/QtConcurrent -isystem
/usr/include/qt5/QtDBus -isystem /usr/include/KF5/ThreadWeaver -isystem
/usr/include/KF5/KI18n -isystem /usr/include/KF5/KXmlGui -isystem
/usr/include/qt5/QtXml -isystem /usr/include/qt5/QtWidgets -isystem
/usr/include/KF5/KConfigWidgets -isystem /usr/include/KF5/KWidgetsAddons
-isystem /usr/include/KF5/KConfigGui -isystem /usr/include/KF5/KAuth -isystem
/usr/include/phonon4qt5 -isystem /usr/include/KF5/KArchive -isystem
/usr/include/KF5/Attica -isystem /usr/include/KF5/KDeclarative -isystem
/usr/include/qt5/QtQml -isystem /usr/include/KF5/KPackage -isystem
/usr/include/KF5/KGlobalAccel -isystem /usr/include/KF5/KGuiAddons -isystem
/usr/include/KF5/KIconThemes -isystem /usr/include/KF5/KCMUtils -isystem
/usr/include/KF5/KIOFileWidgets -isystem /usr/include/KF5/KIOWidgets -isystem
/usr/include/KF5/KJobWidgets -isystem /usr/include/KF5/KCompletion -isystem
/usr/include/KF5/KBookmarks -isystem /usr/include/KF5/KItemViews -isystem
/usr/include/KF5/Solid -isystem /usr/include/KF5/KNewStuff3 -isystem
/usr/include/KF5/KNewStuff3/KNS3 -isystem /usr/include/KF5/KNewStuff3/knscore
-isystem /usr/include/KF5/KNewStuff3/kns3 -isystem
/usr/include/KF5/KNewStuff3/KNSCore -isystem /usr/include/KF5/KNotifications
-isystem /usr/include/KF5/KNotifyConfig -isystem /usr/include/KF5/KTextEditor
-isystem /usr/include/KF5/KParts -isystem /usr/include/KF5/KTextWidgets
-isystem /usr/include/KF5/SonnetUi -isystem /usr/include/KF5/KWindowSystem
-isystem /usr/include/qt5/QtQuick -isystem /usr/include/qt5/QtQmlModels
-isystem /usr/include/qt5/QtQuickWidgets -isystem /usr/include/qt5/QtScript
-isystem /usr/include/qt5/QtScriptTools -isystem /usr/include/qt5/QtSql
-isystem /usr/include/qt5/QtSvg  -DQT_NO_DEBUG -DNDEBUG -O2 -pipe
-frecord-gcc-switches -fno-operator-names -fno-exceptions -Wall -Wextra
-Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith
-Wundef -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -Wvla
-Wdate-time -Wsuggest-override -Wlogical-op -fdiagnostics-color=always
-fmessage-length=0 -Wl,--as-needed -std=c++11 -fPIC -fvisibility=hidden
-fvisibility-inlines-hidden   -fPIC -std=gnu++11 -MD -MT
src/core-impl/storage/sql/mysqlserverstorage/CMakeFiles/amarok_storage-mysqlserverstorage.dir/__/mysql-shared/MySqlStorage.cpp.o
                
-MF
src/core-impl/storage/sql/mysqlserverstorage/CMakeFiles/amarok_storage-mysqlserverstorage.dir/__/mysql-shared/MySqlStorage.cpp.o.d
                
-o
src/core-impl/storage/sql/mysqlserverstorage/CMakeFiles/amarok_storage-mysqlserverstorage.dir/__/mysql-shared/MySqlStorage.cpp.o
                
-c
/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/src/core-impl/storage/sql/mysql-shared/MySqlStorage.cpp
 In file included from /usr/include/mysql/mysql.h:83,
                 from
/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/src/core-impl/storage/sql/mysql-shared/MySqlStorage.cpp:31:
                
/usr/include/mysql/mysql/client_plugin.h:108:8: error: using typedef-name
‘MYSQL' after ‘struct'
  108 | struct MYSQL;
      |        ^~~~~
In file included from
/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/src/core-impl/storage/sql/mysql-shared/MySqlStorage.cpp:20:
                
/var/tmp/portage/media-sound/amarok-9999/work/amarok-9999/src/core-impl/storage/sql/mysql-shared/MySqlStorage.h:32:25:
                
note: ‘MYSQL' has a previous declaration here
   32 | typedef struct st_mysql MYSQL;
      |                         ^~~~~


This is why it's common practice for C++ applications to put everything in
their own namespace. That would definitely be the correct way to fix this and
any future name clashes.

-- 
You are receiving this mail because:
You are the assignee for the bug.=


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic