summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scripts/lib/recipetool/create.py50
1 files changed, 36 insertions, 14 deletions
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py
index cd86747821..f7b0676f32 100644
--- a/scripts/lib/recipetool/create.py
+++ b/scripts/lib/recipetool/create.py
@@ -256,27 +256,49 @@ def validate_pv(pv):
256 256
257def determine_from_filename(srcfile): 257def determine_from_filename(srcfile):
258 """Determine name and version from a filename""" 258 """Determine name and version from a filename"""
259 part = ''
260 if '.tar.' in srcfile:
261 namepart = srcfile.split('.tar.')[0].lower()
262 else:
263 namepart = os.path.splitext(srcfile)[0].lower()
264 if is_package(srcfile): 259 if is_package(srcfile):
265 # Force getting the value from the package metadata 260 # Force getting the value from the package metadata
266 return None, None 261 return None, None
262
263 if '.tar.' in srcfile:
264 namepart = srcfile.split('.tar.')[0]
267 else: 265 else:
268 splitval = namepart.rsplit('_', 1) 266 namepart = os.path.splitext(srcfile)[0]
267 namepart = namepart.lower().replace('_', '-')
268 if namepart.endswith('.src'):
269 namepart = namepart[:-4]
270 if namepart.endswith('.orig'):
271 namepart = namepart[:-5]
272 splitval = namepart.split('-')
273 logger.debug('determine_from_filename: split name %s into: %s' % (srcfile, splitval))
274
275 ver_re = re.compile('^v?[0-9]')
276
277 pv = None
278 pn = None
269 if len(splitval) == 1: 279 if len(splitval) == 1:
270 splitval = namepart.rsplit('-', 1) 280 # Try to split the version out if there is no separator (or a .)
271 pn = splitval[0].replace('_', '-') 281 res = re.match('^([^0-9]+)([0-9.]+.*)$', namepart)
272 if len(splitval) > 1: 282 if res:
273 if splitval[1][0] in '0123456789': 283 if len(res.group(1)) > 1 and len(res.group(2)) > 1:
274 pv = splitval[1] 284 pn = res.group(1).rstrip('.')
285 pv = res.group(2)
275 else: 286 else:
276 pn = '-'.join(splitval).replace('_', '-') 287 pn = namepart
277 pv = None
278 else: 288 else:
279 pv = None 289 if splitval[-1] in ['source', 'src']:
290 splitval.pop()
291 if len(splitval) > 2 and re.match('^(alpha|beta|stable|release|rc[0-9]|pre[0-9]|p[0-9]|[0-9]{8})', splitval[-1]) and ver_re.match(splitval[-2]):
292 pv = '-'.join(splitval[-2:])
293 if pv.endswith('-release'):
294 pv = pv[:-8]
295 splitval = splitval[:-2]
296 elif ver_re.match(splitval[-1]):
297 pv = splitval.pop()
298 pn = '-'.join(splitval)
299 if pv and pv.startswith('v'):
300 pv = pv[1:]
301 logger.debug('determine_from_filename: name = "%s" version = "%s"' % (pn, pv))
280 return (pn, pv) 302 return (pn, pv)
281 303
282def determine_from_url(srcuri): 304def determine_from_url(srcuri):