mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
devtool: add: add explicit srcrev/branch options
At the moment when fetching source from a git repository you have to know that you can specify the revision and branch in the URL with ';rev=' and ';branch=' respectively, and you can also get thrown off by the shell splitting on the ; character if you forget to surround the URL in quotes. Add explicit -S/--srcrev and -B/--srcbranch options (consistent with devtool upgrade) to make this easier for the user to discover and use. (The rev and branch URL parameters will continue to work, however.) (From OE-Core rev: 2d86cac853d6daa496c0315a5cb0662ebf1165b0) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
3be475019f
commit
e97cd0017b
|
@ -1,6 +1,6 @@
|
|||
# Development tool - standard commands plugin
|
||||
#
|
||||
# Copyright (C) 2014-2016 Intel Corporation
|
||||
# Copyright (C) 2014-2017 Intel Corporation
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License version 2 as
|
||||
|
@ -66,6 +66,12 @@ def add(args, config, basepath, workspace):
|
|||
elif os.path.isdir(args.recipename):
|
||||
logger.warn('Ambiguous argument "%s" - assuming you mean it to be the recipe name' % args.recipename)
|
||||
|
||||
if not args.fetchuri:
|
||||
if args.srcrev:
|
||||
raise DevtoolError('The -S/--srcrev option is only valid when fetching from an SCM repository')
|
||||
if args.srcbranch:
|
||||
raise DevtoolError('The -B/--srcbranch option is only valid when fetching from an SCM repository')
|
||||
|
||||
if args.srctree and os.path.isfile(args.srctree):
|
||||
args.fetchuri = 'file://' + os.path.abspath(args.srctree)
|
||||
args.srctree = ''
|
||||
|
@ -151,6 +157,10 @@ def add(args, config, basepath, workspace):
|
|||
extracmdopts += ' --fetch-dev'
|
||||
if args.mirrors:
|
||||
extracmdopts += ' --mirrors'
|
||||
if args.srcrev:
|
||||
extracmdopts += ' --srcrev %s' % args.srcrev
|
||||
if args.srcbranch:
|
||||
extracmdopts += ' --srcbranch %s' % args.srcbranch
|
||||
|
||||
tempdir = tempfile.mkdtemp(prefix='devtool')
|
||||
try:
|
||||
|
@ -1809,7 +1819,10 @@ def register_commands(subparsers, context):
|
|||
parser_add.add_argument('--fetch-dev', help='For npm, also fetch devDependencies', action="store_true")
|
||||
parser_add.add_argument('--version', '-V', help='Version to use within recipe (PV)')
|
||||
parser_add.add_argument('--no-git', '-g', help='If fetching source, do not set up source tree as a git repository', action="store_true")
|
||||
parser_add.add_argument('--autorev', '-a', help='When fetching from a git repository, set SRCREV in the recipe to a floating revision instead of fixed', action="store_true")
|
||||
group = parser_add.add_mutually_exclusive_group()
|
||||
group.add_argument('--srcrev', '-S', help='Source revision to fetch if fetching from an SCM such as git (default latest)')
|
||||
group.add_argument('--autorev', '-a', help='When fetching from a git repository, set SRCREV in the recipe to a floating revision instead of fixed', action="store_true")
|
||||
parser_add.add_argument('--srcbranch', '-B', help='Branch in source repository if fetching from an SCM such as git (default master)')
|
||||
parser_add.add_argument('--binary', '-b', help='Treat the source tree as something that should be installed verbatim (no compilation, same directory structure). Useful with binary packages e.g. RPMs.', action='store_true')
|
||||
parser_add.add_argument('--also-native', help='Also add native variant (i.e. support building recipe for the build host as well as the target machine)', action='store_true')
|
||||
parser_add.add_argument('--src-subdir', help='Specify subdirectory within source tree to use', metavar='SUBDIR')
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Recipe creation tool - create command plugin
|
||||
#
|
||||
# Copyright (C) 2014-2016 Intel Corporation
|
||||
# Copyright (C) 2014-2017 Intel Corporation
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License version 2 as
|
||||
|
@ -440,14 +440,30 @@ def create_recipe(args):
|
|||
rev_re = re.compile(';rev=([^;]+)')
|
||||
res = rev_re.search(srcuri)
|
||||
if res:
|
||||
if args.srcrev:
|
||||
logger.error('rev= parameter and -S/--srcrev option cannot both be specified - use one or the other')
|
||||
sys.exit(1)
|
||||
if args.autorev:
|
||||
logger.error('rev= parameter and -a/--autorev option cannot both be specified - use one or the other')
|
||||
sys.exit(1)
|
||||
srcrev = res.group(1)
|
||||
srcuri = rev_re.sub('', srcuri)
|
||||
elif args.srcrev:
|
||||
srcrev = args.srcrev
|
||||
|
||||
# Check whether users provides any branch info in fetchuri.
|
||||
# If true, we will skip all branch checking process to honor all user's input.
|
||||
scheme, network, path, user, passwd, params = bb.fetch2.decodeurl(fetchuri)
|
||||
srcbranch = params.get('branch')
|
||||
if args.srcbranch:
|
||||
if srcbranch:
|
||||
logger.error('branch= parameter and -B/--srcbranch option cannot both be specified - use one or the other')
|
||||
sys.exit(1)
|
||||
srcbranch = args.srcbranch
|
||||
nobranch = params.get('nobranch')
|
||||
if nobranch and srcbranch:
|
||||
logger.error('nobranch= cannot be used if you specify a branch')
|
||||
sys.exit(1)
|
||||
tag = params.get('tag')
|
||||
if not srcbranch and not nobranch and srcrev != '${AUTOREV}':
|
||||
# Append nobranch=1 in the following conditions:
|
||||
|
@ -523,7 +539,7 @@ def create_recipe(args):
|
|||
else:
|
||||
# If get_branch contains more than one objects, then display error and exit.
|
||||
mbrch = '\n ' + '\n '.join(get_branch)
|
||||
logger.error('Revision %s was found on multiple branches: %s\nPlease provide the correct branch in the source URL with ;branch=<branch> (and ensure you use quotes around the URL to avoid the shell interpreting the ";")' % (srcrev, mbrch))
|
||||
logger.error('Revision %s was found on multiple branches: %s\nPlease provide the correct branch with -B/--srcbranch' % (srcrev, mbrch))
|
||||
sys.exit(1)
|
||||
|
||||
# Since we might have a value in srcbranch, we need to
|
||||
|
@ -1277,7 +1293,10 @@ def register_commands(subparsers):
|
|||
parser_create.add_argument('-b', '--binary', help='Treat the source tree as something that should be installed verbatim (no compilation, same directory structure)', action='store_true')
|
||||
parser_create.add_argument('--also-native', help='Also add native variant (i.e. support building recipe for the build host as well as the target machine)', action='store_true')
|
||||
parser_create.add_argument('--src-subdir', help='Specify subdirectory within source tree to use', metavar='SUBDIR')
|
||||
parser_create.add_argument('-a', '--autorev', help='When fetching from a git repository, set SRCREV in the recipe to a floating revision instead of fixed', action="store_true")
|
||||
group = parser_create.add_mutually_exclusive_group()
|
||||
group.add_argument('-a', '--autorev', help='When fetching from a git repository, set SRCREV in the recipe to a floating revision instead of fixed', action="store_true")
|
||||
group.add_argument('-S', '--srcrev', help='Source revision to fetch if fetching from an SCM such as git (default latest)')
|
||||
parser_create.add_argument('-B', '--srcbranch', help='Branch in source repository if fetching from an SCM such as git (default master)')
|
||||
parser_create.add_argument('--keep-temp', action="store_true", help='Keep temporary directory (for debugging)')
|
||||
parser_create.add_argument('--fetch-dev', action="store_true", help='For npm, also fetch devDependencies')
|
||||
parser_create.add_argument('--devtool', action="store_true", help=argparse.SUPPRESS)
|
||||
|
|
Loading…
Reference in New Issue
Block a user