This repository has been archived on 2023-02-07. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
flamenco-worker/setup.py

114 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.6",
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",
"pyjwt>=1.7.1",
],
entry_points={
"console_scripts": [
"flamenco-worker = flamenco_worker.cli:main",
]
},
zip_safe=False, # due to the bundled merge-exr.blend file.
)