This is used for generating JPEG previews of EXR files. It is assumed that the EXR files are named '######.exr', with any number of leading zeroes. Gaps in the frame range are supported, and will be rendered as black images.
112 lines
3.8 KiB
Python
Executable File
112 lines
3.8 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
from pathlib import Path
|
|
import collections
|
|
import hashlib
|
|
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'))
|
|
add_to_root(Path('CHANGELOG.md'))
|
|
add_to_root(Path('flamenco_worker/resources/merge-exr.blend'))
|
|
add_to_root(Path('flamenco_worker/resources/exr_sequence_to_jpeg.py'))
|
|
|
|
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))
|
|
|
|
# Compute SHA256 checksum of the produced zip file.
|
|
hasher = hashlib.sha256()
|
|
blocksize = 65536
|
|
with zip_name.open(mode='rb') as infile:
|
|
buf = infile.read(blocksize)
|
|
while len(buf) > 0:
|
|
hasher.update(buf)
|
|
buf = infile.read(blocksize)
|
|
checksum_path = zip_name.with_suffix('.sha256')
|
|
log.info('Writing SHA256 checksum to %s', checksum_path)
|
|
with checksum_path.open(mode='w') as shafile:
|
|
print('%s %s' % (hasher.hexdigest(), zip_name.name), file=shafile)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
setuptools.setup(
|
|
cmdclass={'zip': ZipCommand},
|
|
name='flamenco-worker',
|
|
version='2.3-dev0',
|
|
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', 'CHANGELOG.md'])],
|
|
license='GPL',
|
|
classifiers=[
|
|
'Operating System :: OS Independent',
|
|
'Programming Language :: Python',
|
|
'Programming Language :: Python :: 3.7',
|
|
],
|
|
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.
|
|
)
|