Commit graph

20 commits

Author SHA1 Message Date
Tobias C. Berner
6b3bece75a Qt: Switch Qt5 to use KDE's Qt patch collection
From [1]
    What's this?

	This is a set of git repositories based on the last public
	commits available for Qt 5.15 branches with a curated collection
	of patches on top to ensure open source products can be used
	comfortably until users transition to their Qt 6-based ports.

    Which patches does it include?

	This collection of patches includes patches that fix at least
	one of the following:

	    * Security issues
	    * Crashes
	    * Functional defects

	We only include patches that have been approved upstream in the
	Qt project. If a patch cannot be merged upstream for technical
	reasons (e.g. the class no longer exists), it can also be
	merged.

	The patches to merge will be decided based on their relevance
	towards Open Source products and their viability.

PR:		260548
Exp-run by:	antoine
Differential Revision:	https://reviews.freebsd.org/D33446

[1] https://community.kde.org/Qt5PatchCollection
2022-01-02 09:47:54 +01:00
Tobias Kortkamp
ce1af7fdc2
*: apply refactor.remove-consecutive-empty-lines
Submitted by:	portedit
2021-10-19 10:36:47 +02:00
Mathieu Arnold
cf118ccf87
One more small cleanup, forgotten yesterday.
Reported by:	lwhsu
2021-04-07 10:09:01 +02:00
Mathieu Arnold
305f148f48
Remove # $FreeBSD$ from Makefiles. 2021-04-06 16:31:07 +02:00
Tobias C. Berner
93b90c42e3 Only define USE_LDCONFIG in devel/qt5-core
All the qt5-ports share the same library directory. devel/qt5-core is dependet on
by all others.
So there is no need to add identical entries to libdata/ldconfig, and restart the
ldconfig service on every pkg change of those ports.

Reported by:	bapt
Reviewed by:	bapt
Differential Revision:	https://reviews.freebsd.org/D27224
2020-11-21 18:18:34 +00:00
Tobias C. Berner
a008399a74 Update Qt5 to 5.13.2
Announcement:
        https://www.qt.io/blog/qt-5.13.2-released

Thanks to kai@ for updating webengine.

PR:		241649
Exp-run by:	antoine
2019-11-08 16:59:58 +00:00
Gerald Pfeifer
ea8c8ec7da Bump PORTREVISION for ports depending on the canonical version of GCC
as defined in Mk/bsd.default-versions.mk which has moved from GCC 8.3
to GCC 9.1 under most circumstances now after revision 507371.

This includes ports
 - with USE_GCC=yes or USE_GCC=any,
 - with USES=fortran,
 - using Mk/bsd.octave.mk which in turn features USES=fortran, and
 - with USES=compiler specifying openmp, nestedfct, c11, c++0x, c++11-lang,
   c++11-lib, c++14-lang, c++17-lang, or gcc-c++11-lib
plus, everything INDEX-11 shows with a dependency on lang/gcc9 now.

PR:		238330
2019-07-26 20:46:53 +00:00
Tobias C. Berner
031fc9bfb6 Update Qt5 to 5.12.1
Release announcement:
  https://blog.qt.io/blog/2019/02/01/qt-5-12-1-released/
Changelog:
  https://wiki.qt.io/Qt_5.12.1_Change_Files

- A change was required to qt-dist.mk to always pass LOCALBASE to qmake,
  as Qt5 has been installed to a prefix for some time now, there should
  not be any harm in that, with respect to it picking up installed versions
  of itself during build.

PR:		235622
Exp-run by:	antoine
2019-02-12 17:43:00 +00:00
Tijl Coosemans
1bf487d3e7 Fix Qt5 symbol version scripts to put the catch-all clause first. When
a symbol matches multiple clauses the last one takes precedence.  If the
catch-all is last it captures everything.  In the case of Qt5 libraries
this caused all symbols to have a Qt_5 label while some should have
Qt_5_PRIVATE_API.  This only affects lld because GNU ld always gives the
catch-all lowest priority.

Older versions of Qt5Webengine exported some memory allocation symbols from
the bundled Chromium.  Version 5.9 stopped exporting these [1] but the
symbols were kept as weak wrappers for the standard allocation functions to
maintain binary compatibility. [2][3]  The problem is that the call to the
standard function in these weak wrappers is only resolved to the standard
function if there's a call to this standard function in other parts of
Qt5Webengine, because only then is there a non-weak symbol that takes
precedence over the weak one.  If there's no such non-weak symbol the call
in the weak wrapper resolves to the weak wrapper itself creating an infinite
call loop that overflows the stack and causes a crash.  Some of the
allocation functions are variants of C++ new and delete and it probably
depends on the compiler whether these variants are used in other parts of
Qt5Webengine.

