已合并
工程构建适配离线下载脚本 #3293
yang-di52创建于 3月28日
工程构建适配离线下载脚本 #3293
已合并
共 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) |
| 12 | endif() | 12 | endif() |
| 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 | ||
| 16 | if (EXISTS "${CANN_3RD_LIB_PATH}/eigen-5.0.0/CMakeLists.txt" AND NOT FORCE_REBUILD_CANN_3RD) | 16 | if (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") |
| 22 | else() | 22 | else() |
| 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_nn | 35 | ExternalProject_Add(external_eigen_nn |
| 27 | TLS_VERIFY OFF | 36 | 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}/eigen | 39 | 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}") | |||
| 63 | if(gtest_FOUND AND NOT FORCE_REBUILD_CANN_3RD) | 63 | if(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") |
| 65 | else() | 65 | else() |
| 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 | ||
| 11 | set(MAKESELF_NAME "makeself") | 11 | set(MAKESELF_NAME "makeself") |
| 12 | set(MAKESELF_PATH ${CANN_3RD_LIB_PATH}/makeself) | 12 | set(MAKESELF_PATH ${CANN_3RD_LIB_PATH}/makeself) |
| 13 | +set(MAKESELF_VERSION_PKG makeself-release-2.5.0-patch1.tar.gz) | ||
| 13 | 14 | ||
| 14 | if (POLICY CMP0135) | 15 | if (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还是不存在则下载 |
| 19 | if (NOT EXISTS "${MAKESELF_PATH}/makeself-header.sh" OR NOT EXISTS "${MAKESELF_PATH}/makeself.sh") | 20 | if (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) |
| 39 | else() | 39 | else() |
| 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_json | 53 | ExternalProject_Add(nlohmann_json |
| 43 | - URL https://gitcode.com/cann-src-third-party/json/releases/download/v3.11.3/include.zip | 54 | + URL ${REQ_URL} |
| 44 | URL_MD5 e2f46211f4cf5285412a63e8164d4ba6 | 55 | 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_1009 | 1 | +20260328_1729 |
| @@ -27,16 +27,16 @@ def execute_process(cmd_list: list, cwd=None): | |||
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | def git_download(): | 29 | def 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 | ||