Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_NSData", referenced from:
objc-class-ref in qmacfunctions.o
"_OBJC_CLASS_$_NSMutableArray", referenced from:
objc-class-ref in qmactoolbar.o
objc-class-ref in qmactoolbardelegate.o
ld: symbol(s) not found for architecture x86_64
Why is qtmultimedia only needed on Darwin? Why does it only fix 5.9, not
5.11? These things I do not know. What I do know is that, for some
reason, this makes qt59.qtwebkit build on Darwin.
I think the reason it hasn't also fixed 5.11 might be something to do
with the version of qtmultimedia, but I don't know enough about Qt or
cmake to figure it out. The error when trying to build qt511.qtwebkit
(with or without these changes) is:
CMake Error at Source/cmake/OptionsQt.cmake:739 (find_package):
Could not find a package configuration file provided by "Qt5Multimedia"
(requested version 5.2.0) with any of the following names:
Qt5MultimediaConfig.cmake
qt5multimedia-config.cmake
Add the installation prefix of "Qt5Multimedia" to CMAKE_PREFIX_PATH or set
"Qt5Multimedia_DIR" to a directory containing one of the above files. If
"Qt5Multimedia" provides a separate development package or SDK, be sure it
has been installed.
Call Stack (most recent call first):
Source/cmake/WebKitCommon.cmake:50 (include)
CMakeLists.txt:137 (include)
-- Configuring incomplete, errors occurred!
See also "/tmp/nix-build-qtwebkit-5.212-alpha-01-26-2018.drv-0/source/build/CMakeFiles/CMakeOutput.log".
See also "/tmp/nix-build-qtwebkit-5.212-alpha-01-26-2018.drv-0/source/build/CMakeFiles/CMakeError.log".
b785d4813e introduced breakage in Qt
modules for 5.6 and 5.9, especially visible is Qt Webkit.
This was manifested by having a non-sensical build log where it is using
the top-level `src` attribute as source instead of Qt Webkit's own
source.
Were it not for the `src` top-level attribute (which is a legit
package), the error would have been made obvious by passing `null` to
`src`.
This partily reverts newly introduced way `src` can be passed to a
qtModule, instead relying on extending the `srcs` attrset.
For ZHF #45960
On aarch64, linking against the vendored ffmpeg fails. Including ffmpeg
as a dependency and passing -system-ffmpeg to qmake fixes this.
Slightly odd conditional in qmakeFlags to avoid altering the list on
non-arm platforms, so that the change doesn't trigger an unneccessary
rebuild.
We use MACOSX_DEPLOYMENT_TARGET=10.10 in nixpkgs and some darwin
packages like CoreFoundation are based on the 10.10 sources from
opensource.apple.com.
This is the first time since 5.9 that we also update `qtwebkit`.
`qtwebkit` is not maintained by Qt anymore and thus, we switch to the
community port as for example arch has done. To prevent pulling in
single patches, we just stick to the latest git version.
This commit was too aggressive in adding configure flags. Only qtbsea
needs the -no-framework flag to work correctly. Qmake will handle
everything else for us.
Before this change:
$ readelf --notes /nix/store/zf5yja02g8n8dzgs25pqfd8w3myfzgzc-qtbase-5.10.1/lib/libQt5Core.so
Displaying notes found at file offset 0x004a7778 with length 0x00000020:
Owner Data size Description
GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag)
OS: Linux, ABI: 3.17.0
After:
$ readelf --notes /nix/store/sg1s9hdw0b7p6h0dwg09g4lxy1acq7y6-qtbase-5.10.1/lib/libQt5Core.so
Displaying notes found at file offset 0x004a7dcc with length 0x00000020:
Owner Data size Description
GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag)
OS: Linux, ABI: 2.6.28
-----------
The above paths were before rebasing the commit onto staging,
and it'd probably be good to have someone confirm the same happens
when built on a hydra builder or other non-dtzWill machine :).
[dezgeg: added comments]
We prefer to have $out/include & $out/lib installed so that things
like multiple outputs can work. There is no way to do this in Qt
currently without also disabling the ‘framework’ install. Not sure if
this will break anything but it will fix issues we run into on some
projects like python2.7-pyside:
Linux: https://hydra.nixos.org/build/73219181
macOS: https://hydra.nixos.org/build/73059550
Hopefully this gives us consistency between the two.
Fixes#39334
and Fixes#36729
Also, Fixes#36932 (hopefully it's still building)
(This might be able to be able to be cherry-picked to 18.03 but be
careful - chromium is extremely touchy. Probably best to wait for it
to be built successfully on Hydra a few times.)
A dependency (boost) makes use of `std::auto_ptr`, which is no longer
supported in C++17 in Clang. This change re-enables `std::auto_ptr`
capabilities.
Resolved the following conflicts (by carefully applying patches from the both
branches since the fork point):
pkgs/development/libraries/epoxy/default.nix
pkgs/development/libraries/gtk+/3.x.nix
pkgs/development/python-modules/asgiref/default.nix
pkgs/development/python-modules/daphne/default.nix
pkgs/os-specific/linux/systemd/default.nix
Fixes#31685
This patch is applied in Homebrew here and looks to have worked for
them:
fafbdbd237/Formula/qt.rb (L33-L44)
I rewrote the patch to work in our src tree (got rid of qtbase/ prefix
in files).
Right now I am just applying the patch in 5.10 because I don’t have
time to try these out on 5.6 or 5.9. Anyone who wants to can try it on
those if they have time.
This should be based off of staging and need to test in Hydra before
we don’t have extra issues introduced.
This aligns the package name more with the attrname.
This is a re-application of the idea behind 7405af72e6
("qt: make package names of "full" variants appear as such"), which
seems to have been lost on the way.
If ‘mkDerivation’ is passed ‘NIX_CFLAGS_COMPILE’, we should include those flags
along with the common flags.
See also: #34039#34038#33935#33933#33930#33927
First, closure size is reduced by including the static libraries in $out instead
of trying to move them to $dev. The Qt build system cannot handle libraries
being split between different prefixes. Previously, the static libraries were
moved into $dev and the shared libraries were symlinked from $out to $dev to
fool the build system. However, this causes $dev to be retained at
runtime. Instead, we now keep the static libraries in $out. Fortunately, the
static libraries are not very large anyway.
Second, we build with QT_NO_DEBUG defined unless debugging is enabled. This
causes some assertions to be removed; when assertions are included, they pull
paths from $dev into the runtime closure by using the __FILE__ macro. We also
now patch qtbase to remove even more assertions when QT_NO_DEBUG is defined.
This continues #23374, which always kept around both attributes, by
always including both propagated files: `propgated-native-build-inputs`
and `propagated-build-inputs`. `nativePkgs` and `crossPkgs` are still
defined as before, however, so this change should only barely
observable.
This is an incremental step to fully keeping the dependencies separate
in all cases.
* Add setupHook for meson/ninja build
* libhttpseverywhere: Use meson/ninja setupHooks
* jamomacore: Remove superfluous ninja buildInput
* Remove obsolete ninja buildPhases
These are all handled by ninja's setup hook.
* lean2, xcbuild: fix build with ninja setup hook
Ninja is a runtime dependency here. However, cmake can generate Ninja
build files as well to satisfy the setup hook.
* qtwebengine: fix build with ninja setup hook
Qt 5.8 is immediately removed because its support window is ended.
The qtlocation module is built with `enableParallelBuilding = false` so that the
clipper library will be built before the components which link to it.
kjs now depends directly on pcre. The dependency was previously propagated from
qtbase, which now depends on pcre2.
Plugin and QML import paths were previously determined by NIX_PROFILES. Using
PATH instead allows Qt applications to work under nix-shell without further modification.
Plugin and QML import paths were previously determined by NIX_PROFILES. Using
PATH instead allows Qt applications to work under nix-shell without further
modification.
The default installation path for QPA plugins is appended to
QT_QPA_PLATFORM_PLUGIN_PATH, making it unnecessary to wrap some applications and
preventing applications from loading platform plugins from the wrong Qt version.
(this is reapplying 6b1957d17a, which got
lost in a merge)
Including apple_sdk.sdk is generally a recipe for a bad time on LLVM 3.8
and above, since you end up with bad headers in the wrong place that hurt
the new libc++ in 3.8 and above. In this case, qt only wanted the super-
generic SDK for CUPS headers, which we can just depend on directly now.
Including apple_sdk.sdk is generally a recipe for a bad time on LLVM 3.8
and above, since you end up with bad headers in the wrong place that hurt
the new libc++ in 3.8 and above. In this case, qt only wanted the super-
generic SDK for CUPS headers, which we can just depend on directly now.
The community support window for Qt 5.5 has ended. All packages should
- update to Qt 5.8, or
- pin to Qt 5.6 (the 3-year long-term support release), or
- for proprietary software, use the vendored libraries.
The community support window for Qt 5.7 has ended. All packages should
- update to Qt 5.8, or
- pin to Qt 5.6 (the 3-year long-term support release), or
- for proprietary software, use the vendored libraries.
qtquickcontrols2, qtwebchannel, qtwebengine, qtwebkit.
Added in the same order as the modules are listed in default.nix (and
then reformatted the block).
qtquickcontrols2, qtwebkit.
Added in the same order as the modules are listed in default.nix (and
then reformatted the block).
(The qt55 expression already has all modules in *full.)
So that pkg-config can be used to find 'moc' etc. (Currently it points
to a non-existing path.)
Fixes#22945 ('Linux kbuild incompatible with "nix-shell -p qt5.full"').
- qtbase builds on darwin
- Downstream qmake and cmake build configurations supported
Darwin-specific changes:
Prevent `qmake -project` from adding build support files in the temp
directory to the project.
Shrink the temp directory used for building with qmake.
The issue here is that `lndir` recreates the entire directory structure
of the module we are merging into the temporary build environment. On
darwin, the framework directory structures mean that this shadow
directory tree is 17MB even though the file contents are all symlinks
into the store.
To address this, we symlink the framework directories explicitly and
use `lndir` for everything else.
Add patch to the clang update.py script for chromium that makes it work
the same as in qt57.qtwebengine. This avoids issues with the
subprocess.call that is used to run update.sh not liking the path it is
passed in certain build enviroments. update.sh is no longer used.
This moves libsystemd.so and libudev.so into systemd.lib, and gets rid
of libudev (which just contained a copy of libudev.so and the udev
headers). It thus reduces the closure size of all packages that
(indirectly) depend on libsystemd, of which there are quite a few (for
instance, PulseAudio and dbus). For example, it reduces the closure of
Blender from 430.8 to 400.8 MiB.