libdeclarative_qmlwebsockets.so is not installed into ${QT_LIBDIR}, which
causes the dependency logic in bsd.qt.mk to actually do something equivalent to
this instead:
BUILD_DEPENDS+= ${QT_LIBDIR}/${QT_QMLDIR}/QtWebSockets/libdeclarative_qmlwebsockets.so:www/qt5-websockets-qml
RUN_DEPENDS+= ${QT_LIBDIR}/${QT_QMLDIR}/QtWebSockets/libdeclarative_qmlwebsockets.so:www/qt5-websockets-qml
which translates into something like
/usr/local/lib/qt5//usr/local/lib/qt5/qml/QtWebSockets/libdeclarative_qmlwebsockets.so:www/qt5-websockets-qml
which obviously does not exist.
Instead of settin websockets-qml_LIB, set websockets-qml_PATH like we do for
other QML ports, so that our dependency logic does not needlessly prepend
${QT_LIBDIR} there. This fixes devel/qt5's build.
PR: 220045
This splits qt5-websockets into a qt5-websockets port containing the core parts,
and a qt5-websockets-qml port with the QML parts. The QML parts depend on Qt Quick,
so on the GUI parts (and hence X11) while the core parts do not.
PR: 220045
Submitted by: Adriaan de Groot <groot@kde.org>
* qtdiag outputs diagnostics on the current Qt installation and can be helpful to find issues.
* qtpluginfo is useful while writing plugins for Qt5/KDE Plasma
Reviewed by: rakuco, mat
Differential Revision: https://reviews.freebsd.org/D11280
gold linker from binutils 2.28 may produce duplicate library
symbols, which makes shared libraries created with it not usable
with conventional ld linker.
PR: 218187
Submitted by: amdmi3
* 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
As noticed in x11-toolkits/qt5-charts we never corrected the way in which qmake
sets the pkgconfig path for Qt5-modules. Instead there was a sed-call on the
generated Makefiles in bsd.qt.mk in the target qt-pre-install.
This diff modifies devel/qmake5 to set QMAKE_PKGCONFIG_DESTDIR to
../libdata/pkgconfig from the default pkgconfig.
As we split Qt-base into multiple ports, simply patching devel/qmake5 is not
enough, as the other base-ports will use the file from inside the tarball.
Therefore add it as an extrapatch for the Qt-base ports.
As this affects the same file extrapatch-libtool in devel/qt5 touched, rename
this one and add a hunk to do this change too.
Note: qt4 ports are unaffected, as they never were converted to used the
qt-preinstall target, and still contain the sed-call in their Makefiles.
Reviewed by: rakuco
Approved by: rakuco (mentor)
Differential Revision: https://reviews.freebsd.org/D8713
As at the moment QT_BINDIR and QT_LIBDIR are 'bin' respectively 'lib' depending
on the Qt version these subs ended up at many wrong places in plists.
So only export it if QT_DIST is set.
PR: 210227
Reviewed by: mat, rakuco
Approved by: portmgr (mat), rakuco (mentor)
Differential Revision: https://reviews.freebsd.org/D8378
As devel/qt5-help is the only consumer of textproc/clucene-qt5 and the latter
it is part of the same distfile we can simplify it, and get rid of clucene-qt5.
This was spotted by Marie Loise Nolden <nolden@kde.org> -- thanks :)
Reviewed by: rakuco
Approved by: rakuco (mentor)
Sponsored by: https://reviews.freebsd.org/D8638
The dependency code from kde.mk can add LIB_DEPENDS if the sense-file is a
library. Import this into bsd.qt.mk
PR: 214744
Reviewed by: rakuco, mat
Approved by: mat (mentor), rakuco (mentor)
Exp-run by: antoine
Differential Revision: https://reviews.freebsd.org/D8602
Thanks to the upstream work of Marie Loise Nolden, we could get rid of a handful
of patches, as they have been properly upstreamed. The rest of the work is just
some minor plist changes.
I would like to thank Loise <nolden@kde.org> for the upstream work, and Adriaan
<groot@kde.org> for getting the update into shape.
[1] http://blog.qt.io/blog/2016/10/12/qt-5-6-2-released/
[2] http://wiki.qt.io/Qt_5.6.2_Change_Files
PR: 213530
Exp-run by: antoine
Submitted by: Adriaan de Groot <groot@kde.org>
Reviewed by: rakuco, mat, tcberner
Approved by: rakuco (mentor)
Differential Revision: https://reviews.freebsd.org/D8228
WRKSRC is not what we want here: when USES=qmake:outsource is used (such as
in www/webkit-qt5), the build actually takes place in ${WRKDIR}/.build, so
we were creating .qmake.cache in the wrong location and passing the wrong
directory to the linker via -L. With CONFIGURE_WRKSRC, we get the right
value regardless of whether :outsource is used or not.
PR: 212859
Reviewed by: tcberner
MFH: 2016Q3
This took longer than expected, but there are quite a few changes to the
existing ports and a few new ones.
General upstream changes:
- Starting with Qt 5.6.2, Qt will fail at configuration time if LibreSSL is
being used. According to the discussion here:
https://codereview.qt-project.org/#/c/154800/
The Qt project is not opposed to LibreSSL, but does not want to mix
support for it into the OpenSSL backend code, especially as they move
towards supporting OpenSSL 1.1.
People interested in LibreSSL support are welcome to submit a separate
backend upstream, but are expected to maintain it. We (kde@) are not
opposed to carrying some patches authored by others in the future, as long
as they are not huge and destabilizing.
- When Qt detects the compiler supports C++11, it will pass -std=gnu++11 by
default (this is an upstream change). You can add "CONFIG -= c++11" to
your .pro. Qt 5.7 will require C++11.
- www/webkit-qt5: The QtWebKit module is deprecated upstream, and is shipped
separately as a community release tarball. kde@ does not have an ETA for a
qt5-webengine port, as it requires a huge effort (and number of patches)
similar to maintaining www/chromium itself.
- x11-toolkits/qt5-declarative has been deprecated upstream. The last
release is 5.5.1.
Relevant changes:
- devel/qmake5: The freebsd-clang mkspec has become the default mkspec on
FreeBSD, replacing the outdated freebsd-g++ one that was moved to
unsupported/ (it still works though).
- devel/qt5-qdoc: qdoc was moved to qttools upstream, but its data files are
still in qtbase. The data files are now in the qt5-qdoc-data port.
- misc/qt5-doc: Clean up and stop requiring a compiler and fumbling with
mkspecs. Instead of running the `configure' script, which requires a
compiler and adjustments to the mkspecs files and also ends up building a
new qmake binary, we now leverage USES=qmake to generate all the Makefiles
from the top-level qt.pro. Getting this to work requires some tricks,
though, and qt.conf.in has a longer explanation of what's being done.
Switch to USES=gmake to be able to drop MAKE_JOBS_UNSAFE=yes.
New ports:
- comms/qt5-serialbus
- devel/qt5-qdoc-data
- x11-toolkits/qt5-quickcontrols2
Big thanks to Adriaan de Groot (groot@kde.org), tcberner@ and Loise Nolden
(nolden@kde.org) for the huge amount of work they put into this
patch. Loise in particular also sent quite a few changes upstream that were
essential for this update to work.
PR: 211916
The patch moves the "doc" port in bsd.qt.mk from _USE_QT4_ONLY to
_USE_QT_ALL and bumps the PORTREVISION in devel/qt5 for the inclusion
of the qt5-doc port into the qt5 metaport.
Pre-Work for updating qtcreator to 4.0 for adding options to install
qt5-doc and qt5-examples to make qtcreator actually usable for
serious qt development.
PR: 209910
Submitted by: Ralf Nolden <nolden@kde.org> (kde)
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
This is similar to what we did for Qt4 in r362770. Some C++11 features actually
depend on the C++ standard library, such as <initializer_list> or std::move().
So far, ports with USES=compiler:c++0x and similar failed to build with Qt5 on
FreeBSD 9.x, as base libstdc++ is very old and does not support those C++11
features.
Piggyback on a check that is already present upstream for OS X, which has the
same ancient libstdc++ version. Apple's version has a custom patch with version
macros that we can't use, so we make a broader check and disable the features
that depend on a modern standard library if libc++ is not used.
This is another shot at fixing the linkage problems that have plagued our
users particularly when upgrading from Qt 5.x to 5.(x+1). Quick recap: in
Qt5, qmake will by default pass QMAKE_LIBDIR to the linker before other
directories such as ${WRKSRC}/lib, which is where the port's libraries are
built. When a user is upgrading Qt, we can end up with the following linker
line:
c++ -o SomeBinary -lfoo1 -L/usr/local/lib -L${WRKSRC}/lib -lfoo2 -lfoo3
If libfoo2.so is being built by the port and an older version is currently
installed on the system, /usr/local/lib/libfoo2.so will be picked up instead
of the newly-built ${WRKSRC}/lib/libfoo2.so. At best things just work, at
worst SomeBinary needs some new symbol that is not present in the old
libfoo2.so and linking fails. Case in point: bug 198720.
The previous approach, adopted when fixing bug 194088, was to stop setting
QMAKE_{INC,LIB}DIR in the FreeBSD mkspecs and set the CPATH and LIBRARY_PATH
environment variables in Uses/qmake.mk. This way we just did not pass
-L/usr/local/lib to the linker at all and things mostly worked. However,
people using Qt to build their own software without the ports tree were out
of luck, as they would then need need to deal with passing
/usr/local/{include,lib} to the compiler/linker themselves (bug 195105). Not
only that, but if a dependency mentioned /usr/local/lib we would still have
problems anyway (in bug 198720, the GStreamer pkg-config files contain
-L/usr/local/lib, for example).
We now solve the issue by setting the QMAKE_LIBDIR_FLAGS variable in
.qmake.cache to ${WRKSRC}/lib instead. qmake appends the value of
QMAKE_LIBDIR to QMAKE_LIBDIR_FLAGS, so we are always sure -L${WRKSRC}/lib
will come before -L/usr/local/lib in the linker options. Moreover, qmake is
smart enough to automatically call sed(1) and remove references to
${WRKSRC}/lib from .prl and .pc files when installing them.
PR: 194088
PR: 195105
PR: 198720
MFH: 2015Q4
Modify make describe to automatically prepend ${PORTSDIR} if the path for the
port is not absolute
Checked with poudriere, portmaster, portupgrade
PR: 203685
Exp-run by: antoine
Differential Revision: https://reviews.freebsd.org/D3866
Qt 5 does the following during the build of qt5-multimedia:
--- qt-post-install ---
echo "# define QT_GSTREAMER" >> /wrkdirs/usr/ports/multimedia/qt5-multimedia/
work/stage/usr/local/include/qt5/QtCore/modules/qconfig-multimedia.h
echo "# define QT_GST_VERSION=1.0" >> /wrkdirs/usr/ports/multimedia/
qt5-multimedia/work/stage/usr/local/include/qt5/QtCore/modules/qconfig-multimedia.h
echo "# define QT_XVIDEO" >> /wrkdirs/usr/ports/multimedia/qt5-multimedia/
work/stage/usr/local/include/qt5/QtCore/modules/qconfig-multimedia.h
That's (second line) not how #define works in C of C++
The resulting qconfig-multimedia.h file contains this:
#if !defined(QT_GST_VERSION=1.0) && !defined(QT_NO_GST_VERSION=1.0)
# define QT_GST_VERSION=1.0
#endif
This patch filters out the "=1.0" from the define. Bump qt5-multimedia
since the installed header needs to be corrected.
Reported by: antoine@
Patch submitted by: Adriaan de Groot <groot@kde.org>
According to upstream, this is the last planned Qt4 release.
A list of changes since 4.8.6 can be found here:
<http://download.qt.io/official_releases/qt/4.8/4.8.7/changes-4.8.7>
Porting notes and changes:
- Remove several patches that have been upstreamed.
- Make Uses/qmake.mk pass the contents of LIBS to the qmake environment. [1]
- Repurpose devel/qt4/files/extrapatch-src-corelib-global-qglobal.h now the
original patch is part of the release (curiously enough, the original
patch was never actually used, as the ?= assignment in r362837 after
r362770 was never possible).
This works around the way compiler support for C++11 features is detected
in Qt 4.8.7: while it originally only uses the compiler to determine if
something is supported or not, the initializer lists feature also depends
on the C++ standard library being used. It's a problem in FreeBSD 9.x,
where USES=compiler:c++0x or USES=compiler:c++11-lang means we will use
clang to build a port but use libstdc++ from base (GCC 4.2). The latter
obviously does not support initializer lists, and the build fails because
Qt tries to include headers that do not exist (<initializer_list>).
Since detecting libstdc++'s version is not trivial (we need to include a
non-lightweight header like cstdio and then check for __GLIBCXX__), we
just enable Q_COMPILER_INITIALIZER_LISTS support only when libc++ is used
(there should be no reason for someone to be using clang with GCC 4.8's
libstdc++, for example).
x11/kdelibs4's FindQt4.cmake had to include a backported change from the
upstream FindQt4.cmake in CMake itself to use a C++ compiler to detect
flags like Q_WS_X11, otherwise the inclusion of <ciso646> in qglobal.h
makes the build fail.
This patch contains changes by me, makc@ and alonso@.
PR: 202552 [1]
PR: 202808 [exp-run]
Submitted by: pawel@ [1]
The QtWebSockets module implements the WebSocket protocol as specified
in RFC 6455. It solely depends on Qt (no external dependencies).
http://doc.qt.io/qt-5/qtwebsockets-index.html
Submitted by: Tobias Berner <tcberner@gmail.com>
Qt-5.4 introduced a new component: Qt WebChannel
The Qt WebChannel module provides a library for seamless integration of C++ and
QML applications with HTML/JavaScript clients. Any QObject can be published to
remote clients, where its public API becomes available.
https://doc-snapshots.qt.io/qt5-5.4/qtwebchannel-index.html
Approved by: makc (mentor)
Submitted by: Tobias Berner <tcberner@gmail.com> via area51 commit
This is probably the first time our Qt 5 ports are tracking the latest
upstream release :-)
There isn't much to report in this update, thanks to the effort spent in the
5.2->5.3 update: a lot of the work is just small plist and patch updates.
Thankfully, several patches have been upstreamed and are not needed on our
side anymore.
I would like to thank Alex Richardson <arichardson.kde@gmail.com> and Tobias
Berner <tcberner@gmail.com> for their help with the plist updates and
general testing.
PR: 198585
split from from devel/qt4-linguist (similar to Qt 5 ports). These console
tools are often used for localization support in Qt ports, having them
standalone is quite useful. This work is based on Tobias Berner patch [1].
PR: 190929 [1]
Requested by: amdmi3, koobs
This is a command-line interface to QStandardPaths, part of qttools. It is
used by the KDE Frameworks 5 ports, which will be added in the future.
While here, also add x11-toolkits/qt5-quickcontrols to devel/qt5 which I had
forgotten to do before.
Submitted by: Tobias Berner <tcberner@gmail.com>
Proudly presented by the KDE on FreeBSD team, with several guest stars.
This update took way longer than initially expected due to us previously
accumulating assumptions and changes to Qt's build system that finally bit
us back with the 5.3 release series, so we had to do a fair amount of
cleanup.
New ports:
- comms/qt5-serialport: Qt functions to access serial ports, originally
based on work by Fernando Apesteguia. [1]
- devel/qt5-qdoc: Qt documentation generator, the Qt5 equivalent of
devel/qt4-qdoc3. Originally worked on by Tobias Berner.
It had already been half-split from devel/qt5-buildtools,
we just needed to finish the work.
Dead ports:
- devel/qt5-qmldevtools: Merged into lang/qt5-qml.
Minor changes:
- devel/qt5: Add x11/qt5-x11extras and the new ports to the dependency list.
- graphics/qt5-imageformats: The port now supports the JPEG2000, WEBP,
Direct Draw Surface and ICNS formats.
- multimedia/qt5-multimedia: The ALSA and PULSEAUDIO options are now
mutually exclusive due to changes introduced in
Qt 5.3.0 (the ALSA code is now a proper plugin
that is only built if PulseAudio is not used).
- x11/qt5-x11extras: Add USE_LDCONFIG since the port installs a shared
library.
The big changes:
- bsd.qt.mk: Set QMAKESPEC instead of QMAKEPATH. [3]
QMAKEPATH does much more than we want now that we call qmake from the top
of ${WRKSRC}. qmake uses QMAKEPATH when evaluating the QMAKE_MKSPECS
property, which is in turn used by qt_config.pri to load the .pri files in
mkspecs/modules.
In practice, this means that if people have an older Qt installation those
files will be used and QT_CONFIG will have values such as "gui" even if
one is building a port like textproc/qt5-xml, which passes -no-gui to the
configure script. Consequently, unintended code paths may be enabled or
the configuration step can just fail if the .pro files expect values that
are not present in the system-wide, older .pri files.
We avoid all those problems if we use QMAKESPEC, as qmake does not take
its value into account when evaluating the QMAKE_MKSPECS property and will
only parse the files in the mkspec's directory (mkspecs/freebsd-clang, for
example, instead of all the files in mkspecs).
- Stop explicitly passing ${LOCALBASE} to the compiler. [3]
qmake's behavior has changed in Qt 5, and the paths set in QMAKE_INCDIR
and QMAKE_LIBDIR in the mkspecs are passed before any others, such as the
ones in the build directory themselves.
In practice, this means that we end up with linker calls like this:
c++ -o libfoo.so foo.o bar.o -L/usr/local/lib -L/wrkdir/build/lib
-lQt5Gui -lQt5Core
So if one already has Qt installed in the system, the older, already
present version of the libraries in /usr/local/lib will be used instead of
the newly-built ones in /wrkdir/build/lib.
QTBUG-40825 discusses this behavior upstream, but there has been no
agreement on a solution yet.
For now, the solution adopted is to make the compiler and the linker aware
of those paths but only try them last after all others, and this is
achieved by setting the CPATH and LIBRARY_PATH environment variables when
qmake is being used.
In addition to setting them in CONFIGURE_ENV and MAKE_ENV, we also need to
stop changing QMAKE_INCDIR and QMAKE_LIBDIR as well as filter those paths
from the pkg-config calls qtbase's configure script makes.
- Call qmake from the root of the ${WRKSRC}.
In Qt 5.3, Qt's build infrastructure has undergone some changes that make
our previous approach of calling qmake from the directories we want to
build stop working. Things would break even more in Qt 5.4, in which
qtbase's configure script does not accept the -process, -fully-process and
-dont-process arguments anymore (it always behaves as if -process had been
used).
Bite the bullet and start calling qmake from ${WRKSRC}. The largest part of
this change involves changing lines in Makefiles from
WRKSRC_SUBDIR= foo/bar
to
BUILD_WRKSRC= ${WRKSRC}/foo/bar
INSTALL_WRKSRC= ${WRKSRC}/foo/bar
as well as adding patches to .pro files to avoid entering other
subdirectories and removing post-configure targets that are not necessary
anymore.
Since qmake needs to be called from the top of ${WRKSRC} anyway, we can
also simplify the configuration process for the qtbase ports a little.
Looking at r10019 it is not clear why we started calling qmake in the
pre-configure target in addition to the post-configure one (while also
skipping it in do-configure), but we can now drop this call since letting
configure behave as if -process had been passed means it will call qmake
on its own and overwrite the files generated by the pre-configure call. We
still need to call qmake in post-configure though, as the configure script
does not pass -recursive when calling qmake and we need to be able to call
make from any subdirectory when building.
PR: 194762 [1]
PR: 194566 # exp-run with base GCC and clang
PR: 194088 [3]
So far, Qt4 was basing its check for compiler support for C++11 features
(auto types, lambdas, rvalue references and others) on the values of
__GNUC__ and __GNUC_MINOR__. This works for GCC, but not for clang, whose
__GNUC_MINOR__ is stuck at 2. In practice, this meant Qt programs built
using clang were never able to use C++11 features which are conditionally
available in classes such as QList. This patch makes the detection more in
line with what Qt5 does (checks for GCC and clang are in separate sections
and are done differently).
I couldn't find cases of this negatively affecting any port so far, but it
is useful to have -- Akonadi's unit tests require C++11 support in Qt, for
example.
Only qt4-corelibs's PORTREVISION was bumped to make the new qglobal.h be
installed. Checks for these C++11 features are only present in headers of
other Qt4 ports, so there's no need to rebuild them.