Files
wehub-resource-sync c8a779b1bb
Docker Image CI / build-ubuntu2004 (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:36:55 +08:00

83 lines
4.7 KiB
Python

# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed 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.
"""
Copies a template file from a source directory (e.g. packaging/) to a destination (usually a build dir),
replacing variables (e.g. `##TENSORRT_VERSION##`) with concrete values.
Sub-directory structure is preserved.
This file is used by the CMake build when building the python wheels.
"""
import argparse
import glob
import os
def main():
parser = argparse.ArgumentParser(
description="Copy files from a source to a destination, replacing variables with concrete values"
)
parser.add_argument("--src-dir", help="The absolute path to the source directory.", required=True)
parser.add_argument("--dst-dir", help="The absolute path to the destination directory.", required=True)
parser.add_argument("--filepath", help="The template file to copy, relative to the source directory.", required=True)
parser.add_argument("--trt-module", help="The TensorRT module name. One of 'tensorrt', 'tensorrt_lean', or 'tensorrt_dispatch' for non-RTX, and 'tensorrt_rtx' for RTX builds.", required=True)
parser.add_argument("--trt-py-version", help="The version string for the python bindings being built. Usually `major.minor.patch.build`.", required=True)
parser.add_argument("--cuda-version", help="The Cuda version (major.minor).", required=True)
parser.add_argument("--trt-version", help="The TensorRT version (major.minor.patch).", required=True)
parser.add_argument("--plugin-disabled", help="Whether the plugin is disabled.", type=int, choices=[0,1], default=0, required=False)
parser.add_argument("--trt-nvinfer-name", help="The name of the nvinfer library.", required=True)
parser.add_argument("--trt-onnxparser-name", help="The name of the onnxparser library.", required=True)
args, _ = parser.parse_known_args()
if not os.path.isdir(args.src_dir):
raise ValueError(f"Provided src-dir {args.src_dir} is not a directory.")
if not os.path.isdir(args.dst_dir):
raise ValueError(f"Provided dst-dir {args.dst_dir} is not a directory.")
target_path = os.path.join(args.src_dir, args.filepath)
if not os.path.exists(target_path):
raise ValueError(f"Target file {target_path} does not exist.")
with open(target_path, 'r', encoding="utf-8") as file:
contents = file.read()
if args.trt_module == "tensorrt_rtx":
readme_text = """NVIDIA TensorRT RTX is an SDK for high-performance AI inference on NVIDIA RTX GPUs. It includes a Just-in-Time compiler for fast on-device inference optimizations that enable portable deployments and runtime performance specialization. It also introduces convenience features such as built-in CUDA graph support, runtime cache, and a simplified development workflow."""
else:
readme_text = """NVIDIA TensorRT is an SDK that facilitates high-performance machine learning inference. It is designed to work in a complementary fashion with training frameworks such as PyTorch. It focuses specifically on running an already-trained network quickly and efficiently on NVIDIA hardware."""
contents = contents.replace("##TENSORRT_README##", readme_text)
contents = contents.replace("##TENSORRT_MODULE##", args.trt_module)
contents = contents.replace("##TENSORRT_PYTHON_VERSION##", args.trt_py_version)
contents = contents.replace("##CUDA_MAJOR##", args.cuda_version.split(".")[0])
contents = contents.replace("##TENSORRT_MAJOR##", args.trt_version.split(".")[0])
contents = contents.replace("##TENSORRT_MINOR##", args.trt_version.split(".")[1])
contents = contents.replace("##TENSORRT_PLUGIN_DISABLED##", "True" if args.plugin_disabled == 1 else "False")
contents = contents.replace("##TENSORRT_NVINFER_NAME##", args.trt_nvinfer_name)
contents = contents.replace("##TENSORRT_ONNXPARSER_NAME##", args.trt_onnxparser_name)
dest_path = os.path.join(args.dst_dir, args.filepath)
os.makedirs(os.path.dirname(dest_path), exist_ok=True)
with open(dest_path, 'w', encoding="utf-8") as of:
of.write(contents)
if __name__ == "__main__":
main()