| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- """Mypyc command-line tool.
- Usage:
- $ mypyc foo.py [...]
- $ python3 -c 'import foo' # Uses compiled 'foo'
- This is just a thin wrapper that generates a setup.py file that uses
- mypycify, suitable for prototyping and testing.
- """
- from __future__ import annotations
- import os
- import os.path
- import subprocess
- import sys
- base_path = os.path.join(os.path.dirname(__file__), "..")
- setup_format = """\
- from setuptools import setup
- from mypyc.build import mypycify
- setup(name='mypyc_output',
- ext_modules=mypycify({}, opt_level="{}", debug_level="{}"),
- )
- """
- def main() -> None:
- build_dir = "build" # can this be overridden??
- try:
- os.mkdir(build_dir)
- except FileExistsError:
- pass
- opt_level = os.getenv("MYPYC_OPT_LEVEL", "3")
- debug_level = os.getenv("MYPYC_DEBUG_LEVEL", "1")
- setup_file = os.path.join(build_dir, "setup.py")
- with open(setup_file, "w") as f:
- f.write(setup_format.format(sys.argv[1:], opt_level, debug_level))
- # We don't use run_setup (like we do in the test suite) because it throws
- # away the error code from distutils, and we don't care about the slight
- # performance loss here.
- env = os.environ.copy()
- base_path = os.path.join(os.path.dirname(__file__), "..")
- env["PYTHONPATH"] = base_path + os.pathsep + env.get("PYTHONPATH", "")
- cmd = subprocess.run([sys.executable, setup_file, "build_ext", "--inplace"], env=env)
- sys.exit(cmd.returncode)
- if __name__ == "__main__":
- main()
|