Remove the weak wrappers (make them Linux specific).  This isn't binary
compatible but we are already breaking that with the changes to the symbol
versions.

[1] 5c2cbfccf9
[2] 2ed5054e3a
[3] 009f5ebb4b

Bump all ports that depend on Qt5.

PR:		234070
Exp-run by:	antoine
Approved by:	kde (adridg)
2019-01-16 11:13:44 +00:00
Tobias C. Berner
ea792330aa Update Qt5 to 5.12.0
http://blog.qt.io/blog/2018/12/06/qt-5-12-lts-released/

- This breaks support for libressl again. Patches are welcome.

PR:		233705
Exp-run by:	antoine
2018-12-16 14:49:16 +00:00
Gerald Pfeifer
a9f015d155 Bump PORTREVISION for ports depending on the canonical version of GCC
defined via Mk/bsd.default-versions.mk which has moved from GCC 7.4 t
GCC 8.2 under most circumstances.

This includes ports
 - with USE_GCC=yes or USE_GCC=any,
 - with USES=fortran,
 - using Mk/bsd.octave.mk which in turn features USES=fortran, and
 - with USES=compiler specifying openmp, nestedfct, c11, c++0x, c++11-lang,
   c++11-lib, c++14-lang, c++17-lang, or gcc-c++11-lib
plus, as a double check, everything INDEX-11 showed depending on lang/gcc7.

PR:		231590
2018-12-12 01:35:33 +00:00
Tobias C. Berner
89d1bb9ab0 Merge lang/qt5-qml and x11-toolkits/qt5-quick into x11-toolkits/qt5-declarative
- There was no obvious reason to split these ports, and it makes
  porting simpler; the set of ports using either mostly coincided.

Exp-run by:	antoine
PR:		223687
PR:		232751
2018-11-04 19:00:53 +00:00
Tobias C. Berner
d19d17bd64 qt5: Fix build on GCC based architectures.
PR:		231584
PR:		231677
PR:		231685
PR:		231830
PR:		231955
PR:		231905
PR:		231892
PR:		231684
PR:		231958
PR:		231960
PR:		231818
PR:		231542
PR:		231860
PR:		231681
PR:		231963
PR:		231891
PR:		231966
PR:		231904
PR:		231676
PR:		231819
PR:		231956
PR:		231680
PR:		231957
PR:		231903
PR:		231901
PR:		231667
PR:		231861
Submitted by:	 Piotr Kubaj <pkubaj@anongoth.pl>
2018-10-14 08:01:13 +00:00
Tobias C. Berner
b1a1d38bf9 Replace bsd.qt.mk by Uses/qt.mk and Uses/qt-dist.mk
From now on, ports that depend on Qt4 will have to set
	USES=		qt:4
	USE_QT=		foo bar
ports depending on Qt5 will use
	USES=		qt:5
	USE_QT=		foo bar

PR:		229225
Exp-run by:	antoine
Reviewed by:	mat
Approved by:	portmgr (antoine)
Differential Revision:	→https://reviews.freebsd.org/D15540
2018-06-28 17:39:53 +00:00
Raphael Kubo da Costa
70141f1a3a Update the Qt5 ports to 5.10.1.
The work was done by tcberner and myself, with thanks to antoine for the
exp-run.

Not a lot to report compared to other Qt5 updates:
* net/qt5-network is still broken with LibreSSL. I said this in a commit
  message ages ago but it bears repeating: upstream is open to adding support
  for LibreSSL, but someone needs to step up to maintain it upstream, otherwise
  things will continue to be broken all the time.
* www/qt5-webengine is a huge monster that is terrible to update, just like
  www/chromium itself is. We (kde@) have decided to keep using the 5.9 series
  for the time being, as it should be compatible with the rest of Qt anyway. It
  was updated to 5.9.5, the latest 5.9 release at the time of writing.

PR:		228213
2018-05-18 12:27:43 +00:00
Tobias C. Berner
dc579c4cc2 Fix permissions in installed Qt5 header files
For the qt5-* ports bsd.qt.mk sets EXTRACT_AFTER_ARGS, and
thereby does not get the normal default value of
      --no-same-owner --no-same-permissions
