#4362 Qt4 4.8.5 test package

Added_to_Fink
closed-fixed
5
2014-07-16
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 1 of 2)
  • I'll comment that the 4.8.4 iteration of this package WorkedForMe(™) when I built LyX using it.

     
  • Daniel Johnson
    Daniel Johnson
    2013-12-11

    Fails to build on 10.9.

    g++ -c -o makefile.o -arch x86_64 -pipe -DQMAKE_OPENSOURCE_EDITION -O2 -fconstant-cfstrings -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -g -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -Igenerators/symbian -Igenerators/integrity -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/include -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/include/QtCore -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/src/corelib/global -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/src/corelib/xml -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/tools/shared -DQT_NO_PCRE -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/mkspecs/macx-g++ -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DEPRECATED generators/makefile.cpp
    clangclang: : error: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)

    clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)

     
  • Daniel Johnson
    Daniel Johnson
    2013-12-11

    Here's the whole build log:


    Common System Values

    FINK_PREFIX: /sw
    FINK_ARCH: x86_64

    System Determined Variables:

    DARWIN_VERSION: 13.0
    DARWIN_MAJOR_VERSION: 13
    DARWIN_MINOR_VERSION: 0
    MACOSX_DEPLOYMENT_TARGET: 10.9
    OSX_VERSION: 10.9
    OSX_MAJOR_VERSION: 10.9
    XCODE_VERSION: 5.0.2
    XCODE_PREFIX: /Applications/Xcode.app/Contents/Developer
    SDK_PATH: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
    SDK_VERSION : 10.9

    Determining system architecture... (Darwin:13.0.0:x86_64)
    'macosx' is supported
    System architecture: 'macosx'
    DWARF2 debug symbols disabled.
    Xarch support detected
    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
    Symbol visibility control enabled.

    This is the Qt for Mac OS X Open Source Edition.

    You are licensed to use this software under the terms of
    the Lesser GNU General Public License (LGPL) versions 2.1.
    You are also licensed to use this software under the terms of
    the GNU General Public License (GPL) versions 3.

    You have already accepted the terms of the license.

    Creating qmake. Please wait...
    g++ -c -o project.o -arch x86_64 -pipe -DQMAKE_OPENSOURCE_EDITION -O2 -fconstant-cfstrings -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -g -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -Igenerators/symbian -Igenerators/integrity -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/include -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/include/QtCore -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/src/corelib/global -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/src/corelib/xml -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/tools/shared -DQT_NO_PCRE -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/mkspecs/macx-g++ -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DEPRECATED project.cpp
    g++ -c -o property.o -arch x86_64 -pipe -DQMAKE_OPENSOURCE_EDITION -O2 -fconstant-cfstrings -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -g -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -Igenerators/symbian -Igenerators/integrity -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/include -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/include/QtCore -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/src/corelib/global -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/src/corelib/xml -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/tools/shared -DQT_NO_PCRE -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/mkspecs/macx-g++ -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DEPRECATED property.cpp
    g++ -c -o main.o -arch x86_64 -pipe -DQMAKE_OPENSOURCE_EDITION -O2 -fconstant-cfstrings -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -g -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -Igenerators/symbian -Igenerators/integrity -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/include -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/include/QtCore -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/src/corelib/global -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/src/corelib/xml -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/tools/shared -DQT_NO_PCRE -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/mkspecs/macx-g++ -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DEPRECATED main.cpp
    g++ -c -o makefile.o -arch x86_64 -pipe -DQMAKE_OPENSOURCE_EDITION -O2 -fconstant-cfstrings -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -g -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -Igenerators/symbian -Igenerators/integrity -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/include -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/include/QtCore -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/src/corelib/global -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/src/corelib/xml -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/tools/shared -DQT_NO_PCRE -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -I/sw/src/fink.build/qt4-mine-mac-4.8.5-2/qt-everywhere-opensource-src-4.8.5/mkspecs/macx-g++ -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DEPRECATED generators/makefile.cpp
    clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)
    clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)
    make: [property.o] Error 1
    make: clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)
    Waiting for unfinished jobs....
    make: [project.o] Error 1
    clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)
    make:
    [makefile.o] Error 1
    make: *** [main.o] Error 1

     
  • Sorry about the delay. Can you confirm that %b/qmake/Makefile has export MACOSX_DEPLOYMENT_TARGET = 10.5 near the top?

     
  • If it is set to 10.5, please try with the following perl pie added to PatchScript just before the corewlan stuff (one line):

    perl -pi -e "s|MACOSX_DEPLOYMENT_TARGET \= 10\.5|MACOSX_DEPLOYMENT_TARGET = $MACOSX_DEPLOYMENT_TARGET|g" configure
    
     
  • Daniel Johnson
    Daniel Johnson
    2014-01-30

    Ok, that patch fixed the previous error, but now I found another. It's a bit jumbled by the parallel build but this is where it happens:

    In file included from yarr/YarrPattern.cppIn file included from :28yarr/YarrInterpreter.cpp:28:
    In file included from :
    yarr/YarrPattern.hIn file included from :yarr/YarrInterpreter.h30::
    29In file included from :
    ./runtime/UString.hIn file included from :yarr/YarrPattern.h26::
    30In file included from :
    ./wtf/text/StringImpl.hIn file included from :./runtime/UString.h28::
    26In file included from :
    ./wtf/CrossThreadRefCounted.hIn file included from :./wtf/text/StringImpl.h35::
    28In file included from :
    wtf/PassRefPtr.hIn file included from :./wtf/CrossThreadRefCounted.h25::
    35:
    In file included from wtf/PassRefPtr.h:25:
    wtf/NullPtr.h:48:23wtf/NullPtr.h:: 48:23error: : functionserror: that functionsdiffer thatonly differin onlytheir inreturn theirtype
    return cannot be typeoverloaded

    cannot be overloaded
    extern std::nullptr_t nullptr;
    ^
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/cstddef:87:24: note:
    expanded from macro 'nullptr'

    define nullptr _VSTD::__get_nullptr_t()

                       ^
    

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/cstddef:85:58: note:
    previous definition is here
    extern std::nullptr_t nullptr;
    ^
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/cstddef:87:24: note:
    expanded from macro 'nullptr'
    inline _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR nullptr_t __get_nullptr_t...
    ^

    define nullptr _VSTD::__get_nullptr_t()

                       ^
    

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/cstddef:85:58: note:
    previous definition is here
    inline _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR nullptr_t __get_nullptr_t...
    ^


    Looks like NullPtr.h is not recognizing that clang has nullptr and trying to refine it. The offending line is

    if has_feature(cxx_nullptr) || (GCC_VERSION_AT_LEAST(4, 6, 0) && defined(GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && _MSC_VER >= 1600 && !COMPILER(INTEL))

    Maybe GXX_EXPERIMENTAL_CXX0X needs to be defined? Or defined(clang) has to be added?

     
  • In the failed build, can you add #include <cstddef> to wtf/NullPtr.h just after the #define HAVE_NULLPTR 1 (line 41) and try just running make inside the src/3rdparty/webkit/Source/JavaScriptCore directory. If that still fails, might also have to add defined(_LIBCPP_VERSION) to the #if list on line 38 of wtf/NullPtr.h.

    Source: https://bugs.webkit.org/show_bug.cgi?id=64429 http://mail.kde.org/pipermail/kde-freebsd/2013-September/015990.html

    ps. if you put 4 tildes ~ on new lines before and after a block of text, the tracker formats it as 'code'

     
  • Daniel Johnson
    Daniel Johnson
    2014-01-31

    Yeah, I realized too late I screwed up the formatting.

    Adding both #include <cstddef> and || defined(_LIBCPP_VERSION) works.

     
  • Daniel Johnson
    Daniel Johnson
    2014-01-31

    Oh, and when you get a chance, can you patch the unsupported Mac OS version warnings? It spews a ton of stuff that makes it hard to see real errors. :)

    ../../../../../include/QtCore/../../src/corelib/global/qglobal.h:331:6: warning:
    "This version of Mac OS X is unsupported" [-W#warnings]
    # warning "This version of Mac OS X is unsupported"

     
  • There's a bug I can't yet figure out with these last revisions. But it built for me on 10.7 with libc++ after I added -no-ssse3 to the list of configure parameters in CompileScript.

     
  • Daniel Johnson
    Daniel Johnson
    2014-02-01

    Success! With these updates it built. I did NOT have to add -no-ssse3 for it to build on 10.9.

     
  • So it turns out that this might work as a drop-in replacement for our existing qt-mac-4.7. I built valknut-aqua using qt4-base-mac-4.7, then installed qt4-mine-mac into %p/opt, and used install_name_tool to change the linkages from qt4-base-mac to qt4-mine-mac Frameworks and Valknut.app ran fine.

    Could someone else check the functionality of another already built qt4-based package after changing its linkages to Qt4.8 ? It would be nice for this to just be an upgrade and not a new package that will require dependencies to migrate.

    According to upstream, qt-4.7 and 4.8 are binary compatible, so any failure would just be an issue of us doing something in the porting and packaging that make them incompatible. Which is OK if it comes to that, but better (I think) if we can just call it a library upgrade.

     
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -12,7 +12,7 @@
    
     Todo:
     --
    -1. Fully check build on 10.8 and 10.9
    +1. **Done** Fully check build on 10.8 and 10.9
     + Decide on a final package name.  Maybe `qt4.8-mac` ?
     + Does it need Conflicts/Replaces on qt4-base-mac and qtwebkit-mac ?
     + Verify that DescUsage instructions about adding flags is accurate.
    
     
  • Daniel Johnson
    Daniel Johnson
    2014-02-03

    Excellent news! I just tried it with teaqt-mac and it does indeed run fine after I install_name_tooled it. Seems to be drop in compatible.

     
  • New workup for Qt 4.8.5 after discussions on IRC.

    1. I have now renamed the package qt4-base-mac to match what we currently have in Fink since direct comparisons should now be made to make sure it is a drop in replacement.
    2. The qtwebkit SplitOff gets renamed to match our current existing qtwebkit-mac package. The dylib is the same, so this allows upgrading without any tricks
      • I hope I did the OBSOLETE -dev SplitOff correct
    3. Moves the Qt*.frameworks from $qtprefix/Library/Frameworks to %p/lib/qt4-mac/lib to match the existing qt4-base-mac package (the library-frameworks patch is then not needed, and have a new no-library-frameworks.patch).
     
  • To be truly binary compatible with the existing qt4-4.7.3 package, I added back the debug versions of the frameworks.

     
    • labels: New Package --> Updated Version of Existing
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -13,8 +13,8 @@
     Todo:
     --
     1. **Done** Fully check build on 10.8 and 10.9
    -+ Decide on a final package name.  Maybe `qt4.8-mac` ?
    -+ Does it need Conflicts/Replaces on qt4-base-mac and qtwebkit-mac ?
    ++ **Done using old `qt4-base-mac`** Decide on a final package name.  Maybe `qt4.8-mac` ?
    ++ **Not needed** Does it need Conflicts/Replaces on qt4-base-mac and qtwebkit-mac ?
     + Verify that DescUsage instructions about adding flags is accurate.
    -+ 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.
    ++ **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.
     + ...
    
     
  • The last +debug file didn't have all the debug files in the proper SplitOffs. This one does.

     
    Attachments
  • Apparently, the plugins were in $QT_PREFIX/plugins before, so I'm putting them back in there (I originally had them in $QT_PREFIX/lib/plugins).

     
    Attachments
  • Any reasons remaining not to have this in Fink?

     
  • I just saw that 4.8.6 was released 2 weeks ago. However, might be safer at this point to go with 4.8.5 since it's been tested, then go with 4.8.6 later. As far as I'm concerned, it's good to go. I haven't seen any positive feedback on !10.7 for the changes since February, though.

     
  • Gotcha. I've got a few test cases that I can look at on 10.9 (and earlier): lyx2-mac, gnuplot*qtmac, and I'm currently working on a new version of Octave which builds a Qt GUI. The easiest thing might be for me just to build them against the current qt4-mac and verify that they operate no worse with the new one. :-)

     
  • LyX and gnuplot appear to work happily using this version when built against the current Qt4 from the distro.

     
  • One last item: Is the now obsolete qtwebkit-%type_pkg[qt] SplitOFf (SplitOff27) done correctly? It works as expected when a 3rd package (Build)Deps on qtwebkit(-shlibs), but fails when using -m because the new one is marked obsolete. If OK, I'll proceed to checkin.

     
1 2 > >> (Page 1 of 2)