Browse Source

New fancy CI script!

default_compile_flags
vector-of-bool 5 years ago
parent
commit
afa2fd7fb3
1 changed files with 79 additions and 0 deletions
  1. +79
    -0
      tools/ci.py

+ 79
- 0
tools/ci.py View File

@@ -0,0 +1,79 @@
import argparse
import sys
from pathlib import Path
from typing import Sequence, NamedTuple
import subprocess

HERE = Path(__file__).parent.absolute()
TOOLS_DIR = HERE
PROJECT_ROOT = HERE.parent
PREBUILT_DDS = PROJECT_ROOT / '_prebuilt/dds'


class CIOptions(NamedTuple):
skip_bootstrap: bool
cxx: Path
toolchain: str


def _do_bootstrap(opts: CIOptions) -> None:
print('Running bootstrap')
subprocess.check_call([
sys.executable,
TOOLS_DIR / 'bootstrap.py',
f'--cxx={opts.cxx}',
])


def main(argv: Sequence[str]) -> int:
parser = argparse.ArgumentParser()
parser.add_argument(
'--skip-bootstrap',
action='store_true',
help=
'Skip the prebuild-bootstrap step. This requires a _prebuilt/dds to exist!',
)
parser.add_argument(
'--cxx',
help='The name/path of the C++ compiler to use.',
required=True)
parser.add_argument(
'--toolchain',
'-T',
help='The toolchain to use for the CI process',
required=True)
args = parser.parse_args(argv)
opts = CIOptions(
skip_bootstrap=args.skip_bootstrap,
cxx=Path(args.cxx),
toolchain=args.toolchain)
if not opts.skip_bootstrap:
_do_bootstrap(opts)

subprocess.check_call([
PREBUILT_DDS,
'deps',
'build',
f'-T{opts.toolchain}',
f'--repo-dir={PROJECT_ROOT / "external/repo"}',
])

subprocess.check_call([
PREBUILT_DDS,
'build',
'--full',
f'-T{opts.toolchain}',
])

subprocess.check_call([
sys.executable,
TOOLS_DIR / 'test.py',
f'--exe={PROJECT_ROOT / "_build/dds"}',
f'-T{opts.toolchain}',
])

return 0


if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))

Loading…
Cancel
Save