From ea9c274cf4c4b59f48a943aea5532500505f858f Mon Sep 17 00:00:00 2001 From: Reid 'arrdem' McKenzie Date: Mon, 9 Aug 2021 09:26:06 -0600 Subject: [PATCH] Zapp! v0.1.0 --- .gitignore | 20 +++ README.md | 130 ++++++++++++++++++++ WORKSPACE | 34 ++++++ example/BUILD | 22 ++++ example/WORKSPACE | 40 ++++++ example/hello.py | 18 +++ example/requirements.txt | 1 + zapp.jpg | Bin 0 -> 130413 bytes zapp/BUILD | 25 ++++ zapp/__main__.py | 133 ++++++++++++++++++++ zapp/compiler/__main__.py | 153 +++++++++++++++++++++++ zapp/support/manifest.py | 17 +++ zapp/support/unpack.py | 57 +++++++++ zapp/zapp.bzl | 249 ++++++++++++++++++++++++++++++++++++++ 14 files changed, 899 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 WORKSPACE create mode 100644 example/BUILD create mode 100644 example/WORKSPACE create mode 100644 example/hello.py create mode 100644 example/requirements.txt create mode 100644 zapp.jpg create mode 100644 zapp/BUILD create mode 100644 zapp/__main__.py create mode 100644 zapp/compiler/__main__.py create mode 100644 zapp/support/manifest.py create mode 100644 zapp/support/unpack.py create mode 100644 zapp/zapp.bzl diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..794a7f3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +.DS_Store +.cache +.dev +.dev +.idea +/**/#* +/**/*.egg-info +/**/*.log +/**/*.pyc +/**/*.pyc +/**/*.pyo +/**/.#* +/**/.mypy* +/**/.hypothesis* +/**/__pychache__ +/**/_build +/**/_public +/**/build +/**/dist +bazel-* diff --git a/README.md b/README.md new file mode 100644 index 0000000..1eb8b41 --- /dev/null +++ b/README.md @@ -0,0 +1,130 @@ +# Zapp +Spaceman spiff sets his zorcher to shake and bake + +Zapp is a comically-named tool for making Python [zipapps](https://www.python.org/dev/peps/pep-0441/). + +Zipapps or zapps as we call them (hence the raygun theme) are packagings of Python programs into zip files. It's +comparable to [Pex](https://github.com/pantsbuild/pex/), [Subpar](https://github.com/google/subpar/) and +[Shiv](https://github.com/linkedin/shiv/) in intent, but shares the most with Subpar in particulars as like subpar Zapp +is designed for use with Bazel (and is co-developed with appropriate Bazel build rules). + +## A quick overview of zipapps + +A Python zipapp is a file with two parts - a "plain" text file with a "shebang" specifying a Python interpreter, followed by a ZIP formatted archive after the newline. +This is (for better or worse) a valid ZIP format archive, as the specification does not preclude prepended data. + +When Python encounters a zipapp, it assumes you meant `PYTHONPATH=your.zip -m __main__`. +See [the upstream docs](https://docs.python.org/3/library/zipapp.html#the-python-zip-application-archive-format). +So not only must `zapp` generate a prefix script, it needs to insert a `__main__.py` that'll to your application. + +## A quick overview of zapp + +Zapp is really two artifacts - `zapp.bzl` which defines `rules_python` (`zapp_binary`, `zapp_test`) macros and implementations. +These Bazel macros work together with the `zappc` "compiler" to make producing zapps from Bazel convenient. + +## A demo + +So let's give zapp a spin + +``` shellsession +$ cd examples +$ cat WORKSPACE +workspace( + name = "zapp_examples", +) + +# ... + +git_repository( + name = "rules_zapp", + remote = "https://github.com/arrdem/rules_zapp.git", + tag = "0.1.0", +) + +$ cat BUILD +load("@rules_zapp//zapp:zapp.bzl", + "zapp_binary", +) + +# ... + +zapp_binary( + name = "hello_deps", + main = "hello.py", + deps = [ + py_requirement("pyyaml"), + ] +) + +``` + +In this directory there's a couple of `hello_*` targets that are variously zapped. This one uses an external dependency via `rules_python`'s `py_requirement` machinery. + +Let's try `bazel build :hello_deps` to see how it gets zapped. + +``` shellsession +$ bazel build :hello_deps +INFO: Analyzed target //:hello_deps (21 packages loaded, 74 targets configured). +INFO: Found 1 target... +INFO: From Building zapp file //:hello_deps: +{'manifest': {'entry_point': 'hello', + 'prelude_points': ['zapp.support.unpack:unpack_deps'], + 'shebang': '/usr/bin/env python3', + 'sources': {'__init__.py': None, + 'hello.py': 'hello.py', + 'zapp/__init__.py': None, + 'zapp/support/__init__.py': None, + 'zapp/support/manifest.py': 'external/rules_zapp/zapp/support/manifest.py', + 'zapp/support/unpack.py': 'external/rules_zapp/zapp/support/unpack.py', + 'zapp/manifest.json': 'bazel-out/k8-fastbuild/bin/hello_deps.zapp-manifest.json'}, + 'wheels': {'PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl': {'hashes': [], + 'source': 'external/my_deps/pypi__pyyaml/PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl'}}, + 'zip_safe': True}, + 'opts': {'debug': True, + 'manifest': 'bazel-out/k8-fastbuild/bin/hello_deps.zapp-manifest.json', + 'output': 'bazel-out/k8-fastbuild/bin/hello_deps'}} +Target //:hello_deps up-to-date: + bazel-bin/hello_deps +INFO: Elapsed time: 0.749s, Critical Path: 0.15s +INFO: 9 processes: 8 internal, 1 linux-sandbox. +INFO: Build completed successfully, 9 total actions +``` + +Here, I've got the `zapp` compiler configured to debug what it's doing. +This is a bit unusual, but it's convenient for peeking under the hood. + +The manifest which `zapp` consumes describes the relocation of files (and wheels, more on that in a bit) from the Bazel source tree per python `import = [...]` specifiers to locations in the container/logical filesystem within the zip archive. + +We can see that the actual `hello.py` file (known as `projects/zapp/hello.py` within the repo) is being mapped into the zip archive without relocation. + +We can also see that a `PyYAML` wheel is marked for inclusion in the archive. + +If we run the produced zipapp - + +``` shellsession +$ bazel run :hello_deps +INFO: Analyzed target //projects/zapp/example:hello_deps (0 packages loaded, 0 targets configured). +INFO: Found 1 target... +Target //projects/zapp/example:hello_deps up-to-date: + bazel-bin/projects/zapp/example/hello_deps +INFO: Elapsed time: 0.068s, Critical Path: 0.00s +INFO: 1 process: 1 internal. +INFO: Build completed successfully, 1 total action +INFO: Build completed successfully, 1 total action + - /home/arrdem/.cache/zapp/wheels/PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl + - /home/arrdem/.cache/bazel/_bazel_arrdem/6259d2555f41e1db0292a7d7f00f78ca/execroot/arrdem_source/bazel-out/k8-fastbuild/bin/projects/zapp/example/hello_deps + - /usr/lib/python39.zip + - /usr/lib/python3.9 + - /usr/lib/python3.9/lib-dynload + - /home/arrdem/.virtualenvs/source/lib/python3.9/site-packages +hello, world! +I have YAML! and nothing to do with it. /home/arrdem/.cache/zapp/wheels/PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl/yaml/__init__.py +``` + +Here we can see that zapp when executed unpacked the wheel into a cache, inserted that cached wheel into the `sys.path`, and correctly delegated to our `hello.py` script, which was able to `import yaml` from the packaged wheel! 🎉 + +## License + +Copyright Reid 'arrdem' McKenzie August 2021. + +Published under the terms of the MIT license. diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 0000000..a4852ce --- /dev/null +++ b/WORKSPACE @@ -0,0 +1,34 @@ +# WORKSPACE +# +# This file exists to configure the Bazel (https://bazel.build/) build tool to our needs. +# Particularly, it installs rule definitions and other capabilities which aren't in Bazel core. +# In the future we may have our own modifications to this config. + +# Install the blessed Python and PyPi rule support +# From https://github.com/bazelbuild/rules_python + +workspace( + name = "rules_zapp", +) + +load( + "@bazel_tools//tools/build_defs/repo:git.bzl", + "git_repository", +) + +#################################################################################################### +# Skylib +#################################################################################################### +git_repository( + name = "bazel_skylib", + remote = "https://github.com/bazelbuild/bazel-skylib.git", + tag = "1.0.3", +) +load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") +bazel_skylib_workspace() + +git_repository( + name = "rules_python", + remote = "https://github.com/bazelbuild/rules_python.git", + tag = "0.3.0", +) diff --git a/example/BUILD b/example/BUILD new file mode 100644 index 0000000..1b829b9 --- /dev/null +++ b/example/BUILD @@ -0,0 +1,22 @@ +load("@rules_zapp//zapp:zapp.bzl", + "zapp_binary", +) + +load("@my_deps//:requirements.bzl", + py_requirement="requirement", +) + +zapp_binary( + name = "hello_script", + main = "hello.py", + # entry_point is inferred from main = +) + +zapp_binary( + name = "hello_deps", + main = "hello.py", + # deps also get zapped via their underlying wheels + deps = [ + py_requirement("pyyaml"), + ] +) diff --git a/example/WORKSPACE b/example/WORKSPACE new file mode 100644 index 0000000..813805d --- /dev/null +++ b/example/WORKSPACE @@ -0,0 +1,40 @@ +# WORKSPACE + +workspace( + name = "zapp_examples", +) + +load( + "@bazel_tools//tools/build_defs/repo:git.bzl", + "git_repository", +) + +#################################################################################################### +# Skylib +#################################################################################################### +git_repository( + name = "bazel_skylib", + remote = "https://github.com/bazelbuild/bazel-skylib.git", + tag = "1.0.3", +) +load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") +bazel_skylib_workspace() + +git_repository( + name = "rules_python", + remote = "https://github.com/bazelbuild/rules_python.git", + tag = "0.3.0", +) + +git_repository( + name = "rules_zapp", + remote = "https://github.com/arrdem/rules_zapp.git", + tag = "0.1.0", +) + +load("@rules_python//python:pip.bzl", "pip_install") + +pip_install( + name = "my_deps", + requirements = "//:requirements.txt", +) diff --git a/example/hello.py b/example/hello.py new file mode 100644 index 0000000..6f8db37 --- /dev/null +++ b/example/hello.py @@ -0,0 +1,18 @@ +import sys + + +def main(): + for e in sys.path: + print(" -", e) + + print("hello, world!") + + try: + import yaml + print("I have YAML! and nothing to do with it.", yaml.__file__) + except ImportError: + print("Don't have YAML.") + + +if __name__ == "__main__": + main() diff --git a/example/requirements.txt b/example/requirements.txt new file mode 100644 index 0000000..932bd69 --- /dev/null +++ b/example/requirements.txt @@ -0,0 +1 @@ +PyYAML==5.4.1 diff --git a/zapp.jpg b/zapp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..29e5286ac9ca5266d1c1777fc44704909fa1bcba GIT binary patch literal 130413 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 z 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 DRGWwI literal 0 HcmV?d00001 diff --git a/zapp/BUILD b/zapp/BUILD new file mode 100644 index 0000000..e793a7e --- /dev/null +++ b/zapp/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +load("zapp.bzl", "zapp_binary") + +# Bootstrapping Zapp using py_binary +py_binary( + name = "zappc", + main = "compiler/__main__.py", + srcs = ["compiler/__main__.py"], +) + +# Zapp plugins used as a runtime library by rules_zapp +py_library( + name = "zapp_support", + srcs = glob(["support/**/*.py"]), + imports = [ + "..", + ] +) + +# For testing of zappc +zapp_binary( + name = "zappzappc", + main = "compiler/__main__.py", +) diff --git a/zapp/__main__.py b/zapp/__main__.py new file mode 100644 index 0000000..7114c14 --- /dev/null +++ b/zapp/__main__.py @@ -0,0 +1,133 @@ +""" +The Zapp compiler. +""" + +import argparse +import io +import json +import os +import sys +import zipfile +import pathlib +import stat + +parser = argparse.ArgumentParser(description="The (bootstrap) Zapp compiler") +parser.add_argument("-o", "--out", dest="output", help="Output target file") +parser.add_argument("-d", "--debug", dest="debug", action="store_true", default=False) +parser.add_argument("manifest", help="The (JSON) manifest") + + +MAIN_TEMPLATE = """\ +# -*- coding: utf-8 -*- + +\"\"\"Zapp-generated __main__\""\" + +from importlib import import_module +# FIXME: This is absolutely implementation details. +# Execing would be somewhat nicer +from runpy import _run_module_as_main + +for script in {scripts!r}: + print(script) + mod, sep, fn = script.partition(':') + mod_ok = all(part.isidentifier() for part in mod.split('.')) + fn_ok = all(part.isidentifier() for part in fn.split('.')) + + if not mod_ok: + raise RuntimeError("Invalid module reference {{!r}}".format(mod)) + if fn and not fn_ok: + raise RuntimeError("Invalid function reference {{!r}}".format(fn)) + + if mod and fn and False: + mod = import_module(mod) + getattr(mod, fn)() + else: + _run_module_as_main(mod) +""" + + +def make_dunder_main(manifest): + """Generate a __main__.py file for the given manifest.""" + + prelude = manifest.get("prelude_points", []) + main = manifest.get("entry_point") + scripts = prelude + [main] + return MAIN_TEMPLATE.format(**locals()) + + +def dir_walk_prefixes(path): + """Helper. Walk all slices of a path.""" + + segments = [] + yield "" + for segment in path.split("/"): + segments.append(segment) + yield os.path.join(*segments) + + +def generate_dunder_inits(manifest): + """Hack the manifest to insert __init__ files as needed.""" + + sources = manifest["sources"] + + for input_file in list(sources.keys()): + for path in dir_walk_prefixes(os.path.dirname(input_file)): + init_file = os.path.join(path, "__init__.py") + if init_file not in sources: + sources[init_file] = "" + + return manifest + + +def generate_manifest(opts, manifest): + """Insert the manifest.json file.""" + + manifest["sources"]["zapp/manifest.json"] = opts.manifest + + return manifest + + +def main(): + opts, args = parser.parse_known_args() + + with open(opts.manifest) as fp: + manifest = json.load(fp) + + manifest = generate_manifest(opts, manifest) + # Patch the manifest to insert needed __init__ files + # NOTE: This has to be the LAST thing we do + manifest = generate_dunder_inits(manifest) + + if opts.debug: + from pprint import pprint + pprint({ + "opts": {k: getattr(opts, k) for k in dir(opts) if not k.startswith("_")}, + "manifest": manifest + }) + + with open(opts.output, 'w') as zapp: + shebang = "#!" + manifest["shebang"] + "\n" + zapp.write(shebang) + + # Now we're gonna build the zapp from the manifest + with zipfile.ZipFile(opts.output, 'a') as zapp: + + # Append the __main__.py generated record + zapp.writestr("__main__.py", make_dunder_main(manifest)) + + # Append user-specified sources + for dest, src in manifest["sources"].items(): + if src == "": + zapp.writestr(dest, "") + else: + zapp.write(src, dest) + + # Append user-specified libraries + # FIXME + + zapp = pathlib.Path(opts.output) + zapp.chmod(zapp.stat().st_mode | stat.S_IEXEC) + + +if __name__ == "__main__" or 1: + main() diff --git a/zapp/compiler/__main__.py b/zapp/compiler/__main__.py new file mode 100644 index 0000000..7e31000 --- /dev/null +++ b/zapp/compiler/__main__.py @@ -0,0 +1,153 @@ +""" +The Zapp compiler. +""" + +import argparse +import io +import json +import os +import sys +import zipfile +import pathlib +import stat + +parser = argparse.ArgumentParser(description="The (bootstrap) Zapp compiler") +parser.add_argument("-o", "--out", dest="output", help="Output target file") +parser.add_argument("-d", "--debug", dest="debug", action="store_true", default=False) +parser.add_argument("manifest", help="The (JSON) manifest") + + +MAIN_TEMPLATE = """\ +# -*- coding: utf-8 -*- + +\"\"\"Zapp-generated __main__\""\" + +from importlib import import_module +import os +import sys +# FIXME: This is absolutely implementation details. +# Execing would be somewhat nicer +from runpy import _run_module_as_main + +for script in {scripts!r}: + mod, sep, fn = script.partition(':') + mod_ok = all(part.isidentifier() for part in mod.split('.')) + fn_ok = all(part.isidentifier() for part in fn.split('.')) + + if not mod_ok: + raise RuntimeError("Invalid module reference {{!r}}".format(mod)) + if fn and not fn_ok: + raise RuntimeError("Invalid function reference {{!r}}".format(fn)) + + if mod and fn: + mod = import_module(mod) + getattr(mod, fn)() + else: + _run_module_as_main(mod) +""" + + +def make_dunder_main(manifest): + """Generate a __main__.py file for the given manifest.""" + + prelude = manifest.get("prelude_points", []) + main = manifest.get("entry_point") + scripts = prelude + [main] + return MAIN_TEMPLATE.format(**locals()) + +def dir_walk_prefixes(path): + """Helper. Walk all slices of a path.""" + + segments = [] + yield "" + for segment in path.split("/"): + segments.append(segment) + yield os.path.join(*segments) + + +def generate_dunder_inits(manifest): + """Hack the manifest to insert __init__ files as needed.""" + + sources = manifest["sources"] + + for input_file in list(sources.keys()): + for path in dir_walk_prefixes(os.path.dirname(input_file)): + init_file = os.path.join(path, "__init__.py") + if init_file not in sources: + sources[init_file] = None + + return manifest + + +def insert_manifest_json(opts, manifest): + """Insert the manifest.json file.""" + + manifest["sources"]["zapp/manifest.json"] = opts.manifest + + return manifest + + +def enable_unzipping(manifest): + """Inject unzipping behavior as needed.""" + + if manifest["wheels"]: + manifest["prelude_points"].append("zapp.support.unpack:unpack_deps") + + # FIXME: + # if not manifest["zip_safe"]: + # enable a similar injection for unzipping + + return manifest + + +def main(): + opts, args = parser.parse_known_args() + + with open(opts.manifest) as fp: + manifest = json.load(fp) + + manifest = insert_manifest_json(opts, manifest) + manifest = enable_unzipping(manifest) + # Patch the manifest to insert needed __init__ files + # NOTE: This has to be the LAST thing we do + manifest = generate_dunder_inits(manifest) + + if opts.debug: + from pprint import pprint + pprint({ + "opts": {k: getattr(opts, k) for k in dir(opts) if not k.startswith("_")}, + "manifest": manifest + }) + + with open(opts.output, 'w') as zapp: + shebang = "#!" + manifest["shebang"] + "\n" + zapp.write(shebang) + + if "__main__.py" in manifest["sources"]: + print("Error: __main__.py conflict.", file=sys.stderr) + exit(1) + + # Now we're gonna build the zapp from the manifest + with zipfile.ZipFile(opts.output, 'a') as zapp: + + # Append the __main__.py generated record + zapp.writestr("__main__.py", make_dunder_main(manifest)) + + # Append user-specified sources + for dest, src in sorted(manifest["sources"].items(), + key=lambda x: x[0]): + if src is None: + zapp.writestr(dest, "") + else: + zapp.write(src, dest) + + # Append user-specified libraries + for whl, config in manifest["wheels"].items(): + zapp.write(config["source"], ".deps/" + whl) + + zapp = pathlib.Path(opts.output) + zapp.chmod(zapp.stat().st_mode | stat.S_IEXEC) + + +if __name__ == "__main__" or 1: + main() diff --git a/zapp/support/manifest.py b/zapp/support/manifest.py new file mode 100644 index 0000000..0de064f --- /dev/null +++ b/zapp/support/manifest.py @@ -0,0 +1,17 @@ +"""The Zapp runtime manifest API.""" + +from copy import deepcopy +from importlib.resources import open_text +import json + +with open_text("zapp", "manifest.json") as fp: + _MANIFEST = json.load(fp) + + +def manifest(): + """Return (a copy) of the runtime manifest.""" + + return deepcopy(_MANIFEST) + + +__all__ = ["manifest"] diff --git a/zapp/support/unpack.py b/zapp/support/unpack.py new file mode 100644 index 0000000..41d94d2 --- /dev/null +++ b/zapp/support/unpack.py @@ -0,0 +1,57 @@ +"""Conditionally unpack a zapp (and its deps).""" + +import sys +import os +from pathlib import Path +from zipfile import ZipFile + +from .manifest import manifest + + +MANIFEST = manifest() + + +def cache_root() -> Path: + return Path(os.path.join(os.path.expanduser("~"))) / ".cache" / "zapp" + + +def cache_wheel_root(): + return cache_root() / "wheels" + + +def cache_wheel_path(wheel: str) -> Path: + return cache_wheel_root() / wheel + + +def cache_zapp_root(): + return cache_root() / "zapps" + + +def cache_zapp_path(fingerprint): + return cache_zapp_root() / fingerprint + + +def unpack_deps(): + """Unpack deps, populating and updating the host's cache.""" + + # Create the cache dir as needed + cache_wheel_root().mkdir(parents=True, exist_ok=True) + + # For each wheel, touch the existing cached wheel or unpack this one. + with ZipFile(sys.argv[0], "r") as zf: + for whl, config in MANIFEST["wheels"].items(): + cached_whl = cache_wheel_path(whl) + if cached_whl.exists(): + cached_whl.touch() + + else: + with open(cached_whl, "wb") as of: + of.write(zf.read(".deps/" + whl)) + + sys.path.insert(0, str(cached_whl)) + + +def main(): + """Inspect the manifest.""" + + unpack_deps() diff --git a/zapp/zapp.bzl b/zapp/zapp.bzl new file mode 100644 index 0000000..5159faf --- /dev/null +++ b/zapp/zapp.bzl @@ -0,0 +1,249 @@ +""" +An implementation of driving zappc from Bazel. +""" + + +load("@rules_python//python:defs.bzl", "py_library", "py_binary") + + +DEFAULT_COMPILER = "@rules_zapp//zapp:zappc" +DEFAULT_RUNTIME = "@rules_zapp//zapp:zapp_support" + + +def _store_path(path, ctx, imports): + """Given a path, prepend the workspace name as the zappent directory""" + + # It feels like there should be an easier, less fragile way. + if path.startswith("../"): + # External workspace, for example + # '../protobuf/python/google/protobuf/any_pb2.py' + stored_path = path[len("../"):] + + elif path.startswith("external/"): + # External workspace, for example + # 'external/protobuf/python/__init__.py' + stored_path = path[len("external/"):] + + else: + # Main workspace, for example 'mypackage/main.py' + # stored_path = ctx.workspace_name + "/" + path + stored_path = path + + matching_prefix = None + for i in imports: + if stored_path.startswith(i): + stored_path = stored_path[len(i):] + matching_prefix = i + break + + stored_path = stored_path.lstrip("/") + + return stored_path + + +def _check_script(point, sources_map): + """Check that a given 'script' (eg. module:fn ref.) maps to a file in sources.""" + + fname = point.split(":")[0].replace(".", "/") + ".py" + if fname not in sources_map: + fail("Point %s (%s) is not a known source!" % (fname, sources_map)) + + +def _zapp_impl(ctx): + """Implementation of zapp() rule""" + + # TODO: Take wheels and generate a .deps/ tree of them, filtering whl/pypi source files from srcs + whls = [] + for lib in ctx.attr.wheels: + for f in lib.data_runfiles.files.to_list(): + whls.append(f) + + # TODO: also handle ctx.attr.src.data_runfiles.symlinks + srcs = [ + f for f in ctx.attr.src.default_runfiles.files.to_list() + ] + + # Find the list of directories to add to sys + import_roots = [ + r for r in ctx.attr.src[PyInfo].imports.to_list() + ] + + for r0 in import_roots: + for r1 in import_roots: + if r0 == r1: + continue + elif r0.startswith(r1): + fail("Import root conflict between %s and %s" % r0, r1) + + # Dealing with main + main_py_file = ctx.files.main + main_py_ref = ctx.attr.entry_point + if main_py_ref and main_py_file: + fail("Only one of `main` or `entry_point` should be specified") + elif main_py_ref: + # Compute a main module + main_py_file = main_py_ref.split(":")[0].replace(".", "/") + ".py" + elif main_py_file: + # Compute a main module reference + if len(main_py_file) > 1: + fail("Expected exactly one .py file, found these: %s" % main_py_file) + main_py_file = main_py_file[0] + if main_py_file not in ctx.attr.src.data_runfiles.files.to_list(): + fail("Main entry point [%s] not listed in srcs" % main_py_file, "main") + + # Compute the -m <> equivalent for the 'main' module + main_py_ref = _store_path(main_py_file.path, ctx, import_roots).replace(".py", "").replace("/", ".") + + # Make a manifest of files to store in the .zapp file. The + # runfiles manifest is not quite right, so we make our own. + sources_map = {} + + # Now add the regular (source and generated) files + for input_file in srcs: + stored_path = _store_path(input_file.short_path, ctx, import_roots) + if stored_path: + local_path = input_file.path + if stored_path in sources_map and sources_map[stored_path] != '': + fail("File path conflict between %s and %s" % sources_map[stored_path], local_path) + + sources_map[stored_path] = local_path + + _check_script(main_py_ref, sources_map) + for p in ctx.attr.prelude_points: + _check_script(p, sources_map) + + if "__main__.py" in sources_map: + fail("__main__.py conflict:", + sources_map["__main__.py"], + "conflicts with required generated __main__.py") + + # Write the list to the manifest file + manifest_file = ctx.actions.declare_file(ctx.label.name + ".zapp-manifest.json") + ctx.actions.write( + output = manifest_file, + content = json.encode({ + "shebang": ctx.attr.shebang, + "sources": sources_map, + "zip_safe": ctx.attr.zip_safe, + "prelude_points": ctx.attr.prelude_points, + "entry_point": main_py_ref, + "wheels": {w.path.split("/")[-1]: {"hashes": [], "source": w.path} for w in whls}, + }), + is_executable = False, + ) + + # Run compiler + ctx.actions.run( + inputs = [ + manifest_file, + ] + srcs + whls, + tools = [], + outputs = [ctx.outputs.executable], + progress_message = "Building zapp file %s" % ctx.label, + executable = ctx.executable.compiler, + arguments = [ + "--debug", + "-o", ctx.outputs.executable.path, + manifest_file.path + ], + mnemonic = "PythonCompile", + use_default_shell_env = True, + ) + + # .zapp file itself has no runfiles and no providers + return [] + + +zapp = rule( + attrs = { + "src": attr.label(mandatory = True), + "main": attr.label(allow_single_file = True), + "wheels": attr.label_list(), + "entry_point": attr.string(), + "prelude_points": attr.string_list(), + "compiler": attr.label( + default = Label(DEFAULT_COMPILER), + executable = True, + cfg = "host", + ), + "shebang": attr.string(default = "/usr/bin/env python3"), + "zip_safe": attr.bool(default = True), + "root_import": attr.bool(default = False), + }, + executable = True, + implementation = _zapp_impl, +) + + +def zapp_binary(name, + main=None, + entry_point=None, + prelude_points=[], + deps=[], + imports=[], + test=False, + compiler=None, + zip_safe=True, + **kwargs): + """A self-contained, single-file Python program, with a .zapp file extension. + + Args: + Same as py_binary, but accepts some extra args - + + entry_point: + The script to run as the main. + + prelude_points: + Additional scripts (zapp middlware) to run before main. + + compiler: + Lable identifying the zapp compiler to use. You shouldn't need to change this. + + zip_safe: + Whether to import Python code and read datafiles directly from the zip + archive. Otherwise, if False, all files are extracted to a temporary + directory on disk each time the zapp file executes. + """ + + srcs = kwargs.pop("srcs", []) + if main and main not in srcs: + srcs.append(main) + + whls = [] + src_deps = [] + for d in deps: + if d.find("//pypi__") != -1: + whls.append(d + ":whl") + else: + src_deps.append(d) + + py_library( + name = name + ".whls", + data = whls, + ) + + py_library( + name = name + ".lib", + srcs = srcs, + deps = (src_deps or []) + [DEFAULT_RUNTIME], + imports = imports, + **kwargs + ) + + zapp( + name = name, + src = name + ".lib", + compiler = compiler, + main = main, + entry_point = entry_point, + prelude_points = prelude_points, + zip_safe = zip_safe, + wheels = [name + ".whls"], + ) + + +def zapp_test(name, **kwargs): + """Same as zapp_binary, just sets the test=True bit.""" + + kwargs.pop("test") + zapp_binary(name, test=True, **kwargs)