已合并
工程构建适配离线下载脚本 #3293
yang-di52创建于 3月28日
工程构建适配离线下载脚本 #3293
已合并
yang-di52创建于 3月28日
8 个文件变更+62-18
@@ -38,6 +38,9 @@ else()
38 elseif(EXISTS "${CANN_3RD_LIB_PATH}/pkg/${ABSEIL_VERSION_PKG}")38 elseif(EXISTS "${CANN_3RD_LIB_PATH}/pkg/${ABSEIL_VERSION_PKG}")
39 set(REQ_URL "file://${CANN_3RD_LIB_PATH}/pkg/${ABSEIL_VERSION_PKG}")39 set(REQ_URL "file://${CANN_3RD_LIB_PATH}/pkg/${ABSEIL_VERSION_PKG}")
40 message(STATUS "[ThirdPartyLib][abseil-cpp] found in ${REQ_URL}.")40 message(STATUS "[ThirdPartyLib][abseil-cpp] found in ${REQ_URL}.")
41+ elseif(EXISTS "${CANN_3RD_LIB_PATH}/${ABSEIL_VERSION_PKG}")
42+ set(REQ_URL "file://${CANN_3RD_LIB_PATH}/${ABSEIL_VERSION_PKG}")
43+ message(STATUS "[ThirdPartyLib][abseil-cpp] found in ${REQ_URL}.")
41 else()44 else()
42 set(REQ_URL "https://gitcode.com/cann-src-third-party/abseil-cpp/releases/download/20230802.1/abseil-cpp-20230802.1.tar.gz")45 set(REQ_URL "https://gitcode.com/cann-src-third-party/abseil-cpp/releases/download/20230802.1/abseil-cpp-20230802.1.tar.gz")
43 message(STATUS "[ThirdPartyLib][abseil-cpp] ${REQ_URL} not found, need download.")46 message(STATUS "[ThirdPartyLib][abseil-cpp] ${REQ_URL} not found, need download.")
@@ -38,6 +38,9 @@ else()
38 elseif(EXISTS "${CANN_3RD_LIB_PATH}/pkg/${PROTOBUF_VERSION_PKG}")38 elseif(EXISTS "${CANN_3RD_LIB_PATH}/pkg/${PROTOBUF_VERSION_PKG}")
39 set(REQ_URL "file://${CANN_3RD_LIB_PATH}/pkg/${PROTOBUF_VERSION_PKG}")39 set(REQ_URL "file://${CANN_3RD_LIB_PATH}/pkg/${PROTOBUF_VERSION_PKG}")
40 message(STATUS "[ThirdPartyLib][ascend protobuf] found in ${REQ_URL}.")40 message(STATUS "[ThirdPartyLib][ascend protobuf] found in ${REQ_URL}.")
41+ elseif(EXISTS "${CANN_3RD_LIB_PATH}/${PROTOBUF_VERSION_PKG}")
42+ set(REQ_URL "file://${CANN_3RD_LIB_PATH}/${PROTOBUF_VERSION_PKG}")
43+ message(STATUS "[ThirdPartyLib][ascend protobuf] found in ${REQ_URL}.")
41 else()44 else()
42 set(REQ_URL "https://gitcode.com/cann-src-third-party/protobuf/releases/download/v25.1/protobuf-25.1.tar.gz")45 set(REQ_URL "https://gitcode.com/cann-src-third-party/protobuf/releases/download/v25.1/protobuf-25.1.tar.gz")
43 message(STATUS "[ThirdPartyLib][ascend protobuf] ${REQ_URL} not found, need download.")46 message(STATUS "[ThirdPartyLib][ascend protobuf] ${REQ_URL} not found, need download.")
@@ -1,9 +1,9 @@
1# ----------------------------------------------------------------------------1# ----------------------------------------------------------------------------
2-# Copyright (c) 2025-2026 Huawei Technologies Co., Ltd.2+# Copyright (c) 2026 Huawei Technologies Co., Ltd.
3-# This program is free software, you can redistribute it and/or modify it under the terms and conditions of 3+# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4# CANN Open Software License Agreement Version 2.0 (the "License").4# CANN Open Software License Agreement Version 2.0 (the "License").
5# Please refer to the License for details. You may not use this file except in compliance with the License.5# Please refer to the License for details. You may not use this file except in compliance with the License.
6-# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, 6+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.7# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8# See LICENSE in the root of the software repository for the full text of the License.8# See LICENSE in the root of the software repository for the full text of the License.
9# ----------------------------------------------------------------------------9# ----------------------------------------------------------------------------
@@ -11,7 +11,7 @@ if(POLICY CMP0135)
11 cmake_policy(SET CMP0135 NEW)11 cmake_policy(SET CMP0135 NEW)
12endif()12endif()
13 13 
14-set(EIGEN_DOWNLOAD_PATH ${CANN_3RD_LIB_PATH}/pkg)14+set(EIGEN_VERSION_PKG eigen-5.0.0.tar.gz)
15 15 
16if (EXISTS "${CANN_3RD_LIB_PATH}/eigen-5.0.0/CMakeLists.txt" AND NOT FORCE_REBUILD_CANN_3RD)16if (EXISTS "${CANN_3RD_LIB_PATH}/eigen-5.0.0/CMakeLists.txt" AND NOT FORCE_REBUILD_CANN_3RD)
17 message(STATUS "Eigen path found in cache: ${CANN_3RD_LIB_PATH}/eigen-5.0.0, and not force rebuild cann third_party.")17 message(STATUS "Eigen path found in cache: ${CANN_3RD_LIB_PATH}/eigen-5.0.0, and not force rebuild cann third_party.")
@@ -20,15 +20,23 @@ elseif (EXISTS "${CANN_3RD_LIB_PATH}/eigen/CMakeLists.txt" AND NOT FORCE_REBUILD
20 message(STATUS "Eigen path found in cache: ${CANN_3RD_LIB_PATH}/eigen, and not force rebuild cann third_party.")20 message(STATUS "Eigen path found in cache: ${CANN_3RD_LIB_PATH}/eigen, and not force rebuild cann third_party.")
21 set(SOURCE_DIR "${CANN_3RD_LIB_PATH}/eigen")21 set(SOURCE_DIR "${CANN_3RD_LIB_PATH}/eigen")
22else()22else()
23- message("The eigen package needs to be downloaded.")23+ if(EXISTS "${CANN_3RD_LIB_PATH}/pkg/${EIGEN_VERSION_PKG}")
24- set(REQ_URL "https://gitcode.com/cann-src-third-party/eigen/releases/download/5.0.0-h0.trunk/eigen-5.0.0.tar.gz")24+ set(REQ_URL "${CANN_3RD_LIB_PATH}/pkg/${EIGEN_VERSION_PKG}")
25+ message(STATUS "[ThirdPartyLib][eigen] found in ${REQ_URL}.")
26+ elseif(EXISTS "${CANN_3RD_LIB_PATH}/${EIGEN_VERSION_PKG}")
27+ set(REQ_URL "${CANN_3RD_LIB_PATH}/${EIGEN_VERSION_PKG}")
28+ message(STATUS "[ThirdPartyLib][eigen] found in ${REQ_URL}.")
29+ else()
30+ set(REQ_URL "https://gitcode.com/cann-src-third-party/eigen/releases/download/5.0.0-h0.trunk/eigen-5.0.0.tar.gz")
31+ message(STATUS "[ThirdPartyLib][eigen] ${REQ_URL} not found, need download.")
32+ endif()
33+ 
25 include(ExternalProject)34 include(ExternalProject)
26 ExternalProject_Add(external_eigen_nn35 ExternalProject_Add(external_eigen_nn
27 TLS_VERIFY OFF36 TLS_VERIFY OFF
28 URL ${REQ_URL}37 URL ${REQ_URL}
29- DOWNLOAD_DIR ${EIGEN_DOWNLOAD_PATH}38+ DOWNLOAD_DIR ${CANN_3RD_LIB_PATH}/pkg
30 SOURCE_DIR ${CANN_3RD_LIB_PATH}/eigen39 SOURCE_DIR ${CANN_3RD_LIB_PATH}/eigen
31- PREFIX third_party
32 CONFIGURE_COMMAND ""40 CONFIGURE_COMMAND ""
33 BUILD_COMMAND ""41 BUILD_COMMAND ""
34 INSTALL_COMMAND ""42 INSTALL_COMMAND ""
@@ -63,8 +63,17 @@ message("gtest found:${gtest_FOUND}")
63if(gtest_FOUND AND NOT FORCE_REBUILD_CANN_3RD)63if(gtest_FOUND AND NOT FORCE_REBUILD_CANN_3RD)
64 message("gtest found in ${GTEST_INSTALL_PATH}, and not force rebuild cann third_party")64 message("gtest found in ${GTEST_INSTALL_PATH}, and not force rebuild cann third_party")
65else()65else()
66- message("not use cache, download the gtest code.")66+ message(STATUS "[ThirdPartyLib][gtest] gtest shared not found, finding binary file.")
67- set(REQ_URL "https://gitcode.com/cann-src-third-party/googletest/releases/download/v1.14.0/googletest-1.14.0.tar.gz")67+ if(EXISTS "${CANN_3RD_LIB_PATH}/pkg/googletest-1.14.0.tar.gz")
68+ set(REQ_URL "file://${CANN_3RD_LIB_PATH}/pkg/googletest-1.14.0.tar.gz")
69+ message(STATUS "[ThirdPartyLib][gtest] found in ${REQ_URL}.")
70+ elseif(EXISTS "${CANN_3RD_LIB_PATH}/googletest-1.14.0.tar.gz")
71+ set(REQ_URL "file://${CANN_3RD_LIB_PATH}/googletest-1.14.0.tar.gz")
72+ message(STATUS "[ThirdPartyLib][gtest] found in ${REQ_URL}.")
73+ else()
74+ set(REQ_URL "https://gitcode.com/cann-src-third-party/googletest/releases/download/v1.14.0/googletest-1.14.0.tar.gz")
75+ message(STATUS "[ThirdPartyLib][gtest] ${REQ_URL} not found, need download.")
76+ endif()
68 set (gtest_CXXFLAGS "-D_GLIBCXX_USE_CXX11_ABI=0 -O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")77 set (gtest_CXXFLAGS "-D_GLIBCXX_USE_CXX11_ABI=0 -O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")
69 set (gtest_CFLAGS "-D_GLIBCXX_USE_CXX11_ABI=0 -O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")78 set (gtest_CFLAGS "-D_GLIBCXX_USE_CXX11_ABI=0 -O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")
70 79 
@@ -10,6 +10,7 @@
10 10 
11set(MAKESELF_NAME "makeself")11set(MAKESELF_NAME "makeself")
12set(MAKESELF_PATH ${CANN_3RD_LIB_PATH}/makeself)12set(MAKESELF_PATH ${CANN_3RD_LIB_PATH}/makeself)
13+set(MAKESELF_VERSION_PKG makeself-release-2.5.0-patch1.tar.gz)
13 14 
14if (POLICY CMP0135)15if (POLICY CMP0135)
15 cmake_policy(SET CMP0135 NEW)16 cmake_policy(SET CMP0135 NEW)
@@ -17,8 +18,17 @@ endif()
17 18 
18# 默认配置的makeself还是不存在则下载19# 默认配置的makeself还是不存在则下载
19if (NOT EXISTS "${MAKESELF_PATH}/makeself-header.sh" OR NOT EXISTS "${MAKESELF_PATH}/makeself.sh")20if (NOT EXISTS "${MAKESELF_PATH}/makeself-header.sh" OR NOT EXISTS "${MAKESELF_PATH}/makeself.sh")
20- set(MAKESELF_URL "https://gitcode.com/cann-src-third-party/makeself/releases/download/release-2.5.0-patch1.0/makeself-release-2.5.0-patch1.tar.gz")21+ # 优先查找本地压缩包
21- message(STATUS "Downloading ${MAKESELF_NAME} from ${MAKESELF_URL}")22+ if(EXISTS "${CANN_3RD_LIB_PATH}/pkg/${MAKESELF_VERSION_PKG}")
23+ set(REQ_URL "file://${CANN_3RD_LIB_PATH}/pkg/${MAKESELF_VERSION_PKG}")
24+ message(STATUS "[ThirdPartyLib][makeself] found in ${REQ_URL}.")
25+ elseif(EXISTS "${CANN_3RD_LIB_PATH}/${MAKESELF_VERSION_PKG}")
26+ set(REQ_URL "file://${CANN_3RD_LIB_PATH}/${MAKESELF_VERSION_PKG}")
27+ message(STATUS "[ThirdPartyLib][makeself] found in ${REQ_URL}.")
28+ else()
29+ set(REQ_URL "https://gitcode.com/cann-src-third-party/makeself/releases/download/release-2.5.0-patch1.0/makeself-release-2.5.0-patch1.tar.gz")
30+ message(STATUS "[ThirdPartyLib][makeself] ${REQ_URL} not found, need download.")
31+ endif()
22 32 
23 include(FetchContent)33 include(FetchContent)
24 FetchContent_Declare(34 FetchContent_Declare(
@@ -37,10 +37,21 @@ if(json_FOUND AND NOT FORCE_REBUILD_CANN_3RD)
37 set(JSON_INCLUDE ${JSON_INSTALL_PATH}/include)37 set(JSON_INCLUDE ${JSON_INSTALL_PATH}/include)
38 add_custom_target(nlohmann_json)38 add_custom_target(nlohmann_json)
39else()39else()
40- message("not use cache, download the json code")40+ if(EXISTS "${CANN_3RD_LIB_PATH}/pkg/include.zip")
41+ set(REQ_URL "file://${CANN_3RD_LIB_PATH}/pkg/include.zip")
42+ message(STATUS "[ThirdPartyLib][json] found in ${REQ_URL}.")
43+ elseif(EXISTS "${CANN_3RD_LIB_PATH}/include.zip")
44+ set(REQ_URL "file://${CANN_3RD_LIB_PATH}/include.zip")
45+ set(JSON_DOWNLOAD_PATH ${CANN_3RD_LIB_PATH})
46+ message(STATUS "[ThirdPartyLib][json] found in ${REQ_URL}.")
47+ else()
48+ set(REQ_URL "https://gitcode.com/cann-src-third-party/json/releases/download/v3.11.3/include.zip")
49+ message(STATUS "[ThirdPartyLib][json] ${REQ_URL} not found, need download.")
50+ endif()
51+ 
41 include(ExternalProject)52 include(ExternalProject)
42 ExternalProject_Add(nlohmann_json53 ExternalProject_Add(nlohmann_json
43- URL https://gitcode.com/cann-src-third-party/json/releases/download/v3.11.3/include.zip54+ URL ${REQ_URL}
44 URL_MD5 e2f46211f4cf5285412a63e8164d4ba655 URL_MD5 e2f46211f4cf5285412a63e8164d4ba6
45 DOWNLOAD_DIR ${JSON_DOWNLOAD_PATH}56 DOWNLOAD_DIR ${JSON_DOWNLOAD_PATH}
46 SOURCE_DIR ${JSON_INSTALL_PATH}57 SOURCE_DIR ${JSON_INSTALL_PATH}
@@ -1 +1 @@
1-20260228_10091+20260328_1729
@@ -27,16 +27,16 @@ def execute_process(cmd_list: list, cwd=None):
27 27 
28 28 
29def git_download():29def git_download():
30+ download_dir = os.path.join(current_dir, "cann_3rd_lib_path_download")
30 for url in list(set(git_repo_urls)):31 for url in list(set(git_repo_urls)):
31 file_name = url.split('/')[-1]32 file_name = url.split('/')[-1]
32 file_name = file_name.rsplit(".git", 1)[0]33 file_name = file_name.rsplit(".git", 1)[0]
33 if not file_name:34 if not file_name:
34 file_name = "downloaded_file"35 file_name = "downloaded_file"
35- file_path = os.path.join(current_dir, file_name)36+ file_path = os.path.join(download_dir, file_name)
36 if not Path(file_path).exists():37 if not Path(file_path).exists():
37 execute_process(["git", "clone", url, file_path])38 execute_process(["git", "clone", url, file_path])
38 else:39 else:
39- cmd_list = ["git", "fetch", "origin", "&&", "git", "reset" "--hard" "HEAD"]
40 execute_process(["git", "fetch", "origin"], cwd=file_path)40 execute_process(["git", "fetch", "origin"], cwd=file_path)
41 execute_process(["git", "reset", "--hard", "origin/HEAD"], cwd=file_path)41 execute_process(["git", "reset", "--hard", "origin/HEAD"], cwd=file_path)
42 42 
@@ -55,7 +55,7 @@ def down_files_native(url_list):
55 55 
56 # 将文件保存到新建的目录下56 # 将文件保存到新建的目录下
57 file_path = os.path.join(download_dir, file_name)57 file_path = os.path.join(download_dir, file_name)
58- 58+ print(f"正在下载 {url} 到 {file_path}")
59 urllib.request.urlretrieve(url, file_path)59 urllib.request.urlretrieve(url, file_path)
60 60 
61 61