passed when extracting. This lead to for example header files
being installed (i.e. copied), with permissions group write
permissions.

Manually append that to the bsd.qt.mk shenanigans (also do the
same in www/qt5-webchannel, which opts out of the bsd.qt.mk value)

PR:		227027
Reported by:	grarpamp@gmail.com
2018-03-29 19:03:17 +00:00
Raphael Kubo da Costa
f6ceca6350 Update Qt5 ports to 5.9.3.
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
2018-01-06 21:30:31 +00:00
Tobias C. Berner
f3c180c343 Update Qt5 to 5.7.1, and unify the Qt4 and Qt5 ports some more
* Update Qt5 to 5.7.1
* Move Qt4 binaries to lib/qt4/bin
* Move Qt5 libraries to lib/qt5/lib
  By moving the libraries we should finally be able to get rid of the inplace
  upgrade bug (see ports bugs 194088, 195105 and 198720):  when Qt5's libraries
  were lying in /usr/local/lib, which would often get added by pkgconfig to the
  linker paths via dependencies, the already installed libraries were linked
  against, instead of the ones that were being built. This forced us to make
  sure, that -L${WRKSRC}/lib was always coming before -L/usr/local/lib in the
  linker flags. With this change this should no longer be the case.
* Rename some ports to match the rest (foo-qtX -> qtX-foo)
* Depend on new port misc/qtchooser [see UPDATING & CHANGES]

There are several new Qt5 ports which all have been created by Marie Loise Nolden
<nolden@kde.org>. Thanks again.

PR:		216797
Exp-Run by:	antoine
Reviewed by:	rakuco, mat, groot_kde.org
Approved by:	rakuco (mentor)
Differential Revision:	https://reviews.freebsd.org/D9213
2017-02-18 19:48:05 +00:00
Raphael Kubo da Costa
0417d98846 Replace spaces with tabs. 2017-01-21 14:15:19 +00:00
Raphael Kubo da Costa
4c67812e01 Update Qt5 to 5.5.1.
This is the latest stable release at time of writing.

Release announcement: http://blog.qt.io/blog/2015/07/01/qt-5-5-released/
New features in Qt 5.5: https://wiki.qt.io/New_Features_in_Qt_5.5

As usual, huge thanks to Tobias Berner (tcberner@gmail.com) for all his work
on these ports in kde@'s experimental area51 repository. He's the one who
started the update and did a lot of the initial work on Qt 5.5. Ralf Nolden
(nolden@kde.org) has contributed the initial version of most of our new Qt5
ports.

Also thanks to Yuri Victorovich (yuri@rawbw.com) for contributing PR 205805
with his own patch for the 5.5.1 update. Some of his changes there prompted
additional fixes and changes present in the final patch generated from our
experimental repository.

New ports:
- comms/qt5-connectivity, comms/qt5-sensors, devel/qt5-location,
  graphics/qt5-3d, net/qt5-enginio, x11-toolkits/qt5-canvas3d,
  x11-toolkits/qt5-uiplugin.

General changes in all Qt5 ports:
- All Qt5 ports are now built with -Wl,--as-needed to avoid overlinking,
  which is a problem with qmake-based because the libraries passed to the
  linker come from the modules .pri files and many are not necessary.
- With this change, several ports had their USE_QT5 lines adjusted to
  explicitly include some libraries that were pulled in implicitly, and to
  exclude libraries no longer required with -Wl,--as-needed.

Changes in specific ports:
- devel/qt5: Drop the SQL_PLUGINS and TOOLS options and depend on all Qt5
  ports by default. It makes the Makefile much simpler, and those options
  were already on by default.
- devel/qt5-core: The clang+base libstdc++ workaround has been expanded and
  more C++11 features have been disabled when that combination is used by a
  port (basically, FreeBSD 9 with USES=compiler:c++11-lang). The disabled
  features have explanations for why they were disabled in the patched
  header itself.
- devel/qt5-designer: uiplugins has been split out following a similar
  change upstream. By depending on qt5-uiplugin, qt5-uitools avoids having
  to depend on the big qt5-designer port.
- multimedia/qt5-multimedia: The port now uses GStreamer 1.0 instead of
  0.10.
- net/qt5-network: The port now depends on libproxy for proxy settings.
  Using libproxy allows proxy settings to be read from different sources,
  and also allows .pac files to work with Qt.
- www/qt5-webkit: The port now uses GStreamer 1.0 instead of 0.10.

PR:		205805
PR:		206435
2016-01-24 18:10:14 +00:00