From eae28f9b38f631d027e697e0a7f91b2847667298 Mon Sep 17 00:00:00 2001 From: Hydrus Network Developer Date: Tue, 13 Apr 2021 23:34:16 -0500 Subject: [PATCH] Create pyoxidizer.bzl --- pyoxidizer.bzl | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 pyoxidizer.bzl diff --git a/pyoxidizer.bzl b/pyoxidizer.bzl new file mode 100644 index 00000000..d401b612 --- /dev/null +++ b/pyoxidizer.bzl @@ -0,0 +1,63 @@ +def make_dist(): + return default_python_distribution() + +def make_packaging_policy(dist): + policy = dist.make_python_packaging_policy() + policy.set_resource_handling_mode("files") + policy.resources_location = "filesystem-relative:lib" + policy.allow_files = True + policy.bytecode_optimize_level_zero = True + + return policy + +def make_client(dist, policy): + python_config = dist.make_python_interpreter_config() + python_config.module_search_paths = ["$ORIGIN", "$ORIGIN/lib"] + python_config.filesystem_importer = True + python_config.sys_frozen = True + python_config.run_command = "import os; import sys; exec(open(os.path.join(os.path.split(sys.executable)[0], 'client.py')).read())" + + client = dist.to_python_executable( + name="client", + packaging_policy=policy, + config=python_config, + ) + + client.add_python_resources(client.pip_install(["--prefer-binary", "-r", "requirements.txt"])) + + return client + +def make_embedded_resources(client): + return client.to_embedded_resources() + +def make_install(client, resources): + files = FileManifest() + files.add_python_resource(".", client) + + static_resources = glob(["./*.py", "./*.md", "./*txt", "./static/**/*", "./help/**/*"], strip_prefix="{}/".format(CWD)) + files.add_manifest(static_resources) + + hydrus_source = glob(["./hydrus/**/*.py"], strip_prefix="{}/".format(CWD)) + files.add_manifest(hydrus_source) + + return files + +print(BUILD_TARGET_TRIPLE) +print(CWD) + +# Tell PyOxidizer about the build targets defined above. +register_target("dist", make_dist) +register_target("policy", make_packaging_policy, depends=["dist"]) +register_target("client", make_client, depends=["dist", "policy"]) +register_target("resources", make_embedded_resources, depends=["client"], default_build_script=True) +register_target("install", make_install, depends=["client", "resources"], default=True) + +resolve_targets() + +# END OF COMMON USER-ADJUSTED SETTINGS. +# +# Everything below this is typically managed by PyOxidizer and doesn't need +# to be updated by people. + +PYOXIDIZER_VERSION = "0.10.3" +PYOXIDIZER_COMMIT = "UNKNOWN" \ No newline at end of file