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.
This commit is contained in:
Chris Johns 2017-03-26 13:19:18 +11:00
parent 97b4399d1a
commit dca7ab2853
3 changed files with 25 additions and 8 deletions

View File

@ -296,6 +296,11 @@ parsers = { 'http': _http_parser,
'cvs': _cvs_parser, 'cvs': _cvs_parser,
'file': _file_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): def parse_url(url, pathkey, config, opts):
# #
# Split the source up into the parts we need. # Split the source up into the parts we need.
@ -575,7 +580,7 @@ def get_file(url, local, opts, config):
# #
url_bases = opts.urls() url_bases = opts.urls()
try: try:
rtems_release_url_value = config.macros.expand('%{rtems_release_url}/%{rsb_version}/sources') rtems_release_url_value = config.macros.expand('%{release_path}')
except: except:
rtems_release_url_value = None rtems_release_url_value = None
log.output('RTEMS release URL could not be expanded') log.output('RTEMS release URL could not be expanded')

View File

@ -641,9 +641,9 @@ def load(args, optargs = None, defaults = '%{_sbdir}/defaults.mc'):
o.post_process() 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 return o

View File

@ -26,6 +26,7 @@ from __future__ import print_function
import sys import sys
import download
import error import error
import git import git
import path import path
@ -55,7 +56,10 @@ def _load_released_version_config():
except ImportError: except ImportError:
import ConfigParser as configparser import ConfigParser as configparser
v = configparser.SafeConfigParser() 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 v
return None return None
@ -64,7 +68,10 @@ def _load_released_version():
global _version_str global _version_str
v = _load_released_version_config() v = _load_released_version_config()
if v is not None: 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 _released = True
return _released return _released
@ -94,8 +101,8 @@ def str():
_load_git_version() _load_git_version()
return _version_str return _version_str
def load_release_hashes(macros): def load_release_settings(macros):
def hash_error(msg): def setting_error(msg):
raise error.general(msg) raise error.general(msg)
if released(): if released():
@ -105,11 +112,16 @@ def load_release_hashes(macros):
hashes = v.items('hashes') hashes = v.items('hashes')
except: except:
hashes = [] hashes = []
try:
release_path = v.get('version', 'release_path', raw = True)
except:
release_path = None
for hash in hashes: for hash in hashes:
hs = hash[1].split() hs = hash[1].split()
if len(hs) != 2: if len(hs) != 2:
raise error.general('invalid release hash in VERSION') 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(): def version():
return _version return _version