import urllib.request
import urllib.error
import subprocess
import os
import sys
def down_files_native(url_list):
current_dir = os.path.dirname(os.path.abspath(__file__))
failed_urls = []
for url in url_list:
file_name = url.split("/")[-1]
if not file_name:
file_name = "downloaded_file"
file_path = os.path.join(current_dir, file_name)
try:
urllib.request.urlretrieve(url, file_path)
print(f"Successfully downloaded {url}")
except (urllib.error.URLError, urllib.error.HTTPError, OSError) as ex:
print(f"Failed to download {url}, error: {ex}")
failed_urls.append(url)
if os.path.exists(file_path):
os.remove(file_path)
return failed_urls
def git_download(url_list):
current_dir = os.path.dirname(os.path.abspath(__file__))
failed_urls = []
for url in url_list:
file_name = url.split("/")[-1]
file_name = file_name.rsplit(".git", 1)[0]
if not file_name:
file_name = "downloaded_file"
file_path = os.path.join(current_dir, file_name)
result = subprocess.run(
["git", "clone", url, file_path], capture_output=True, text=True
)
if result.returncode != 0:
print(f"Failed to clone {url}, {result.stderr}")
failed_urls.append(url)
return failed_urls
if __name__ == "__main__":
my_urls = [
"https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/json/json-3.11.3.tar.gz",
(
"https://gitcode.com/cann-src-third-party/makeself/releases/download/"
"release-2.5.0-patch1.0/makeself-release-2.5.0-patch1.tar.gz"
),
"https://gitcode.com/cann-src-third-party/eigen/releases/download/5.0.0-h0.trunk/eigen-5.0.0.tar.gz",
"https://gitcode.com/cann-src-third-party/protobuf/releases/download/v25.1/protobuf-25.1.tar.gz",
(
"https://gitcode.com/cann-src-third-party/abseil-cpp/releases/download/"
"20230802.1/abseil-cpp-20230802.1.tar.gz"
),
"https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/cmake/cmake-master-049.tar.gz",
]
failed_downloads = down_files_native(my_urls)
my_git_urls = ["https://gitcode.com/cann/opbase.git"]
failed_clones = git_download(my_git_urls)
if failed_downloads or failed_clones:
print(
"Third-party library download failed, failed urls: "
f"{failed_downloads + failed_clones}"
)
sys.exit(1)