Index: rtems/config/rtems-urls.bset
===================================================================
--- rtems/config/rtems-urls.bset	(revision 62f76d981759545889f251bc81ebf4493ccd70e4)
+++ rtems/config/rtems-urls.bset	(revision d3fa1581091bed9d66e5a071be76ce5830a8a6c9)
@@ -14,7 +14,2 @@
 %define rtems_newlib_patches   %{rtems_git_tools}/newlib
 %define rtems_gdb_patches      %{rtems_git_tools}/gdb
-
-#
-# Releases paths on the FTP server.
-#
-%define rtems_release_url https://ftp.rtems.org/pub/rtems/releases/%{rtems_version}
Index: source-builder/defaults.mc
===================================================================
--- source-builder/defaults.mc	(revision 62f76d981759545889f251bc81ebf4493ccd70e4)
+++ source-builder/defaults.mc	(revision d3fa1581091bed9d66e5a071be76ce5830a8a6c9)
@@ -54,4 +54,7 @@
 _build:              triplet, required, ''
 _target:             none,    optional, ''
+
+# RTEMS release URL
+rtems_release_url:   none,    none,     'ftp://ftp.rtems.org/pub/rtems/releases/%{rtems_version}'
 
 # The user
Index: source-builder/sb/download.py
===================================================================
--- source-builder/sb/download.py	(revision 62f76d981759545889f251bc81ebf4493ccd70e4)
+++ source-builder/sb/download.py	(revision d3fa1581091bed9d66e5a071be76ce5830a8a6c9)
@@ -337,5 +337,5 @@
         _last_percent = 200.0
         _last_msg = ''
-        _wipe_output = False
+        _have_status_output = False
         try:
             try:
@@ -368,4 +368,5 @@
                         log.stdout_raw('%s%s' % (_msg, ' ' * extras + '\b' * extras))
                         _last_msg = _msg
+                        _have_status_output = True
                     _chunk = _in.read(_chunk_size)
                     if not _chunk:
@@ -373,10 +374,8 @@
                     _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:
@@ -558,9 +557,24 @@
     #
     # 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))
         #
Index: source-builder/sb/log.py
===================================================================
--- source-builder/sb/log.py	(revision 62f76d981759545889f251bc81ebf4493ccd70e4)
+++ source-builder/sb/log.py	(revision d3fa1581091bed9d66e5a071be76ce5830a8a6c9)
@@ -63,5 +63,5 @@
 
 def stdout_raw(text = os.linesep):
-    print(text, end=' ')
+    print(text, end = '')
     sys.stdout.flush()
 
Index: source-builder/sb/options.py
===================================================================
--- source-builder/sb/options.py	(revision 62f76d981759545889f251bc81ebf4493ccd70e4)
+++ source-builder/sb/options.py	(revision d3fa1581091bed9d66e5a071be76ce5830a8a6c9)
@@ -461,5 +461,7 @@
         return self.parse_args(arg)
 
-    def with_arg(self, label):
+    def with_arg(self, label, default = 'not-found'):
+        # the default if there is no option for without.
+        result = default
         for pre in ['with', 'without']:
             arg_str = '--%s-%s' % (pre, label)
@@ -472,8 +474,4 @@
                     result = arg[1]
                 break
-            if pre == 'with':
-                result = 'yes'
-            else:
-                result = 'no'
         return [arg_label, result]
 
