diff options
Diffstat (limited to 'scripts/lib/recipetool/create.py')
-rw-r--r-- | scripts/lib/recipetool/create.py | 50 |
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 | ||
257 | def determine_from_filename(srcfile): | 257 | def 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 | ||
282 | def determine_from_url(srcuri): | 304 | def determine_from_url(srcuri): |