#4362 Qt4 4.8.5 test package

Added_to_Fink
closed-fixed
5
2015-01-07
2013-11-02
No

This is my test package for Qt4 4.8.5. It builds on 10.7 and I tried to incorporate howarth's patches for 10.9 (from the old Qt4 4.7) where possible. Hopefully I got them all.

Notes:

  1. The package name is obviously temporary. I named it that for now to be clear that it is not ready to be released.
  2. I have only tested the -mac interface. I have not even looked at how I would go about making an -x11 variant (or if it's even possible).
  3. Because I'm not 100% certain that this package is a drop-in replacement for our qt4-base-mac, I have moved the install into %p/opt. This should make the old and new qt4-mac packages coexist and so packages can be transitioned to the new Qt4 at will.
    • One reason a full replacement might not work is that QtWebkit is now being included as part of the master Qt bundle and not as a separate package.
  4. I added symlinks in %p/opt/include and %p/opt/lib in the -dev pkg to the headers and frameworks to simplify other packages migrating.

I tested my package against Valknut-mac and pyqt4-mac-py27 and both packages built (and Valknut was functional).

Todo:

  1. Done Fully check build on 10.8 and 10.9
  2. Done using old qt4-base-mac Decide on a final package name. Maybe qt4.8-mac ?
  3. Not needed Does it need Conflicts/Replaces on qt4-base-mac and qtwebkit-mac ?
  4. Verify that DescUsage instructions about adding flags is accurate.
  5. Tested with littre, arora, valknut and all built/ran OK See if it works as a drop in replacement for qt4-base-mac. I'm not sure we will want to actually replace qt4-base-mac since there likely won't be a Qt4 4.8.*-x11 variant anytime soon.
  6. ...
4 Attachments

Related

Package Requests: #1013
Package Submissions: #4394

Discussion

<< < 1 2 (Page 2 of 2)
  • Jack Howarth

    Jack Howarth - 2014-05-11

    You have to really careful about the headers and libs actually used in this build as the qt 4.8.6 changes exposed in src/gui/image/qpnghandler.pri. I've attached a proposed patch. You probably want to go through all of the linkages in the final binaries and make sure that the include and -l entries for those are likewise converted to complete paths to the headers and lib.dylibs.

     
  • Jack Howarth

    Jack Howarth - 2014-05-11

    I think we can do this with perl edits as below…

        # Use fink libs
        perl -pi -e 's|include <png.h>|include "%p/include/png.h"|g' ./config.tests/unix/libpng/libpng.cpp ./src/gui/image/qpnghandler.cpp ./tools/qvfb/qanimationwriter.cpp
        perl -pe -e 's|include <pngconf.h>|include "%p/include/pngconf.h"|g' ./src/gui/image/qpnghandler.cpp
        perl -pi -e 's|-lpng|%p/lib/libpng.dylib|g' ./config.tests/unix/libpng/libpng.pro ./src/gui/image/qpnghandler.pr ./tools/qvfb/qvfb.pro
        perl -pi -e 's|include <jpeglib.h>|include "%p/include/jpeglib.h"|g' ./config.tests/unix/libjpeg/libjpeg.cpp ./src/gui/image/qjpeghandler.cpp
        perl -pi -e 's|-ljpeg|%p/lib/libjpeg|g' ./config.tests/unix/libjpeg/libjpeg.pro ./src/gui/image/qjpeghandler.pri
        perl -pi -e 's|include <libmng.h>|include "%p/include/libmng.h|g' ./config.tests/unix/libmng/libmng.cpp ./src/gui/image/qmnghandler.cpp
        perl -pi -e 's|-lmng|%p/lib/libmng|g' ./config.tests/unix/libmng/libmng.pro ./src/gui/image/qmnghandler.pri
        perl -pi -e 's|include "tiffio.h"|include "%p/include/tiffio.h"|g' ./src/gui/image/qtiffhandler.cpp ./config.tests/unix/libtiff/libtiff.cpp
        perl -pi -e 's|-ltiff|%p/lib/libtiff|g' ./config.tests/unix/libtiff/libtiff.pro ./src/gui/image/qtiffhandler.pri
    

    but we only want to handle libraries with a very few header like the graphics libs. The openssl usage drags in too many headers to safely do this. FYI, I don't think we were ever using any of those libs claimed in the qt4-base-mac dependencies. At least not for 4.8.x.

     
    • Hanspeter Niederstrasser

      The last .info I submitted clearly uses Fink's lib{png,mng,jpeg,tiff}

      otool -L plugins/imageformats/libq*.so
      plugins/imageformats/libqgif.so:
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqgif_debug.so:
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqico.so:
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqico_debug.so:
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqjpeg.so:
          /sw/lib/libjpeg.9.dylib (compatibility version 10.0.0, current version 10.0.0)
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqjpeg_debug.so:
          /sw/lib/libjpeg.9.dylib (compatibility version 10.0.0, current version 10.0.0)
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqmng.so:
          /sw/lib/libmng.1.dylib (compatibility version 2.0.0, current version 2.0.0)
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqmng_debug.so:
          /sw/lib/libmng.1.dylib (compatibility version 2.0.0, current version 2.0.0)
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqsvg.so:
          /sw/lib/qt4-mac/lib/QtSvg.framework/Versions/4/QtSvg (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtXml.framework/Versions/4/QtXml (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqsvg_debug.so:
          /sw/lib/qt4-mac/lib/QtSvg.framework/Versions/4/QtSvg (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtXml.framework/Versions/4/QtXml (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqtga.so:
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqtga_debug.so:
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqtiff.so:
          /sw/lib/libtiff.5.dylib (compatibility version 8.0.0, current version 8.0.0)
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      plugins/imageformats/libqtiff_debug.so:
          /sw/lib/libtiff.5.dylib (compatibility version 8.0.0, current version 8.0.0)
          /sw/lib/qt4-mac/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5)
          /sw/lib/qt4-mac/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.5)
          /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      

      And a dependency file check also shows only the headers from Fink graphics libraries, not internal ones.

      I also only see /sw/include/openssl headers being used (none from /usr/include/openssl).

       
  • Jack Howarth

    Jack Howarth - 2014-05-11

    If you look at…

    https://trac.macports.org/browser/trunk/dports/aqua/qt4-mac/Portfile

    you will see the evil tricks that MacPorts plays to actually build properly against their own development libs. They patch qt4 to allow the use of qmakc.cache to be the default. Then they sed the resulting quake.cache after configure is run to purge out any entries of -I/-L and then rely on setting CPATH and LIBRARY_PATH to force the compiler to default to their own development libraries. This explains why they have also patched the qt compiler test to check for functional CPATH support (which was broken in very early clang).

     
  • Jack Howarth

    Jack Howarth - 2014-05-11

    Nevermind. Now I see that the current qt4-base-mac.info is already doing that trick.

     
  • Jack Howarth

    Jack Howarth - 2014-05-11

    After building the qt4-base-mac-4.8.5-3 release, I ran into a glitch while trying to build a kdelibs4-4.12.4 package. The obsolescence of the qtwebkit-mac(-shlibs) package means that the BuildDepends in a kdelibs4 info file can't contain a BuildDepends on qtweb-kit without generating the validation error…

    WARNING: The package kdelibs4-mac has a preferred BuildDepends on qtwebkit-mac,
    but qtwebkit-mac is an obsolete package.

    Failed: Please correct the above problems and try again!

    If I remove the BuildDepends on qtwebkit-mac from the kdelibs4 info file, fink isn't able to automatically upgrade to the new qt4-base-mac packages over the previous ones (including webkit-mac) during the build of kdelibs4...

    kdelibs4-mac
    The following 9 additional packages will be installed:
    libattica-mac-dev libattica-mac-shlibs qca2-mac qca2-mac-shlibs qt4-base-mac soprano-mac soprano-mac-dev soprano-mac-shlibs system-openssl-dev
    Do you want to continue? [Y/n]
    Reading buildlock packages...
    All buildlocks accounted for.
    /sw/bin/dpkg-lockwait -i /sw/fink/dists/local/main/binary-darwin-x86_64/qt4-base-mac_4.8.5-3_darwin-x86_64.deb
    (Reading database ... 368889 files and directories currently installed.)
    Preparing to replace qt4-base-mac 4.7.3-37 (using .../qt4-base-mac_4.8.5-3_darwin-x86_64.deb) ...
    Unpacking replacement qt4-base-mac ...
    /sw/bin/dpkg: error processing /sw/fink/dists/local/main/binary-darwin-x86_64/qt4-base-mac_4.8.5-3_darwin-x86_64.deb (--install):
    trying to overwrite `/sw/lib/qt4-mac/include/QtWebKit/QGraphicsWebView', which is also in package qtwebkit-mac
    /sw/bin/dpkg-deb: subprocess paste killed by signal (Broken pipe: 13)
    Errors were encountered while processing:
    /sw/fink/dists/local/main/binary-darwin-x86_64/qt4-base-mac_4.8.5-3_darwin-x86_64.deb

    Don't we need to add a "Provides:/Replaces: qtweb-mac" for the main qt4-base-mac package and a "Provides:/Replaces: qtweb-mac-shlibs" for the qt4-base-mac-shlibs package? Otherwise fink won't be able to automatically remove webkit-mac/webkit-mac-shlibs during the upgrade process.

     
    Last edit: Jack Howarth 2014-05-11
  • Jack Howarth

    Jack Howarth - 2014-05-11

    Are we sure we want a legacy split-off for qtwebkit-mac? Can we just get by with the addition of…

    Provides: qtwebkit-mac
    Replaces: qtwebkit-mac

    in the main package and with…

    Provides: qtwebkit-mac-shlibs
    Replaces: qtwebkit-mac-shlibs

    in the qtwebkit-base-shlibs package. I think the existing webkit-shlibs split-off fouls up the logic required for automatic upgrading by fink.

     
  • Jack Howarth

    Jack Howarth - 2014-05-12

    Okay, I can confirm the following change to your qt4-base-mac-4.8.5-3 info file is sufficient to allow a build of kdelibs4-mac to properly upgrade the previously installed qt4-base-mac/qtwebkit-mac packages from current 10.7 fink….

    --- qt4-base-mac.info.orig 2014-05-11 19:37:57.000000000 -0400
    +++ qt4-base-mac.info 2014-05-11 19:42:25.000000000 -0400
    @@ -47,6 +47,9 @@
    xcode (>= 4.6),
    xcode.app (>= 4.6)
    <<
    +
    +Replaces: qtwebkit-mac (<= 4.8)
    +
    BuildConflicts: uuid, libevent1.4, libevent2
    BuildDependsOnly: true
    Source: http://download.qt-project.org/official_releases/qt/4.8/%v/qt-everywhere-opensource-src-%v.tar.gz

     
  • Hanspeter Niederstrasser

    • labels: Updated Version of Existing --> Updated Version of Existing, libs
    • status: open --> closed-fixed
    • assigned_to: Hanspeter Niederstrasser
    • Group: Undergoing_Validation --> Added_to_Fink
     
  • Hanspeter Niederstrasser

    Added to the 10.7 tree. Thank you for all your help. Working now on bumping to 4.8.6.

     
<< < 1 2 (Page 2 of 2)

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks