1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-07-07 09:50:07 +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
- python -m venv sdist-env
- . sdist-env/bin/activate
- ./setup.py compile_catalog sdist
- ./setup.py sdist
- 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
- $pip install --upgrade pip setuptools wheel # make this go away: "error: invalid command 'bdist_wheel'"
- $pip install dist/fdroidserver-*.tar.gz
@ -141,7 +141,7 @@ ubuntu_bionic_pip:
- 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:
image: archlinux
only:
@ -233,6 +233,7 @@ black:
fdroidserver/readmeta.py
fdroidserver/signindex.py
fdroidserver/tail.py
setup.py
tests/build.TestCase
tests/deploy.TestCase
tests/exception.TestCase
@ -272,7 +273,7 @@ fedora_latest:
unzip
wget
which
- ./setup.py compile_catalog sdist
- ./setup.py sdist
- useradd -m -c "test account" --password "fakepassword" testuser
- su testuser --login --command "cd `pwd`; $pip install --user dist/fdroidserver-*.tar.gz"
- 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 gradlew-fdroid
include LICENSE
include locale/bo/LC_MESSAGES/fdroidserver.mo
include locale/de/LC_MESSAGES/fdroidserver.mo
include locale/es/LC_MESSAGES/fdroidserver.mo
include locale/fr/LC_MESSAGES/fdroidserver.mo
include locale/hu/LC_MESSAGES/fdroidserver.mo
include locale/it/LC_MESSAGES/fdroidserver.mo
include locale/ko/LC_MESSAGES/fdroidserver.mo
include locale/nb_NO/LC_MESSAGES/fdroidserver.mo
include locale/pl/LC_MESSAGES/fdroidserver.mo
include locale/pt/LC_MESSAGES/fdroidserver.mo
include locale/pt_BR/LC_MESSAGES/fdroidserver.mo
include locale/pt_PT/LC_MESSAGES/fdroidserver.mo
include locale/ru/LC_MESSAGES/fdroidserver.mo
include locale/sq/LC_MESSAGES/fdroidserver.mo
include locale/tr/LC_MESSAGES/fdroidserver.mo
include locale/uk/LC_MESSAGES/fdroidserver.mo
include locale/zh_Hans/LC_MESSAGES/fdroidserver.mo
include locale/zh_Hant/LC_MESSAGES/fdroidserver.mo
include locale/bo/LC_MESSAGES/fdroidserver.po
include locale/de/LC_MESSAGES/fdroidserver.po
include locale/es/LC_MESSAGES/fdroidserver.po
include locale/fr/LC_MESSAGES/fdroidserver.po
include locale/hu/LC_MESSAGES/fdroidserver.po
include locale/it/LC_MESSAGES/fdroidserver.po
include locale/ko/LC_MESSAGES/fdroidserver.po
include locale/nb_NO/LC_MESSAGES/fdroidserver.po
include locale/pl/LC_MESSAGES/fdroidserver.po
include locale/pt/LC_MESSAGES/fdroidserver.po
include locale/pt_BR/LC_MESSAGES/fdroidserver.po
include locale/pt_PT/LC_MESSAGES/fdroidserver.po
include locale/ru/LC_MESSAGES/fdroidserver.po
include locale/sq/LC_MESSAGES/fdroidserver.po
include locale/tr/LC_MESSAGES/fdroidserver.po
include locale/uk/LC_MESSAGES/fdroidserver.po
include locale/zh_Hans/LC_MESSAGES/fdroidserver.po
include locale/zh_Hant/LC_MESSAGES/fdroidserver.po
include makebuildserver
include README.md
include tests/androguard_test.py

171
setup.py
View File

