From 61d2c55de6f8f7acd3bcc7eb1f0b9c13a87bf0a4 Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Thu, 1 Feb 2018 14:48:31 +1100 Subject: sb: Backport from 4.11 the --rsb-file with releases fixes. Close #3286 --- source-builder/sb/download.py | 16 ++++++-- source-builder/sb/options.py | 89 ++++++++++++++++++++++++++----------------- source-builder/sb/version.py | 24 +++++++++--- 3 files changed, 86 insertions(+), 43 deletions(-) (limited to 'source-builder/sb') diff --git a/source-builder/sb/download.py b/source-builder/sb/download.py index 32d801b..6c2593f 100644 --- a/source-builder/sb/download.py +++ b/source-builder/sb/download.py @@ -26,6 +26,7 @@ from __future__ import print_function import hashlib import os +import re import stat import sys try: @@ -301,6 +302,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. @@ -318,7 +324,6 @@ def parse_url(url, pathkey, config, opts, file_override = None): bad_chars = [c for c in ['/', '\\', '?', '*'] if c in file_override] if len(bad_chars) > 0: raise error.general('bad characters in file name: %s' % (file_override)) - log.output('download: file-override: %s' % (file_override)) source['file'] = file_override source['options'] += ['file-override'] @@ -591,10 +596,9 @@ 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') rtems_release_url = None if version.released() and rtems_release_url_value: rtems_release_url = rtems_release_url_value @@ -637,6 +641,12 @@ def get_file(url, local, opts, config): url_file = url_path[slash + 1:] log.trace('url_file: %s' %(url_file)) for base in url_bases: + # + # 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: + url_file = path.basename(local) if base[-1:] != '/': base += '/' next_url = urllib_parse.urljoin(base, url_file) diff --git a/source-builder/sb/options.py b/source-builder/sb/options.py index 7791329..7bbdd8c 100644 --- a/source-builder/sb/options.py +++ b/source-builder/sb/options.py @@ -54,34 +54,35 @@ class command_line: def __init__(self, argv, optargs, _defaults, command_path): self._long_opts = { # key macro handler param defs init - '--prefix' : ('_prefix', self._lo_path, True, None, False), - '--topdir' : ('_topdir', self._lo_path, True, None, False), - '--configdir' : ('_configdir', self._lo_path, True, None, False), - '--builddir' : ('_builddir', self._lo_path, True, None, False), - '--sourcedir' : ('_sourcedir', self._lo_path, True, None, False), - '--tmppath' : ('_tmppath', self._lo_path, True, None, False), - '--jobs' : ('_jobs', self._lo_jobs, True, 'max', True), - '--log' : ('_logfile', self._lo_string, True, None, False), - '--url' : ('_url_base', self._lo_string, True, None, False), - '--no-download' : ('_disable_download', self._lo_bool, False, '0', True), - '--macros' : ('_macros', self._lo_string, True, None, False), - '--targetcflags' : ('_targetcflags', self._lo_string, True, None, False), - '--targetcxxflags' : ('_targetcxxflags', self._lo_string, True, None, False), - '--libstdcxxflags' : ('_libstdcxxflags', self._lo_string, True, None, False), - '--force' : ('_force', self._lo_bool, False, '0', True), - '--quiet' : ('_quiet', self._lo_bool, False, '0', True), - '--trace' : ('_trace', self._lo_bool, False, '0', True), - '--dry-run' : ('_dry_run', self._lo_bool, False, '0', True), - '--warn-all' : ('_warn_all', self._lo_bool, False, '0', True), - '--no-clean' : ('_no_clean', self._lo_bool, False, '0', True), - '--keep-going' : ('_keep_going', self._lo_bool, False, '0', True), - '--always-clean' : ('_always_clean', self._lo_bool, False, '0', True), - '--no-install' : ('_no_install', self._lo_bool, False, '0', True), - '--regression' : ('_regression', self._lo_bool, False, '0', True), - '--host' : ('_host', self._lo_triplets, True, None, False), - '--build' : ('_build', self._lo_triplets, True, None, False), - '--target' : ('_target', self._lo_triplets, True, None, False), - '--help' : (None, self._lo_help, False, None, False) + '--prefix' : ('_prefix', self._lo_path, True, None, False), + '--topdir' : ('_topdir', self._lo_path, True, None, False), + '--configdir' : ('_configdir', self._lo_path, True, None, False), + '--builddir' : ('_builddir', self._lo_path, True, None, False), + '--sourcedir' : ('_sourcedir', self._lo_path, True, None, False), + '--tmppath' : ('_tmppath', self._lo_path, True, None, False), + '--jobs' : ('_jobs', self._lo_jobs, True, 'max', True), + '--log' : ('_logfile', self._lo_string, True, None, False), + '--url' : ('_url_base', self._lo_string, True, None, False), + '--no-download' : ('_disable_download', self._lo_bool, False, '0', True), + '--macros' : ('_macros', self._lo_string, True, None, False), + '--source-only-download' : ('_source_download', self._lo_bool, False, '0', True), + '--targetcflags' : ('_targetcflags', self._lo_string, True, None, False), + '--targetcxxflags' : ('_targetcxxflags', self._lo_string, True, None, False), + '--libstdcxxflags' : ('_libstdcxxflags', self._lo_string, True, None, False), + '--force' : ('_force', self._lo_bool, False, '0', True), + '--quiet' : ('_quiet', self._lo_bool, False, '0', True), + '--trace' : ('_trace', self._lo_bool, False, '0', True), + '--dry-run' : ('_dry_run', self._lo_bool, False, '0', True), + '--warn-all' : ('_warn_all', self._lo_bool, False, '0', True), + '--no-clean' : ('_no_clean', self._lo_bool, False, '0', True), + '--keep-going' : ('_keep_going', self._lo_bool, False, '0', True), + '--always-clean' : ('_always_clean', self._lo_bool, False, '0', True), + '--no-install' : ('_no_install', self._lo_bool, False, '0', True), + '--regression' : ('_regression', self._lo_bool, False, '0', True), + '--host' : ('_host', self._lo_triplets, True, None, False), + '--build' : ('_build', self._lo_triplets, True, None, False), + '--target' : ('_target', self._lo_triplets, True, None, False), + '--help' : (None, self._lo_help, False, None, False) } self.command_path = command_path @@ -222,6 +223,7 @@ class command_line: print('--targetcflags flags : List of C flags for the target code') print('--targetcxxflags flags : List of C++ flags for the target code') print('--libstdcxxflags flags : List of C++ flags to build the target libstdc++ code') + print('--source-only-download : Only download the source') print('--with-