summaryrefslogtreecommitdiffstats
path: root/source-builder/sb/download.py
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2016-03-10 16:19:58 +1100
committerChris Johns <chrisj@rtems.org>2016-03-10 16:32:49 +1100
commitd3fa1581091bed9d66e5a071be76ce5830a8a6c9 (patch)
tree309805ec75f27b9ad18227802a6b62bb8c19228f /source-builder/sb/download.py
parentsb: Fix typo on the urlparse name in download.py (diff)
downloadrtems-source-builder-d3fa1581091bed9d66e5a071be76ce5830a8a6c9.tar.bz2
sb: Add a download option --with-release-url/--without-release-url.
The default without the option is to prepend the release URL to the URL list to download from the RTEMS FTP site first if the RSB is released. This option can force the RTEMS FTP to be tried first when not a release, or you can supply a different URL to download from or you can request no RTEMS URL is tried first. Eg: --with-release-url --with-release-url=file://opt/local/cache --without-release-url Move the RTEMS release URL to the default.mc file. Change the URL to the RTEMS FTP server and do not use the https method of access. The option's with_arg call was cleaned up to make sense. Remove the log's raw output of an extra space. Some download error message formating was cleaned up. Closes #2636.
Diffstat (limited to 'source-builder/sb/download.py')
-rw-r--r--source-builder/sb/download.py30
1 files changed, 22 insertions, 8 deletions
diff --git a/source-builder/sb/download.py b/source-builder/sb/download.py
index d218a9e..9facf06 100644
--- a/source-builder/sb/download.py
+++ b/source-builder/sb/download.py
@@ -336,7 +336,7 @@ def _http_downloader(url, local, config, opts):
_chunk = None
_last_percent = 200.0
_last_msg = ''
- _wipe_output = False
+ _have_status_output = False
try:
try:
_in = None
@@ -367,17 +367,16 @@ def _http_downloader(url, local, config, opts):
extras = (len(_last_msg) - len(_msg))
log.stdout_raw('%s%s' % (_msg, ' ' * extras + '\b' * extras))
_last_msg = _msg
+ _have_status_output = True
_chunk = _in.read(_chunk_size)
if not _chunk:
break
_out.write(_chunk)
_have += len(_chunk)
- if _wipe_output:
- log.stdout_raw('\r%s\r' % (' ' * len(_last_msg)))
- else:
- log.stdout_raw('\n')
+ log.stdout_raw('\n\r')
except:
- log.stdout_raw('\n')
+ if _have_status_output:
+ log.stdout_raw('\n\r')
raise
except IOError as err:
log.notice('download: %s: error: %s' % (url, str(err)))
@@ -557,11 +556,26 @@ def get_file(url, local, opts, config):
raise error.general('source not found: %s' % (path.host(local)))
#
# Check if a URL has been provided on the command line. If the package is
- # release push to the start the RTEMS URL.
+ # released push to the start the RTEMS URL unless overrided by the command
+ # line option --with-release-url. The variant --without-release-url can
+ # override the released check.
#
url_bases = opts.urls()
+ rtems_release_url_value = config.macros.expand('%{rtems_release_url}/%{rsb_version}/sources')
+ rtems_release_url = None
if version.released():
- rtems_release_url = config.macros.expand('%{rtems_release_url}/%{rsb_version}/sources')
+ rtems_release_url = rtems_release_url_value
+ with_rel_url = opts.with_arg('release-url')
+ if with_rel_url[0] == 'with_release-url':
+ if with_rel_url[1] == 'yes':
+ rtems_release_url = rtems_release_url_value
+ elif with_rel_url[1] == 'no':
+ pass
+ else:
+ rtems_release_url = with_rel_url[1]
+ elif with_rel_url[0] == 'without_release-url' and with_rel_url[1] == 'no':
+ rtems_release_url = rtems_release_url_value
+ if rtems_release_url is not None:
log.trace('release url: %s' % (rtems_release_url))
#
# If the URL being fetched is under the release path do not add the