nixpkgs-suyu/pkgs/games/chessx/default.nix
Maximilian Bosch 37032db583 chessx: fix build (#46359)
See https://hydra.nixos.org/build/80998335.

Upstream doesn't support QT 5.11 ATM which broke compilation:

```
src/dialogs/savedialog.cpp: In constructor ‘SaveDialog::SaveDialog(QWidget*, Qt::WindowFlags)’:
src/dialogs/savedialog.cpp:37:34: error: invalid use of incomplete type ‘class QButtonGroup’
     group = new QButtonGroup(this);
```

The Arch community recommends to use an older QT version to fix
this (https://aur.archlinux.org/packages/chessx/).

Furthermore the `QT_PLUGIN_PATH` wasn't set properly which broke the
runtime since QT coudln't find the `xcb` plugin:

```
qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""
This application failed to start because no Qt platform plugin could be initialized.
Reinstalling the application may fix this problem.
```

Finally, some minor style fixes were made for consistent indentation.

Addresses #45960
2018-09-08 14:19:24 +02:00

48 lines
1.2 KiB
Nix

{ stdenv, pkgconfig, zlib, qtbase, qtsvg, qttools, qtmultimedia, qmake, fetchurl, makeWrapper
, lib
}:
stdenv.mkDerivation rec {
name = "chessx-${version}";
version = "1.4.6";
src = fetchurl {
url = "mirror://sourceforge/chessx/chessx-${version}.tgz";
sha256 = "1vb838byzmnyglm9mq3khh3kddb9g4g111cybxjzalxxlc81k5dd";
};
buildInputs = [
qtbase
qtsvg
qttools
qtmultimedia
zlib
];
nativeBuildInputs = [ pkgconfig qmake makeWrapper ];
# RCC: Error in 'resources.qrc': Cannot find file 'i18n/chessx_da.qm'
enableParallelBuilding = false;
installPhase = ''
runHook preInstall
mkdir -p "$out/bin"
mkdir -p "$out/share/applications"
cp -pr release/chessx "$out/bin"
cp -pr unix/chessx.desktop "$out/share/applications"
wrapProgram $out/bin/chessx \
--prefix QT_PLUGIN_PATH : ${qtbase}/lib/qt-5.${lib.versions.minor qtbase.version}/plugins
runHook postInstall
'';
meta = with stdenv.lib; {
homepage = http://chessx.sourceforge.net/;
description = "ChessX allows you to browse and analyse chess games";
license = licenses.gpl2;
maintainers = [maintainers.luispedro];
platforms = platforms.linux;
};
}