NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
18.19k stars 14.2k forks source link

Package displaycal broken in 20.03 #88226

Closed paperdigits closed 4 years ago

paperdigits commented 4 years ago

Describe the bug DisplayCal, an application for calibrating one's monitor, is not functional in 20.03, though it builds.

To Reproduce Steps to reproduce the behavior:

  1. Install displaycal
  2. Plug in a calibration device
  3. Click the "Profile and Calibrate" button near the bottom of the GUI
  4. DisplayCal can not find the package wx and refuses to continue.

Expected behavior DisplayCal should move to the next screen and start the calibration process.

Additional context The package builds, but does not function. The 3.5 version that is packaged is pretty far out of date, so I've started to try and update the package here, but the compilation fails.

I have a calibration device and am looking for help to get this working.

Notify maintainers @MarcWeber

paperdigits commented 4 years ago

sampson in IRC suggested the following patch, but the build still fails at the same point for me:

diff --git a/pkgs/applications/graphics/displaycal/default.nix b/pkgs/applications/graphics/displaycal/default.nix
index 7a99361a03d..dda3a6188af 100644
--- a/pkgs/applications/graphics/displaycal/default.nix
+++ b/pkgs/applications/graphics/displaycal/default.nix
@@ -13,15 +13,15 @@

 let
   inherit (python2.pkgs) buildPythonApplication wxPython numpy;
-in buildPythonApplication {
+in buildPythonApplication rec {
   pname = "displaycal";
-  version = "3.5.0.0";
+  version = "3.8.9.3";

   enableParallelBuilding = true;

   src = fetchurl {
-    url = "mirror://sourceforge/project/dispcalgui/release/3.5.0.0/DisplayCAL-3.5.0.0.tar.gz";
-    sha256 = "1j496sv8pbhby5hkkbp07k6bs3f7mb1l3dijmn2iga3kmix0fn5q";
+    url = "mirror://sourceforge/project/dispcalgui/release/${version}/DisplayCAL-${version}.tar.gz";
+    sha256 = "1sivi4q7sqsrc95qg5gh37bsm2761md4mpl89hflzwk6kyyxyd3w";
   };

   propagatedBuildInputs = [
@@ -42,7 +42,7 @@ in buildPythonApplication {

   preConfigure = ''
     mkdir dist
-    cp {misc,dist}/DisplayCAL.appdata.xml
+    cp {misc,dist}/net.displaycal.DisplayCAL.appdata.xml
     mkdir -p $out
     ln -s $out/share/DisplayCAL $out/Resources
   '';

The error when building the package is:

creating build/bdist.linux-x86_64/wheel/DisplayCAL-3.8.9.3.data/data/share/doc/displaycal/theme/slimbox2
copying /tmp/nix-build-displaycal-3.8.9.3.drv-0/DisplayCAL-3.8.9.3/theme/slimbox2/slimbox2.css -> build/bdist.linux-x86_64/wheel/DisplayCAL-3.8.9.3.data/data/share/doc/displaycal/theme/slimbox2
copying /tmp/nix-build-displaycal-3.8.9.3.drv-0/DisplayCAL-3.8.9.3/theme/slimbox2/slimbox2.js -> build/bdist.linux-x86_64/wheel/DisplayCAL-3.8.9.3.data/data/share/doc/displaycal/theme/slimbox2
error: can't copy '/tmp/nix-build-displaycal-3.8.9.3.drv-0/DisplayCAL-3.8.9.3/DisplayCAL/../dist/copyright': doesn't exist or not a regular file
builder for '/nix/store/c2hs2qf7bzy2nfh0qlb49jx31qy2v8q7-displaycal-3.8.9.3.drv' failed with exit code 1
error: build of '/nix/store/c2hs2qf7bzy2nfh0qlb49jx31qy2v8q7-displaycal-3.8.9.3.drv' failed
paperdigits commented 4 years ago

I can get the package to build now, but it doesn't run:

./result/bin/displaycal
XDG: [Errno 2] No translation file found for domain: xdg-user-dirs
.displaycal-wrapped 3.8.9.3 2019-12-14T12:16:22.165507Z
debian buster/sid  x86_64
Python 2.7.18 (default, Apr 19 2020, 21:45:35) 
[GCC 9.3.0]
ImportError: No module named faulthandler
/nix/store/fqvv6iamw2f30bjgcr3b8j0gf257kcdm-python2.7-wxPython-3.0.2.0/lib/python2.7/site-packages/wx-3.0-gtk2/wx/_core.py:16629: UserWarning: wxPython/wxWidgets release number mismatch
wxPython 3.0.2.0 gtk2 (classic)
Encoding: ANSI_X3.4-1968
File system encoding: ANSI_X3.4-1968
Lockfile /home/micas/.config/DisplayCAL/DisplayCAL.lock
/nix/store/ilsbk9qxbsawdls23a1524b1q3hmja3h-displaycal-3.8.9.3/lib/python2.7/site-packages/DisplayCAL/edid.py:41: Warning: ImportError: No module named dbus
????????????????????????????????????????????????????????????????????????????????
? Traceback (most recent call last):                                           ?
?   File                                                                       ?
? "/nix/store/ilsbk9qxbsawdls23a1524b1q3hmja3h-displaycal-3.8.9.3/lib/python2.7/site-packages/DisplayCAL/main.py", ?
? line 451, in main                                                            ?
?     _main(module, name, applockfilename)                                     ?
?   File                                                                       ?
? "/nix/store/ilsbk9qxbsawdls23a1524b1q3hmja3h-displaycal-3.8.9.3/lib/python2.7/site-packages/DisplayCAL/main.py", ?
? line 436, in _main                                                           ?
?     from DisplayCAL import main                                              ?
?   File                                                                       ?
? "/nix/store/ilsbk9qxbsawdls23a1524b1q3hmja3h-displaycal-3.8.9.3/lib/python2.7/site-packages/DisplayCAL/DisplayCAL.py", ?
? line 76, in <module>                                                         ?
?     import colord                                                            ?
?   File                                                                       ?
? "/nix/store/ilsbk9qxbsawdls23a1524b1q3hmja3h-displaycal-3.8.9.3/lib/python2.7/site-packages/DisplayCAL/colord.py", ?
? line 27, in <module>                                                         ?
?     from util_dbus import DBusObject, DBusException, BUSTYPE_SYSTEM          ?
?   File                                                                       ?
? "/nix/store/ilsbk9qxbsawdls23a1524b1q3hmja3h-displaycal-3.8.9.3/lib/python2.7/site-packages/DisplayCAL/util_dbus.py", ?
? line 16, in <module>                                                         ?
?     import dbus                                                              ?
? ImportError: No module named dbus                                            ?
????????????????????????????????????????????????????????????????????????????????

(.displaycal-wrapped:18730): Gtk-WARNING **: 18:08:58.757: Unable to locate theme engine in module_path: "adwaita",
Exiting .displaycal-wrapped
Ran application exit handlers
calbrecht commented 4 years ago

It says Warning: ImportError: No module named dbus, i guess you have to add dbus-python to the propagatedBuildInputs, like you have done with numpy.

paperdigits commented 4 years ago

@calbrecht you are correct. Now DisplayCal builds, launches, and finds my calibraiton devices. I'll have to test this on my full NixOS install, instead of my Ubuntu machine with nixpkg. Thank you for your help!