mirror of
https://git.rtems.org/rtems-source-builder
synced 2024-10-09 07:15:10 +08:00
Download source from RTEMS if a release.
Download source from ftp.rtems.org before the package's URL if a release. If a user adds a URL via the command line that is used then the RTEMS release path then the package's URL. A user can add --url=file://path/../morepath to have the RSB use a local cache of source on their hard disk. This is useful if you need to wipe the RSB and start again. Save away the 'sources' and 'patches' directories to a common directory and provide it with via the --url option using the 'file://' prefix. Closes #2482.
This commit is contained in:
parent
620150c289
commit
12f253cf2e
@ -513,10 +513,14 @@ def _cvs_downloader(url, local, config, opts):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def _file_downloader(url, local, config, opts):
|
def _file_downloader(url, local, config, opts):
|
||||||
try:
|
if not path.exists(local):
|
||||||
path.copy(url[6:], local)
|
try:
|
||||||
except:
|
src = url[7:]
|
||||||
return False
|
dst = local
|
||||||
|
log.notice('download: copy %s -> %s' % (src, dst))
|
||||||
|
path.copy(src, dst)
|
||||||
|
except:
|
||||||
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
downloaders = { 'http': _http_downloader,
|
downloaders = { 'http': _http_downloader,
|
||||||
@ -538,21 +542,40 @@ def get_file(url, local, opts, config):
|
|||||||
if not path.exists(local) and opts.download_disabled():
|
if not path.exists(local) and opts.download_disabled():
|
||||||
raise error.general('source not found: %s' % (path.host(local)))
|
raise error.general('source not found: %s' % (path.host(local)))
|
||||||
#
|
#
|
||||||
# Check if a URL has been provided on the command line.
|
# Check if a URL has been provided on the command line. If the package is
|
||||||
|
# release push to the start the RTEMS URL.
|
||||||
#
|
#
|
||||||
url_bases = opts.urls()
|
url_bases = opts.urls()
|
||||||
|
if version.released():
|
||||||
|
rtems_release_url = config.macros.expand('%{rtems_release_url}/%{rsb_version}/sources')
|
||||||
|
log.trace('release url: %s' % (rtems_release_url))
|
||||||
|
#
|
||||||
|
# If the URL being fetched is under the release path do not add the
|
||||||
|
# sources release path because it is already there.
|
||||||
|
#
|
||||||
|
if not url.startswith(rtems_release_url):
|
||||||
|
if url_bases is None:
|
||||||
|
url_bases = [rtems_release_url]
|
||||||
|
else:
|
||||||
|
url_bases.append(rtems_release_url)
|
||||||
urls = []
|
urls = []
|
||||||
if url_bases is not None:
|
if url_bases is not None:
|
||||||
|
#
|
||||||
|
# Split up the URL we are being asked to download.
|
||||||
|
#
|
||||||
|
url_path = urlparse.urlsplit(url)[2]
|
||||||
|
slash = url_path.rfind('/')
|
||||||
|
if slash < 0:
|
||||||
|
url_file = url_path
|
||||||
|
else:
|
||||||
|
url_file = url_path[slash + 1:]
|
||||||
|
log.trace('url_file: %s' %(url_file))
|
||||||
for base in url_bases:
|
for base in url_bases:
|
||||||
if base[-1:] != '/':
|
if base[-1:] != '/':
|
||||||
base += '/'
|
base += '/'
|
||||||
url_path = urlparse.urlsplit(url)[2]
|
next_url = urlparse.urljoin(base, url_file)
|
||||||
slash = url_path.rfind('/')
|
log.trace('url: %s' %(next_url))
|
||||||
if slash < 0:
|
urls.append(next_url)
|
||||||
url_file = url_path
|
|
||||||
else:
|
|
||||||
url_file = url_path[slash + 1:]
|
|
||||||
urls.append(urlparse.urljoin(base, url_file))
|
|
||||||
urls += url.split()
|
urls += url.split()
|
||||||
log.trace('_url: %s -> %s' % (','.join(urls), local))
|
log.trace('_url: %s -> %s' % (','.join(urls), local))
|
||||||
for url in urls:
|
for url in urls:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user