e526bb7756
The version of Chromium used by Qt WebEngine 5.15.x does not build with clang 16 due to the following errors: * -Wenum-constexpr-conversion: This is a downgradable error in clang 16, but it is planned to be made into a hard error in a future version of clang. Patches are not available for the version of v8 used by Chromium in Qt WebEngine, and fixing the code is non-trivial. * -Wincompatible-function-pointer-types: This is also a downgradable error generated starting with clang 16. Patches are available upstream that can be backported. Because the first error is non-trivial to fix and suppressing it risks future breakage, clang is pinned to clang 15, which also makes fixing the incompatible function pointer conversion errors unnecessary. The derivation is also updated to use the `overrideLibcxx` adapter. Using it links qt5.qtwebengine against the same versions of libc++ and libc++abi as qt5.qtbase even though they are built with different versions of clang, avoiding the compatibility problems that can cause. Also, reenable x86_64-darwin because it builds successfully too. |
||
---|---|---|
.. | ||
5.15 | ||
hooks | ||
modules | ||
mkDerivation.nix | ||
qt-env.nix | ||
qtModule.nix | ||
README.md |
Qt 5 Maintainer's Notes
Minor Updates
Let $major
be the major version number, e.g. 5.9
.
- Change the version number in the
$major/fetch.sh
. - Run
./maintainers/scripts/fetch-kde-qt.sh pkgs/development/libraries/qt-5/$major
from the top of the Nixpkgs tree.
See below if it is necessary to update any patches.
Major Updates
Let $major
be the new major version number, e.g. 5.10
.
- Copy the subdirectory from the previous major version to
$major
. - Change the version number in
$major/fetch.sh
. - Run
./maintainers/scripts/fetch-kde-qt.sh pkgs/development/libraries/qt-5/$major
from the top of the Nixpkgs tree. - Add a top-level attribute in
pkgs/top-level/all-packages.nix
for the new major version. - Change the
qt5
top-level attribute to point to the new major version. - If the previous major version is not a long-term support release, remove it from Nixpkgs.
See below if it is necessary to update any patches.
Patches
Nixpkgs maintains several patches for Qt which cannot be submitted upstream. To facilitate maintenance, a fork of the upstream repository is created for each patched module:
In each repository, the patches are contained in a branch named nixpkgs/$major
for each major version. Please make a pull request to add or update any patch
which will be maintained in Nixpkgs.
The forked repository for each module is used to create a single patch in
Nixpkgs. To recreate the patch for module $module
(e.g. qtbase
) at version
$version
(e.g. 5.9.1
) in the branch $major
(e.g. 5.9
),
- Clone the fork for
$module
from the list above. - Checkout the active branch,
git checkout nixpkgs/$major
. - Compare the patched branch to the release tag,
git diff v$version > $module.patch
. - Copy
$module.patch
into the Nixpkgs tree.
Minor Version Updates
To update module $module
to version $version
from an older version in the
same branch $major
,
- Clone the fork for
$module
from the list above. - Checkout the active branch,
git checkout nixpkgs/$major
. - Merge the new version into the active branch,
git merge --no-ff v$version
. - Fix any conflicts.
- Open a pull request for the changes.
- Follow the instructions above to recreate the module patch in Nixpkgs.
Major Version Updates
To update module $module
from $oldversion
in branch $oldmajor
to version
$version
in branch $major
,
- Clone the fork for
$module
from the list above. - Checkout a new branch for the new major version,
git checkout -b nixpkgs/$major nixpkgs/$oldmajor
. - Rebase the patches from
$oldversion
onto the new branch,git rebase v$oldversion --onto v$version
. - Fix any conflicts.
- Open a pull request for the changes.
- Follow the instructions above to recreate the module patch in Nixpkgs.