load("@rules_shell//shell:sh_test.bzl", "sh_test") load("//python:py_binary.bzl", "py_binary") load("//python:py_library.bzl", "py_library") load("//python:py_test.bzl", "py_test") load("//python/private:bzlmod_enabled.bzl", "BZLMOD_ENABLED") # buildifier: disable=bzl-visibility load("//python/zipapp:py_zipapp_binary.bzl", "py_zipapp_binary") py_binary( name = "venv_bin", srcs = ["main.py"], config_settings = { "//python/config_settings:venvs_site_packages": "yes", } | select({ "@platforms//os:windows": {}, "//conditions:default": { "//python/config_settings:bootstrap_impl": "script", }, }), main = "main.py", deps = [":bin_deps"], ) py_zipapp_binary( name = "venv_zipapp", binary = ":venv_bin", ) py_test( name = "venv_zipapp_test", srcs = ["venv_zipapp_test.py"], data = [":venv_zipapp"], env = { "BZLMOD_ENABLED": str(int(BZLMOD_ENABLED)), "TEST_ZIPAPP": "$(location :venv_zipapp)", }, ) # Create the app with a supported level of compression py_zipapp_binary( name = "venv_zipapp_compressed", binary = ":venv_bin", compression = "4", ) py_test( name = "venv_zipapp_compressed_test", srcs = ["venv_zipapp_test.py"], data = [":venv_zipapp_compressed"], env = { "BZLMOD_ENABLED": str(int(BZLMOD_ENABLED)), "COMPRESSED": "1", "TEST_ZIPAPP": "$(location :venv_zipapp_compressed)", }, main = "venv_zipapp_test.py", ) py_binary( name = "system_python_bin", srcs = ["main.py"], config_settings = { "//python/config_settings:bootstrap_impl": "system_python", "//python/config_settings:venvs_site_packages": "no", }, main = "main.py", deps = [":bin_deps"], ) py_zipapp_binary( name = "system_python_zipapp", binary = ":system_python_bin", ) py_test( name = "system_python_zipapp_test", srcs = ["system_python_zipapp_test.py"], data = [":system_python_zipapp"], env = { "TEST_ZIPAPP": "$(location :system_python_zipapp)", }, ) sh_test( name = "system_python_zipapp_external_bootstrap_test", srcs = ["system_python_zipapp_external_bootstrap_test.sh"], data = [ ":system_python_zipapp", "//python:current_py_toolchain", ], env = { "PYTHON": "$(PYTHON3_ROOTPATH)", "ZIPAPP": "$(location :system_python_zipapp)", }, toolchains = ["//python:current_py_toolchain"], ) py_library( name = "bin_deps", deps = [ ":pkgdep", ":some_dep", ], ) py_library( name = "some_dep", srcs = ["some_dep.py"], experimental_venvs_site_packages = "//python/config_settings:venvs_site_packages", imports = ["."], ) py_library( name = "pkgdep", srcs = glob(["site-packages/**"]), experimental_venvs_site_packages = "//python/config_settings:venvs_site_packages", imports = ["site-packages"], )