displaycal-py3 icon indicating copy to clipboard operation
displaycal-py3 copied to clipboard

Appimage ?

Open OldNick opened this issue 2 years ago • 18 comments

Using pip to install DisplayCall on Tumbleweed was something of a nightmare - the number of dependencies I had to find and install (Yast was not very helpful). I wonder if openSuse don't break up packages into smaller pieces than other distros.

And this was Tumbleweed - Leap packages are several versions behind the curve (in the interests of "stability") so these dependencies might not be met. It's why I stopped using Leap - too many apps not up to date.

So it strikes me that, rather than developing a package for each flavour of linux, it could be an idea to put your energies into producing an Appimage which would work under any Linux environment.

OldNick avatar Jul 11 '22 07:07 OldNick

Unfortunately packaging is not my priority for now. But, it is a very important issue for sure, and in near future we shoukd be leaning our efforts on this area.

eoyilmaz avatar Jul 17 '22 20:07 eoyilmaz

+1 for this request.

At least for now, the build process is not possible on Fedora. wxPython cannot be installed via pip. dnf install python3-wxpython4 does work with other applications, but not this one.

ngxson avatar Aug 08 '22 09:08 ngxson

I use DisplayCAL with Fedora 36. What is your problem with pip, is it throwing out any particular error message?

eoyilmaz avatar Aug 08 '22 10:08 eoyilmaz

I'm using Fedora 36. gcc glibc-devel dbus pkgconf gtk3-devel libXxf86vm-devel are installed.

Here is the output:

➜  ~ cd work
➜  work git clone https://github.com/eoyilmaz/displaycal-py3
Cloning into 'displaycal-py3'...
remote: Enumerating objects: 38246, done.
remote: Counting objects: 100% (2621/2621), done.
remote: Compressing objects: 100% (776/776), done.
remote: Total 38246 (delta 1838), reused 2490 (delta 1766), pack-reused 35625
Receiving objects: 100% (38246/38246), 56.47 MiB | 10.72 MiB/s, done.
Resolving deltas: 100% (28591/28591), done.
➜  work python -m venv ./displaycal_venv
➜  work source ./displaycal_venv/bin/activate
(displaycal_venv) ➜  work cd ./displaycal-py3/
(displaycal_venv) ➜  displaycal-py3 git:(main) pip install -r requirements.txt
Collecting build
  Using cached build-0.8.0-py3-none-any.whl (17 kB)
Collecting certifi
  Using cached certifi-2022.6.15-py3-none-any.whl (160 kB)
Collecting dbus-python
  Using cached dbus_python-1.2.18-cp310-cp310-linux_x86_64.whl
Collecting distro
  Using cached distro-1.7.0-py3-none-any.whl (20 kB)
Collecting numpy
  Using cached numpy-1.23.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.0 MB)
Collecting Pillow
  Using cached Pillow-9.2.0-cp310-cp310-manylinux_2_28_x86_64.whl (3.2 MB)
Collecting PyChromecast
  Using cached PyChromecast-12.1.4-py2.py3-none-any.whl (62 kB)
Collecting Send2Trash
  Using cached Send2Trash-1.8.0-py3-none-any.whl (18 kB)
Collecting wxPython>=4.1.1
  Using cached wxPython-4.1.1.tar.gz (66.0 MB)
  Preparing metadata (setup.py) ... done

...

