josh-richardson / cadmus

A GUI frontend for @werman's Pulse Audio real-time noise suppression plugin
GNU General Public License v3.0
2.09k stars 55 forks source link

AUR package #6

Open thibaultmol opened 4 years ago

thibaultmol commented 4 years ago

(I already read on the readme that it's planned. This issue is just for people to subscribe to so they get notified once it's been added on there)

sp1ritCS commented 4 years ago

I said on reddit i'm gonna make an AUR package. I had some issues getting a "native" package working. (the sip python package has to be an outdated version for another lib, but the old sip package hasn't support for python 3.8 which is shipped by arch)

I still made an AUR Package tho, but it basically extracts & installs the appimage provided. AUR: cadmus-appimage

Credits to Dave Parrish for his brilliant appimage pkgbuild template


Edit: this is my cadmus-git pkgbuild, it dosnt work and is very unclean if someone, that knows python packaging, wants to fix it; please do https://gist.github.com/sp1ritCS/96aeca02789ba3e5e760fd087bd781ad

WorMzy commented 4 years ago

The problem is you're relying on pip and bundled libs. It's not your responsibility as a developer to package everything your application requires. List what dependencies your application uses, code it so these libraries can be loaded from system directories, and let packagers handle the rest.

I've created AUR packages for the missing dependencies I ran into trying to run main.py: https://aur.archlinux.org/packages/python-fbs/ https://aur.archlinux.org/packages/python-pulsectl/ https://aur.archlinux.org/packages/noise-suppression-for-voice/

Your application quite happily uses the first two if they're installed as system libs, but you seem to have hardcoded it so only the version of librnnoise_ladspa.so you provide can be used (after it's copied to the user's ~/.cache?). I'm happy to help get this packaged up properly for the AUR, but at the moment it's not possible.

sp1ritCS commented 4 years ago

With the work @WorMzy has done, I managed to get the python file running directly on my system. I created a PKGBUILD for that, but I cant figure out how fbs works. The current state of the PKGBUILD is that it installs the package (basicly just the patched main.py), but failes at runtime when python tries to run it.

Traceback (most recent call last):
  File "/usr/bin/cadmus", line 70, in <module>
    appctxt = ApplicationContext()
  File "/usr/lib/python3.8/site-packages/fbs_runtime/application_context/__init__.py", line 31, in __init__
    self.app
  File "/usr/lib/python3.8/site-packages/fbs_runtime/application_context/__init__.py", line 54, in app
    result.setApplicationName(self.build_settings['app_name'])
  File "/usr/lib/python3.8/site-packages/fbs_runtime/application_context/__init__.py", line 65, in build_settings
    return _source.load_build_settings(self._project_dir)
  File "/usr/lib/python3.8/site-packages/fbs_runtime/application_context/__init__.py", line 127, in _project_dir
    return _source.get_project_dir()
  File "/usr/lib/python3.8/site-packages/fbs_runtime/_source.py", line 21, in get_project_dir
    raise FbsError(
fbs_runtime.FbsError: Could not determine the project base directory. Was expecting src/main/python.

I've created a temporary git repository, because a gist is bad for keeping track of .patch files. https://github.com/sp1ritCS/cadmus-git

TheJackiMonster commented 4 years ago

fbs_runtime.FbsError: Could not determine the project base directory. Was expecting src/main/python.

It seems like it expects a specific directory structure... idk maybe you will need something like a shell-script which calls the python-script so that the base directory would be something like /usr/lib/cadmus and the python-script was in /usr/lib/cadmus/src/main/python/main.py.

So a script like this for example:

#!/bin/sh
cd /usr/lib/cadmus
python /usr/lib/cadmus/src/main/python/main.py
naund commented 4 years ago

You will need python-fbs and pyinstaller as makedepends. In order to start the app "fbs run" has to be used. In order to create an stand alone executable the documentation is pointing at "fbs freeze". But at this step the installer throwing an error inside pyinstaller which I cannot fix.

Fbs is an tool to create cross platform GUI applications. But this app is linux only ...