diff --git a/buildbot/check.py b/buildbot/check.py index 70e98c1a701ea..6d84031a6dfb5 100644 --- a/buildbot/check.py +++ b/buildbot/check.py @@ -6,6 +6,7 @@ DEFAULT_CPU_COUNT = 4 + def do_check(args): try: cpu_count = multiprocessing.cpu_count() @@ -14,45 +15,67 @@ def do_check(args): # Get absolute path to source directory if args.src_dir: - abs_src_dir = os.path.abspath(args.src_dir) + abs_src_dir = os.path.abspath(args.src_dir) else: - abs_src_dir = os.path.abspath(os.path.join(__file__, "../..")) + abs_src_dir = os.path.abspath(os.path.join(__file__, "../..")) # Get absolute path to build directory if args.obj_dir: - abs_obj_dir = os.path.abspath(args.obj_dir) + abs_obj_dir = os.path.abspath(args.obj_dir) else: - abs_obj_dir = os.path.join(abs_src_dir, "build") + abs_obj_dir = os.path.join(abs_src_dir, "build") cmake_cmd = [ "cmake", - "--build", abs_obj_dir, + "--build", + abs_obj_dir, "--", args.test_suite, - "-j", str(cpu_count)] + "-j", + str(cpu_count), + ] print("[Cmake Command]: {}".format(" ".join(cmake_cmd))) - env_tmp=os.environ - env_tmp["LIT_ARGS"]="\"{}\"".format("-v") + env_tmp = os.environ + env_tmp["LIT_ARGS"] = '"{}"'.format("-v") subprocess.check_call(cmake_cmd, cwd=abs_obj_dir, env=env_tmp) ret = True return ret + def main(): - parser = argparse.ArgumentParser(prog="check.py", - description="script to do LIT testing", - formatter_class=argparse.RawTextHelpFormatter) - parser.add_argument("-n", "--build-number", metavar="BUILD_NUM", help="build number") + parser = argparse.ArgumentParser( + prog="check.py", + description="script to do LIT testing", + formatter_class=argparse.RawTextHelpFormatter, + ) + parser.add_argument( + "-n", "--build-number", metavar="BUILD_NUM", help="build number" + ) parser.add_argument("-b", "--branch", metavar="BRANCH", help="pull request branch") - parser.add_argument("-d", "--base-branch", metavar="BASE_BRANCH", help="pull request base branch") - parser.add_argument("-r", "--pr-number", metavar="PR_NUM", help="pull request number") - parser.add_argument("-w", "--builder-dir", metavar="BUILDER_DIR", - help="builder directory, which is the directory containing source and build directories") + parser.add_argument( + "-d", "--base-branch", metavar="BASE_BRANCH", help="pull request base branch" + ) + parser.add_argument( + "-r", "--pr-number", metavar="PR_NUM", help="pull request number" + ) + parser.add_argument( + "-w", + "--builder-dir", + metavar="BUILDER_DIR", + help="builder directory, which is the directory containing source and build directories", + ) parser.add_argument("-s", "--src-dir", metavar="SRC_DIR", help="source directory") parser.add_argument("-o", "--obj-dir", metavar="OBJ_DIR", help="build directory") - parser.add_argument("-t", "--test-suite", metavar="TEST_SUITE", default="check-all", help="check-xxx target") + parser.add_argument( + "-t", + "--test-suite", + metavar="TEST_SUITE", + default="check-all", + help="check-xxx target", + ) args = parser.parse_args() @@ -60,6 +83,7 @@ def main(): return do_check(args) + if __name__ == "__main__": ret = main() exit_code = 0 if ret else 1 diff --git a/buildbot/clang_tidy.py b/buildbot/clang_tidy.py index c9c9eb37d7b68..3d5e46ac0df9c 100644 --- a/buildbot/clang_tidy.py +++ b/buildbot/clang_tidy.py @@ -5,10 +5,16 @@ FILE_EXTENSIONS = [".h", ".hpp", ".c", ".cc", ".cpp"] + def do_clang_tidy(args): ret = False - merge_base_cmd = ["git", "merge-base", "origin/{}".format(args.base_branch), args.branch] + merge_base_cmd = [ + "git", + "merge-base", + "origin/{}".format(args.base_branch), + args.branch, + ] print(merge_base_cmd) base_commit = subprocess.check_output(merge_base_cmd, cwd=args.src_dir) base_commit = base_commit.rstrip() @@ -19,13 +25,15 @@ def do_clang_tidy(args): diff_cmd = ["git", "--no-pager", "diff", base_commit, args.branch, "--name-only"] print(diff_cmd) - with open(changed_files, 'w') as f: - subprocess.check_call(merge_base_cmd, cwd=args.src_dir, stdout=f, stderr=subprocess.STDOUT) + with open(changed_files, "w") as f: + subprocess.check_call( + merge_base_cmd, cwd=args.src_dir, stdout=f, stderr=subprocess.STDOUT + ) if os.path.isfile(changed_files): clang_tidy_binary = os.path.join(args.obj_dir, "bin", "clang-tidy") if os.path.isfile(clang_tidy_binary): - with open(changed_files, 'r') as f: + with open(changed_files, "r") as f: for line in f: filename, file_extension = os.path.splitext(line) if file_extension.lower() in FILE_EXTENSIONS: @@ -41,19 +49,42 @@ def do_clang_tidy(args): return ret + def main(): - parser = argparse.ArgumentParser(prog="clang_tidy.py", - description="script to do clang_tidy", - formatter_class=argparse.RawTextHelpFormatter) - parser.add_argument("-n", "--build-number", metavar="BUILD_NUM", help="build number") - parser.add_argument("-b", "--branch", metavar="BRANCH", required=True, help="pull request branch") - parser.add_argument("-d", "--base-branch", metavar="BASE_BRANCH", required=True, - help="pull request base branch") - parser.add_argument("-r", "--pr-number", metavar="PR_NUM", help="pull request number") - parser.add_argument("-w", "--builder-dir", metavar="BUILDER_DIR", required=True, - help="builder directory, which is the directory containing source and build directories") - parser.add_argument("-s", "--src-dir", metavar="SRC_DIR", required=True, help="source directory") - parser.add_argument("-o", "--obj-dir", metavar="OBJ_DIR", required=True, help="build directory") + parser = argparse.ArgumentParser( + prog="clang_tidy.py", + description="script to do clang_tidy", + formatter_class=argparse.RawTextHelpFormatter, + ) + parser.add_argument( + "-n", "--build-number", metavar="BUILD_NUM", help="build number" + ) + parser.add_argument( + "-b", "--branch", metavar="BRANCH", required=True, help="pull request branch" + ) + parser.add_argument( + "-d", + "--base-branch", + metavar="BASE_BRANCH", + required=True, + help="pull request base branch", + ) + parser.add_argument( + "-r", "--pr-number", metavar="PR_NUM", help="pull request number" + ) + parser.add_argument( + "-w", + "--builder-dir", + metavar="BUILDER_DIR", + required=True, + help="builder directory, which is the directory containing source and build directories", + ) + parser.add_argument( + "-s", "--src-dir", metavar="SRC_DIR", required=True, help="source directory" + ) + parser.add_argument( + "-o", "--obj-dir", metavar="OBJ_DIR", required=True, help="build directory" + ) args = parser.parse_args() @@ -61,8 +92,8 @@ def main(): return do_clang_tidy(args) + if __name__ == "__main__": ret = main() exit_code = 0 if ret else 1 sys.exit(exit_code) - diff --git a/buildbot/compile.py b/buildbot/compile.py index b1c8e22ed1537..055abd6dab739 100644 --- a/buildbot/compile.py +++ b/buildbot/compile.py @@ -18,24 +18,27 @@ def do_compile(args): # Get absolute path to source directory if args.src_dir: - abs_src_dir = os.path.abspath(args.src_dir) + abs_src_dir = os.path.abspath(args.src_dir) else: - abs_src_dir = os.path.abspath(os.path.join(__file__, "../..")) + abs_src_dir = os.path.abspath(os.path.join(__file__, "../..")) # Get absolute path to build directory if args.obj_dir: - abs_obj_dir = os.path.abspath(args.obj_dir) + abs_obj_dir = os.path.abspath(args.obj_dir) else: - abs_obj_dir = os.path.join(abs_src_dir, "build") + abs_obj_dir = os.path.join(abs_src_dir, "build") cmake_cmd = [ "cmake", - "--build", abs_obj_dir, + "--build", + abs_obj_dir, "--", args.build_target, - "-j", str(cpu_count)] + "-j", + str(cpu_count), + ] if args.verbose: - cmake_cmd.append("--verbose") + cmake_cmd.append("--verbose") print("[Cmake Command]: {}".format(" ".join(cmake_cmd))) @@ -45,20 +48,45 @@ def do_compile(args): def main(): - parser = argparse.ArgumentParser(prog="compile.py", - description="script to do compile", - formatter_class=argparse.RawTextHelpFormatter) - parser.add_argument("-n", "--build-number", metavar="BUILD_NUM", help="build number") + parser = argparse.ArgumentParser( + prog="compile.py", + description="script to do compile", + formatter_class=argparse.RawTextHelpFormatter, + ) + parser.add_argument( + "-n", "--build-number", metavar="BUILD_NUM", help="build number" + ) parser.add_argument("-b", "--branch", metavar="BRANCH", help="pull request branch") - parser.add_argument("-d", "--base-branch", metavar="BASE_BRANCH", help="pull request base branch") - parser.add_argument("-r", "--pr-number", metavar="PR_NUM", help="pull request number") - parser.add_argument("-w", "--builder-dir", metavar="BUILDER_DIR", - help="builder directory, which is the directory containing source and build directories") + parser.add_argument( + "-d", "--base-branch", metavar="BASE_BRANCH", help="pull request base branch" + ) + parser.add_argument( + "-r", "--pr-number", metavar="PR_NUM", help="pull request number" + ) + parser.add_argument( + "-w", + "--builder-dir", + metavar="BUILDER_DIR", + help="builder directory, which is the directory containing source and build directories", + ) parser.add_argument("-s", "--src-dir", metavar="SRC_DIR", help="source directory") parser.add_argument("-o", "--obj-dir", metavar="OBJ_DIR", help="build directory") - parser.add_argument("-j", "--build-parallelism", metavar="BUILD_PARALLELISM", help="build parallelism") - parser.add_argument("-v", "--verbose", action='store_true', help="verbose build output") - parser.add_argument("-t", "--build-target", metavar="BUILD_TARGET", default="deploy-sycl-toolchain", help="set build target") + parser.add_argument( + "-j", + "--build-parallelism", + metavar="BUILD_PARALLELISM", + help="build parallelism", + ) + parser.add_argument( + "-v", "--verbose", action="store_true", help="verbose build output" + ) + parser.add_argument( + "-t", + "--build-target", + metavar="BUILD_TARGET", + default="deploy-sycl-toolchain", + help="set build target", + ) args = parser.parse_args() diff --git a/buildbot/configure.py b/buildbot/configure.py index f172be352ba7d..fc89f8b7b00bf 100644 --- a/buildbot/configure.py +++ b/buildbot/configure.py @@ -5,24 +5,31 @@ import subprocess import sys + def do_configure(args): # Get absolute path to source directory - abs_src_dir = os.path.abspath(args.src_dir if args.src_dir else os.path.join(__file__, "../..")) + abs_src_dir = os.path.abspath( + args.src_dir if args.src_dir else os.path.join(__file__, "../..") + ) # Get absolute path to build directory - abs_obj_dir = os.path.abspath(args.obj_dir) if args.obj_dir else os.path.join(abs_src_dir, "build") + abs_obj_dir = ( + os.path.abspath(args.obj_dir) + if args.obj_dir + else os.path.join(abs_src_dir, "build") + ) # Create build directory if it doesn't exist if not os.path.isdir(abs_obj_dir): - os.makedirs(abs_obj_dir) + os.makedirs(abs_obj_dir) - llvm_external_projects = 'sycl;llvm-spirv;opencl;xpti;xptifw' + llvm_external_projects = "sycl;llvm-spirv;opencl;xpti;xptifw" # libdevice build requires a working SYCL toolchain, which is not the case # with macOS target right now. if sys.platform != "darwin": - llvm_external_projects += ';libdevice' + llvm_external_projects += ";libdevice" - libclc_amd_target_names = ';amdgcn--amdhsa' - libclc_nvidia_target_names = ';nvptx64--nvidiacl' + libclc_amd_target_names = ";amdgcn--amdhsa" + libclc_nvidia_target_names = ";nvptx64--nvidiacl" sycl_enable_fusion = "OFF" if not args.disable_fusion: @@ -40,50 +47,50 @@ def do_configure(args): libdevice_dir = os.path.join(abs_src_dir, "libdevice") fusion_dir = os.path.join(abs_src_dir, "sycl-fusion") llvm_targets_to_build = args.host_target - llvm_enable_projects = 'clang;' + llvm_external_projects - libclc_build_native = 'OFF' - libclc_targets_to_build = '' - libclc_gen_remangled_variants = 'OFF' - sycl_build_pi_hip_platform = 'AMD' - sycl_clang_extra_flags = '' - sycl_werror = 'OFF' - llvm_enable_assertions = 'ON' - llvm_enable_doxygen = 'OFF' - llvm_enable_sphinx = 'OFF' - llvm_build_shared_libs = 'OFF' - llvm_enable_lld = 'OFF' + llvm_enable_projects = "clang;" + llvm_external_projects + libclc_build_native = "OFF" + libclc_targets_to_build = "" + libclc_gen_remangled_variants = "OFF" + sycl_build_pi_hip_platform = "AMD" + sycl_clang_extra_flags = "" + sycl_werror = "OFF" + llvm_enable_assertions = "ON" + llvm_enable_doxygen = "OFF" + llvm_enable_sphinx = "OFF" + llvm_build_shared_libs = "OFF" + llvm_enable_lld = "OFF" sycl_enabled_plugins = ["opencl"] - sycl_preview_lib = 'ON' + sycl_preview_lib = "ON" - sycl_enable_xpti_tracing = 'ON' - xpti_enable_werror = 'OFF' + sycl_enable_xpti_tracing = "ON" + xpti_enable_werror = "OFF" if sys.platform != "darwin": sycl_enabled_plugins.append("level_zero") # lld is needed on Windows or for the HIP plugin on AMD - if platform.system() == 'Windows' or (args.hip and args.hip_platform == 'AMD'): - llvm_enable_projects += ';lld' + if platform.system() == "Windows" or (args.hip and args.hip_platform == "AMD"): + llvm_enable_projects += ";lld" libclc_enabled = args.cuda or args.hip or args.native_cpu if libclc_enabled: - llvm_enable_projects += ';libclc' + llvm_enable_projects += ";libclc" if args.cuda: - llvm_targets_to_build += ';NVPTX' + llvm_targets_to_build += ";NVPTX" libclc_targets_to_build = libclc_nvidia_target_names - libclc_gen_remangled_variants = 'ON' + libclc_gen_remangled_variants = "ON" sycl_enabled_plugins.append("cuda") if args.hip: - if args.hip_platform == 'AMD': - llvm_targets_to_build += ';AMDGPU' + if args.hip_platform == "AMD": + llvm_targets_to_build += ";AMDGPU" libclc_targets_to_build += libclc_amd_target_names - elif args.hip_platform == 'NVIDIA' and not args.cuda: - llvm_targets_to_build += ';NVPTX' + elif args.hip_platform == "NVIDIA" and not args.cuda: + llvm_targets_to_build += ";NVPTX" libclc_targets_to_build += libclc_nvidia_target_names - libclc_gen_remangled_variants = 'ON' + libclc_gen_remangled_variants = "ON" sycl_build_pi_hip_platform = args.hip_platform sycl_enabled_plugins.append("hip") @@ -96,28 +103,27 @@ def do_configure(args): libclc_gen_remangled_variants = "ON" sycl_enabled_plugins.append("native_cpu") - # all llvm compiler targets don't require 3rd party dependencies, so can be # built/tested even if specific runtimes are not available if args.enable_all_llvm_targets: - llvm_targets_to_build += ';NVPTX;AMDGPU' + llvm_targets_to_build += ";NVPTX;AMDGPU" if args.werror or args.ci_defaults: - sycl_werror = 'ON' - xpti_enable_werror = 'ON' + sycl_werror = "ON" + xpti_enable_werror = "ON" if args.no_assertions: - llvm_enable_assertions = 'OFF' + llvm_enable_assertions = "OFF" if args.docs: - llvm_enable_doxygen = 'ON' - llvm_enable_sphinx = 'ON' + llvm_enable_doxygen = "ON" + llvm_enable_sphinx = "ON" if args.shared_libs: - llvm_build_shared_libs = 'ON' + llvm_build_shared_libs = "ON" if args.use_lld: - llvm_enable_lld = 'ON' + llvm_enable_lld = "ON" # CI Default conditionally appends to options, keep it at the bottom of # args handling @@ -131,32 +137,33 @@ def do_configure(args): if sys.platform != "darwin": # libclc is required for CI validation libclc_enabled = True - if 'libclc' not in llvm_enable_projects: - llvm_enable_projects += ';libclc' + if "libclc" not in llvm_enable_projects: + llvm_enable_projects += ";libclc" # libclc passes `--nvvm-reflect-enable=false`, build NVPTX to enable it - if 'NVPTX' not in llvm_targets_to_build: - llvm_targets_to_build += ';NVPTX' + if "NVPTX" not in llvm_targets_to_build: + llvm_targets_to_build += ";NVPTX" # since we are building AMD libclc target we must have AMDGPU target - if 'AMDGPU' not in llvm_targets_to_build: - llvm_targets_to_build += ';AMDGPU' + if "AMDGPU" not in llvm_targets_to_build: + llvm_targets_to_build += ";AMDGPU" # Add both NVIDIA and AMD libclc targets if libclc_amd_target_names not in libclc_targets_to_build: libclc_targets_to_build += libclc_amd_target_names if libclc_nvidia_target_names not in libclc_targets_to_build: libclc_targets_to_build += libclc_nvidia_target_names - libclc_gen_remangled_variants = 'ON' + libclc_gen_remangled_variants = "ON" if args.enable_plugin: sycl_enabled_plugins += args.enable_plugin if args.disable_preview_lib: - sycl_preview_lib = 'OFF' + sycl_preview_lib = "OFF" install_dir = os.path.join(abs_obj_dir, "install") cmake_cmd = [ "cmake", - "-G", args.cmake_gen, + "-G", + args.cmake_gen, "-DCMAKE_BUILD_TYPE={}".format(args.build_type), "-DLLVM_ENABLE_ASSERTIONS={}".format(llvm_enable_assertions), "-DLLVM_TARGETS_TO_BUILD={}".format(llvm_targets_to_build), @@ -173,7 +180,7 @@ def do_configure(args): "-DLLVM_BUILD_TOOLS=ON", "-DSYCL_ENABLE_WERROR={}".format(sycl_werror), "-DCMAKE_INSTALL_PREFIX={}".format(install_dir), - "-DSYCL_INCLUDE_TESTS=ON", # Explicitly include all kinds of SYCL tests. + "-DSYCL_INCLUDE_TESTS=ON", # Explicitly include all kinds of SYCL tests. "-DLLVM_ENABLE_DOXYGEN={}".format(llvm_enable_doxygen), "-DLLVM_ENABLE_SPHINX={}".format(llvm_enable_sphinx), "-DBUILD_SHARED_LIBS={}".format(llvm_build_shared_libs), @@ -181,7 +188,7 @@ def do_configure(args): "-DLLVM_ENABLE_LLD={}".format(llvm_enable_lld), "-DXPTI_ENABLE_WERROR={}".format(xpti_enable_werror), "-DSYCL_CLANG_EXTRA_FLAGS={}".format(sycl_clang_extra_flags), - "-DSYCL_ENABLE_PLUGINS={}".format(';'.join(set(sycl_enabled_plugins))), + "-DSYCL_ENABLE_PLUGINS={}".format(";".join(set(sycl_enabled_plugins))), "-DSYCL_ENABLE_KERNEL_FUSION={}".format(sycl_enable_fusion), "-DSYCL_ENABLE_MAJOR_RELEASE_PREVIEW_LIB={}".format(sycl_preview_lib), "-DBUG_REPORT_URL=https://github.com/intel/llvm/issues", @@ -199,31 +206,41 @@ def do_configure(args): ) if args.l0_headers and args.l0_loader: - cmake_cmd.extend([ - "-DLEVEL_ZERO_INCLUDE_DIR={}".format(args.l0_headers), - "-DLEVEL_ZERO_LIBRARY={}".format(args.l0_loader)]) + cmake_cmd.extend( + [ + "-DLEVEL_ZERO_INCLUDE_DIR={}".format(args.l0_headers), + "-DLEVEL_ZERO_LIBRARY={}".format(args.l0_loader), + ] + ) elif args.l0_headers or args.l0_loader: - sys.exit("Please specify both Level Zero headers and loader or don't specify " - "none of them to let download from github.com") + sys.exit( + "Please specify both Level Zero headers and loader or don't specify " + "none of them to let download from github.com" + ) # Add additional CMake options if provided if args.cmake_opt: - cmake_cmd += args.cmake_opt - + cmake_cmd += args.cmake_opt + if args.add_security_flags: - cmake_cmd.extend(["-DEXTRA_SECURITY_FLAGS={}".format(args.add_security_flags)]) + cmake_cmd.extend(["-DEXTRA_SECURITY_FLAGS={}".format(args.add_security_flags)]) # Add path to root CMakeLists.txt cmake_cmd.append(llvm_dir) if args.use_libcxx: - if not (args.libcxx_include and args.libcxx_library): - sys.exit("Please specify include and library path of libc++ when building sycl " - "runtime with it") - cmake_cmd.extend([ - "-DSYCL_USE_LIBCXX=ON", - "-DSYCL_LIBCXX_INCLUDE_PATH={}".format(args.libcxx_include), - "-DSYCL_LIBCXX_LIBRARY_PATH={}".format(args.libcxx_library)]) + if not (args.libcxx_include and args.libcxx_library): + sys.exit( + "Please specify include and library path of libc++ when building sycl " + "runtime with it" + ) + cmake_cmd.extend( + [ + "-DSYCL_USE_LIBCXX=ON", + "-DSYCL_LIBCXX_INCLUDE_PATH={}".format(args.libcxx_include), + "-DSYCL_LIBCXX_LIBRARY_PATH={}".format(args.libcxx_library), + ] + ) print("[Cmake Command]: {}".format(" ".join(map(shlex.quote, cmake_cmd)))) @@ -232,61 +249,158 @@ def do_configure(args): except subprocess.CalledProcessError: cmake_cache = os.path.join(abs_obj_dir, "CMakeCache.txt") if os.path.isfile(cmake_cache): - print("There is CMakeCache.txt at " + cmake_cache + - " ... you can try to remove it and rerun.") - print("Configure failed!") + print( + "There is CMakeCache.txt at " + + cmake_cache + + " ... you can try to remove it and rerun." + ) + print("Configure failed!") return False return True + def main(): - parser = argparse.ArgumentParser(prog="configure.py", - description="Generate build files from CMake configuration files", - formatter_class=argparse.RawTextHelpFormatter) + parser = argparse.ArgumentParser( + prog="configure.py", + description="Generate build files from CMake configuration files", + formatter_class=argparse.RawTextHelpFormatter, + ) # CI system options - parser.add_argument("-n", "--build-number", metavar="BUILD_NUM", help="build number") + parser.add_argument( + "-n", "--build-number", metavar="BUILD_NUM", help="build number" + ) parser.add_argument("-b", "--branch", metavar="BRANCH", help="pull request branch") - parser.add_argument("-d", "--base-branch", metavar="BASE_BRANCH", help="pull request base branch") - parser.add_argument("-r", "--pr-number", metavar="PR_NUM", help="pull request number") - parser.add_argument("-w", "--builder-dir", metavar="BUILDER_DIR", - help="builder directory, which is the directory containing source and build directories") + parser.add_argument( + "-d", "--base-branch", metavar="BASE_BRANCH", help="pull request base branch" + ) + parser.add_argument( + "-r", "--pr-number", metavar="PR_NUM", help="pull request number" + ) + parser.add_argument( + "-w", + "--builder-dir", + metavar="BUILDER_DIR", + help="builder directory, which is the directory containing source and build directories", + ) # User options - parser.add_argument("-s", "--src-dir", metavar="SRC_DIR", help="source directory (autodetected by default)") - parser.add_argument("-o", "--obj-dir", metavar="OBJ_DIR", help="build directory. (/build by default)") - parser.add_argument("--l0-headers", metavar="L0_HEADER_DIR", help="directory with Level Zero headers") - parser.add_argument("--l0-loader", metavar="L0_LOADER", help="path to the Level Zero loader") - parser.add_argument("-t", "--build-type", - metavar="BUILD_TYPE", default="Release", help="build type: Debug, Release") - parser.add_argument("--cuda", action='store_true', help="switch from OpenCL to CUDA") - parser.add_argument("--native_cpu", action='store_true', help="Enable SYCL Native CPU") - parser.add_argument("--hip", action='store_true', help="switch from OpenCL to HIP") - parser.add_argument("--hip-platform", type=str, choices=['AMD', 'NVIDIA'], default='AMD', help="choose hardware platform for HIP backend") - parser.add_argument("--host-target", default='host', - help="host LLVM target architecture, defaults to \'host\', multiple targets may be provided as a semi-colon separated string") - parser.add_argument("--enable-all-llvm-targets", action='store_true', help="build compiler with all supported targets, it doesn't change runtime build") - parser.add_argument("--no-assertions", action='store_true', help="build without assertions") - parser.add_argument("--docs", action='store_true', help="build Doxygen documentation") - parser.add_argument("--werror", action='store_true', help="Treat warnings as errors") - parser.add_argument("--shared-libs", action='store_true', help="Build shared libraries") - parser.add_argument("--cmake-opt", action='append', help="Additional CMake option not configured via script parameters") + parser.add_argument( + "-s", + "--src-dir", + metavar="SRC_DIR", + help="source directory (autodetected by default)", + ) + parser.add_argument( + "-o", + "--obj-dir", + metavar="OBJ_DIR", + help="build directory. (/build by default)", + ) + parser.add_argument( + "--l0-headers", + metavar="L0_HEADER_DIR", + help="directory with Level Zero headers", + ) + parser.add_argument( + "--l0-loader", metavar="L0_LOADER", help="path to the Level Zero loader" + ) + parser.add_argument( + "-t", + "--build-type", + metavar="BUILD_TYPE", + default="Release", + help="build type: Debug, Release", + ) + parser.add_argument( + "--cuda", action="store_true", help="switch from OpenCL to CUDA" + ) + parser.add_argument( + "--native_cpu", action="store_true", help="Enable SYCL Native CPU" + ) + parser.add_argument("--hip", action="store_true", help="switch from OpenCL to HIP") + parser.add_argument( + "--hip-platform", + type=str, + choices=["AMD", "NVIDIA"], + default="AMD", + help="choose hardware platform for HIP backend", + ) + parser.add_argument( + "--host-target", + default="host", + help="host LLVM target architecture, defaults to 'host', multiple targets may be provided as a semi-colon separated string", + ) + parser.add_argument( + "--enable-all-llvm-targets", + action="store_true", + help="build compiler with all supported targets, it doesn't change runtime build", + ) + parser.add_argument( + "--no-assertions", action="store_true", help="build without assertions" + ) + parser.add_argument( + "--docs", action="store_true", help="build Doxygen documentation" + ) + parser.add_argument( + "--werror", action="store_true", help="Treat warnings as errors" + ) + parser.add_argument( + "--shared-libs", action="store_true", help="Build shared libraries" + ) + parser.add_argument( + "--cmake-opt", + action="append", + help="Additional CMake option not configured via script parameters", + ) parser.add_argument("--cmake-gen", default="Ninja", help="CMake generator") - parser.add_argument("--use-libcxx", action="store_true", help="build sycl runtime with libcxx") - parser.add_argument("--libcxx-include", metavar="LIBCXX_INCLUDE_PATH", help="libcxx include path") - parser.add_argument("--libcxx-library", metavar="LIBCXX_LIBRARY_PATH", help="libcxx library path") - parser.add_argument("--use-lld", action="store_true", help="Use LLD linker for build") - parser.add_argument("--llvm-external-projects", help="Add external projects to build. Add as comma seperated list.") - parser.add_argument("--ci-defaults", action="store_true", help="Enable default CI parameters") - parser.add_argument("--enable-plugin", action='append', help="Enable SYCL plugin") - parser.add_argument("--disable-preview-lib", action='store_true', help="Disable building of the SYCL runtime major release preview library") - parser.add_argument("--disable-fusion", action="store_true", help="Disable the kernel fusion JIT compiler") - parser.add_argument("--add_security_flags", type=str, choices=['none', 'default', 'sanitize'], default=None, help="Enables security flags for compile & link. Two values are supported: 'default' and 'sanitize'. 'Sanitize' option is an extension of 'default' set.") - parser.add_argument('--native-cpu-libclc-targets', help='Target triples for libclc, used by the Native CPU backend') + parser.add_argument( + "--use-libcxx", action="store_true", help="build sycl runtime with libcxx" + ) + parser.add_argument( + "--libcxx-include", metavar="LIBCXX_INCLUDE_PATH", help="libcxx include path" + ) + parser.add_argument( + "--libcxx-library", metavar="LIBCXX_LIBRARY_PATH", help="libcxx library path" + ) + parser.add_argument( + "--use-lld", action="store_true", help="Use LLD linker for build" + ) + parser.add_argument( + "--llvm-external-projects", + help="Add external projects to build. Add as comma seperated list.", + ) + parser.add_argument( + "--ci-defaults", action="store_true", help="Enable default CI parameters" + ) + parser.add_argument("--enable-plugin", action="append", help="Enable SYCL plugin") + parser.add_argument( + "--disable-preview-lib", + action="store_true", + help="Disable building of the SYCL runtime major release preview library", + ) + parser.add_argument( + "--disable-fusion", + action="store_true", + help="Disable the kernel fusion JIT compiler", + ) + parser.add_argument( + "--add_security_flags", + type=str, + choices=["none", "default", "sanitize"], + default=None, + help="Enables security flags for compile & link. Two values are supported: 'default' and 'sanitize'. 'Sanitize' option is an extension of 'default' set.", + ) + parser.add_argument( + "--native-cpu-libclc-targets", + help="Target triples for libclc, used by the Native CPU backend", + ) args = parser.parse_args() print("args:{}".format(args)) return do_configure(args) + if __name__ == "__main__": ret = main() exit_code = 0 if ret else 1 diff --git a/buildbot/dependency.py b/buildbot/dependency.py index e79eae2b62cc1..3eac3cc7a92a8 100644 --- a/buildbot/dependency.py +++ b/buildbot/dependency.py @@ -4,6 +4,7 @@ import subprocess import sys + def do_dependency(args): ret = False @@ -11,7 +12,8 @@ def do_dependency(args): if args.pr_number is not None and not args.clean_build: if args.branch is None or args.base_branch is None: "branch ({}) and base branch ({}) is required for pull request #{}".format( - args.branch, args.base_branch, args.pr_number) + args.branch, args.base_branch, args.pr_number + ) return ret # fetching the recent state of base branch fetch_cmd = ["git", "fetch", "origin", args.base_branch] @@ -25,14 +27,31 @@ def do_dependency(args): print(checkout_cmd) subprocess.check_call(checkout_cmd, cwd=args.src_dir) # get baseline commit - merge_base_cmd = ["git", "merge-base", "origin/{}".format(args.base_branch), args.branch] + merge_base_cmd = [ + "git", + "merge-base", + "origin/{}".format(args.base_branch), + args.branch, + ] print(merge_base_cmd) base_commit = subprocess.check_output(merge_base_cmd, cwd=args.src_dir) - base_commit = base_commit.rstrip() - diff_cmd = ["git", "--no-pager", "diff", base_commit, args.branch, "--name-only", "buildbot"] + base_commit = base_commit.rstrip() + diff_cmd = [ + "git", + "--no-pager", + "diff", + base_commit, + args.branch, + "--name-only", + "buildbot", + ] print(diff_cmd) changed_build_scripts = subprocess.check_output(diff_cmd, cwd=args.src_dir) - changed_build_scripts = changed_build_scripts.rstrip() if changed_build_scripts is not None else None + changed_build_scripts = ( + changed_build_scripts.rstrip() + if changed_build_scripts is not None + else None + ) # clean build directory if build scripts have changed if len(changed_build_scripts) > 0: if os.path.isdir(args.obj_dir): @@ -49,8 +68,14 @@ def do_dependency(args): # fetch OpenCL headers ocl_header_dir = os.path.join(args.obj_dir, "OpenCL-Headers") if not os.path.isdir(ocl_header_dir): - clone_cmd = ["git", "clone", "https://github.com/KhronosGroup/OpenCL-Headers", - "OpenCL-Headers", "-b", "main"] + clone_cmd = [ + "git", + "clone", + "https://github.com/KhronosGroup/OpenCL-Headers", + "OpenCL-Headers", + "-b", + "main", + ] subprocess.check_call(clone_cmd, cwd=args.obj_dir) else: fetch_cmd = ["git", "pull", "--ff", "--ff-only", "origin"] @@ -64,9 +89,14 @@ def do_dependency(args): # fetch and build OpenCL ICD loader icd_loader_dir = os.path.join(args.obj_dir, "OpenCL-ICD-Loader") if not os.path.isdir(icd_loader_dir): - clone_cmd = ["git", "clone", - "https://github.com/KhronosGroup/OpenCL-ICD-Loader", - "OpenCL-ICD-Loader", "-b", "main"] + clone_cmd = [ + "git", + "clone", + "https://github.com/KhronosGroup/OpenCL-ICD-Loader", + "OpenCL-ICD-Loader", + "-b", + "main", + ] subprocess.check_call(clone_cmd, cwd=args.obj_dir) else: @@ -83,36 +113,60 @@ def do_dependency(args): shutil.rmtree(icd_build_dir) os.makedirs(icd_build_dir) install_dir = os.path.join(args.obj_dir, "install") - cmake_cmd = ["cmake", "-G", "Ninja", - "-DCMAKE_INSTALL_PREFIX={}".format(install_dir), - "-DOPENCL_ICD_LOADER_HEADERS_DIR={}".format(ocl_header_dir), - ".." ] + cmake_cmd = [ + "cmake", + "-G", + "Ninja", + "-DCMAKE_INSTALL_PREFIX={}".format(install_dir), + "-DOPENCL_ICD_LOADER_HEADERS_DIR={}".format(ocl_header_dir), + "..", + ] print("[Cmake Command]: {}".format(" ".join(cmake_cmd))) - + subprocess.check_call(cmake_cmd, cwd=icd_build_dir) - env_tmp=os.environ + env_tmp = os.environ env_tmp["C_INCLUDE_PATH"] = "{}".format(ocl_header_dir) subprocess.check_call(["ninja", "install"], env=env_tmp, cwd=icd_build_dir) ret = True return ret + def main(): - parser = argparse.ArgumentParser(prog="dependency.py", - description="script to get and build dependency", - formatter_class=argparse.RawTextHelpFormatter) - parser.add_argument("-n", "--build-number", metavar="BUILD_NUM", help="build number") + parser = argparse.ArgumentParser( + prog="dependency.py", + description="script to get and build dependency", + formatter_class=argparse.RawTextHelpFormatter, + ) + parser.add_argument( + "-n", "--build-number", metavar="BUILD_NUM", help="build number" + ) parser.add_argument("-b", "--branch", metavar="BRANCH", help="pull request branch") - parser.add_argument("-d", "--base-branch", metavar="BASE_BRANCH", help="pull request base branch") - parser.add_argument("-r", "--pr-number", metavar="PR_NUM", help="pull request number") - parser.add_argument("-w", "--builder-dir", metavar="BUILDER_DIR", - help="builder directory, which is the directory containing source and build directories") + parser.add_argument( + "-d", "--base-branch", metavar="BASE_BRANCH", help="pull request base branch" + ) + parser.add_argument( + "-r", "--pr-number", metavar="PR_NUM", help="pull request number" + ) + parser.add_argument( + "-w", + "--builder-dir", + metavar="BUILDER_DIR", + help="builder directory, which is the directory containing source and build directories", + ) parser.add_argument("-s", "--src-dir", metavar="SRC_DIR", help="source directory") - parser.add_argument("-o", "--obj-dir", metavar="OBJ_DIR", required=True, help="build directory") - parser.add_argument("-c", "--clean-build", action="store_true", default=False, - help="true if the build is clean build which has clobber step") + parser.add_argument( + "-o", "--obj-dir", metavar="OBJ_DIR", required=True, help="build directory" + ) + parser.add_argument( + "-c", + "--clean-build", + action="store_true", + default=False, + help="true if the build is clean build which has clobber step", + ) args = parser.parse_args() @@ -120,6 +174,7 @@ def main(): return do_dependency(args) + if __name__ == "__main__": ret = main() exit_code = 0 if ret else 1 diff --git a/sycl-fusion/test/lit.cfg.py b/sycl-fusion/test/lit.cfg.py index d92326b020ce3..fffa59585ef0e 100644 --- a/sycl-fusion/test/lit.cfg.py +++ b/sycl-fusion/test/lit.cfg.py @@ -25,6 +25,6 @@ config.substitutions.append(("%shlibdir", config.llvm_shlib_dir)) if "NVPTX" in config.llvm_targets_to_build: - config.available_features.add('cuda') + config.available_features.add("cuda") if "AMDGPU" in config.llvm_targets_to_build: - config.available_features.add('hip_amd') + config.available_features.add("hip_amd")