diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c11f0bcc..50927c6a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 diff --git a/MANIFEST.in b/MANIFEST.in index cd31647d..e15f9ecd 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -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 diff --git a/setup.py b/setup.py index afb3afc7..61d66657 100755 --- a/setup.py +++ b/setup.py @@ -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', + ], +)