contrib/packaging/hgpackaging/pyoxidizer.py
changeset 47209 d09b36f69180
parent 47208 df1767fa822d
child 47210 73f1a10320d1
equal deleted inserted replaced
47208:df1767fa822d 47209:d09b36f69180
    66         cwd=str(source_dir),
    66         cwd=str(source_dir),
    67         check=True,
    67         check=True,
    68     )
    68     )
    69 
    69 
    70 
    70 
    71 def create_pyoxidizer_install_layout(
    71 def run_pyoxidizer(
    72     source_dir: pathlib.Path,
    72     source_dir: pathlib.Path, build_dir: pathlib.Path, target_triple: str,
    73     build_dir: pathlib.Path,
    73 ) -> pathlib.Path:
    74     out_dir: pathlib.Path,
    74     """Run `pyoxidizer` in an environment with access to build dependencies.
    75     target_triple: str,
       
    76 ):
       
    77     """Build Mercurial with PyOxidizer and copy additional files into place.
       
    78 
    75 
    79     After successful completion, ``out_dir`` contains files constituting a
    76     Returns the output directory that pyoxidizer would have used for build
    80     Mercurial install.
    77     artifacts. Actual build artifacts are likely in a sub-directory with the
       
    78     name of the pyoxidizer build target that was built.
    81     """
    79     """
    82     # We need to make gettext binaries available for compiling i18n files.
    80     # We need to make gettext binaries available for compiling i18n files.
    83     gettext_pkg, gettext_entry = download_entry('gettext', build_dir)
    81     gettext_pkg, gettext_entry = download_entry('gettext', build_dir)
    84     gettext_dep_pkg = download_entry('gettext-dep', build_dir)[0]
    82     gettext_dep_pkg = download_entry('gettext-dep', build_dir)[0]
    85 
    83 
   105         "--target-triple",
   103         "--target-triple",
   106         target_triple,
   104         target_triple,
   107     ]
   105     ]
   108 
   106 
   109     subprocess.run(args, env=env, check=True)
   107     subprocess.run(args, env=env, check=True)
       
   108 
       
   109     return source_dir / "build" / "pyoxidizer" / target_triple / "release"
       
   110 
       
   111 
       
   112 def create_pyoxidizer_install_layout(
       
   113     source_dir: pathlib.Path,
       
   114     build_dir: pathlib.Path,
       
   115     out_dir: pathlib.Path,
       
   116     target_triple: str,
       
   117 ):
       
   118     """Build Mercurial with PyOxidizer and copy additional files into place.
       
   119 
       
   120     After successful completion, ``out_dir`` contains files constituting a
       
   121     Mercurial install.
       
   122     """
       
   123 
       
   124     run_pyoxidizer(source_dir, build_dir, target_triple)
   110 
   125 
   111     if "windows" in target_triple:
   126     if "windows" in target_triple:
   112         target = "app_windows"
   127         target = "app_windows"
   113     else:
   128     else:
   114         target = "app_posix"
   129         target = "app_posix"