Using legacy 'setup.py install' for wxPython, since package 'wheel' is not installed.
Installing collected packages: urllib3, idna, charset-normalizer, certifi, tomli, requests, pyparsing, ifaddr, async-timeout, zeroconf, six, protobuf, Pillow, pep517, packaging, numpy, casttube, wxPython, Send2Trash, PyChromecast, distro, dbus-python, build
    Running setup.py install for wxPython ... error
    ERROR: Command errored out with exit status 1:
     command: /home/ngxson/work/displaycal_venv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ozai9vsy/wxpython_f1588b18821049aeb9cd28f7485288e7/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ozai9vsy/wxpython_f1588b18821049aeb9cd28f7485288e7/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-b8iqv9me/install-record.txt --single-version-externally-managed --compile --install-headers /home/ngxson/work/displaycal_venv/include/site/python3.10/wxPython
         cwd: /tmp/pip-install-ozai9vsy/wxpython_f1588b18821049aeb9cd28f7485288e7/
    Complete output (75 lines):
    /home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/setuptools/dist.py:723: UserWarning: Usage of dash-separated 'license-file' will not be supported in future versions. Please use the underscore name 'license_file' instead
      warnings.warn(
    /home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/setuptools/dist.py:300: DistDeprecationWarning: use_2to3 is ignored.
      warnings.warn(f"{attr} is ignored.", DistDeprecationWarning)
    running install
    /home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    running build
    WARNING: Building this way assumes that all generated files have been
    generated already.  If that is not the case then use build.py directly
    to generate the source and perform the build stage.  You can use
    --skip-build with the bdist_* or install commands to avoid this
    message and the wxWidgets and Phoenix build steps in the future.
    
    "/home/ngxson/work/displaycal_venv/bin/python" -u build.py build
    /tmp/pip-install-ozai9vsy/wxpython_f1588b18821049aeb9cd28f7485288e7/build.py:41: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
      from distutils.dep_util import newer, newer_group
    Will build using: "/home/ngxson/work/displaycal_venv/bin/python"
    3.10.6 (main, Aug  2 2022, 00:00:00) [GCC 12.1.1 20220507 (Red Hat 12.1.1-1)]
    Python's architecture is 64bit
    cfg.VERSION: 4.1.1
    
    Running command: build
    Running command: build_wx
    wxWidgets build options: ['--wxpython', '--unicode', '--gtk3']
    Configure options: ['--enable-unicode', '--with-gtk=3', '--enable-sound', '--enable-graphics_ctx', '--enable-display', '--enable-geometry', '--enable-debug_flag', '--enable-optimise', '--disable-debugreport', '--enable-uiactionsim', '--enable-autoidman', '--with-sdl']
    /tmp/pip-install-ozai9vsy/wxpython_f1588b18821049aeb9cd28f7485288e7/ext/wxWidgets/configure --enable-unicode --with-gtk=3 --enable-sound --enable-graphics_ctx --enable-display --enable-geometry --enable-debug_flag --enable-optimise --disable-debugreport --enable-uiactionsim --enable-autoidman --with-sdl
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking for toolkit... gtk
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking whether we are using the Intel C compiler... no
    checking how to run the C preprocessor... gcc -E
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking whether gcc needs -traditional... no
    checking for g++... no
    checking for c++... no
    checking for gpp... no
    checking for aCC... no
    checking for CC... no
    checking for cxx... no
    checking for cc++... no
    checking for cl.exe... no
    checking for FCC... no
    checking for KCC... no
    checking for RCC... no
    checking for xlC_r... no
    checking for xlC... no
    checking whether we are using the GNU C++ compiler... no
    checking whether g++ accepts -g... no
    checking whether we are using the Intel C++ compiler... no
    checking whether we are using the Sun C++ compiler... no
    configure: error: C++ compiler is needed to build wxWidgets
    Error running configure
    ERROR: failed building wxWidgets
    Traceback (most recent call last):
      File "/tmp/pip-install-ozai9vsy/wxpython_f1588b18821049aeb9cd28f7485288e7/build.py", line 1510, in cmd_build_wx
        wxbuild.main(wxDir(), build_options)
      File "/tmp/pip-install-ozai9vsy/wxpython_f1588b18821049aeb9cd28f7485288e7/buildtools/build_wxwidgets.py", line 372, in main
        exitIfError(wxBuilder.configure(dir=wxRootDir, options=configure_opts),
      File "/tmp/pip-install-ozai9vsy/wxpython_f1588b18821049aeb9cd28f7485288e7/buildtools/build_wxwidgets.py", line 85, in exitIfError
        raise builder.BuildError(msg)
    buildtools.builder.BuildError: Error running configure
    Finished command: build_wx (0.695s)
    Finished command: build (0.695s)
    Command '"/home/ngxson/work/displaycal_venv/bin/python" -u build.py build' failed with exit code 1.
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/ngxson/work/displaycal_venv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ozai9vsy/wxpython_f1588b18821049aeb9cd28f7485288e7/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ozai9vsy/wxpython_f1588b18821049aeb9cd28f7485288e7/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-b8iqv9me/install-record.txt --single-version-externally-managed --compile --install-headers /home/ngxson/work/displaycal_venv/include/site/python3.10/wxPython Check the logs for full command output.

Even with pip install wheel and retry pip install -r requirements.txt, I got the same error.

ngxson avatar Aug 08 '22 10:08 ngxson

Bonus: sudo dnf install python3-wxpython4 confirms that Package python3-wxpython4-4.0.7-29.fc36.x86_64 is already installed.

ngxson avatar Aug 08 '22 10:08 ngxson

I think it is related to this line:

Using legacy 'setup.py install' for wxPython, since package 'wheel' is not installed.

So after source ./displaycal_venv/bin/activate if you run pip install wheel it might solve your problem. Also we have pre-built wheel packages for wxPython at:

https://wxpython.p5k.org/wxPython-4.1.1-cp3.8-cp3.8-linux_x86_64.whl
https://wxpython.p5k.org/wxPython-4.1.1-cp3.9-cp3.9-linux_x86_64.whl
https://wxpython.p5k.org/wxPython-4.1.1-cp3.10-cp3.10-linux_x86_64.whl

That you can use.

eoyilmaz avatar Aug 08 '22 10:08 eoyilmaz

It doesn't seem to work: (I'm using Python 3.10.6 btw)

➜  work source displaycal_venv/bin/activate 
(displaycal_venv) ➜  work pip install wheel
Requirement already satisfied: wheel in ./displaycal_venv/lib/python3.10/site-packages (0.37.1)

...

(displaycal_venv) ➜  displaycal-py3 git:(main) pip install -r requirements.txt

...

  Building wheel for wxPython (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/ngxson/work/displaycal_venv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/setup.py'"'"'; __file__='"'"'/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-i5orq0ib
       cwd: /tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/
  Complete output (73 lines):
  /home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/setuptools/dist.py:723: UserWarning: Usage of dash-separated 'license-file' will not be supported in future versions. Please use the underscore name 'license_file' instead
    warnings.warn(
  /home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/setuptools/dist.py:300: DistDeprecationWarning: use_2to3 is ignored.
    warnings.warn(f"{attr} is ignored.", DistDeprecationWarning)
  running bdist_wheel
  running build
  WARNING: Building this way assumes that all generated files have been
  generated already.  If that is not the case then use build.py directly
  to generate the source and perform the build stage.  You can use
  --skip-build with the bdist_* or install commands to avoid this
  message and the wxWidgets and Phoenix build steps in the future.
  
  "/home/ngxson/work/displaycal_venv/bin/python" -u build.py build
  /tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/build.py:41: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
    from distutils.dep_util import newer, newer_group
  Will build using: "/home/ngxson/work/displaycal_venv/bin/python"
  3.10.6 (main, Aug  2 2022, 00:00:00) [GCC 12.1.1 20220507 (Red Hat 12.1.1-1)]
  Python's architecture is 64bit
  cfg.VERSION: 4.1.1
  
  Running command: build
  Running command: build_wx
  wxWidgets build options: ['--wxpython', '--unicode', '--gtk3']
  Configure options: ['--enable-unicode', '--with-gtk=3', '--enable-sound', '--enable-graphics_ctx', '--enable-display', '--enable-geometry', '--enable-debug_flag', '--enable-optimise', '--disable-debugreport', '--enable-uiactionsim', '--enable-autoidman', '--with-sdl']
  /tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/ext/wxWidgets/configure --enable-unicode --with-gtk=3 --enable-sound --enable-graphics_ctx --enable-display --enable-geometry --enable-debug_flag --enable-optimise --disable-debugreport --enable-uiactionsim --enable-autoidman --with-sdl
  checking build system type... x86_64-pc-linux-gnu
  checking host system type... x86_64-pc-linux-gnu
  checking for toolkit... gtk
  checking for gcc... gcc
  checking whether the C compiler works... yes
  checking for C compiler default output file name... a.out
  checking for suffix of executables...
  checking whether we are cross compiling... no
  checking for suffix of object files... o
  checking whether we are using the GNU C compiler... yes
  checking whether gcc accepts -g... yes
  checking for gcc option to accept ISO C89... none needed
  checking whether we are using the Intel C compiler... no
  checking how to run the C preprocessor... gcc -E
  checking for grep that handles long lines and -e... /usr/bin/grep
  checking for egrep... /usr/bin/grep -E
  checking whether gcc needs -traditional... no
  checking for g++... no
  checking for c++... no
  checking for gpp... no
  checking for aCC... no
  checking for CC... no
  checking for cxx... no
  checking for cc++... no
  checking for cl.exe... no
  checking for FCC... no
  checking for KCC... no
  checking for RCC... no
  checking for xlC_r... no
  checking for xlC... no
  checking whether we are using the GNU C++ compiler... no
  checking whether g++ accepts -g... no
  checking whether we are using the Intel C++ compiler... no
  checking whether we are using the Sun C++ compiler... no
  configure: error: C++ compiler is needed to build wxWidgets
  Error running configure
  ERROR: failed building wxWidgets
  Traceback (most recent call last):
    File "/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/build.py", line 1510, in cmd_build_wx
      wxbuild.main(wxDir(), build_options)
    File "/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/buildtools/build_wxwidgets.py", line 372, in main
      exitIfError(wxBuilder.configure(dir=wxRootDir, options=configure_opts),
    File "/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/buildtools/build_wxwidgets.py", line 85, in exitIfError
      raise builder.BuildError(msg)
  buildtools.builder.BuildError: Error running configure
  Finished command: build_wx (0.693s)
  Finished command: build (0.693s)
  Command '"/home/ngxson/work/displaycal_venv/bin/python" -u build.py build' failed with exit code 1.
  ----------------------------------------
  ERROR: Failed building wheel for wxPython
  Running setup.py clean for wxPython
Failed to build wxPython
Installing collected packages: wxPython, Send2Trash, PyChromecast, distro, dbus-python, build
    Running setup.py install for wxPython ... error
    ERROR: Command errored out with exit status 1:
     command: /home/ngxson/work/displaycal_venv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/setup.py'"'"'; __file__='"'"'/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-l73kbfdh/install-record.txt --single-version-externally-managed --compile --install-headers /home/ngxson/work/displaycal_venv/include/site/python3.10/wxPython
         cwd: /tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/
    Complete output (75 lines):
    /home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/setuptools/dist.py:723: UserWarning: Usage of dash-separated 'license-file' will not be supported in future versions. Please use the underscore name 'license_file' instead
      warnings.warn(
    /home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/setuptools/dist.py:300: DistDeprecationWarning: use_2to3 is ignored.
      warnings.warn(f"{attr} is ignored.", DistDeprecationWarning)
    running install
    /home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    running build
    WARNING: Building this way assumes that all generated files have been
    generated already.  If that is not the case then use build.py directly
    to generate the source and perform the build stage.  You can use
    --skip-build with the bdist_* or install commands to avoid this
    message and the wxWidgets and Phoenix build steps in the future.
    
    "/home/ngxson/work/displaycal_venv/bin/python" -u build.py build
    /tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/build.py:41: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
      from distutils.dep_util import newer, newer_group
    Will build using: "/home/ngxson/work/displaycal_venv/bin/python"
    3.10.6 (main, Aug  2 2022, 00:00:00) [GCC 12.1.1 20220507 (Red Hat 12.1.1-1)]
    Python's architecture is 64bit
    cfg.VERSION: 4.1.1
    
    Running command: build
    Running command: build_wx
    wxWidgets build options: ['--wxpython', '--unicode', '--gtk3']
    Configure options: ['--enable-unicode', '--with-gtk=3', '--enable-sound', '--enable-graphics_ctx', '--enable-display', '--enable-geometry', '--enable-debug_flag', '--enable-optimise', '--disable-debugreport', '--enable-uiactionsim', '--enable-autoidman', '--with-sdl']
    /tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/ext/wxWidgets/configure --enable-unicode --with-gtk=3 --enable-sound --enable-graphics_ctx --enable-display --enable-geometry --enable-debug_flag --enable-optimise --disable-debugreport --enable-uiactionsim --enable-autoidman --with-sdl
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking for toolkit... gtk
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking whether we are using the Intel C compiler... no
    checking how to run the C preprocessor... gcc -E
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking whether gcc needs -traditional... no
    checking for g++... no
    checking for c++... no
    checking for gpp... no
    checking for aCC... no
    checking for CC... no
    checking for cxx... no
    checking for cc++... no
    checking for cl.exe... no
    checking for FCC... no
    checking for KCC... no
    checking for RCC... no
    checking for xlC_r... no
    checking for xlC... no
    checking whether we are using the GNU C++ compiler... no
    checking whether g++ accepts -g... no
    checking whether we are using the Intel C++ compiler... no
    checking whether we are using the Sun C++ compiler... no
    configure: error: C++ compiler is needed to build wxWidgets
    Error running configure
    ERROR: failed building wxWidgets
    Traceback (most recent call last):
      File "/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/build.py", line 1510, in cmd_build_wx
        wxbuild.main(wxDir(), build_options)
      File "/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/buildtools/build_wxwidgets.py", line 372, in main
        exitIfError(wxBuilder.configure(dir=wxRootDir, options=configure_opts),
      File "/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/buildtools/build_wxwidgets.py", line 85, in exitIfError
        raise builder.BuildError(msg)
    buildtools.builder.BuildError: Error running configure
    Finished command: build_wx (0.694s)
    Finished command: build (0.694s)
    Command '"/home/ngxson/work/displaycal_venv/bin/python" -u build.py build' failed with exit code 1.
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/ngxson/work/displaycal_venv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/setup.py'"'"'; __file__='"'"'/tmp/pip-install-kptnfhxf/wxpython_cf3d94d0fef24da1984e15e349402908/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-l73kbfdh/install-record.txt --single-version-externally-managed --compile --install-headers /home/ngxson/work/displaycal_venv/include/site/python3.10/wxPython Check the logs for full command output.

ngxson avatar Aug 08 '22 11:08 ngxson

All 3 links that you provided do not exist (404 Not Found): https://wxpython.p5k.org/wxPython-4.1.1-cp3.8-cp3.8-linux_x86_64.whl https://wxpython.p5k.org/wxPython-4.1.1-cp3.9-cp3.9-linux_x86_64.whl https://wxpython.p5k.org/wxPython-4.1.1-cp3.10-cp3.10-linux_x86_64.whl

ngxson avatar Aug 08 '22 11:08 ngxson

Oh sorry, my bad, it should have been:

https://wxpython.p5k.org/wxPython-4.1.1-cp38-cp38-linux_x86_64.whl https://wxpython.p5k.org/wxPython-4.1.1-cp39-cp39-linux_x86_64.whl https://wxpython.p5k.org/wxPython-4.1.1-cp310-cp310-linux_x86_64.whl

eoyilmaz avatar Aug 08 '22 11:08 eoyilmaz

So what I tried next is:

wget https://wxpython.p5k.org/wxPython-4.1.1-cp310-cp310-linux_x86_64.whl
pip install wxPython-4.1.1-cp310-cp310-linux_x86_64.whl
pip install -r requirements.txt
python -m build
pip install dist/DisplayCAL-3.9.*.whl

It was success, but displaycal gives me error:

(displaycal_venv) ➜  displaycal-py3 git:(main) ✗ displaycal
XDG: [Errno 2] No translation file found for domain: 'xdg-user-dirs'
Acquired lock file: <DisplayCAL.main.AppLock object at 0x7f545bda3e20>
displaycal 3.9.6 2022-08-08T11:14:07Z
fedora 36  x86_64
Python 3.10.6 (main, Aug  2 2022, 00:00:00) [GCC 12.1.1 20220507 (Red Hat 12.1.1-1)]
Faulthandler 
Traceback (most recent call last):
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/main.py", line 549, in main
    _main(module, name, applockfilename)
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/main.py", line 141, in _main
    from DisplayCAL.wxaddons import wx
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/wxaddons.py", line 9, in <module>
    from DisplayCAL.wxfixes import wx, GenButton, PlateButton, get_dialogs
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/wxfixes.py", line 27, in <module>
    import wx
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/wx/__init__.py", line 17, in <module>
    from wx.core import *
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/wx/core.py", line 12, in <module>
    from ._core import *
ImportError: libjpeg.so.8: cannot open shared object file: No such file or directory
┌──────────────────────────────────────────────────────────────────────────────┐
│ Traceback (most recent call last):                                           │
│   File                                                                       │
│ "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/main.py", │
│ line 549, in main                                                            │
│     _main(module, name, applockfilename)                                     │
│   File                                                                       │
│ "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/main.py", │
│ line 141, in _main                                                           │
│     from DisplayCAL.wxaddons import wx                                       │
│   File                                                                       │
│ "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/wxaddons.py", │
│ line 9, in <module>                                                          │
│     from DisplayCAL.wxfixes import wx, GenButton, PlateButton, get_dialogs   │
│   File                                                                       │
│ "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/wxfixes.py", │
│ line 27, in <module>                                                         │
│     import wx                                                                │
│   File                                                                       │
│ "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/wx/__init__.py", │
│ line 17, in <module>                                                         │
│     from wx.core import *                                                    │
│   File                                                                       │
│ "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/wx/core.py", │
│ line 12, in <module>                                                         │
│     from ._core import *                                                     │
│ ImportError: libjpeg.so.8: cannot open shared object file: No such file or   │
│ directory                                                                    │
└──────────────────────────────────────────────────────────────────────────────┘
Traceback (most recent call last):
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/main.py", line 549, in main
    _main(module, name, applockfilename)
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/main.py", line 141, in _main
    from DisplayCAL.wxaddons import wx
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/wxaddons.py", line 9, in <module>
    from DisplayCAL.wxfixes import wx, GenButton, PlateButton, get_dialogs
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/wxfixes.py", line 27, in <module>
    import wx
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/wx/__init__.py", line 17, in <module>
    from wx.core import *
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/wx/core.py", line 12, in <module>
    from ._core import *
ImportError: libjpeg.so.8: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/debughelpers.py", line 77, in handle_error
    from DisplayCAL.wxaddons import wx
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/wxaddons.py", line 9, in <module>
    from DisplayCAL.wxfixes import wx, GenButton, PlateButton, get_dialogs
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/DisplayCAL/wxfixes.py", line 27, in <module>
    import wx
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/wx/__init__.py", line 12, in <module>
    __version__ = wx.__version__.VERSION_STRING
AttributeError: partially initialized module 'wx' has no attribute '__version__' (most likely due to a circular import)
Warning: handle_error(): partially initialized module 'wx' has no attribute '__version__' (most likely due to a circular import)
Exiting displaycal

ngxson avatar Aug 08 '22 11:08 ngxson

You probably have a different version of libjpeg.so installed, check the /usr/lib64 directory for libjpeg.so and if the libjpeg.so.8 is missing but you have libjpeg.so create a symlink to libjpeg.so with that name (sudo ln -s libjpeg.so libjpeg.so.8). It would probably work without a problem, if this was the problem in the first place. Otherwise check if you have `libjpeg.so`` installed in your system and install if not.

eoyilmaz avatar Aug 08 '22 11:08 eoyilmaz

I created a symlink from libjpeg.so.8 to libjpeg.so, libjpeg.so.62 and libjpeg.so.62.3.0 but it doesn't seem to work.

  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/wx/__init__.py", line 17, in <module>
    from wx.core import *
  File "/home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/wx/core.py", line 12, in <module>
    from ._core import *
ImportError: /lib64/libjpeg.so.8: version `LIBJPEG_8.0' not found (required by /home/ngxson/work/displaycal_venv/lib64/python3.10/site-packages/wx/libwx_gtk3u_core-3.1.so.5)

Really sorry but at this point, I'm thinking about giving up and wait for the AppImage version...

Bonus:

➜  ~ ls /usr/lib64 | grep libjpeg
libjpeg.so
libjpeg.so.62
libjpeg.so.62.3.0
libjpeg.so.8 <= The symlink created by me

ngxson avatar Aug 08 '22 12:08 ngxson

Sorry I overlooked your initial problem. It seems that you don't have the required compiler suit. Did you run the following before trying to install DisplayCAL:

sudo dnf install gcc glibc-devel dbus pkgconf gtk3-devel libXxf86vm-devel

eoyilmaz avatar Aug 08 '22 12:08 eoyilmaz

I'm using Fedora 36. gcc glibc-devel dbus pkgconf gtk3-devel libXxf86vm-devel are installed.

Yes, I wrote that in the beginning of this discussion.

For confirmation, I've just re-run it:

sudo -i
Place your right index finger on the fingerprint reader
[root@ngxson]~# dnf install gcc glibc-devel dbus pkgconf gtk3-devel libXxf86vm-devel
FirefoxPWA                                      214  B/s | 833  B     00:03    
Package gcc-12.1.1-1.fc36.x86_64 is already installed.
Package glibc-devel-2.35-15.fc36.x86_64 is already installed.
Package dbus-1:1.14.0-1.fc36.x86_64 is already installed.
Package pkgconf-1.8.0-2.fc36.x86_64 is already installed.
Package gtk3-devel-3.24.34-1.fc36.x86_64 is already installed.
Package libXxf86vm-devel-1.1.4-18.fc36.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@ngxson]~#

ngxson avatar Aug 08 '22 12:08 ngxson

Oh sorry I misinterpreted the log messages. I'll come back to this issue, after I login to my Fedora 36 workstation this evening.

eoyilmaz avatar Aug 08 '22 12:08 eoyilmaz

I managed to install libjpeg8 and it works now:

sudo dnf copr enable aflyhorse/libjpeg
sudo dnf install libjpeg8

Thanks for the support.

ngxson avatar Aug 08 '22 12:08 ngxson

Aah superb. I was started to think that gcc-12 was the problem. I was looking if wxPython was building okay with gcc-12. Anyways, I'm happy to hear that you solved your problem.

eoyilmaz avatar Aug 08 '22 12:08 eoyilmaz

I read that packaging isn't your top priority. Instead of an AppImage, I propose to package it as a Flatpak, maybe using this recipe as a template (original DisplayCal).

rmeissn avatar Dec 16 '22 12:12 rmeissn