-
Sybren A. Stüvel authoredSybren A. Stüvel authored
setup.py 3.00 KiB
#!/usr/bin/env python
from pathlib import Path
import collections
import setuptools
import sys
import zipfile
from distutils.cmd import Command
from distutils.errors import DistutilsOptionError
from distutils import dir_util, log
sys.dont_write_bytecode = True
# noinspection PyAttributeOutsideInit
class ZipCommand(Command):
"""Ensures that 'setup.py dist' creates a zip file with a wheel and other useful stuff."""
description = "create a zip with a wheel and other useful files"
user_options = [
('dist-dir=', 'd',
"directory to put the archive in "
"[default: dist]"),
]
def initialize_options(self):
self.dist_dir = None
def finalize_options(self):
if self.dist_dir is None:
self.dist_dir = "dist"
def run(self):
self.run_command('bdist_wheel')
if not self.distribution.dist_files:
msg = "No dist file created, even though we ran 'bdist_wheel' ourselves."
raise DistutilsOptionError(msg)
base_dir = Path(self.distribution.get_fullname())
zip_base = Path(self.dist_dir) / base_dir
zip_name = zip_base.with_name(zip_base.name + '.zip')
log.info('Creating ZIP file %s', zip_name)
with zipfile.ZipFile(str(zip_name), mode='w') as archive:
def add_to_root(fname: Path):
log.info(' adding %s', fname.name)
archive.write(str(fname), fname.name)
for command, pyversion, filename in self.distribution.dist_files:
add_to_root(Path(filename))
add_to_root(Path('flamenco-worker.cfg'))
add_to_root(Path('LICENSE.txt'))
add_to_root(Path('README.md'))
paths = collections.deque([Path('system-integration')])
while paths:
this_path = paths.popleft()
if this_path.is_dir():
paths.extend(this_path.iterdir())
continue
log.info(' adding %s', this_path)
archive.write(str(this_path), str(this_path))
if __name__ == '__main__':
setuptools.setup(
cmdclass={'zip': ZipCommand},
name='flamenco-worker',
version='2.0-beta10-worker6',
description='Flamenco Worker implementation',
author='Sybren A. Stüvel',
author_email='sybren@blender.studio',
packages=setuptools.find_packages(),
data_files=[('flamenco_worker', ['README.md', 'LICENSE.txt'])],
license='GPL',
classifiers=[
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 3.5',
],
package_data={'flamenco_worker': ['merge-exr.blend']},
install_requires=[
'attrs >=16.3.0',
'requests>=2.12.4',
],
entry_points={'console_scripts': [
'flamenco-worker = flamenco_worker.cli:main',
]},
zip_safe=False, # due to the bundled merge-exr.blend file.
)