Fix downloader -s cengn-first strategy
downloader -s fails on setuptools, reason unknown. That issue is being tracked separately. However the point of the cengn-first strategy is to actually try the upstream url if the download from cengn fails. This update covers the Sourced download step of the below launchpad. The binary download step will be addressed as a separate update. Partial-Bug: 1967898 Signed-off-by: Scott Little <scott.little@windriver.com> Change-Id: Ie216dc104022f3247931355e55d89bcbc375c401
This commit is contained in:
parent
a54eff308e
commit
81e5f92b68
@ -76,6 +76,7 @@ def url_to_cengn(url):
|
||||
|
||||
def get_download_url(url, strategy):
|
||||
|
||||
alt_rt_url = None
|
||||
cengn_url = url_to_cengn(url)
|
||||
if strategy == "cengn":
|
||||
rt_url = cengn_url
|
||||
@ -85,18 +86,20 @@ def get_download_url(url, strategy):
|
||||
try:
|
||||
urllib.request.urlopen(cengn_url)
|
||||
rt_url = cengn_url
|
||||
alt_rt_url = url
|
||||
except:
|
||||
rt_url = url
|
||||
elif strategy == "upstream_first":
|
||||
try:
|
||||
urllib.request.urlopen(url)
|
||||
rt_url = url
|
||||
alt_rt_url = cengn_url
|
||||
except:
|
||||
rt_url = cengn_url
|
||||
else:
|
||||
raise Exception(f'Invalid value "{strategy}" of CENGN_STRATEGY')
|
||||
|
||||
return rt_url
|
||||
return (rt_url, alt_rt_url)
|
||||
|
||||
|
||||
def checksum_dsc(dsc_file, logger):
|
||||
@ -213,8 +216,6 @@ def download(url, savepath, logger):
|
||||
logger.info(f"Download {url} to {savepath}")
|
||||
download_cmd = "wget -t 5 --wait=15 %s -O %s"
|
||||
run_shell_cmd(download_cmd % (url, savepath), logger)
|
||||
# urllib.request.urlretrieve(url, savepath, DownloadProgress())
|
||||
|
||||
return True
|
||||
|
||||
|
||||
@ -248,7 +249,7 @@ class Parser():
|
||||
if CENGN_STRATEGY is not None:
|
||||
self.strategy = CENGN_STRATEGY
|
||||
# dry run to check the value of CENGN_STRATEGY
|
||||
get_download_url("https://testurl/tarball.tgz", self.strategy)
|
||||
get_download_url("https://testurl/tarball.tgz", self.strategy)[0]
|
||||
|
||||
if not os.path.isdir(basedir):
|
||||
self.logger.error("%s: No such file or directory", basedir)
|
||||
@ -725,8 +726,15 @@ class Parser():
|
||||
check_cmd = "md5sum"
|
||||
check_sum = dl_file_info['md5sum']
|
||||
if not checksum(dl_file, check_sum, check_cmd, self.logger):
|
||||
dl_url = get_download_url(url, self.strategy)
|
||||
download(dl_url, dl_file, self.logger)
|
||||
(dl_url, alt_dl_url) = get_download_url(url, self.strategy)
|
||||
if alt_dl_url:
|
||||
try:
|
||||
download(dl_url, dl_file, self.logger)
|
||||
except:
|
||||
download(alt_dl_url, dl_file, self.logger)
|
||||
|
||||
else:
|
||||
download(dl_url, dl_file, self.logger)
|
||||
|
||||
if "dl_path" in self.meta_data:
|
||||
dl_file = self.meta_data["dl_path"]["name"]
|
||||
@ -739,15 +747,29 @@ class Parser():
|
||||
check_cmd = "md5sum"
|
||||
check_sum = self.meta_data["dl_path"]['md5sum']
|
||||
if not checksum(dl_file, check_sum, check_cmd, self.logger):
|
||||
dl_url = get_download_url(url, self.strategy)
|
||||
download(dl_url, dl_file, self.logger)
|
||||
(dl_url, alt_dl_url) = get_download_url(url, self.strategy)
|
||||
if alt_dl_url:
|
||||
try:
|
||||
download(dl_url, dl_file, self.logger)
|
||||
except:
|
||||
download(alt_dl_url, dl_file, self.logger)
|
||||
else:
|
||||
download(dl_url, dl_file, self.logger)
|
||||
|
||||
elif "archive" in self.meta_data:
|
||||
ver = self.versions["full_version"].split(":")[-1]
|
||||
dsc_filename = self.pkginfo["debname"] + "_" + ver + ".dsc"
|
||||
if checksum_dsc(dsc_filename, self.logger) is False:
|
||||
dsc_file_upstream = os.path.join(self.meta_data["archive"], dsc_filename)
|
||||
dl_url = get_download_url(dsc_file_upstream, self.strategy)
|
||||
run_shell_cmd("dget -d %s" % dl_url, self.logger)
|
||||
(dl_url, alt_dl_url) = get_download_url(dsc_file_upstream, self.strategy)
|
||||
if alt_dl_url:
|
||||
try:
|
||||
run_shell_cmd("dget -d %s" % dl_url, self.logger)
|
||||
except:
|
||||
run_shell_cmd("dget -d %s" % alt_dl_url, self.logger)
|
||||
else:
|
||||
run_shell_cmd("dget -d %s" % dl_url, self.logger)
|
||||
|
||||
elif "src_path" not in self.meta_data and "dl_hook" not in self.meta_data:
|
||||
ver = self.versions["full_version"].split(":")[-1]
|
||||
dsc_filename = self.pkginfo["debname"] + "_" + ver + ".dsc"
|
||||
|
Loading…
x
Reference in New Issue
Block a user