diff options
Diffstat (limited to 'scripts/lib/recipetool/create.py')
-rw-r--r-- | scripts/lib/recipetool/create.py | 32 |
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 | ||
89 | def 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 | |||
89 | def supports_srcrev(uri): | 110 | def 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) |