chore: import upstream snapshot with attribution
This commit is contained in:
Executable
+106
@@ -0,0 +1,106 @@
|
||||
#!/usr/bin/env python3
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
# ruff: noqa: E402
|
||||
import argparse
|
||||
import logging
|
||||
import multiprocessing
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Hackery to enable importing of utils from ci/scripts/jenkins
|
||||
REPO_ROOT = Path(__file__).resolve().parent.parent.parent
|
||||
sys.path.append(str(REPO_ROOT / "ci" / "scripts" / "jenkins"))
|
||||
from cmd_utils import REPO_ROOT, Sh, init_log
|
||||
|
||||
if __name__ == "__main__":
|
||||
init_log()
|
||||
|
||||
parser = argparse.ArgumentParser(description="List pytest nodeids for a folder")
|
||||
parser.add_argument("--sccache-bucket", required=False, help="sccache bucket name")
|
||||
parser.add_argument("--sccache-region", required=False, help="sccache region")
|
||||
parser.add_argument("--build-dir", default="build", help="build folder")
|
||||
parser.add_argument("--cmake-target", help="optional build target")
|
||||
parser.add_argument("--debug", required=False, action="store_true", help="build in debug mode")
|
||||
args = parser.parse_args()
|
||||
sccache_exe = shutil.which("sccache")
|
||||
|
||||
if args.cmake_target in ["standalone_crt", "crttest"]:
|
||||
logging.info("Skipping standalone_crt build")
|
||||
exit(0)
|
||||
|
||||
use_sccache = sccache_exe is not None
|
||||
build_dir = Path(os.getcwd()) / args.build_dir
|
||||
build_dir = build_dir.relative_to(REPO_ROOT)
|
||||
env = {}
|
||||
|
||||
if use_sccache:
|
||||
if args.sccache_bucket and "AWS_ACCESS_KEY_ID" in os.environ:
|
||||
env["SCCACHE_BUCKET"] = args.sccache_bucket
|
||||
env["SCCACHE_REGION"] = args.sccache_region if args.sccache_region else "us-west-2"
|
||||
logging.info(f"Using sccache bucket: {args.sccache_bucket}")
|
||||
logging.info(f"Using sccache region: {env['SCCACHE_REGION']}")
|
||||
else:
|
||||
logging.info("No sccache bucket set, using local cache")
|
||||
if "SCCACHE_SERVER_PORT" in os.environ:
|
||||
env["SCCACHE_SERVER_PORT"] = os.getenv("SCCACHE_SERVER_PORT")
|
||||
env["CXX"] = "/opt/sccache/c++"
|
||||
env["CC"] = "/opt/sccache/cc"
|
||||
|
||||
else:
|
||||
if sccache_exe is None:
|
||||
reason = "'sccache' executable not found"
|
||||
else:
|
||||
reason = "<unknown>"
|
||||
logging.info(f"Not using sccache, reason: {reason}")
|
||||
|
||||
sh = Sh(env)
|
||||
|
||||
if use_sccache:
|
||||
sh.run("sccache --start-server", check=False)
|
||||
logging.info("===== sccache stats =====")
|
||||
sh.run("sccache --show-stats")
|
||||
|
||||
executors = int(os.environ.get("CI_NUM_EXECUTORS", 1))
|
||||
build_platform = os.environ.get("PLATFORM", None)
|
||||
|
||||
nproc = multiprocessing.cpu_count()
|
||||
|
||||
available_cpus = nproc // executors
|
||||
num_cpus = max(available_cpus, 1)
|
||||
|
||||
if args.debug:
|
||||
sh.run("cmake -GNinja -DCMAKE_BUILD_TYPE=Debug ..", cwd=build_dir)
|
||||
else:
|
||||
sh.run("cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo ..", cwd=build_dir)
|
||||
|
||||
target = ""
|
||||
if args.cmake_target:
|
||||
target = args.cmake_target
|
||||
|
||||
verbose = os.environ.get("VERBOSE", "true").lower() in {"1", "true", "yes"}
|
||||
ninja_args = [target, f"-j{num_cpus}"]
|
||||
if verbose:
|
||||
ninja_args.append("-v")
|
||||
|
||||
sh.run("cmake --build . -- " + " ".join(ninja_args), cwd=build_dir)
|
||||
|
||||
if use_sccache:
|
||||
logging.info("===== sccache stats =====")
|
||||
sh.run("sccache --show-stats")
|
||||
Reference in New Issue
Block a user