eoyilmaz / displaycal-py3

DisplayCAL Modernization Project
https://eoyilmaz.github.io/displaycal-py3/
GNU General Public License v3.0
717 stars 55 forks source link

Tumbleweed installation problems #144

Closed OldNick closed 2 years ago

OldNick commented 2 years ago

Before anything else, a big thank you for moving DisplayCal to python3 - I was wondering what I was going to do since Tumbleweed has dropped all support for python2.

I probably shouldn't be using Tumbleweed as I'm not really geek enough - it is really barebone and you have to hack / guess to find the dependencies etc. And I've never touched Python before.

I'm trying to use pip install and, after several tries (often having to guess a dependency and find it) I get the following error message (lengthy)

Building wheel for DisplayCAL (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for DisplayCAL (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [135 lines of output]
      /tmp/pip-build-env-qsy9lp2a/overlay/lib/python3.10/site-packages/setuptools/config/setupcfg.py:463: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
        warnings.warn(msg, warning_class)
      ['bdist_wheel', '--dist-dir', '/tmp/pip-wheel-u0qf7lal/tmpnlsyi5ht']
      XDG: [Errno 2] No translation file found for domain: 'xdg-user-dirs'
      *** /usr/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py bdist_wheel --dist-dir /tmp/pip-wheel-u0qf7lal/tmpnlsyi5ht
      using distutils
      desktopfile: /tmp/pip-install-idtninyp/displaycal_a0f7e9f3906647428f41847efaa10355/DisplayCAL/../misc/displaycal.desktop
      desktopfile: /tmp/pip-install-idtninyp/displaycal_a0f7e9f3906647428f41847efaa10355/DisplayCAL/../misc/displaycal-3dlut-maker.desktop
      desktopfile: /tmp/pip-install-idtninyp/displaycal_a0f7e9f3906647428f41847efaa10355/DisplayCAL/../misc/displaycal-apply-profiles.desktop
      desktopfile: /tmp/pip-install-idtninyp/displaycal_a0f7e9f3906647428f41847efaa10355/DisplayCAL/../misc/displaycal-curve-viewer.desktop
      desktopfile: /tmp/pip-install-idtninyp/displaycal_a0f7e9f3906647428f41847efaa10355/DisplayCAL/../misc/displaycal-profile-info.desktop
      desktopfile: /tmp/pip-install-idtninyp/displaycal_a0f7e9f3906647428f41847efaa10355/DisplayCAL/../misc/displaycal-scripting-client.desktop
      desktopfile: /tmp/pip-install-idtninyp/displaycal_a0f7e9f3906647428f41847efaa10355/DisplayCAL/../misc/displaycal-synthprofile.desktop
      desktopfile: /tmp/pip-install-idtninyp/displaycal_a0f7e9f3906647428f41847efaa10355/DisplayCAL/../misc/displaycal-testchart-editor.desktop
      desktopfile: /tmp/pip-install-idtninyp/displaycal_a0f7e9f3906647428f41847efaa10355/DisplayCAL/../misc/displaycal-vrml-to-x3d-converter.desktop
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-310
      creating build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/xrandr.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/xh_hstretchstatbmp.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/xh_floatspin.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/xh_filebrowsebutton.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/xh_fancytext.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/xh_bitmapctrls.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/x3dom.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxwindows.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxversion.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxfixes.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxenhancedplot.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxaddons.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxVisualWhitepointEditor.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxVRML2X3D.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxUntetheredFrame.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxTestchartEditor.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxSynthICCFrame.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxScriptingClient.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxReportFrame.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxProfileInfo.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxMeasureFrame.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxLUTViewer.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxLUT3DFrame.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxDisplayUniformityFrame.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxDisplayAdjustmentFrame.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wxCCXXPlot.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/worker_base.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/worker.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/win_structs.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/win_knownpaths.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/win_handles.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/wexpect.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/webwin.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_xml.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_x.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_win.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_str.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_os.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_mac.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_list.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_io.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_http.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_dict.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_decimal.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/util_dbus.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/taskscheduler.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/taskbar.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/systrayicon.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/setup.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/safe_print.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/report.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/pyi_md5pickuphelper.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/profile_loader.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/postinstall.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/patterngenerators.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/options.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/network.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/multiprocess.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/meta.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/main.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/madvr.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/log.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/localization.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/lazydict.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/jspacker.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/jsondict.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/imfile.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/gtypes.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/floatspin.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/encoding.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/encodedstdio.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/embeddedimage.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/edid.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/display_cal.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/demjson_compat.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/defaultpaths.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/debughelpers.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/cubeiterator.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/config.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/colormath.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/colord.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/chromecast_patterngenerator.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/ccmx.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/audio.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/argyll_names.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/argyll_instruments.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/argyll_cgats.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/argyll_RGB2XYZ.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/__version__.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/__main__.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/__init__.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/RealDisplaySizeMM.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/ICCProfile.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      copying DisplayCAL/CGATS.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL
      creating build/lib.linux-x86_64-cpython-310/DisplayCAL/lib
      copying DisplayCAL/lib/__init__.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL/lib
      creating build/lib.linux-x86_64-cpython-310/DisplayCAL/lib/agw
      copying DisplayCAL/lib/agw/pygauge.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL/lib/agw
      copying DisplayCAL/lib/agw/labelbook.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL/lib/agw
      copying DisplayCAL/lib/agw/gradientbutton.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL/lib/agw
      copying DisplayCAL/lib/agw/fourwaysplitter.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL/lib/agw
      copying DisplayCAL/lib/agw/fmresources.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL/lib/agw
      copying DisplayCAL/lib/agw/artmanager.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL/lib/agw
      copying DisplayCAL/lib/agw/__init__.py -> build/lib.linux-x86_64-cpython-310/DisplayCAL/lib/agw
      running build_ext
      building 'DisplayCAL.lib64.python310.RealDisplaySizeMM' extension
      creating build/temp.linux-x86_64-cpython-310
      creating build/temp.linux-x86_64-cpython-310/DisplayCAL
      gcc -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -DOPENSSL_LOAD_CONF -fwrapv -fno-semantic-interposition -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -IVendor/ -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -IVendor/ -fPIC -DUNIX -I/usr/include/python3.10 -c DisplayCAL/RealDisplaySizeMM.c -o build/temp.linux-x86_64-cpython-310/DisplayCAL/RealDisplaySizeMM.o
      DisplayCAL/RealDisplaySizeMM.c:27:11: fatal error: X11/Xlib.h: No such file or directory
         27 | # include <X11/Xlib.h>
            |           ^~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]

` Please decode and explain what's missing / going wrong

9001 commented 2 years ago

Don't worry, just another dependency :>

The error might look cryptic, but there's a trick to it! See how it's complaining that X11/Xlib.h doesn't exist? Search for Xlib.h on https://pkgs.org/ and ignore the unofficial repos (always a good idea) -- it will suggest libX11-devel and perl-Tk-devel.

To figure out which of those you actually want, open each package in a new tab and do a CTRL-F for the file you're looking for (X11/Xlib.h) and you'll find that libX11-devel is the answer :+1:

Alternatively, because it is complaining about a header file (*.h), you can assume that the full file path is /usr/include/<missingfile>, so /usr/include/X11/Xlib.h in your example. If you search for that on pkgs.org you'll get the correct package right away :>

OldNick commented 2 years ago

Thanks for this - I didn't know about pkgs.org so I learnt something. I had to use it another 4 times to get DisplayCal to compile - I must have a complete development environment now. Don't know if that's really viable for an ordinary user though.

AND it works!!

I'm going to suggest distributing it as an appimage - I use that for Krita and Rawtherapee works well too.