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

macOS Sql plugins link to 3rd party libs that are not shipped with the package

    XMLWordPrintable

Details

    • macOS

    Description

      Running otool on the postgres and odbc plugins reveals the following:

      $ otool -L libqsqlpsql.dylib
      libqsqlpsql.dylib:
      	libqsqlpsql.dylib (compatibility version 0.0.0, current version 0.0.0)
      	@rpath/QtSql.framework/Versions/5/QtSql (compatibility version 5.14.0, current version 5.14.2)
      	@rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.14.0, current version 5.14.2)
      	/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
      	/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
      	/Applications/Postgres.app/Contents/Versions/9.6/lib/libpq.5.dylib (compatibility version 5.0.0, current version 5.9.0) <--------------------- non existent
      	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.4)
      	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5)
      
      
      $ otool -L libqsqlodbc.dylib
      libqsqlodbc.dylib:
      	libqsqlodbc.dylib (compatibility version 0.0.0, current version 0.0.0)
      	@rpath/QtSql.framework/Versions/5/QtSql (compatibility version 5.14.0, current version 5.14.2)
      	@rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.14.0, current version 5.14.2)
      	/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
      	/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
      	/usr/local/opt/libiodbc/lib/libiodbc.2.dylib (compatibility version 4.0.0, current version 4.25.0) <--------------------- non existent
      	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.4)
      	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5)
      

      Both plugins link against a library that was installed during CI provisioning, but these files will most likely not exist on a user's machine, and the Qt installer doesn't package them either (we do it for ICU libs on Linux for example).

      The end result is that if a user app tries to load the plugin, the plugin load will fail, but the app will continue to run as far as i understand.

      The sql docs https://doc.qt.io/qt-5/sql-driver.html mention that

      Due to the practicalities of dealing with external dependencies, only the SQLite3 plugin is shipped with binary builds of Qt. 
      

      which is clearly not the case.

      Perhaps the intention was to provision, build and test the plugins, but not ship them in the official packages?

      Because currently we ship kind of broken plugins (unless the Qt app developer installs the exact same packages as in Coin provisioning).

      Attachments

        Issue Links

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

          Activity

            People

              releaseteam Qt Release Team
              alexandru.croitor Alexandru Croitor
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Gerrit Reviews

                  There are no open Gerrit changes