summaryrefslogtreecommitdiffstats
path: root/scripts/lib/recipetool/create.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lib/recipetool/create.py')
-rw-r--r--scripts/lib/recipetool/create.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py
index 6c7b9fd7e8..4887604219 100644
--- a/scripts/lib/recipetool/create.py
+++ b/scripts/lib/recipetool/create.py
@@ -86,6 +86,27 @@ def validate_pv(pv):
86 return False 86 return False
87 return True 87 return True
88 88
89def determine_from_filename(srcfile):
90 """Determine name and version from a filename"""
91 part = ''
92 if '.tar.' in srcfile:
93 namepart = srcfile.split('.tar.')[0]
94 else:
95 namepart = os.path.splitext(srcfile)[0]
96 splitval = namepart.rsplit('_', 1)
97 if len(splitval) == 1:
98 splitval = namepart.rsplit('-', 1)
99 pn = splitval[0].replace('_', '-')
100 if len(splitval) > 1:
101 if splitval[1][0] in '0123456789':
102 pv = splitval[1]
103 else:
104 pn = '-'.join(splitval).replace('_', '-')
105 pv = None
106 else:
107 pv = None
108 return (pn, pv)
109
89def supports_srcrev(uri): 110def supports_srcrev(uri):
90 localdata = bb.data.createCopy(tinfoil.config_data) 111 localdata = bb.data.createCopy(tinfoil.config_data)
91 # This is a bit sad, but if you don't have this set there can be some 112 # This is a bit sad, but if you don't have this set there can be some
@@ -234,6 +255,17 @@ def create_recipe(args):
234 else: 255 else:
235 realpv = None 256 realpv = None
236 257
258 if srcuri and not realpv or not pn:
259 parseres = urlparse.urlparse(srcuri)
260 if parseres.path:
261 srcfile = os.path.basename(parseres.path)
262 name_pn, name_pv = determine_from_filename(srcfile)
263 logger.debug('Determined from filename: name = "%s", version = "%s"' % (name_pn, name_pv))
264 if name_pn and not pn:
265 pn = name_pn
266 if name_pv and not realpv:
267 realpv = name_pv
268
237 if not srcuri: 269 if not srcuri:
238 lines_before.append('# No information for SRC_URI yet (only an external source tree was specified)') 270 lines_before.append('# No information for SRC_URI yet (only an external source tree was specified)')
239 lines_before.append('SRC_URI = "%s"' % srcuri) 271 lines_before.append('SRC_URI = "%s"' % srcuri)