[PATCH 1/4] sb: Add support for a comma separated release path list.

chrisj at rtems.org chrisj at rtems.org
Sun Nov 17 22:00:59 UTC 2019


From: Chris Johns <chrisj at rtems.org>

Updates #3814
---
 source-builder/sb/download.py | 32 +++++++++++++++++---------------
 source-builder/sb/version.py  |  9 +++++----
 2 files changed, 22 insertions(+), 19 deletions(-)

diff --git a/source-builder/sb/download.py b/source-builder/sb/download.py
index 1fb0155..e197879 100644
--- a/source-builder/sb/download.py
+++ b/source-builder/sb/download.py
@@ -599,16 +599,19 @@ 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
-    # 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.
+    # released push the release path URLs to the start the RTEMS URL list
+    # unless overriden by the command line option --without-release-url. The
+    # variant --without-release-url can override the released check.
     #
     url_bases = opts.urls()
+    if url_bases is None:
+        url_bases = []
     try:
         rtems_release_url_value = config.macros.expand('%{release_path}')
     except:
         rtems_release_url_value = None
     rtems_release_url = None
+    rtems_release_urls = []
     if version.released() and rtems_release_url_value:
         rtems_release_url = rtems_release_url_value
     with_rel_url = opts.with_arg('release-url')
@@ -627,18 +630,17 @@ def get_file(url, local, opts, config):
     elif with_rel_url[0] == 'without_release-url' and with_rel_url[1] == 'yes':
         rtems_release_url = None
     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
-        # 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)
+        rtems_release_urls = rtems_release_url.split(',')
+        for release_url in rtems_release_urls:
+            log.trace('release url: %s' % (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(release_url):
+                url_bases = [release_url] + url_bases
     urls = []
-    if url_bases is not None:
+    if len(url_bases) > 0:
         #
         # Split up the URL we are being asked to download.
         #
@@ -654,7 +656,7 @@ def get_file(url, local, opts, config):
             # Hack to fix #3064 where --rsb-file is being used. This code is a
             # mess and should be refactored.
             #
-            if version.released() and base == rtems_release_url:
+            if version.released() and base in rtems_release_urls:
                 url_file = path.basename(local)
             if base[-1:] != '/':
                 base += '/'
diff --git a/source-builder/sb/version.py b/source-builder/sb/version.py
index 0148614..34fb421 100644
--- a/source-builder/sb/version.py
+++ b/source-builder/sb/version.py
@@ -112,15 +112,16 @@ def load_release_settings(macros):
                 hashes = v.items('hashes')
             except:
                 hashes = []
-            try:
-                release_path = v.get('version', 'release_path', raw = True)
-            except:
-                release_path = None
             for hash in hashes:
                 hs = hash[1].split()
                 if len(hs) != 2:
                     raise error.general('invalid release hash in VERSION')
                 sources.hash((hs[0], hash[0], hs[1]), macros, setting_error)
+            try:
+                release_path = v.get('version', 'release_path', raw = True)
+                release_path = ','.join([rp.strip() for rp in release_path.split(',')])
+            except:
+                release_path = None
             download.set_release_path(release_path, macros)
 
 def version():
-- 
2.19.1



More information about the devel mailing list