Skip to content
  • rakuco's avatar
    Update Qt5 ports to 5.9.3. · 4aff115f
    rakuco authored
    This took quite a lot of time because Qt's own build system underwent
    several changes in 5.8.0 that took a while to adapt to.
    
    And, of course, qt5-webengine is a behemoth that we need to patch like crazy
    due to its bundling of Chromium. In fact, most of the Chromium patches in
    qt5-webengine have been imported with no changes from www/chromium@433510
    ("www/chromium: update to 56.0.2924.87").
    
    New port: accessibility/qt5-speech
    
    Bigger changes to Qt5 ports we had to make:
    - Qt now allows using a configure.json file to define configuration options
      and specify configuration checks that can be done when qmake is invoked.
      However, configure.json checks done in a subdirectory only propagates to
      subdirectories, and checks elsewhere will fail if all .pro files are being
      parsed at once (i.e. qmake -recursive), so several ports had to switch to
      USES=qmake:norecursive along with manual additional qmake invocations in
      subdirectories in order to work. It's been mentioned in a few places such
      as Qt's bug tracker that qmake's recursive mode is pretty much deprecated,
      so we might switch to non-recursive mode by default in the future.
    
    - Uses/qmake.mk: Introduce QMAKE_CONFIGURE_ARGS. qmake now accepts
      arbitrary options such as '-foo' and '-no-bar' at the end of the
      command-line. They can be specified in QMAKE_CONFIGURE_ARGS.
    
    - graphics/qt5-wayland: The port can only be built if graphics/mesa-libs is
      built with the WAYLAND option, so a corresponding option (off by default)
      was added to the port.
    
    - misc/qt5-doc: Switch to a pre-built documentation tarball. The existing
      port was not working with Qt 5.9. Instead of trying to fix it, switch to
      what Gentoo does and fetch a tarball that already contains all
      documentation so that we do not have to build anything at all. The
      tarball's name and location in download.qt.io look a bit weird, but it
      seems to work fine.
    
    - www/qt5-webengine: Use binutils from ports, Chromium's GN build system
      generates a build.ninja that uses ar(1) with the @file syntax that is not
      supported by BSD ar, so we need to use GNU ar from binutils.
    
    - x11-toolkits/qt5-declarative-render2d: This port was merged into the main
      Qt Declarative repository upstream, and into x11-toolkits/qt5-quick in the
      ports tree.
    
    Changes to other ports we had to make:
    - biology/ugene: Drop a '#define point "."' that is not present in more
      recent versions of the port. Defining a macro with such a common name
      causes build issues with Qt 5.9, which uses |point| as an argument name in
      methods.
    
    - cad/qelectrotech: Fix plist with Qt 5.9. Directories are no longer
      installed with `cp -f -R', but rather `qmake install qinstall', which does
      not install
    
        %%DATADIR%%/elements/10_electric/20_manufacturers_articles/bosch_rexroth/.directory
    
      That's a local file that should not even have been part of the tarball
      anyway.
    
    - chinese/gcin-qt5: Add additional private Qt directories (which should not
      be used in the first place) to get the port to build with Qt 5.9.
    
    - devel/qtcreator: Fix plist with Qt 5.9. Something changed in qdoc and some
      test classes no longer generate documentation files.
    
    - security/keepassx-devel: Import a patch sent upstream almost a year ago to
      fix the build with Qt 5.9.
    
    Thanks to antoine for the exp-run, and tcberner and Laurent Cimon
    <laurent@nuxi.ca> for landing changes in our qt-5.9 branch.
    
    PR:		224849
    4aff115f