Merge pull request #208867 from K900/qt-doc-fixes
treewide: remove outdated multiple versions of Qt stuff
This commit is contained in:
commit
3ae365afb8
2 changed files with 5 additions and 74 deletions
|
@ -2,14 +2,11 @@
|
|||
|
||||
Writing Nix expressions for Qt libraries and applications is largely similar as for other C++ software.
|
||||
This section assumes some knowledge of the latter.
|
||||
There are two problems that the Nixpkgs Qt infrastructure addresses,
|
||||
which are not shared by other C++ software:
|
||||
|
||||
1. There are usually multiple supported versions of Qt in Nixpkgs.
|
||||
All of a package's dependencies must be built with the same version of Qt.
|
||||
This is similar to the version constraints imposed on interpreted languages like Python.
|
||||
2. Qt makes extensive use of runtime dependency detection.
|
||||
Runtime dependencies are made into build dependencies through wrappers.
|
||||
The major caveat with Qt applications is that Qt uses a plugin system to load additional modules at runtime,
|
||||
from a list of well-known locations. In Nixpkgs, we patch QtCore to instead use an environment variable,
|
||||
and wrap Qt applications to set it to the right paths. This effectively makes the runtime dependencies
|
||||
pure and explicit at build-time, at the cost of introducing an extra indirection.
|
||||
|
||||
## Nix expression for a Qt package (default.nix) {#qt-default-nix}
|
||||
|
||||
|
@ -95,66 +92,3 @@ stdenv.mkDerivation {
|
|||
This means that scripts won't be automatically wrapped so you'll need to manually wrap them as previously mentioned.
|
||||
An example of when you'd always need to do this is with Python applications that use PyQt.
|
||||
:::
|
||||
|
||||
## Adding a library to Nixpkgs {#adding-a-library-to-nixpkgs}
|
||||
|
||||
Add Qt libraries to `qt5-packages.nix` to make them available for every
|
||||
supported Qt version.
|
||||
|
||||
### Example adding a Qt library {#qt-library-all-packages-nix}
|
||||
|
||||
The following represents the contents of `qt5-packages.nix`.
|
||||
|
||||
```nix
|
||||
{
|
||||
# ...
|
||||
|
||||
mylib = callPackage ../path/to/mylib {};
|
||||
|
||||
# ...
|
||||
}
|
||||
```
|
||||
|
||||
Libraries are built with every available version of Qt.
|
||||
Use the `meta.broken` attribute to disable the package for unsupported Qt versions:
|
||||
|
||||
```nix
|
||||
{ stdenv, lib, qtbase }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
# ...
|
||||
# Disable this library with Qt < 5.9.0
|
||||
meta.broken = lib.versionOlder qtbase.version "5.9.0";
|
||||
}
|
||||
```
|
||||
|
||||
## Adding an application to Nixpkgs {#adding-an-application-to-nixpkgs}
|
||||
|
||||
Add Qt applications to `qt5-packages.nix`. Add an alias to `all-packages.nix`
|
||||
to select the Qt 5 version used for the application.
|
||||
|
||||
### Example adding a Qt application {#qt-application-all-packages-nix}
|
||||
|
||||
The following represents the contents of `qt5-packages.nix`.
|
||||
|
||||
```nix
|
||||
{
|
||||
# ...
|
||||
|
||||
myapp = callPackage ../path/to/myapp {};
|
||||
|
||||
# ...
|
||||
}
|
||||
```
|
||||
|
||||
The following represents the contents of `all-packages.nix`.
|
||||
|
||||
```nix
|
||||
{
|
||||
# ...
|
||||
|
||||
myapp = libsForQt5.myapp;
|
||||
|
||||
# ...
|
||||
}
|
||||
```
|
||||
|
|
|
@ -22471,6 +22471,7 @@ with pkgs;
|
|||
});
|
||||
|
||||
# TODO: remove once no package needs this anymore or together with OpenSSL 1.1
|
||||
# Current users: mumble, murmur
|
||||
qt5_openssl_1_1 = qt5.overrideScope' (_: super: {
|
||||
qtbase = super.qtbase.override {
|
||||
openssl = openssl_1_1;
|
||||
|
@ -22480,10 +22481,6 @@ with pkgs;
|
|||
};
|
||||
};
|
||||
});
|
||||
libsForQt5_openssl_1_1 = import ./qt5-packages.nix {
|
||||
inherit lib pkgs;
|
||||
qt5 = qt5_openssl_1_1;
|
||||
};
|
||||
|
||||
# plasma5Packages maps to the Qt5 packages set that is used to build the plasma5 desktop
|
||||
plasma5Packages = libsForQt5;
|
||||
|
|
Loading…
Reference in a new issue