fdroid-server/setup.py

106 lines
3.4 KiB
Python
Raw Normal View History

2016-01-04 16:33:20 +01:00
#!/usr/bin/env python3
from setuptools import Command
from setuptools import setup
2017-04-03 14:55:20 +02:00
import os
import re
import subprocess
import sys
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 --sign dist/fdroidserver-%s.tar.gz' % version)
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
2015-07-31 14:47:48 +02:00
with open("README.md", "r") as fh:
long_description = fh.read()
setup(name='fdroidserver',
2019-02-03 15:58:20 +01:00
version='1.2a',
description='F-Droid Server Tools',
long_description=long_description,
long_description_content_type='text/markdown',
author='The F-Droid Project',
2014-01-08 18:17:00 +01:00
author_email='team@f-droid.org',
url='https://f-droid.org',
license='AGPL-3.0',
packages=['fdroidserver', 'fdroidserver.asynchronousfilereader'],
scripts=['fdroid', 'makebuildserver'],
data_files=get_data_files(),
python_requires='>=3.4',
cmdclass={'versioncheck': VersionCheckCommand},
setup_requires=[
'babel',
],
Rewrite scanner logic Initially, the scanner used libmagic which used magic numbers in the file's content to detect what kind of file it appears to be. Since that library isn't available on all systems, we added support for two other libraries, mimetypes amongst them. The issue with mimetypes is that it only uses the file's extension, not its actual content. So this ends in variable behaviour depending on what system you're using fdroidserver on. For example, an executable binary without extension would be ignored if mimetypes was being used. We now drop all libraries - mimetypes too as it depends on the system's mime.types file - and instead check extensions ourselves. On top of that, do a simple binary content check to find binary executables that don't have an extension. The new in-house code without any dependencies doesn't add any new checks, so no builds should break. The current checks still work: % fdroid scanner app.openconnect:1029 [...] Found executable binary at assets/raw/armeabi/curl Found executable binary at assets/raw/mips/curl Found executable binary at assets/raw/x86/curl Found JAR file at lib/XposedBridgeApi-54.jar Found JAR file at libs/acra-4.5.0.jar Found JAR file at libs/openconnect-wrapper.jar Found JAR file at libs/stoken-wrapper.jar Found shared library at libs/armeabi/libopenconnect.so Found shared library at libs/armeabi/libstoken.so Found shared library at libs/mips/libopenconnect.so Found shared library at libs/mips/libstoken.so Found shared library at libs/x86/libopenconnect.so Found shared library at libs/x86/libstoken.so
2015-09-14 07:11:53 +02:00
install_requires=[
'androguard >= 3.1.0rc2, != 3.3.0, != 3.3.1, != 3.3.2',
'clint',
'defusedxml',
'GitPython',
'mwclient',
'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',
2020-04-24 15:31:59 +02:00
'yamllint',
],
extras_require={
'test': ['pyjks'],
},
classifiers=[
2017-07-19 16:12:06 +02:00
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
2017-07-19 16:12:06 +02:00
'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',
2017-07-19 16:12:06 +02:00
'Operating System :: MacOS :: MacOS X',
'Operating System :: Unix',
'Topic :: Utilities',
],
)