@ -1,15 +1,18 @@
#!/usr/bin/env python3
from setuptools import Command
from setuptools import setup
import os
import re
import subprocess
import sys
from setuptools import Command
from setuptools import setup
from setuptools.command.install import install
class VersionCheckCommand(Command):
"""Make sure git tag and version match before uploading"""
user_options = []
def initialize_options(self):
@ -20,14 +23,32 @@ class VersionCheckCommand(Command):
def run(self):
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:
print('ERROR: Release version mismatch! setup.py (%s) does not match git (%s)'
% (version, version_git))
print(
'ERROR: Release version mismatch! setup.py (%s) does not match git (%s)'
% (version, version_git)
)
sys.exit(1)
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():
# 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):
@ -39,78 +60,84 @@ def get_data_files():
with open('MANIFEST.in') as fp:
data = fp.read()
data_files.append((data_prefix + '/share/doc/fdroidserver/examples',
['buildserver/config.buildserver.yml', ]
+ re.findall(r'include (examples/.*)', data)))
data_files.append(
(
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))
data_files.append((d, [f, ]))
data_files.append((d, [f]))
return data_files
with open("README.md", "r") as fh:
long_description = fh.read()
setup(name='fdroidserver',
version='2.1a0',
description='F-Droid Server Tools',
long_description=long_description,
long_description_content_type='text/markdown',
author='The F-Droid Project',
author_email='team@f-droid.org',
url='https://f-droid.org',
license='AGPL-3.0',
packages=['fdroidserver', 'fdroidserver.asynchronousfilereader'],
scripts=['makebuildserver'],
entry_points={
'console_scripts': ['fdroid=fdroidserver.__main__:main']
},
data_files=get_data_files(),
python_requires='>=3.5',
cmdclass={'versioncheck': VersionCheckCommand},
setup_requires=[
'babel',
],
install_requires=[
'androguard >= 3.1.0rc2, != 3.3.0, != 3.3.1, != 3.3.2',
'clint',
'defusedxml',
'GitPython',
'paramiko',
'Pillow',
'apache-libcloud >= 0.14.1',
'pyasn1 >=0.4.1, < 0.5.0',
'pyasn1-modules >= 0.2.1, < 0.3',
'python-vagrant',
'PyYAML',
'qrcode',
'ruamel.yaml >= 0.15',
'requests >= 2.5.2, != 2.11.0, != 2.12.2, != 2.18.0',
'yamllint',
],
extras_require={
'test': [
'pyjks',
'html5print'
],
'docs': [
'sphinx',
'numpydoc',
'pydata_sphinx_theme',
'pydocstyle',
]
},
classifiers=[
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
'Intended Audience :: System Administrators',
'Intended Audience :: Telecommunications Industry',
'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)',
'Operating System :: POSIX',
'Operating System :: MacOS :: MacOS X',
'Operating System :: Unix',
'Topic :: Utilities',
],
)
setup(
name='fdroidserver',
version='2.1a0',
description='F-Droid Server Tools',
long_description=long_description,
long_description_content_type='text/markdown',
author='The F-Droid Project',
author_email='team@f-droid.org',
url='https://f-droid.org',
license='AGPL-3.0',
packages=['fdroidserver', 'fdroidserver.asynchronousfilereader'],
scripts=['makebuildserver'],
entry_points={'console_scripts': ['fdroid=fdroidserver.__main__:main']},
data_files=get_data_files(),
python_requires='>=3.5',
cmdclass={
'versioncheck': VersionCheckCommand,
'install': InstallWithCompile,
},
setup_requires=[
'babel',
],
install_requires=[
'androguard >= 3.1.0rc2, != 3.3.0, != 3.3.1, != 3.3.2',
'clint',
'defusedxml',
'GitPython',
'paramiko',
'Pillow',
'apache-libcloud >= 0.14.1',
'pyasn1 >=0.4.1, < 0.5.0',
'pyasn1-modules >= 0.2.1, < 0.3',
'python-vagrant',
'PyYAML',
'qrcode',
'ruamel.yaml >= 0.15',
'requests >= 2.5.2, != 2.11.0, != 2.12.2, != 2.18.0',
'yamllint',
],
extras_require={
'test': ['pyjks', 'html5print'],
'docs': [
'sphinx',
'numpydoc',
'pydata_sphinx_theme',
'pydocstyle',
],
},
classifiers=[
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
'Intended Audience :: System Administrators',
'Intended Audience :: Telecommunications Industry',
'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)',
'Operating System :: POSIX',
'Operating System :: MacOS :: MacOS X',
'Operating System :: Unix',
'Topic :: Utilities',
],
)