瀏覽代碼

Give each bootstrap phase its own subdirectory

default_compile_flags
vector-of-bool 5 年之前
父節點
當前提交
db281dd1f3
共有 1 個文件被更改,包括 14 次插入12 次删除
  1. +14
    -12
      tools/bootstrap.py

+ 14
- 12
tools/bootstrap.py 查看文件

HERE = Path(__file__).parent.absolute() HERE = Path(__file__).parent.absolute()
PROJECT_ROOT = HERE.parent PROJECT_ROOT = HERE.parent
BUILD_DIR = PROJECT_ROOT / '_build' BUILD_DIR = PROJECT_ROOT / '_build'
BOOTSTRAP_DIR = BUILD_DIR / '_bootstrap'
BOOTSTRAP_BASE_DIR = BUILD_DIR / '_bootstrap'
PREBUILT_DIR = PROJECT_ROOT / '_prebuilt' PREBUILT_DIR = PROJECT_ROOT / '_prebuilt'


EXE_SUFFIX = '.exe' if os.name == 'nt' else '' EXE_SUFFIX = '.exe' if os.name == 'nt' else ''
raise subprocess.CalledProcessError(res.returncode, cmd) raise subprocess.CalledProcessError(res.returncode, cmd)




def _clone_bootstrap_phase(ph: str) -> None:
def _clone_bootstrap_phase(ph: str) -> Path:
print(f'Cloning: {ph}') print(f'Cloning: {ph}')
if BOOTSTRAP_DIR.exists():
shutil.rmtree(BOOTSTRAP_DIR)
bts_dir = BOOTSTRAP_BASE_DIR / ph
if bts_dir.exists():
shutil.rmtree(bts_dir)
_run_quiet([ _run_quiet([
'git', 'git',
'clone', 'clone',
'--depth=1', '--depth=1',
f'--branch={ph}', f'--branch={ph}',
f'file://{PROJECT_ROOT}', f'file://{PROJECT_ROOT}',
BOOTSTRAP_DIR,
bts_dir,
]) ])
return bts_dir




def _build_bootstrap_phase(ph: str, args: argparse.Namespace) -> None:
def _build_bootstrap_phase(ph: str, bts_dir: Path, args: argparse.Namespace) -> None:
print(f'Running build: {ph} (Please wait a moment...)') print(f'Running build: {ph} (Please wait a moment...)')
env = os.environ.copy() env = os.environ.copy()
env['DDS_BOOTSTRAP_PREV_EXE'] = str(PREBUILT_DIR / 'dds') env['DDS_BOOTSTRAP_PREV_EXE'] = str(PREBUILT_DIR / 'dds')
[ [
sys.executable, sys.executable,
'-u', '-u',
str(BOOTSTRAP_DIR / 'tools/build.py'),
str(bts_dir / 'tools/build.py'),
f'--cxx={args.cxx}', f'--cxx={args.cxx}',
], ],
env=env, env=env,
) )




def _pull_executable() -> Path:
def _pull_executable(bts_dir: Path) -> Path:
prebuild_dir = (PROJECT_ROOT / '_prebuilt') prebuild_dir = (PROJECT_ROOT / '_prebuilt')
prebuild_dir.mkdir(exist_ok=True) prebuild_dir.mkdir(exist_ok=True)
generated = list(BOOTSTRAP_DIR.glob(f'_build/dds{EXE_SUFFIX}'))
generated = list(bts_dir.glob(f'_build/dds{EXE_SUFFIX}'))
assert len(generated) == 1, repr(generated) assert len(generated) == 1, repr(generated)
exe, = generated exe, = generated
dest = prebuild_dir / exe.name dest = prebuild_dir / exe.name




def _run_boot_phase(phase: str, args: argparse.Namespace) -> Path: def _run_boot_phase(phase: str, args: argparse.Namespace) -> Path:
_clone_bootstrap_phase(phase)
_build_bootstrap_phase(phase, args)
return _pull_executable()
bts_dir = _clone_bootstrap_phase(phase)
_build_bootstrap_phase(phase, bts_dir, args)
return _pull_executable(bts_dir)




def main(argv: Sequence[str]) -> int: def main(argv: Sequence[str]) -> int:

Loading…
取消
儲存