X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=fdroidserver.git;a=blobdiff_plain;f=setup.py;h=f50c4d86bb253b723f53e9f1bfd2267139c73e26;hp=15544732e01a20f1f29cc71093a4ca5cf09be4b4;hb=HEAD;hpb=31e81e83da929a6f170a00e2e60b8e28e85bcd26 diff --git a/setup.py b/setup.py old mode 100644 new mode 100755 index 15544732..f50c4d86 --- a/setup.py +++ b/setup.py @@ -1,29 +1,72 @@ #!/usr/bin/env python3 +from setuptools import Command from setuptools import setup import os +import re import shutil import sys -# 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): - data_prefix = sys.prefix -else: - data_prefix = '.' + +class VersionCheckCommand(Command): + """Make sure git tag and version match before uploading""" + user_options = [] + + def initialize_options(self): + """Abstract method that is required to be overwritten""" + + def finalize_options(self): + """Abstract method that is required to be overwritten""" + + def run(self): + version = self.distribution.get_version() + 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)) + sys.exit(1) + print('Upload using: twine upload dist/fdroidserver*.tar.gz*') + + +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): + data_prefix = sys.prefix + else: + data_prefix = '.' + + data_files = [] + with open('MANIFEST.in') as fp: + data = fp.read() + + data_files.append((data_prefix + '/share/doc/fdroidserver/examples', + ['buildserver/config.buildserver.py', ] + + 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): + d = os.path.join(data_prefix, 'share', os.path.dirname(f)) + data_files.append((d, [f, ])) + return data_files + # PyPI accepts reST not Markdown -if shutil.which('pandoc'): - print('Using reST README') - import subprocess - readme = subprocess.check_output(['pandoc', '--from=markdown', '--to=rst', 'README.md'], - universal_newlines=True) +if os.path.exists('README.md'): + if shutil.which('pandoc'): + print('Using reST README') + import subprocess + subprocess.check_call(['pandoc', '--from=markdown', '--to=rst', 'README.md', + '--output=README.rst'], universal_newlines=True) + with open('README.rst') as fp: + readme = fp.read() + else: + print('Using Markdown README') + with open('README.md') as fp: + readme = fp.read() else: - print('Using Markdown README') - with open('README.md') as fp: - readme = fp.read() + readme = '' setup(name='fdroidserver', - version='0.8', + version='1.0.3', description='F-Droid Server Tools', long_description=readme, author='The F-Droid Project', @@ -31,18 +74,13 @@ setup(name='fdroidserver', url='https://f-droid.org', license='AGPL-3.0', packages=['fdroidserver', 'fdroidserver.asynchronousfilereader'], - scripts=['fdroid', 'fd-commit', 'makebuildserver'], - data_files=[ - (data_prefix + '/share/doc/fdroidserver/examples', - ['buildserver/config.buildserver.py', - 'examples/config.py', - 'examples/fdroid-icon.png', - 'examples/makebuildserver.config.py', - 'examples/opensc-fdroid.cfg', - 'examples/public-read-only-s3-bucket-policy.json', - 'examples/template.yml']), - ], + scripts=['fdroid', 'makebuildserver'], + data_files=get_data_files(), python_requires='>=3.4', + cmdclass={'versioncheck': VersionCheckCommand}, + setup_requires=[ + 'babel', + ], install_requires=[ 'clint', 'GitPython', @@ -54,6 +92,7 @@ setup(name='fdroidserver', 'pyasn1-modules', 'python-vagrant', 'PyYAML', + 'qrcode', 'ruamel.yaml >= 0.13', 'requests >= 2.5.2, != 2.11.0, != 2.12.2, != 2.18.0', 'docker-py >= 1.9, < 2.0',