[rtems-source-builder commit] sb: Add the `release_path` key to the `version` section in the VERSION file.

Chris Johns chrisj at rtems.org
Sun Mar 26 02:44:37 UTC 2017


Module:    rtems-source-builder
Branch:    master
Commit:    78e7f6a7513dd69258116fc298123e9904ff82f0
Changeset: http://git.rtems.org/rtems-source-builder/commit/?id=78e7f6a7513dd69258116fc298123e9904ff82f0

Author:    Chris Johns <chrisj at rtems.org>
Date:      Sun Mar 26 13:19:18 2017 +1100

sb: Add the `release_path` key to the `version` section in the VERSION file.

A release can specify a custom releaase URL path.

Closes #2952.

---

 source-builder/sb/download.py |  7 ++++++-
 source-builder/sb/options.py  |  4 ++--
 source-builder/sb/version.py  | 22 +++++++++++++++++-----
 3 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/source-builder/sb/download.py b/source-builder/sb/download.py
index 32d801b..4bba7de 100644
--- a/source-builder/sb/download.py
+++ b/source-builder/sb/download.py
@@ -301,6 +301,11 @@ parsers = { 'http': _http_parser,
             'cvs':  _cvs_parser,
             'file': _file_parser }
 
+def set_release_path(release_path, macros):
+    if release_path is None:
+        release_path = '%{rtems_release_url}/%{rsb_version}/sources'
+    macros.define('release_path', release_path)
+
 def parse_url(url, pathkey, config, opts, file_override = None):
     #
     # Split the source up into the parts we need.
@@ -591,7 +596,7 @@ def get_file(url, local, opts, config):
     #
     url_bases = opts.urls()
     try:
-        rtems_release_url_value = config.macros.expand('%{rtems_release_url}/%{rsb_version}/sources')
+        rtems_release_url_value = config.macros.expand('%{release_path}')
     except:
         rtems_release_url_value = None
         log.output('RTEMS release URL could not be expanded')
diff --git a/source-builder/sb/options.py b/source-builder/sb/options.py
index 7791329..089d5a7 100644
--- a/source-builder/sb/options.py
+++ b/source-builder/sb/options.py
@@ -641,9 +641,9 @@ def load(args, optargs = None, defaults = '%{_sbdir}/defaults.mc'):
     o.post_process()
 
     #
-    # Load the release hashes
+    # Load the release settings
     #
-    version.load_release_hashes(o.defaults)
+    version.load_release_settings(o.defaults)
 
     return o
 
diff --git a/source-builder/sb/version.py b/source-builder/sb/version.py
index e1078bb..da6aa02 100644
--- a/source-builder/sb/version.py
+++ b/source-builder/sb/version.py
@@ -26,6 +26,7 @@ from __future__ import print_function
 
 import sys
 
+import download
 import error
 import git
 import path
@@ -55,7 +56,10 @@ def _load_released_version_config():
             except ImportError:
                 import ConfigParser as configparser
             v = configparser.SafeConfigParser()
-            v.read(path.join(ver, 'VERSION'))
+            try:
+                v.read(path.join(ver, 'VERSION'))
+            except:
+                raise error.general('Invalid VERSION file')
             return v
     return None
 
@@ -64,7 +68,10 @@ def _load_released_version():
     global _version_str
     v = _load_released_version_config()
     if v is not None:
-        _version_str = v.get('version', 'release')
+        try:
+            _version_str = v.get('version', 'release')
+        except:
+            raise error.general('Invalid VERSION file')
         _released = True
     return _released
 
@@ -94,8 +101,8 @@ def str():
             _load_git_version()
     return _version_str
 
-def load_release_hashes(macros):
-    def hash_error(msg):
+def load_release_settings(macros):
+    def setting_error(msg):
         raise error.general(msg)
 
     if released():
@@ -105,11 +112,16 @@ def load_release_hashes(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, hash_error)
+                sources.hash((hs[0], hash[0], hs[1]), macros, setting_error)
+            download.set_release_path(release_path, macros)
 
 def version():
     return _version



More information about the vc mailing list