Installation on Arch Linux fails
@grote asked me to test Repomaker before releasing its 1.0. I'm currently on Arch Linux which makes the whole thing more interesting because Arch is one of the only existing distributions linking python
to version 3.x and not 2.x as the rest of the world. Additionally, it always uses the latest stuff out there.
First, I tried to install it the official way described in the readme. This failed for me when running pip install repomaker[gui]
because I got:
Could not find a version that satisfies the requirement pyqt==5.10.0; extra == "gui" (from repomaker[gui]) (from versions: )
No matching distribution found for pyqt==5.10.0; extra == "gui" (from repomaker[gui])
I tried to install repomaker without the [gui] suffix which worked fine for me, excepting this warning:
fdroidserver 0.8 has requirement requests<2.11, but you'll have requests 2.19.1 which is incompatible.
Installation finishes fine for me. When then trying to execute repomaker
, though, I get the following traceback:
Traceback (most recent call last):
File "/home/dev/Work/F-Droid/repomaker/repomaker/bin/repomaker", line 7, in <module>
from repomaker.gui import main
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/repomaker/gui.py", line 8, in <module>
import webview
ModuleNotFoundError: No module named 'webview'
Running only repomaker-server
or repomaker-tasks
gives me this:
Traceback (most recent call last):
File "/home/dev/Work/F-Droid/repomaker/repomaker/bin/repomaker-server", line 11, in <module>
sys.exit(runserver())
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/repomaker/__init__.py", line 15, in runserver
execute([sys.argv[0], 'migrate']) # TODO move into package hook?
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/repomaker/__init__.py", line 55, in execute
execute_from_command_line(params)
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/django/core/management/__init__.py", line 338, in execute
django.setup()
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/django/__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/django/apps/config.py", line 94, in create
module = import_module(entry)
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/django/contrib/admin/__init__.py", line 4, in <module>
from django.contrib.admin.filters import (
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/django/contrib/admin/filters.py", line 10, in <module>
from django.contrib.admin.options import IncorrectLookupParameters
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/django/contrib/admin/options.py", line 13, in <module>
from django.contrib.admin import helpers, widgets
File "/home/dev/Work/F-Droid/repomaker/repomaker/lib/python3.7/site-packages/django/contrib/admin/widgets.py", line 152
'%s=%s' % (k, v) for k, v in params.items(),
^
SyntaxError: Generator expression must be parenthesized
This seems to be a known issue already fixed in later versions of Django. On Arch it's a problem because it already uses Python 3.7, but with the time we'll come to the point where this is also a problem on other distributions.
I then tried to install it the way I used to do when working on Repomaker. This also failed for me when running setup.sh
because of the same issue as above:
Requirement already satisfied: smmap2>=2.0.0 in /home/dev/.local/lib/python3.7/site-packages (from gitdb2>=2.0.0->GitPython->fdroidserver==0.8->-r debian/requirements.txt (line 2)) (2.0.4)
+ mkdir -p data
+ python3 manage.py makemigrations repomaker
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/home/dev/.local/lib/python3.7/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/home/dev/.local/lib/python3.7/site-packages/django/core/management/__init__.py", line 338, in execute
django.setup()
File "/home/dev/.local/lib/python3.7/site-packages/django/__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/dev/.local/lib/python3.7/site-packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/home/dev/.local/lib/python3.7/site-packages/django/apps/config.py", line 94, in create
module = import_module(entry)
File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/dev/.local/lib/python3.7/site-packages/django/contrib/admin/__init__.py", line 4, in <module>
from django.contrib.admin.filters import (
File "/home/dev/.local/lib/python3.7/site-packages/django/contrib/admin/filters.py", line 10, in <module>
from django.contrib.admin.options import IncorrectLookupParameters
File "/home/dev/.local/lib/python3.7/site-packages/django/contrib/admin/options.py", line 13, in <module>
from django.contrib.admin import helpers, widgets
File "/home/dev/.local/lib/python3.7/site-packages/django/contrib/admin/widgets.py", line 152
'%s=%s' % (k, v) for k, v in params.items(),
^
SyntaxError: Generator expression must be parenthesized
To sum up, running Repomaker on Arch Linux is currently blocked by a bug fixed in Django 2.1 and later, meaning we have to solve #186.