1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-10-05 18:50:09 +02:00

Merge branch 'fix_pip_git_installation' into 'master'

Build translation files on install instead of distributing them in sdist

Closes #934

See merge request fdroid/fdroidserver!1014
This commit is contained in:
Hans-Christoph Steiner 2021-12-16 21:55:53 +00:00
commit 04a45ae745
3 changed files with 122 additions and 94 deletions

View File

@ -130,9 +130,9 @@ ubuntu_bionic_pip:
# setup venv to act as release build machine # setup venv to act as release build machine
- python -m venv sdist-env - python -m venv sdist-env
- . sdist-env/bin/activate - . sdist-env/bin/activate
- ./setup.py compile_catalog sdist - ./setup.py sdist
- deactivate - deactivate
- tar tzf dist/fdroidserver-*.tar.gz | grep locale/de/LC_MESSAGES/fdroidserver.mo - tar tzf dist/fdroidserver-*.tar.gz
# back to bare machine to act as user's install machine # back to bare machine to act as user's install machine
- $pip install --upgrade pip setuptools wheel # make this go away: "error: invalid command 'bdist_wheel'" - $pip install --upgrade pip setuptools wheel # make this go away: "error: invalid command 'bdist_wheel'"
- $pip install dist/fdroidserver-*.tar.gz - $pip install dist/fdroidserver-*.tar.gz
@ -141,7 +141,7 @@ ubuntu_bionic_pip:
- fdroid=`which fdroid` ./tests/run-tests - fdroid=`which fdroid` ./tests/run-tests
# test install process on a bleeding edge distro with pip # test installation process on a bleeding edge distro with pip
arch_pip_install: arch_pip_install:
image: archlinux image: archlinux
only: only:
@ -233,6 +233,7 @@ black:
fdroidserver/readmeta.py fdroidserver/readmeta.py
fdroidserver/signindex.py fdroidserver/signindex.py
fdroidserver/tail.py fdroidserver/tail.py
setup.py
tests/build.TestCase tests/build.TestCase
tests/deploy.TestCase tests/deploy.TestCase
tests/exception.TestCase tests/exception.TestCase
@ -272,7 +273,7 @@ fedora_latest:
unzip unzip
wget wget
which which
- ./setup.py compile_catalog sdist - ./setup.py sdist
- useradd -m -c "test account" --password "fakepassword" testuser - useradd -m -c "test account" --password "fakepassword" testuser
- su testuser --login --command "cd `pwd`; $pip install --user dist/fdroidserver-*.tar.gz" - su testuser --login --command "cd `pwd`; $pip install --user dist/fdroidserver-*.tar.gz"
- test -e ~testuser/.local/share/locale/de/LC_MESSAGES/fdroidserver.mo - test -e ~testuser/.local/share/locale/de/LC_MESSAGES/fdroidserver.mo

View File

