Merge pull request #108888 from ttuegel/feature--staging--qt-no-mkDerivation

Qt: Do not require mkDerivation
This commit is contained in:
Thomas Tuegel 2021-01-26 16:24:41 -06:00 committed by GitHub
commit 0e418a1a18
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
116 changed files with 343 additions and 70 deletions

View File

@ -1,77 +1,88 @@
# Qt {#sec-language-qt} # Qt {#sec-language-qt}
This section describes the differences between Nix expressions for Qt libraries and applications and Nix expressions for other C++ software. Some knowledge of the latter is assumed. 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:
There are primarily two problems which the Qt infrastructure is designed to address: ensuring consistent versioning of all dependencies and finding dependencies at runtime. 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.
## Nix expression for a Qt package (default.nix) {#qt-default-nix} ## Nix expression for a Qt package (default.nix) {#qt-default-nix}
```{=docbook} ```{=docbook}
<programlisting> <programlisting>
{ mkDerivation, qtbase }: <co xml:id='qt-default-nix-co-1' /> { stdenv, lib, qtbase, wrapQtAppsHook }: <co xml:id='qt-default-nix-co-1' />
mkDerivation { <co xml:id='qt-default-nix-co-2' /> stdenv.mkDerivation {
pname = "myapp"; pname = "myapp";
version = "1.0"; version = "1.0";
buildInputs = [ qtbase ]; <co xml:id='qt-default-nix-co-3' /> buildInputs = [ qtbase ];
nativeBuildInputs = [ wrapQtAppsHook ]; <co xml:id'qt-default-nix-co-2' />
} }
</programlisting> </programlisting>
<calloutlist> <calloutlist>
<callout arearefs='qt-default-nix-co-1'> <callout arearefs='qt-default-nix-co-1'>
<para> <para>
Import <literal>mkDerivation</literal> and Qt (such as <literal>qtbase</literal> modules directly. <emphasis>Do not</emphasis> import Qt package sets; the Qt versions of dependencies may not be coherent, causing build and runtime failures. Import Qt modules directly, that is: <literal>qtbase</literal>, <literal>qtdeclarative</literal>, etc.
<emphasis>Do not</emphasis> import Qt package sets such as <literal>qt5</literal>
because the Qt versions of dependencies may not be coherent, causing build and runtime failures.
</para> </para>
</callout> </callout>
<callout arearefs='qt-default-nix-co-2'> <callout arearefs="qt-default-nix-co-2'>
<para> <para>
Use <literal>mkDerivation</literal> instead of <literal>stdenv.mkDerivation</literal>. <literal>mkDerivation</literal> is a wrapper around <literal>stdenv.mkDerivation</literal> which applies some Qt-specific settings. This deriver accepts the same arguments as <literal>stdenv.mkDerivation</literal>; refer to <xref linkend='chap-stdenv' /> for details. All Qt packages must include <literal>wrapQtAppsHook</literal> in
</para> <literal>nativeBuildInputs</literal>, or you must explicitly set
<para> <literal>dontWrapQtApps</literal>.
To use another deriver instead of <literal>stdenv.mkDerivation</literal>, use <literal>mkDerivationWith</literal>: </para>
<programlisting>
mkDerivationWith myDeriver {
# ...
}
</programlisting>
If you cannot use <literal>mkDerivationWith</literal>, please refer to <xref linkend='qt-runtime-dependencies' />.
</para>
</callout>
<callout arearefs='qt-default-nix-co-3'>
<para>
<literal>mkDerivation</literal> accepts the same arguments as <literal>stdenv.mkDerivation</literal>, such as <literal>buildInputs</literal>.
</para>
</callout> </callout>
</calloutlist> </calloutlist>
``` ```
## Locating runtime dependencies {#qt-runtime-dependencies} ## Locating runtime dependencies {#qt-runtime-dependencies}
Qt applications need to be wrapped to find runtime dependencies. If you cannot use `mkDerivation` or `mkDerivationWith` above, include `wrapQtAppsHook` in `nativeBuildInputs`:
Qt applications must be wrapped to find runtime dependencies.
Include `wrapQtAppsHook` in `nativeBuildInputs`:
```nix ```nix
{ stdenv, wrapQtAppsHook }:
stdenv.mkDerivation { stdenv.mkDerivation {
# ... # ...
nativeBuildInputs = [ wrapQtAppsHook ]; nativeBuildInputs = [ wrapQtAppsHook ];
} }
``` ```
Entries added to `qtWrapperArgs` are used to modify the wrappers created by `wrapQtAppsHook`. The entries are passed as arguments to [wrapProgram executable makeWrapperArgs](#fun-wrapProgram).
Add entries to `qtWrapperArgs` are to modify the wrappers created by
`wrapQtAppsHook`:
```nix ```nix
mkDerivation { { stdenv, wrapQtAppsHook }:
# ...
stdenv.mkDerivation {
# ...
nativeBuildInputs = [ wrapQtAppsHook ];
qtWrapperArgs = [ ''--prefix PATH : /path/to/bin'' ]; qtWrapperArgs = [ ''--prefix PATH : /path/to/bin'' ];
} }
``` ```
Set `dontWrapQtApps` to stop applications from being wrapped automatically. It is required to wrap applications manually with `wrapQtApp`, using the syntax of [wrapProgram executable makeWrapperArgs](#fun-wrapProgram): The entries are passed as arguments to [wrapProgram](#fun-wrapProgram).
Set `dontWrapQtApps` to stop applications from being wrapped automatically.
Wrap programs manually with `wrapQtApp`, using the syntax of
[wrapProgram](#fun-wrapProgram):
```nix ```nix
mkDerivation { { stdenv, lib, wrapQtAppsHook }:
# ...
stdenv.mkDerivation {
# ...
nativeBuildInputs = [ wrapQtAppsHook ];
dontWrapQtApps = true; dontWrapQtApps = true;
preFixup = '' preFixup = ''
wrapQtApp "$out/bin/myapp" --prefix PATH : /path/to/bin wrapQtApp "$out/bin/myapp" --prefix PATH : /path/to/bin
@ -79,21 +90,16 @@ mkDerivation {
} }
``` ```
> Note: `wrapQtAppsHook` ignores files that are non-ELF executables. 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. ::: note
`wrapQtAppsHook` ignores files that are non-ELF executables.
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.
:::
Libraries are built with every available version of Qt. Use the `meta.broken` attribute to disable the package for unsupported Qt versions:
```nix
mkDerivation {
# ...
# Disable this library with Qt &lt; 5.9.0
meta.broken = builtins.compareVersions qtbase.version "5.9.0" &lt; 0;
}
```
## Adding a library to Nixpkgs ## Adding a library to Nixpkgs
Qt libraries are added to `qt5-packages.nix` and are made available for every Qt Add Qt libraries to `qt5-packages.nix` to make them available for every
version supported. supported Qt version.
### Example adding a Qt library {#qt-library-all-packages-nix} ### Example adding a Qt library {#qt-library-all-packages-nix}
The following represents the contents of `qt5-packages.nix`. The following represents the contents of `qt5-packages.nix`.
@ -106,9 +112,23 @@ The following represents the contents of `qt5-packages.nix`.
# ... # ...
} }
``` ```
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 &lt; 5.9.0
meta.broken = lib.versionOlder qtbase.version "5.9.0";
}
```
## Adding an application to Nixpkgs ## Adding an application to Nixpkgs
Applications that use Qt are also added to `qt5-packages.nix`. An alias is added Add Qt applications to `qt5-packages.nix`. Add an alias to `all-packages.nix`
in the top-level `all-packages.nix` pointing to the package with the desired Qt5 version. to select the Qt 5 version used for the application.
### Example adding a Qt application {#qt-application-all-packages-nix} ### Example adding a Qt application {#qt-application-all-packages-nix}

View File

@ -40,6 +40,8 @@ stdenv.mkDerivation rec {
"SHARE_DIR=${placeholder "out"}/share" "SHARE_DIR=${placeholder "out"}/share"
]; ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "CsoundQt is a frontend for Csound with editor, integrated help, widgets and other features"; description = "CsoundQt is a frontend for Csound with editor, integrated help, widgets and other features";
homepage = "https://csoundqt.github.io/"; homepage = "https://csoundqt.github.io/";

View File

@ -21,6 +21,8 @@ stdenv.mkDerivation rec {
--replace "\$\$[QT_INSTALL_PREFIX]" "$out" --replace "\$\$[QT_INSTALL_PREFIX]" "$out"
''; '';
dontWrapQtApps = true;
enableParallelBuilding = true; enableParallelBuilding = true;
meta = with lib; { meta = with lib; {

View File

@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
buildInputs = [ alsaLib drumstick qtbase qtsvg ]; buildInputs = [ alsaLib drumstick qtbase qtsvg ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
homepage = "https://kmetronome.sourceforge.io/"; homepage = "https://kmetronome.sourceforge.io/";
description = "ALSA MIDI metronome with Qt interface"; description = "ALSA MIDI metronome with Qt interface";

View File

@ -21,6 +21,8 @@ stdenv.mkDerivation rec {
"-DENABLE_PULSEAUDIO=ON" "-DENABLE_PULSEAUDIO=ON"
]; ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Application for practicing playing musical scores and ear training"; description = "Application for practicing playing musical scores and ear training";
homepage = "https://nootka.sourceforge.io/"; homepage = "https://nootka.sourceforge.io/";

View File

@ -17,6 +17,8 @@ stdenv.mkDerivation rec {
qtbase qtdeclarative qtquickcontrols2 qtbase qtdeclarative qtquickcontrols2
]; ];
dontWrapQtApps = true;
cmakeFlags = [ cmakeFlags = [
"-DCMAKE_INCLUDE_PATH=${libjack2}/include/jack;${libpulseaudio.dev}/include/pulse" "-DCMAKE_INCLUDE_PATH=${libjack2}/include/jack;${libpulseaudio.dev}/include/pulse"
"-DENABLE_JACK=ON" "-DENABLE_JACK=ON"

View File

@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
dontUnpack = true; dontUnpack = true;
dontBuild = true; dontBuild = true;
dontStrip = true; dontStrip = true;
dontWrapQtApps = true;
installPhase = '' installPhase = ''
mkdir -p $out mkdir -p $out

View File

@ -27,6 +27,8 @@ stdenv.mkDerivation rec {
kwindowsystem kwindowsystem
]; ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Mpris2 Client for Plasma5"; description = "Mpris2 Client for Plasma5";
homepage = "https://github.com/audoban/PlayBar2"; homepage = "https://github.com/audoban/PlayBar2";

View File

@ -25,6 +25,8 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
homepage = "https://github.com/ahlstromcj/seq66"; homepage = "https://github.com/ahlstromcj/seq66";
description = "Loop based midi sequencer with Qt GUI derived from seq24 and sequencer64"; description = "Loop based midi sequencer with Qt GUI derived from seq24 and sequencer64";

View File

@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Allows to analyze samples of musical instruments, and to combine them (morphing) to construct hybrid sounds"; description = "Allows to analyze samples of musical instruments, and to combine them (morphing) to construct hybrid sounds";
homepage = "http://spectmorph.org"; homepage = "http://spectmorph.org";

View File

@ -28,6 +28,8 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
dontWrapQtApps = true;
meta = { meta = {
description = "Peer-to-peer electronic cash system (Classic client)"; description = "Peer-to-peer electronic cash system (Classic client)";
longDescription= '' longDescription= ''

View File

@ -101,6 +101,8 @@ stdenv.mkDerivation rec {
}) })
]; ];
dontWrapQtApps = true;
preConfigure = "NOCONFIGURE=1 ./autogen.sh"; preConfigure = "NOCONFIGURE=1 ./autogen.sh";
configureFlags = [ configureFlags = [

View File

@ -39,6 +39,9 @@ stdenv.mkDerivation rec {
] ]
++ lib.optionals withQt [ "UI=qt" ] ++ lib.optionals withQt [ "UI=qt" ]
++ lib.optionals withGtk [ "UI=gtk" ]; ++ lib.optionals withGtk [ "UI=gtk" ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Folding text editor, designed to hierarchically structure any kind of text file and especially source code"; description = "Folding text editor, designed to hierarchically structure any kind of text file and especially source code";
homepage = "https://tibleiz.net/code-browser/"; homepage = "https://tibleiz.net/code-browser/";

View File

@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake extra-cmake-modules ]; nativeBuildInputs = [ cmake extra-cmake-modules ];
buildInputs = [ kdevelop-pg-qt threadweaver ktexteditor kdevelop-unwrapped ]; buildInputs = [ kdevelop-pg-qt threadweaver ktexteditor kdevelop-unwrapped ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
maintainers = [ maintainers.aanderse ]; maintainers = [ maintainers.aanderse ];
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -16,6 +16,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake extra-cmake-modules ]; nativeBuildInputs = [ cmake extra-cmake-modules ];
buildInputs = [ threadweaver ktexteditor kdevelop-unwrapped ]; buildInputs = [ threadweaver ktexteditor kdevelop-unwrapped ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
maintainers = [ maintainers.aanderse ]; maintainers = [ maintainers.aanderse ];
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -17,6 +17,8 @@ stdenv.mkDerivation rec {
buildInputs = [ qtbase ]; buildInputs = [ qtbase ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
maintainers = [ maintainers.ambrop72 ]; maintainers = [ maintainers.ambrop72 ];
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -19,6 +19,8 @@ stdenv.mkDerivation rec {
export QXMLEDIT_INST_DOC_DIR="$doc" export QXMLEDIT_INST_DOC_DIR="$doc"
''; '';
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Simple XML editor based on qt libraries" ; description = "Simple XML editor based on qt libraries" ;
homepage = "https://sourceforge.net/projects/qxmledit"; homepage = "https://sourceforge.net/projects/qxmledit";

View File

@ -38,6 +38,8 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
dontWrapQtApps = true;
doCheck = true; doCheck = true;
preCheck = '' preCheck = ''
patchShebangs testo patchShebangs testo

View File

@ -10,6 +10,8 @@ mkDerivation {
nativeBuildInputs = [ qmake qttools ]; nativeBuildInputs = [ qmake qttools ];
buildInputs = [ qtwebkit ]; buildInputs = [ qtwebkit ];
dontWrapQtApps = true;
postPatch = '' postPatch = ''
substituteInPlace mainwindow.cc \ substituteInPlace mainwindow.cc \
--replace "QApplication::applicationDirPath() + \"/" "\"" \ --replace "QApplication::applicationDirPath() + \"/" "\"" \

View File

@ -16,6 +16,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake extra-cmake-modules ]; nativeBuildInputs = [ cmake extra-cmake-modules ];
buildInputs = [ plasma-framework kwindowsystem plasma-pa ]; buildInputs = [ plasma-framework kwindowsystem plasma-pa ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "A fork of the default volume plasmoid with a Windows 7 theme (vertical sliders)"; description = "A fork of the default volume plasmoid with a Windows 7 theme (vertical sliders)";
homepage = "https://github.com/Zren/plasma-applet-volumewin7mixer"; homepage = "https://github.com/Zren/plasma-applet-volumewin7mixer";

View File

@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
]; ];
dontUseQmakeConfigure = true; dontUseQmakeConfigure = true;
dontWrapQtApps = true;
NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated" ]; NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated" ];

View File

@ -35,6 +35,8 @@ stdenv.mkDerivation {
kwindowsystem kwindowsystem
]; ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "KDE Plasma 5 widget for controlling Redshift"; description = "KDE Plasma 5 widget for controlling Redshift";
homepage = "https://github.com/kotelnik/plasma-applet-redshift-control"; homepage = "https://github.com/kotelnik/plasma-applet-redshift-control";

View File

@ -52,6 +52,8 @@ let
buildInputs = [ qtbase qtlocation libXcomposite ]; buildInputs = [ qtbase qtlocation libXcomposite ];
dontWrapQtApps = true;
pluginsSubdir = "lib/qt-${qtbase.qtCompatVersion}/plugins"; pluginsSubdir = "lib/qt-${qtbase.qtCompatVersion}/plugins";
installPhase = '' installPhase = ''

View File

@ -17,6 +17,8 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
dontWrapQtApps = true;
preConfigure = '' preConfigure = ''
export QMAKEFEATURES=${libcommuni}/features export QMAKEFEATURES=${libcommuni}/features
''; '';

View File

@ -16,6 +16,8 @@ stdenv.mkDerivation rec {
runHook postConfigure runHook postConfigure
''; '';
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Rapidly extract unformatted, or unstandardized bibliographic references from email alerts, journal Web pages and PDF files"; description = "Rapidly extract unformatted, or unstandardized bibliographic references from email alerts, journal Web pages and PDF files";
homepage = "http://www.molspaces.com/d_cb2bib-overview.php"; homepage = "http://www.molspaces.com/d_cb2bib-overview.php";

View File

@ -218,6 +218,7 @@ let
passthru passthru
doCheck doCheck
dontWrapPythonPrograms dontWrapPythonPrograms
dontWrapQtApps
meta meta
; ;
cmakeFlags = shared.cmakeFlags cmakeFlags = shared.cmakeFlags
@ -283,6 +284,7 @@ stdenv.mkDerivation rec {
passthru passthru
doCheck doCheck
dontWrapPythonPrograms dontWrapPythonPrograms
dontWrapQtApps
meta meta
; ;
} }

View File

@ -109,6 +109,7 @@ rec {
}; };
# Wrapping is done with an external wrapper # Wrapping is done with an external wrapper
dontWrapPythonPrograms = true; dontWrapPythonPrograms = true;
dontWrapQtApps = true;
# Tests should succeed, but it's hard to get LD_LIBRARY_PATH right in order # Tests should succeed, but it's hard to get LD_LIBRARY_PATH right in order
# for it to happen. # for it to happen.
doCheck = false; doCheck = false;

View File

@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
buildInputs = [libpulseaudio alsaLib pkg-config qt5.qtbase]; buildInputs = [libpulseaudio alsaLib pkg-config qt5.qtbase];
CFLAGS ="-lasound -lpulse-simple"; CFLAGS ="-lasound -lpulse-simple";
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "sound characters as Morse code on the soundcard or console speaker"; description = "sound characters as Morse code on the soundcard or console speaker";
longDescription = '' longDescription = ''

View File

@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = [ libGLU libGL qt5.qtbase boost ]; buildInputs = [ libGLU libGL qt5.qtbase boost ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "A toolset for model-checking concurrent systems and protocols"; description = "A toolset for model-checking concurrent systems and protocols";
longDescription = '' longDescription = ''

View File

@ -48,6 +48,7 @@ stdenv.mkDerivation rec {
dontBuild = true; dontBuild = true;
dontConfigure = true; dontConfigure = true;
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "GUI application that allows to quickly and easily compare files and folders"; description = "GUI application that allows to quickly and easily compare files and folders";

View File

@ -25,6 +25,8 @@ stdenv.mkDerivation {
NIX_LDFLAGS = "-lsvn_fs-1"; NIX_LDFLAGS = "-lsvn_fs-1";
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
homepage = "https://github.com/svn-all-fast-export/svn2git"; homepage = "https://github.com/svn-all-fast-export/svn2git";
description = "A fast-import based converter for an svn repo to git repos"; description = "A fast-import based converter for an svn repo to git repos";

View File

@ -31,6 +31,8 @@ stdenv.mkDerivation rec {
"-DCMAKE_CXX_FLAGS=-I${obs-studio.src}/UI/obs-frontend-api" "-DCMAKE_CXX_FLAGS=-I${obs-studio.src}/UI/obs-frontend-api"
]; ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Network A/V plugin for OBS Studio"; description = "Network A/V plugin for OBS Studio";
homepage = "https://github.com/Palakis/obs-ndi"; homepage = "https://github.com/Palakis/obs-ndi";

View File

@ -21,6 +21,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = [ qtbase obs-studio ]; buildInputs = [ qtbase obs-studio ];
dontWrapQtApps = true;
patches = [ patches = [
# Fixes the segfault when stopping the plugin # Fixes the segfault when stopping the plugin
(fetchpatch { (fetchpatch {

View File

@ -41,6 +41,8 @@ stdenv.mkDerivation rec {
++ optional stdenv.isDarwin llvmPackages.openmp ++ optional stdenv.isDarwin llvmPackages.openmp
; ;
dontWrapQtApps = true;
LIBOPENSHOT_AUDIO_DIR = libopenshot-audio; LIBOPENSHOT_AUDIO_DIR = libopenshot-audio;
"UNITTEST++_INCLUDE_DIR" = "${unittest-cpp}/include/UnitTest++"; "UNITTEST++_INCLUDE_DIR" = "${unittest-cpp}/include/UnitTest++";

View File

@ -35,6 +35,8 @@ stdenv.mkDerivation {
dontDropIconThemeCache = true; dontDropIconThemeCache = true;
dontWrapQtApps = true;
postInstall = '' postInstall = ''
for theme in $out/share/icons/*; do for theme in $out/share/icons/*; do
gtk-update-icon-cache $theme gtk-update-icon-cache $theme

View File

@ -31,6 +31,8 @@ stdenv.mkDerivation rec {
++ optional (!stdenv.isDarwin) alsaLib ++ optional (!stdenv.isDarwin) alsaLib
++ optional useSCEL emacs; ++ optional useSCEL emacs;
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Programming language for real time audio synthesis"; description = "Programming language for real time audio synthesis";
homepage = "https://supercollider.github.io"; homepage = "https://supercollider.github.io";

View File

@ -57,6 +57,8 @@ in stdenv.mkDerivation rec {
buildInputs = [ gtk2 gtk3 qt5.qtbase gnutls openssl libgcrypt libgpgerror ]; buildInputs = [ gtk2 gtk3 qt5.qtbase gnutls openssl libgcrypt libgpgerror ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "OS abstraction functions used by aqbanking and related tools"; description = "OS abstraction functions used by aqbanking and related tools";
homepage = "http://www2.aquamaniac.de/sites/download/packages.php?package=01&showall=1"; homepage = "http://www2.aquamaniac.de/sites/download/packages.php?package=01&showall=1";

View File

@ -22,6 +22,8 @@ stdenv.mkDerivation rec {
++ (lib.optionals withQt4 [ qt4 ]) ++ (lib.optionals withQt4 [ qt4 ])
++ (lib.optionals withQt5 (with qt5; [ qtbase qttools ])); ++ (lib.optionals withQt5 (with qt5; [ qtbase qttools ]));
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
homepage = "http://drobilla.net/software/suil"; homepage = "http://drobilla.net/software/suil";
description = "A lightweight C library for loading and wrapping LV2 plugin UIs"; description = "A lightweight C library for loading and wrapping LV2 plugin UIs";

View File

@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ nativeBuildInputs = [
qmake qmake
]; ];
dontWrapQtApps = true;
preConfigure = '' preConfigure = ''
sed -i 's/CONFIG += staticlib/CONFIG += shared/' dxflib.pro sed -i 's/CONFIG += staticlib/CONFIG += shared/' dxflib.pro
''; '';

View File

@ -23,6 +23,8 @@ mkDerivation rec {
# Silence noisy warning # Silence noisy warning
CXXFLAGS = "-Wno-deprecated-copy"; CXXFLAGS = "-Wno-deprecated-copy";
dontWrapQtApps = true;
cmakeFlags = [ cmakeFlags = [
# Detection script is broken # Detection script is broken
"-DQGLVIEWER_INCLUDE_DIR=${libqglviewer}/include/QGLViewer" "-DQGLVIEWER_INCLUDE_DIR=${libqglviewer}/include/QGLViewer"

View File

@ -12,6 +12,7 @@ stdenv.mkDerivation rec {
}; };
enableParallelBuilding = true; enableParallelBuilding = true;
dontWrapQtApps = true;
nativeBuildInputs = [ bison flex ]; nativeBuildInputs = [ bison flex ];
buildInputs = [ perl gmp mpfr ] buildInputs = [ perl gmp mpfr ]
++ lib.optional enableGist qtbase; ++ lib.optional enableGist qtbase;

View File

@ -50,6 +50,8 @@ stdenv.mkDerivation rec {
depsBuildBuild = [ buildPackages.stdenv.cc ]; depsBuildBuild = [ buildPackages.stdenv.cc ];
dontWrapQtApps = true;
configureFlags = [ configureFlags = [
"--enable-fixed-path=${gnupg}/bin" "--enable-fixed-path=${gnupg}/bin"
"--with-libgpg-error-prefix=${libgpgerror.dev}" "--with-libgpg-error-prefix=${libgpgerror.dev}"

View File

@ -24,6 +24,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ extra-cmake-modules ]; nativeBuildInputs = [ extra-cmake-modules ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
maintainers = with lib.maintainers; [ peterhoeg ]; maintainers = with lib.maintainers; [ peterhoeg ];
# The build requires at least Qt 5.14: # The build requires at least Qt 5.14:

View File

@ -21,6 +21,8 @@ stdenv.mkDerivation rec {
dontUseQmakeConfigure = true; dontUseQmakeConfigure = true;
configureFlags = [ "-config" "release" ]; configureFlags = [ "-config" "release" ];
dontWrapQtApps = true;
preConfigure = '' preConfigure = ''
sed -i -e 's|/bin/pwd|pwd|g' configure sed -i -e 's|/bin/pwd|pwd|g' configure
''; '';

View File

@ -20,6 +20,8 @@ stdenv.mkDerivation {
cmakeFlags = [ "-DWITH_DOC=OFF" ]; cmakeFlags = [ "-DWITH_DOC=OFF" ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Provides a Qt implementation of the DBusMenu spec"; description = "Provides a Qt implementation of the DBusMenu spec";
inherit homepage; inherit homepage;

View File

@ -15,6 +15,8 @@ stdenv.mkDerivation rec {
cmakeFlags = [ "-DWITH_DOC=OFF" ]; cmakeFlags = [ "-DWITH_DOC=OFF" ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
homepage = "https://launchpad.net/libdbusmenu-qt"; homepage = "https://launchpad.net/libdbusmenu-qt";
description = "Provides a Qt implementation of the DBusMenu spec"; description = "Provides a Qt implementation of the DBusMenu spec";

View File

@ -14,6 +14,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ qmake ]; nativeBuildInputs = [ qmake ];
buildInputs = [ fftw qtbase ]; buildInputs = [ fftw qtbase ];
dontWrapQtApps = true;
postPatch = '' postPatch = ''
substituteInPlace LibKeyFinder.pro \ substituteInPlace LibKeyFinder.pro \
--replace "/usr/local" "$out" \ --replace "/usr/local" "$out" \

View File

@ -27,6 +27,8 @@ in stdenv.mkDerivation rec {
inherit mainVersion; inherit mainVersion;
}; };
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "A BitTorrent library used by KTorrent"; description = "A BitTorrent library used by KTorrent";
homepage = "https://www.kde.org/applications/internet/ktorrent/"; homepage = "https://www.kde.org/applications/internet/ktorrent/";

View File

@ -23,6 +23,8 @@ stdenv.mkDerivation rec {
buildInputs = [ fftwSinglePrec libsamplerate qtbase ] buildInputs = [ fftwSinglePrec libsamplerate qtbase ]
++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.SystemConfiguration; ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.SystemConfiguration;
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
homepage = "https://github.com/lastfm/liblastfm"; homepage = "https://github.com/lastfm/liblastfm";
repositories.git = "git://github.com/lastfm/liblastfm.git"; repositories.git = "git://github.com/lastfm/liblastfm.git";

View File

@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
buildInputs = [ qtbase libGLU ] buildInputs = [ qtbase libGLU ]
++ lib.optional stdenv.isDarwin AGL; ++ lib.optional stdenv.isDarwin AGL;
dontWrapQtApps = true;
postPatch = '' postPatch = ''
cd QGLViewer cd QGLViewer
''; '';

View File

@ -33,6 +33,8 @@ stdenv.mkDerivation rec {
rmdir $out/bin || true rmdir $out/bin || true
''; '';
dontWrapQtApps = true;
postFixup = lib.optionalString stdenv.isDarwin '' postFixup = lib.optionalString stdenv.isDarwin ''
app=$out/Applications/opencsgexample.app/Contents/MacOS/opencsgexample app=$out/Applications/opencsgexample.app/Contents/MacOS/opencsgexample
install_name_tool -change \ install_name_tool -change \

View File

@ -26,6 +26,8 @@ stdenv.mkDerivation rec {
# on system paths being set. # on system paths being set.
patches = [ ./gst-plugin-paths.patch ]; patches = [ ./gst-plugin-paths.patch ];
dontWrapQtApps = true;
NIX_CFLAGS_COMPILE = NIX_CFLAGS_COMPILE =
let gstPluginPaths = let gstPluginPaths =
lib.makeSearchPathOutput "lib" "/lib/gstreamer-1.0" lib.makeSearchPathOutput "lib" "/lib/gstreamer-1.0"

View File

@ -35,6 +35,8 @@ stdenv.mkDerivation rec {
extra-cmake-modules extra-cmake-modules
]; ];
dontWrapQtApps = true;
cmakeFlags = [ cmakeFlags = [
"-DCMAKE_BUILD_TYPE=${if debug then "Debug" else "Release"}" "-DCMAKE_BUILD_TYPE=${if debug then "Debug" else "Release"}"
]; ];

View File

@ -58,6 +58,8 @@ stdenv.mkDerivation rec {
"-DCMAKE_BUILD_TYPE=${if debug then "Debug" else "Release"}" "-DCMAKE_BUILD_TYPE=${if debug then "Debug" else "Release"}"
]; ];
dontWrapQtApps = true;
preConfigure = '' preConfigure = ''
cmakeFlags+=" -DPHONON_QT_MKSPECS_INSTALL_DIR=''${!outputDev}/mkspecs" cmakeFlags+=" -DPHONON_QT_MKSPECS_INSTALL_DIR=''${!outputDev}/mkspecs"
cmakeFlags+=" -DPHONON_QT_IMPORTS_INSTALL_DIR=''${!outputBin}/$qtQmlPrefix" cmakeFlags+=" -DPHONON_QT_IMPORTS_INSTALL_DIR=''${!outputBin}/$qtQmlPrefix"

View File

@ -16,6 +16,8 @@ stdenv.mkDerivation {
propagatedBuildInputs = [ polkit glib qtbase ]; propagatedBuildInputs = [ polkit glib qtbase ];
dontWrapQtApps = true;
postFixup = '' postFixup = ''
# Fix library location in CMake module # Fix library location in CMake module
sed -i "$dev/lib/cmake/PolkitQt5-1/PolkitQt5-1Config.cmake" \ sed -i "$dev/lib/cmake/PolkitQt5-1/PolkitQt5-1Config.cmake" \

View File

@ -53,6 +53,8 @@ stdenv.mkDerivation rec {
(mkFlag qt5Support "QT5") (mkFlag qt5Support "QT5")
]; ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
homepage = "https://poppler.freedesktop.org/"; homepage = "https://poppler.freedesktop.org/";
description = "A PDF rendering library"; description = "A PDF rendering library";

View File

@ -38,6 +38,8 @@ stdenv.mkDerivation rec {
sed -i -e '1i cmake_policy(SET CMP0025 NEW)' CMakeLists.txt sed -i -e '1i cmake_policy(SET CMP0025 NEW)' CMakeLists.txt
''; '';
dontWrapQtApps = true;
cmakeFlags = [ cmakeFlags = [
(mkFlag true "UNSTABLE_API_ABI_HEADERS") # previously "XPDF_HEADERS" (mkFlag true "UNSTABLE_API_ABI_HEADERS") # previously "XPDF_HEADERS"
(mkFlag (!minimal) "GLIB") (mkFlag (!minimal) "GLIB")

View File

@ -17,6 +17,8 @@ stdenv.mkDerivation rec {
python3 qtbase qtquickcontrols qtsvg ncurses python3 qtbase qtquickcontrols qtsvg ncurses
]; ];
dontWrapQtApps = true;
patches = [ ./qml-path.patch ]; patches = [ ./qml-path.patch ];
installTargets = [ "sub-src-install_subtargets" ]; installTargets = [ "sub-src-install_subtargets" ];

View File

@ -22,6 +22,8 @@ stdenv.mkDerivation rec {
"PYTHON_PATH=${python}/bin" "PYTHON_PATH=${python}/bin"
"PYTHON_LIB=${python}/lib"]; "PYTHON_LIB=${python}/lib"];
dontWrapQtApps = true;
unpackCmd = "unzip $src"; unpackCmd = "unzip $src";
installPhase = '' installPhase = ''

View File

@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
buildInputs = [ openssl qtbase ]; buildInputs = [ openssl qtbase ];
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];
dontWrapQtApps = true;
# Without this patch cmake fails with a "No known features for CXX compiler" # Without this patch cmake fails with a "No known features for CXX compiler"
# error on darwin # error on darwin
patches = lib.optional stdenv.isDarwin ./move-project.patch ; patches = lib.optional stdenv.isDarwin ./move-project.patch ;

View File

@ -9,6 +9,7 @@ stdenv.mkDerivation {
}; };
enableParallelBuilding = true; enableParallelBuilding = true;
dontWrapQtApps = true;
nativeBuildInputs = [ qmake ]; nativeBuildInputs = [ qmake ];
buildInputs = [ qtdeclarative ]; buildInputs = [ qtdeclarative ];

View File

@ -32,6 +32,8 @@ stdenv.mkDerivation {
enableParallelBuilding = true; enableParallelBuilding = true;
dontWrapQtApps = true;
meta = { meta = {
description = "A QML port of qtermwidget"; description = "A QML port of qtermwidget";
homepage = "https://github.com/Swordfish90/qmltermwidget"; homepage = "https://github.com/Swordfish90/qmltermwidget";

View File

@ -21,6 +21,8 @@ stdenv.mkDerivation {
NIX_CFLAGS_COMPILE = "-I${qca-qt5}/include/Qca-qt5/QtCrypto"; NIX_CFLAGS_COMPILE = "-I${qca-qt5}/include/Qca-qt5/QtCrypto";
NIX_LDFLAGS = "-lqca-qt5"; NIX_LDFLAGS = "-lqca-qt5";
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Qt library for OAuth authentication"; description = "Qt library for OAuth authentication";
inherit (qtbase.meta) platforms; inherit (qtbase.meta) platforms;

View File

@ -35,6 +35,7 @@ in stdenv.mkDerivation rec {
''; '';
enableParallelBuilding = true; enableParallelBuilding = true;
dontWrapQtApps = true;
postPatch = '' postPatch = ''
substituteInPlace qscintilla.pro \ substituteInPlace qscintilla.pro \

View File

@ -145,7 +145,7 @@ let
patches = patches.qtbase; patches = patches.qtbase;
inherit bison cups harfbuzz libGL; inherit bison cups harfbuzz libGL;
withGtk3 = true; inherit dconf gtk3; withGtk3 = true; inherit dconf gtk3;
inherit developerBuild decryptSslTraffic; inherit debug developerBuild decryptSslTraffic;
}; };
qtcharts = callPackage ../modules/qtcharts.nix {}; qtcharts = callPackage ../modules/qtcharts.nix {};
@ -197,6 +197,7 @@ let
qmake = makeSetupHook { qmake = makeSetupHook {
deps = [ self.qtbase.dev ]; deps = [ self.qtbase.dev ];
substitutions = { substitutions = {
inherit debug;
fix_qmake_libtool = ../hooks/fix-qmake-libtool.sh; fix_qmake_libtool = ../hooks/fix-qmake-libtool.sh;
}; };
} ../hooks/qmake-hook.sh; } ../hooks/qmake-hook.sh;

View File

@ -149,7 +149,7 @@ let
patches = patches.qtbase; patches = patches.qtbase;
inherit bison cups harfbuzz libGL; inherit bison cups harfbuzz libGL;
withGtk3 = true; inherit dconf gtk3; withGtk3 = true; inherit dconf gtk3;
inherit developerBuild decryptSslTraffic; inherit debug developerBuild decryptSslTraffic;
}; };
qtcharts = callPackage ../modules/qtcharts.nix {}; qtcharts = callPackage ../modules/qtcharts.nix {};
@ -199,6 +199,7 @@ let
qmake = makeSetupHook { qmake = makeSetupHook {
deps = [ self.qtbase.dev ]; deps = [ self.qtbase.dev ];
substitutions = { substitutions = {
inherit debug;
fix_qmake_libtool = ../hooks/fix-qmake-libtool.sh; fix_qmake_libtool = ../hooks/fix-qmake-libtool.sh;
}; };
} ../hooks/qmake-hook.sh; } ../hooks/qmake-hook.sh;

View File

@ -179,6 +179,7 @@ let
qmake = makeSetupHook { qmake = makeSetupHook {
deps = [ self.qtbase.dev ]; deps = [ self.qtbase.dev ];
substitutions = { substitutions = {
inherit debug;
fix_qmake_libtool = ../hooks/fix-qmake-libtool.sh; fix_qmake_libtool = ../hooks/fix-qmake-libtool.sh;
}; };
} ../hooks/qmake-hook.sh; } ../hooks/qmake-hook.sh;

View File

@ -3,6 +3,9 @@
qmakeFlags=( ${qmakeFlags-} ) qmakeFlags=( ${qmakeFlags-} )
qmakePrePhase() { qmakePrePhase() {
qmakeFlags_orig=( "${qmakeFlags[@]}" )
# These flags must be added _before_ the flags specified in the derivation.
qmakeFlags=( \ qmakeFlags=( \
"PREFIX=$out" \ "PREFIX=$out" \
"NIX_OUTPUT_OUT=$out" \ "NIX_OUTPUT_OUT=$out" \
@ -11,8 +14,15 @@ qmakePrePhase() {
"NIX_OUTPUT_DOC=${!outputDev}/${qtDocPrefix:?}" \ "NIX_OUTPUT_DOC=${!outputDev}/${qtDocPrefix:?}" \
"NIX_OUTPUT_QML=${!outputBin}/${qtQmlPrefix:?}" \ "NIX_OUTPUT_QML=${!outputBin}/${qtQmlPrefix:?}" \
"NIX_OUTPUT_PLUGIN=${!outputBin}/${qtPluginPrefix:?}" \ "NIX_OUTPUT_PLUGIN=${!outputBin}/${qtPluginPrefix:?}" \
"${qmakeFlags[@]}" \
) )
if [ -n "@debug@" ]; then
qmakeFlags+=( "CONFIG+=debug" )
else
qmakeFlags+=( "CONFIG+=release" )
fi
qmakeFlags+=( "${qmakeFlags_orig[@]}" )
} }
prePhases+=" qmakePrePhase" prePhases+=" qmakePrePhase"

View File

@ -1,3 +1,14 @@
if [[ -n "${__nix_qtbase-}" ]]; then
# Throw an error if a different version of Qt was already set up.
if [[ "$__nix_qtbase" != "@dev@" ]]; then
echo >&2 "Error: detected mismatched Qt dependencies:"
echo >&2 " @dev@"
echo >&2 " $__nix_qtbase"
exit 1
fi
else # Only set up Qt once.
__nix_qtbase="@dev@"
qtPluginPrefix=@qtPluginPrefix@ qtPluginPrefix=@qtPluginPrefix@
qtQmlPrefix=@qtQmlPrefix@ qtQmlPrefix=@qtQmlPrefix@
qtDocPrefix=@qtDocPrefix@ qtDocPrefix=@qtDocPrefix@
@ -5,6 +16,20 @@ qtDocPrefix=@qtDocPrefix@
. @fix_qt_builtin_paths@ . @fix_qt_builtin_paths@
. @fix_qt_module_paths@ . @fix_qt_module_paths@
# Disable debug symbols if qtbase was built without debugging.
# This stops -dev paths from leaking into other outputs.
if [ -z "@debug@" ]; then
NIX_CFLAGS_COMPILE="${NIX_CFLAGS_COMPILE-}${NIX_CFLAGS_COMPILE:+ }-DQT_NO_DEBUG"
fi
# Integration with CMake:
# Set the CMake build type corresponding to how qtbase was built.
if [ -n "@debug@" ]; then
cmakeBuildType="Debug"
else
cmakeBuildType="Release"
fi
providesQtRuntime() { providesQtRuntime() {
[ -d "$1/$qtPluginPrefix" ] || [ -d "$1/$qtQmlPrefix" ] [ -d "$1/$qtPluginPrefix" ] || [ -d "$1/$qtQmlPrefix" ]
} }
@ -19,7 +44,12 @@ export QMAKEPATH
QMAKEMODULES= QMAKEMODULES=
export QMAKEMODULES export QMAKEMODULES
declare -Ag qmakePathSeen=()
qmakePathHook() { qmakePathHook() {
# Skip this path if we have seen it before.
# MUST use 'if' because 'qmakePathSeen[$]' may be unset.
if [ -n "${qmakePathSeen[$1]-}" ]; then return; fi
qmakePathSeen[$1]=1
if [ -d "$1/mkspecs" ] if [ -d "$1/mkspecs" ]
then then
QMAKEMODULES="${QMAKEMODULES}${QMAKEMODULES:+:}/mkspecs" QMAKEMODULES="${QMAKEMODULES}${QMAKEMODULES:+:}/mkspecs"
@ -34,7 +64,12 @@ envBuildHostHooks+=(qmakePathHook)
# package depending on the building package. (This is necessary in case # package depending on the building package. (This is necessary in case
# the building package does not provide runtime dependencies itself and so # the building package does not provide runtime dependencies itself and so
# would not be propagated to the user environment.) # would not be propagated to the user environment.)
declare -Ag qtEnvHostTargetSeen=()
qtEnvHostTargetHook() { qtEnvHostTargetHook() {
# Skip this path if we have seen it before.
# MUST use 'if' because 'qmakePathSeen[$]' may be unset.
if [ -n "${qtEnvHostTargetSeen[$1]-}" ]; then return; fi
qtEnvHostTargetSeen[$1]=1
if providesQtRuntime "$1" && [ "z${!outputBin}" != "z${!outputDev}" ] if providesQtRuntime "$1" && [ "z${!outputBin}" != "z${!outputDev}" ]
then then
propagatedBuildInputs+=" $1" propagatedBuildInputs+=" $1"
@ -64,3 +99,14 @@ postPatchMkspecs() {
if [ -z "${dontPatchMkspecs-}" ]; then if [ -z "${dontPatchMkspecs-}" ]; then
postPhases="${postPhases-}${postPhases:+ }postPatchMkspecs" postPhases="${postPhases-}${postPhases:+ }postPatchMkspecs"
fi fi
qtPreHook() {
# Check that wrapQtAppsHook is used, or it is explicitly disabled.
if [[ -z "$__nix_wrapQtAppsHook" && -z "$dontWrapQtApps" ]]; then
echo >&2 "Error: wrapQtAppsHook is not used, and dontWrapQtApps is not set."
exit 1
fi
}
prePhases+=" qtPreHook"
fi

View File

@ -1,3 +1,6 @@
if [[ -z "${__nix_wrapQtAppsHook-}" ]]; then
__nix_wrapQtAppsHook=1 # Don't run this hook more than once.
# Inherit arguments given in mkDerivation # Inherit arguments given in mkDerivation
qtWrapperArgs=( ${qtWrapperArgs-} ) qtWrapperArgs=( ${qtWrapperArgs-} )
@ -100,3 +103,5 @@ wrapQtAppsHook() {
} }
fixupOutputHooks+=(wrapQtAppsHook) fixupOutputHooks+=(wrapQtAppsHook)
fi

View File

@ -9,21 +9,6 @@ args:
let let
args_ = { args_ = {
qmakeFlags = [ ("CONFIG+=" + (if debug then "debug" else "release")) ]
++ (args.qmakeFlags or []);
NIX_CFLAGS_COMPILE = toString (
optional (!debug) "-DQT_NO_DEBUG"
++ lib.toList (args.NIX_CFLAGS_COMPILE or []));
cmakeFlags =
(args.cmakeFlags or [])
++ [
("-DCMAKE_BUILD_TYPE=" + (if debug then "Debug" else "Release"))
];
enableParallelBuilding = args.enableParallelBuilding or true;
nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ wrapQtAppsHook ]; nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ wrapQtAppsHook ];
}; };

View File

@ -22,6 +22,7 @@
libGL, libGL,
buildExamples ? false, buildExamples ? false,
buildTests ? false, buildTests ? false,
debug ? false,
developerBuild ? false, developerBuild ? false,
decryptSslTraffic ? false decryptSslTraffic ? false
}: }:
@ -33,12 +34,14 @@ let
compareVersion = v: builtins.compareVersions version v; compareVersion = v: builtins.compareVersions version v;
qmakeCacheName = qmakeCacheName =
if compareVersion "5.12.4" < 0 then ".qmake.cache" else ".qmake.stash"; if compareVersion "5.12.4" < 0 then ".qmake.cache" else ".qmake.stash";
debugSymbols = debug || developerBuild;
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "qtbase-${version}"; name = "qtbase-${version}";
inherit qtCompatVersion src version; inherit qtCompatVersion src version;
debug = debugSymbols;
propagatedBuildInputs = propagatedBuildInputs =
[ [
@ -241,6 +244,7 @@ stdenv.mkDerivation {
"-I" "${icu.dev}/include" "-I" "${icu.dev}/include"
"-pch" "-pch"
] ]
++ lib.optional debugSymbols "-debug"
++ lib.optionals (compareVersion "5.11.0" < 0) ++ lib.optionals (compareVersion "5.11.0" < 0)
[ [
"-qml-debug" "-qml-debug"
@ -397,6 +401,8 @@ stdenv.mkDerivation {
-e "/^host_bins=/ c host_bins=$dev/bin" -e "/^host_bins=/ c host_bins=$dev/bin"
''; '';
dontStrip = debugSymbols;
setupHook = ../hooks/qtbase-setup-hook.sh; setupHook = ../hooks/qtbase-setup-hook.sh;
meta = with lib; { meta = with lib; {

View File

@ -34,6 +34,8 @@ mkDerivation (args // {
fixQtBuiltinPaths . '*.pr?' fixQtBuiltinPaths . '*.pr?'
''; '';
dontWrapQtApps = args.dontWrapQtApps or true;
postFixup = '' postFixup = ''
if [ -d "''${!outputDev}/lib/pkgconfig" ]; then if [ -d "''${!outputDev}/lib/pkgconfig" ]; then
find "''${!outputDev}/lib/pkgconfig" -name '*.pc' | while read pc; do find "''${!outputDev}/lib/pkgconfig" -name '*.pc' | while read pc; do

View File

@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
setOutputFlags = false; setOutputFlags = false;
enableParallelBuilding = true; enableParallelBuilding = true;
NIX_QT_SUBMODULE = true; NIX_QT_SUBMODULE = true;
dontWrapQtApps = true;
installPhase = '' installPhase = ''
mkdir -p $out/{bin,lib,share/qt-installer-framework} mkdir -p $out/{bin,lib,share/qt-installer-framework}

View File

@ -19,6 +19,8 @@ stdenv.mkDerivation rec {
sha256 = "0h4wgngn2yl35hapbjs24amkjfbzsvnna4ixfhn87snjnq5lmjbc"; # v0.9.1 sha256 = "0h4wgngn2yl35hapbjs24amkjfbzsvnna4ixfhn87snjnq5lmjbc"; # v0.9.1
}; };
dontWrapQtApps = true;
patches = (if withQt5 then [] else [ ./0001-Fixes-build-with-Qt4.patch ]) ++ (if stdenv.isDarwin then [ ./0002-Fix-install-name-Darwin.patch ] else []); patches = (if withQt5 then [] else [ ./0001-Fixes-build-with-Qt4.patch ]) ++ (if stdenv.isDarwin then [ ./0002-Fix-install-name-Darwin.patch ] else []);
cmakeFlags = [ "-DQT_TRANSLATIONS_DIR=share/qt/translations" ]; cmakeFlags = [ "-DQT_TRANSLATIONS_DIR=share/qt/translations" ];

View File

@ -14,6 +14,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ qmake ]; nativeBuildInputs = [ qmake ];
buildInputs = [ qtbase protobuf ]; buildInputs = [ qtbase protobuf ];
dontWrapQtApps = true;
postPatch = '' postPatch = ''
# Fix plugin dir # Fix plugin dir
substituteInPlace pbfplugin.pro \ substituteInPlace pbfplugin.pro \

View File

@ -22,6 +22,8 @@ stdenv.mkDerivation rec {
buildInputs = [ qtbase cpp-utilities ]; buildInputs = [ qtbase cpp-utilities ];
nativeBuildInputs = [ cmake qttools ]; nativeBuildInputs = [ cmake qttools ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
homepage = "https://github.com/Martchus/qtutilities"; homepage = "https://github.com/Martchus/qtutilities";
description = "Common C++ classes and routines used by @Martchus' applications featuring argument parser, IO and conversion utilities"; description = "Common C++ classes and routines used by @Martchus' applications featuring argument parser, IO and conversion utilities";

View File

@ -14,6 +14,8 @@ stdenv.mkDerivation {
buildInputs = [ qtwebkit hunspell ]; buildInputs = [ qtwebkit hunspell ];
dontWrapQtApps = true;
postPatch = '' postPatch = ''
sed -i "s,-lhunspell,-lhunspell-${lib.versions.majorMinor hunspell.version}," src/spellcheck/spellcheck.pri sed -i "s,-lhunspell,-lhunspell-${lib.versions.majorMinor hunspell.version}," src/spellcheck/spellcheck.pri
sed -i "s,\$\$\[QT_INSTALL_PLUGINS\],$out/$qtPluginPrefix," src/src.pro sed -i "s,\$\$\[QT_INSTALL_PLUGINS\],$out/$qtPluginPrefix," src/src.pro

View File

@ -15,6 +15,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake ] nativeBuildInputs = [ cmake ]
++ lib.optional stdenv.isDarwin fixDarwinDylibNames; ++ lib.optional stdenv.isDarwin fixDarwinDylibNames;
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Provides access to ZIP archives from Qt programs"; description = "Provides access to ZIP archives from Qt programs";
license = licenses.lgpl21Plus; license = licenses.lgpl21Plus;

View File

@ -17,6 +17,8 @@ stdenv.mkDerivation rec {
qmakeFlags = [ "-after doc.path=$out/share/doc/${name}" ]; qmakeFlags = [ "-after doc.path=$out/share/doc/${name}" ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Qt widgets for technical applications"; description = "Qt widgets for technical applications";
homepage = "http://qwt.sourceforge.net/"; homepage = "http://qwt.sourceforge.net/";

View File

@ -17,6 +17,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
homepage = "https://github.com/coin3d/soqt"; homepage = "https://github.com/coin3d/soqt";
license = licenses.bsd3; license = licenses.bsd3;

View File

@ -20,6 +20,8 @@ in stdenv.mkDerivation rec {
# On 0.9.7, they do not even build with QT4 # On 0.9.7, they do not even build with QT4
cmakeFlags = lib.optional (!doCheck) "-DENABLE_TESTS=OFF"; cmakeFlags = lib.optional (!doCheck) "-DENABLE_TESTS=OFF";
dontWrapQtApps = true;
doCheck = false; # giving up for now doCheck = false; # giving up for now
meta = with lib; { meta = with lib; {

View File

@ -57,6 +57,8 @@ in stdenv.mkDerivation rec {
export LD_LIBRARY_PATH="$(pwd)/lib"; export LD_LIBRARY_PATH="$(pwd)/lib";
''; '';
dontWrapQtApps = true;
# Shared libraries don't work, because of rpath troubles with the current # Shared libraries don't work, because of rpath troubles with the current
# nixpkgs cmake approach. It wants to call a binary at build time, just # nixpkgs cmake approach. It wants to call a binary at build time, just
# built and requiring one of the shared objects. # built and requiring one of the shared objects.

View File

@ -30,6 +30,8 @@ stdenv.mkDerivation rec {
propagatedBuildInputs = with python.pkgs; [ sphinx numpy sip pyqt5 matplotlib ase ]; propagatedBuildInputs = with python.pkgs; [ sphinx numpy sip pyqt5 matplotlib ase ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "Scientific visualization and analysis software for atomistic simulation data"; description = "Scientific visualization and analysis software for atomistic simulation data";
homepage = "https://www.ovito.org"; homepage = "https://www.ovito.org";

View File

@ -29,8 +29,7 @@ buildPythonPackage rec {
]; ];
dontUseQmakeConfigure = true; dontUseQmakeConfigure = true;
dontUseCmakeConfigure = true; dontWrapQtApps =true;
doCheck = false; doCheck = false;
postPatch = '' postPatch = ''

View File

@ -34,6 +34,8 @@ buildPythonPackage rec {
# no tests, just bindings for `poppler_qt5` # no tests, just bindings for `poppler_qt5`
doCheck = false; doCheck = false;
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
homepage = "https://github.com/wbsoft/python-poppler-qt5"; homepage = "https://github.com/wbsoft/python-poppler-qt5";
license = licenses.gpl2; license = licenses.gpl2;

View File

@ -57,6 +57,8 @@ in buildPythonPackage rec {
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
dontWrapQtApps = true;
nativeBuildInputs = [ nativeBuildInputs = [
pkg-config pkg-config
qmake qmake

View File

@ -45,6 +45,8 @@ in buildPythonPackage rec {
propagatedBuildInputs = [ pyqt5 ] propagatedBuildInputs = [ pyqt5 ]
++ lib.optional (!isPy3k) enum34; ++ lib.optional (!isPy3k) enum34;
dontWrapQtApps = true;
configurePhase = '' configurePhase = ''
runHook preConfigure runHook preConfigure

View File

@ -23,6 +23,8 @@ buildPythonPackage rec {
makeFlags = [ "QT_PLUGIN_PATH=${pysideShiboken}/lib/generatorrunner" ]; makeFlags = [ "QT_PLUGIN_PATH=${pysideShiboken}/lib/generatorrunner" ];
dontWrapQtApps = true;
meta = { meta = {
description = "LGPL-licensed Python bindings for the Qt cross-platform application and UI framework"; description = "LGPL-licensed Python bindings for the Qt cross-platform application and UI framework";
license = lib.licenses.lgpl21; license = lib.licenses.lgpl21;

View File

@ -25,6 +25,8 @@ stdenv.mkDerivation {
"-DBUILD_TESTS=OFF" "-DBUILD_TESTS=OFF"
]; ];
dontWrapQtApps = true;
# The upstream build system consists of a `setup.py` whichs builds three # The upstream build system consists of a `setup.py` whichs builds three
# different python libraries and calls cmake as a subprocess. We call cmake # different python libraries and calls cmake as a subprocess. We call cmake
# directly because that's easier to get working. However, the `setup.py` # directly because that's easier to get working. However, the `setup.py`

View File

@ -30,6 +30,8 @@ stdenv.mkDerivation rec {
]; ];
propagatedBuildInputs = [ shiboken2 ]; propagatedBuildInputs = [ shiboken2 ];
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
description = "LGPL-licensed Python bindings for Qt"; description = "LGPL-licensed Python bindings for Qt";
license = licenses.lgpl21; license = licenses.lgpl21;

View File

@ -14,6 +14,8 @@ buildPythonPackage {
buildInputs = [ qscintilla ]; buildInputs = [ qscintilla ];
propagatedBuildInputs = [ pyqt5 ]; propagatedBuildInputs = [ pyqt5 ];
dontWrapQtApps = true;
postPatch = '' postPatch = ''
substituteInPlace Python/configure.py \ substituteInPlace Python/configure.py \
--replace \ --replace \

View File

@ -44,6 +44,8 @@ buildPythonPackage rec {
boost boost
]; ];
dontWrapQtApps = true;
NIX_CFLAGS_COMPILE="-I ${python}/include/${python.libPrefix}"; NIX_CFLAGS_COMPILE="-I ${python}/include/${python.libPrefix}";
patches = [ patches = [

View File

@ -23,6 +23,8 @@ stdenv.mkDerivation {
"-DBUILD_TESTS=OFF" "-DBUILD_TESTS=OFF"
]; ];
dontWrapQtApps = true;
postInstall = '' postInstall = ''
rm $out/bin/shiboken_tool.py rm $out/bin/shiboken_tool.py
''; '';

View File

@ -23,6 +23,8 @@ rustPlatform.buildRustPackage rec {
git git
]; ];
dontWrapQtApps = true;
cargoSha256 = "1hdsn011y9invfy7can8c02zwa7birj9y1rxhrj7wyv4gh3659i0"; cargoSha256 = "1hdsn011y9invfy7can8c02zwa7birj9y1rxhrj7wyv4gh3659i0";
doCheck = false; doCheck = false;

View File

@ -12,6 +12,8 @@ in stdenv.mkDerivation {
nativeBuildInputs = [ qmake ]; nativeBuildInputs = [ qmake ];
dontWrapQtApps = true;
postInstall = '' postInstall = ''
mkdir -p $out/bin mkdir -p $out/bin
cp -p converters/dprof2calltree $out/bin/dprof2calltree cp -p converters/dprof2calltree $out/bin/dprof2calltree

View File

@ -14,7 +14,7 @@
assert withQt5 -> useQt4 == false; assert withQt5 -> useQt4 == false;
assert useQt4 -> withQt5 == false; assert useQt4 -> withQt5 == false;
stdenv.mkDerivation rec { stdenv.mkDerivation (rec {
pname = "cmake" pname = "cmake"
+ lib.optionalString isBootstrap "-boot" + lib.optionalString isBootstrap "-boot"
+ lib.optionalString useNcurses "-cursesUI" + lib.optionalString useNcurses "-cursesUI"
@ -130,4 +130,5 @@ stdenv.mkDerivation rec {
maintainers = with maintainers; [ ttuegel lnl7 ]; maintainers = with maintainers; [ ttuegel lnl7 ];
license = licenses.bsd3; license = licenses.bsd3;
}; };
} } // (if withQt5 then { dontWrapQtApps = true; } else {})
)

View File

@ -14,6 +14,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ qmake ]; nativeBuildInputs = [ qmake ];
dontWrapQtApps = true;
qmakeFlags = [ "QBS_INSTALL_PREFIX=$(out)" "qbs.pro" ]; qmakeFlags = [ "QBS_INSTALL_PREFIX=$(out)" "qbs.pro" ];
buildInputs = [ qtbase qtscript ]; buildInputs = [ qtbase qtscript ];

View File

@ -19,6 +19,7 @@ stdenv.mkDerivation {
sourceRoot = "source/MiniZincIDE"; sourceRoot = "source/MiniZincIDE";
enableParallelBuilding = true; enableParallelBuilding = true;
dontWrapQtApps = true;
postInstall = '' postInstall = ''
wrapProgram $out/bin/MiniZincIDE --prefix PATH ":" ${lib.makeBinPath [ minizinc ]} wrapProgram $out/bin/MiniZincIDE --prefix PATH ":" ${lib.makeBinPath [ minizinc ]}

View File

@ -18,6 +18,8 @@ stdenv.mkDerivation rec {
wrapProgram $out/bin/kdbg --prefix QT_PLUGIN_PATH : ${qtbase}/${qtbase.qtPluginPrefix} wrapProgram $out/bin/kdbg --prefix QT_PLUGIN_PATH : ${qtbase}/${qtbase.qtPluginPrefix}
''; '';
dontWrapQtApps = true;
meta = with lib; { meta = with lib; {
homepage = "https://www.kdbg.org/"; homepage = "https://www.kdbg.org/";
description = '' description = ''

Some files were not shown because too many files have changed in this diff Show More