Mercurial > hg
view rust/hgcli/pyoxidizer.bzl @ 44815:d2741ab1f8b7 stable
tests: show poor error message for `hg cp -A --at-rev . non-existent dst`
Differential Revision: https://phab.mercurial-scm.org/D8495
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Wed, 06 May 2020 11:41:37 -0700 |
parents | 94f4f2ec7dee |
children | 118f067f6bd1 |
line wrap: on
line source
ROOT = CWD + "/../.." # Code to run in Python interpreter. RUN_CODE = "import hgdemandimport; hgdemandimport.enable(); from mercurial import dispatch; dispatch.run()" set_build_path(ROOT + "/build/pyoxidizer") def make_distribution(): return default_python_distribution() def make_distribution_windows(): return default_python_distribution(flavor="standalone_dynamic") def make_exe(dist): config = PythonInterpreterConfig( raw_allocator = "system", run_eval = RUN_CODE, # We want to let the user load extensions from the file system filesystem_importer = True, # We need this to make resourceutil happy, since it looks for sys.frozen. sys_frozen = True, legacy_windows_stdio = True, ) exe = dist.to_python_executable( name = "hg", resources_policy = "prefer-in-memory-fallback-filesystem-relative:lib", config = config, # Extension may depend on any Python functionality. Include all # extensions. extension_module_filter = "all", ) # Add Mercurial to resources. for resource in dist.pip_install(["--verbose", ROOT]): # This is a bit wonky and worth explaining. # # Various parts of Mercurial don't yet support loading package # resources via the ResourceReader interface. Or, not having # file-based resources would be too inconvenient for users. # # So, for package resources, we package them both in the # filesystem as well as in memory. If both are defined, # PyOxidizer will prefer the in-memory location. So even # if the filesystem file isn't packaged in the location # specified here, we should never encounter an errors as the # resource will always be available in memory. if type(resource) == "PythonPackageResource": exe.add_filesystem_relative_python_resource(".", resource) exe.add_in_memory_python_resource(resource) else: exe.add_python_resource(resource) # On Windows, we install extra packages for convenience. if "windows" in BUILD_TARGET_TRIPLE: exe.add_python_resources( dist.pip_install(["-r", ROOT + "/contrib/packaging/requirements_win32.txt"]) ) return exe def make_manifest(dist, exe): m = FileManifest() m.add_python_resource(".", exe) return m def make_embedded_resources(exe): return exe.to_embedded_resources() register_target("distribution_posix", make_distribution) register_target("distribution_windows", make_distribution_windows) register_target("exe_posix", make_exe, depends = ["distribution_posix"]) register_target("exe_windows", make_exe, depends = ["distribution_windows"]) register_target( "app_posix", make_manifest, depends = ["distribution_posix", "exe_posix"], default = "windows" not in BUILD_TARGET_TRIPLE, ) register_target( "app_windows", make_manifest, depends = ["distribution_windows", "exe_windows"], default = "windows" in BUILD_TARGET_TRIPLE, ) 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.7.0"