@ -20,24 +20,24 @@ include examples/public-read-only-s3-bucket-policy.json
include examples/template.yml include examples/template.yml
include gradlew-fdroid include gradlew-fdroid
include LICENSE include LICENSE
include locale/bo/LC_MESSAGES/fdroidserver.mo include locale/bo/LC_MESSAGES/fdroidserver.po
include locale/de/LC_MESSAGES/fdroidserver.mo include locale/de/LC_MESSAGES/fdroidserver.po
include locale/es/LC_MESSAGES/fdroidserver.mo include locale/es/LC_MESSAGES/fdroidserver.po
include locale/fr/LC_MESSAGES/fdroidserver.mo include locale/fr/LC_MESSAGES/fdroidserver.po
include locale/hu/LC_MESSAGES/fdroidserver.mo include locale/hu/LC_MESSAGES/fdroidserver.po
include locale/it/LC_MESSAGES/fdroidserver.mo include locale/it/LC_MESSAGES/fdroidserver.po
include locale/ko/LC_MESSAGES/fdroidserver.mo include locale/ko/LC_MESSAGES/fdroidserver.po
include locale/nb_NO/LC_MESSAGES/fdroidserver.mo include locale/nb_NO/LC_MESSAGES/fdroidserver.po
include locale/pl/LC_MESSAGES/fdroidserver.mo include locale/pl/LC_MESSAGES/fdroidserver.po
include locale/pt/LC_MESSAGES/fdroidserver.mo include locale/pt/LC_MESSAGES/fdroidserver.po
include locale/pt_BR/LC_MESSAGES/fdroidserver.mo include locale/pt_BR/LC_MESSAGES/fdroidserver.po
include locale/pt_PT/LC_MESSAGES/fdroidserver.mo include locale/pt_PT/LC_MESSAGES/fdroidserver.po
include locale/ru/LC_MESSAGES/fdroidserver.mo include locale/ru/LC_MESSAGES/fdroidserver.po
include locale/sq/LC_MESSAGES/fdroidserver.mo include locale/sq/LC_MESSAGES/fdroidserver.po
include locale/tr/LC_MESSAGES/fdroidserver.mo include locale/tr/LC_MESSAGES/fdroidserver.po
include locale/uk/LC_MESSAGES/fdroidserver.mo include locale/uk/LC_MESSAGES/fdroidserver.po
include locale/zh_Hans/LC_MESSAGES/fdroidserver.mo include locale/zh_Hans/LC_MESSAGES/fdroidserver.po
include locale/zh_Hant/LC_MESSAGES/fdroidserver.mo include locale/zh_Hant/LC_MESSAGES/fdroidserver.po
include makebuildserver include makebuildserver
include README.md include README.md
include tests/androguard_test.py include tests/androguard_test.py

171
setup.py
View File

