| 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"], |
| ) |