diff options
Diffstat (limited to 'doc/languages-frameworks/qt.xml')
-rw-r--r-- | doc/languages-frameworks/qt.xml | 108 |
1 files changed, 62 insertions, 46 deletions
diff --git a/doc/languages-frameworks/qt.xml b/doc/languages-frameworks/qt.xml index 1dbbb5341ba3..b9b605b81da1 100644 --- a/doc/languages-frameworks/qt.xml +++ b/doc/languages-frameworks/qt.xml @@ -1,58 +1,74 @@ <section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-language-qt"> + <title>Qt</title> -<title>Qt</title> - -<para> -Qt is a comprehensive desktop and mobile application development toolkit for C++. -Legacy support is available for Qt 3 and Qt 4, but all current development uses Qt 5. -The Qt 5 packages in Nixpkgs are updated frequently to take advantage of new features, -but older versions are typically retained until their support window ends. -The most important consideration in packaging Qt-based software is ensuring that each package and all its dependencies use the same version of Qt 5; -this consideration motivates most of the tools described below. -</para> - -<section xml:id="ssec-qt-libraries"><title>Packaging Libraries for Nixpkgs</title> - -<para> -Whenever possible, libraries that use Qt 5 should be built with each available version. -Packages providing libraries should be added to the top-level function <varname>mkLibsForQt5</varname>, -which is used to build a set of libraries for every Qt 5 version. -A special <varname>callPackage</varname> function is used in this scope to ensure that the entire dependency tree uses the same Qt 5 version. -Import dependencies unqualified, i.e., <literal>qtbase</literal> not <literal>qt5.qtbase</literal>. -<emphasis>Do not</emphasis> import a package set such as <literal>qt5</literal> or <literal>libsForQt5</literal>. -</para> - -<para> -If a library does not support a particular version of Qt 5, it is best to mark it as broken by setting its <literal>meta.broken</literal> attribute. -A package may be marked broken for certain versions by testing the <literal>qtbase.version</literal> attribute, which will always give the current Qt 5 version. -</para> + <para> + Qt is a comprehensive desktop and mobile application development toolkit for + C++. Legacy support is available for Qt 3 and Qt 4, but all current + development uses Qt 5. The Qt 5 packages in Nixpkgs are updated frequently to + take advantage of new features, but older versions are typically retained + until their support window ends. The most important consideration in + packaging Qt-based software is ensuring that each package and all its + dependencies use the same version of Qt 5; this consideration motivates most + of the tools described below. + </para> -</section> + <section xml:id="ssec-qt-libraries"> + <title>Packaging Libraries for Nixpkgs</title> -<section xml:id="ssec-qt-applications"><title>Packaging Applications for Nixpkgs</title> + <para> + Whenever possible, libraries that use Qt 5 should be built with each + available version. Packages providing libraries should be added to the + top-level function <varname>mkLibsForQt5</varname>, which is used to build a + set of libraries for every Qt 5 version. A special + <varname>callPackage</varname> function is used in this scope to ensure that + the entire dependency tree uses the same Qt 5 version. Import dependencies + unqualified, i.e., <literal>qtbase</literal> not + <literal>qt5.qtbase</literal>. <emphasis>Do not</emphasis> import a package + set such as <literal>qt5</literal> or <literal>libsForQt5</literal>. + </para> -<para> -Call your application expression using <literal>libsForQt5.callPackage</literal> instead of <literal>callPackage</literal>. -Import dependencies unqualified, i.e., <literal>qtbase</literal> not <literal>qt5.qtbase</literal>. -<emphasis>Do not</emphasis> import a package set such as <literal>qt5</literal> or <literal>libsForQt5</literal>. -</para> + <para> + If a library does not support a particular version of Qt 5, it is best to + mark it as broken by setting its <literal>meta.broken</literal> attribute. A + package may be marked broken for certain versions by testing the + <literal>qtbase.version</literal> attribute, which will always give the + current Qt 5 version. + </para> + </section> -<para> -Qt 5 maintains strict backward compatibility, so it is generally best to build an application package against the latest version using the <varname>libsForQt5</varname> library set. -In case a package does not build with the latest Qt version, it is possible to pick a set pinned to a particular version, e.g. <varname>libsForQt55</varname> for Qt 5.5, if that is the latest version the package supports. -If a package must be pinned to an older Qt version, be sure to file a bug upstream; -because Qt is strictly backwards-compatible, any incompatibility is by definition a bug in the application. -</para> + <section xml:id="ssec-qt-applications"> + <title>Packaging Applications for Nixpkgs</title> -<para> -When testing applications in Nixpkgs, it is a common practice to build the package with <literal>nix-build</literal> and run it using the created symbolic link. -This will not work with Qt applications, however, because they have many hard runtime requirements that can only be guaranteed if the package is actually installed. -To test a Qt application, install it with <literal>nix-env</literal> or run it inside <literal>nix-shell</literal>. -</para> + <para> + Call your application expression using + <literal>libsForQt5.callPackage</literal> instead of + <literal>callPackage</literal>. Import dependencies unqualified, i.e., + <literal>qtbase</literal> not <literal>qt5.qtbase</literal>. <emphasis>Do + not</emphasis> import a package set such as <literal>qt5</literal> or + <literal>libsForQt5</literal>. + </para> -</section> + <para> + Qt 5 maintains strict backward compatibility, so it is generally best to + build an application package against the latest version using the + <varname>libsForQt5</varname> library set. In case a package does not build + with the latest Qt version, it is possible to pick a set pinned to a + particular version, e.g. <varname>libsForQt55</varname> for Qt 5.5, if that + is the latest version the package supports. If a package must be pinned to + an older Qt version, be sure to file a bug upstream; because Qt is strictly + backwards-compatible, any incompatibility is by definition a bug in the + application. + </para> + <para> + When testing applications in Nixpkgs, it is a common practice to build the + package with <literal>nix-build</literal> and run it using the created + symbolic link. This will not work with Qt applications, however, because + they have many hard runtime requirements that can only be guaranteed if the + package is actually installed. To test a Qt application, install it with + <literal>nix-env</literal> or run it inside <literal>nix-shell</literal>. + </para> + </section> </section> - |