@ -1,15 +1,18 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from setuptools import Command
from setuptools import setup
import os import os
import re import re
import subprocess import subprocess
import sys import sys
from setuptools import Command
from setuptools import setup
from setuptools.command.install import install
class VersionCheckCommand(Command): class VersionCheckCommand(Command):
"""Make sure git tag and version match before uploading""" """Make sure git tag and version match before uploading"""
user_options = [] user_options = []
def initialize_options(self): def initialize_options(self):
@ -20,14 +23,32 @@ class VersionCheckCommand(Command):
def run(self): def run(self):
version = self.distribution.get_version() version = self.distribution.get_version()
version_git = subprocess.check_output(['git', 'describe', '--tags', '--always']).rstrip().decode('utf-8') version_git = (
subprocess.check_output(['git', 'describe', '--tags', '--always'])
.rstrip()
.decode('utf-8')
)
if version != version_git: if version != version_git:
print('ERROR: Release version mismatch! setup.py (%s) does not match git (%s)' print(
% (version, version_git)) 'ERROR: Release version mismatch! setup.py (%s) does not match git (%s)'
% (version, version_git)
)
sys.exit(1) sys.exit(1)
print('Upload using: twine upload --sign dist/fdroidserver-%s.tar.gz' % version) print('Upload using: twine upload --sign dist/fdroidserver-%s.tar.gz' % version)
class InstallWithCompile(install):
def run(self):
from babel.messages.frontend import compile_catalog
compiler = compile_catalog(self.distribution)
option_dict = self.distribution.get_option_dict('compile_catalog')
compiler.domain = [option_dict['domain'][1]]
compiler.directory = option_dict['directory'][1]
compiler.run()
super().run()
def get_data_files(): def get_data_files():
# workaround issue on OSX or --user installs, where sys.prefix is not an installable location # workaround issue on OSX or --user installs, where sys.prefix is not an installable location
if os.access(sys.prefix, os.W_OK | os.X_OK): if os.access(sys.prefix, os.W_OK | os.X_OK):
@ -39,78 +60,84 @@ def get_data_files():
with open('MANIFEST.in') as fp: with open('MANIFEST.in') as fp:
data = fp.read() data = fp.read()
data_files.append((data_prefix + '/share/doc/fdroidserver/examples', data_files.append(
['buildserver/config.buildserver.yml', ] (
+ re.findall(r'include (examples/.*)', data))) data_prefix + '/share/doc/fdroidserver/examples',
['buildserver/config.buildserver.yml']
+ re.findall(r'include (examples/.*)', data),
)
)
for f in re.findall(r'include (locale/[a-z][a-z][a-zA-Z_]*/LC_MESSAGES/fdroidserver.mo)', data): for f in re.findall(
r'include (locale/[a-z][a-z][a-zA-Z_]*/LC_MESSAGES/fdroidserver\.)po', data
):
f += 'mo'
d = os.path.join(data_prefix, 'share', os.path.dirname(f)) d = os.path.join(data_prefix, 'share', os.path.dirname(f))
data_files.append((d, [f, ])) data_files.append((d, [f]))
return data_files return data_files
with open("README.md", "r") as fh: with open("README.md", "r") as fh:
long_description = fh.read() long_description = fh.read()
setup(name='fdroidserver', setup(
version='2.1a0', name='fdroidserver',
description='F-Droid Server Tools', version='2.1a0',
long_description=long_description, description='F-Droid Server Tools',
long_description_content_type='text/markdown', long_description=long_description,
author='The F-Droid Project', long_description_content_type='text/markdown',
author_email='team@f-droid.org', author='The F-Droid Project',
url='https://f-droid.org', author_email='team@f-droid.org',
license='AGPL-3.0', url='https://f-droid.org',
packages=['fdroidserver', 'fdroidserver.asynchronousfilereader'], license='AGPL-3.0',
scripts=['makebuildserver'], packages=['fdroidserver', 'fdroidserver.asynchronousfilereader'],
entry_points={ scripts=['makebuildserver'],
'console_scripts': ['fdroid=fdroidserver.__main__:main'] entry_points={'console_scripts': ['fdroid=fdroidserver.__main__:main']},
}, data_files=get_data_files(),
data_files=get_data_files(), python_requires='>=3.5',
python_requires='>=3.5', cmdclass={
cmdclass={'versioncheck': VersionCheckCommand}, 'versioncheck': VersionCheckCommand,
setup_requires=[ 'install': InstallWithCompile,
'babel', },
], setup_requires=[
install_requires=[ 'babel',
'androguard >= 3.1.0rc2, != 3.3.0, != 3.3.1, != 3.3.2', ],
'clint', install_requires=[
'defusedxml', 'androguard >= 3.1.0rc2, != 3.3.0, != 3.3.1, != 3.3.2',
'GitPython', 'clint',
'paramiko', 'defusedxml',
'Pillow', 'GitPython',
'apache-libcloud >= 0.14.1', 'paramiko',
'pyasn1 >=0.4.1, < 0.5.0', 'Pillow',
'pyasn1-modules >= 0.2.1, < 0.3', 'apache-libcloud >= 0.14.1',
'python-vagrant', 'pyasn1 >=0.4.1, < 0.5.0',
'PyYAML', 'pyasn1-modules >= 0.2.1, < 0.3',
'qrcode', 'python-vagrant',
'ruamel.yaml >= 0.15', 'PyYAML',
'requests >= 2.5.2, != 2.11.0, != 2.12.2, != 2.18.0', 'qrcode',
'yamllint', 'ruamel.yaml >= 0.15',
], 'requests >= 2.5.2, != 2.11.0, != 2.12.2, != 2.18.0',
extras_require={ 'yamllint',
'test': [ ],
'pyjks', extras_require={
'html5print' 'test': ['pyjks', 'html5print'],
], 'docs': [
'docs': [ 'sphinx',
'sphinx', 'numpydoc',
'numpydoc', 'pydata_sphinx_theme',
'pydata_sphinx_theme', 'pydocstyle',
'pydocstyle', ],
] },
}, classifiers=[
classifiers=[ 'Development Status :: 4 - Beta',
'Development Status :: 4 - Beta', 'Intended Audience :: Developers',
'Intended Audience :: Developers', 'Intended Audience :: Information Technology',
'Intended Audience :: Information Technology', 'Intended Audience :: System Administrators',
'Intended Audience :: System Administrators', 'Intended Audience :: Telecommunications Industry',
'Intended Audience :: Telecommunications Industry', 'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)',
'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)', 'Operating System :: POSIX',
'Operating System :: POSIX', 'Operating System :: MacOS :: MacOS X',
'Operating System :: MacOS :: MacOS X', 'Operating System :: Unix',
'Operating System :: Unix', 'Topic :: Utilities',
'Topic :: Utilities', ],
], )
)