recipetool: create: support specifying a file as the local source

It is currently possible to specify a file (e.g. a tarball) on the local
disk as the source, but you have to know to put file:// in front of it.
There's really no need to force users to jump through that hoop if they
really want to do this so check if the specified source is a file and
prefix it with file:// if that's the case.

Also ensure the same works for "devtool add" at the same time.

(From OE-Core rev: 71350003790c38e84b0e525a71a2fe5d24e3d083)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton 2016-07-07 11:57:08 +12:00 committed by Richard Purdie
parent 54486a1ac3
commit f465039737
2 changed files with 14 additions and 5 deletions

View File

@ -65,6 +65,10 @@ 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')
if args.srctree and os.path.isfile(args.srctree):
args.fetchuri = 'file://' + os.path.abspath(args.srctree)
args.srctree = ''
if args.fetch:
if args.fetchuri:
raise DevtoolError('URI specified as positional argument as well as -f/--fetch')

View File

@ -351,11 +351,16 @@ def create_recipe(args):
extravalues = {}
checksums = (None, None)
tempsrc = ''
source = args.source
srcsubdir = ''
srcrev = '${AUTOREV}'
if '://' in args.source:
if os.path.isfile(source):
source = 'file://%s' % os.path.abspath(source)
if '://' in source:
# Fetch a URL
fetchuri = reformat_git_uri(urldefrag(args.source)[0])
fetchuri = reformat_git_uri(urldefrag(source)[0])
if args.binary:
# Assume the archive contains the directory structure verbatim
# so we need to extract to a subdirectory
@ -426,10 +431,10 @@ def create_recipe(args):
if args.extract_to:
logger.error('--extract-to cannot be specified if source is a directory')
sys.exit(1)
if not os.path.isdir(args.source):
logger.error('Invalid source directory %s' % args.source)
if not os.path.isdir(source):
logger.error('Invalid source directory %s' % source)
sys.exit(1)
srctree = args.source
srctree = source
srcuri = ''
if os.path.exists(os.path.join(srctree, '.git')):
# Try to get upstream repo location from origin remote