diff options
-rw-r--r-- | meta/lib/oeqa/selftest/devtool.py | 15 | ||||
-rw-r--r-- | scripts/lib/recipetool/create.py | 32 |
2 files changed, 40 insertions, 7 deletions
diff --git a/meta/lib/oeqa/selftest/devtool.py b/meta/lib/oeqa/selftest/devtool.py index 8faea93784..7af82df632 100644 --- a/meta/lib/oeqa/selftest/devtool.py +++ b/meta/lib/oeqa/selftest/devtool.py | |||
@@ -232,15 +232,16 @@ class DevtoolTests(DevtoolBase): | |||
232 | self.assertIn(srcdir, result.output) | 232 | self.assertIn(srcdir, result.output) |
233 | # Check recipe | 233 | # Check recipe |
234 | recipefile = get_bb_var('FILE', testrecipe) | 234 | recipefile = get_bb_var('FILE', testrecipe) |
235 | self.assertIn('%s.bb' % testrecipe, recipefile, 'Recipe file incorrectly named') | 235 | self.assertIn('%s_%s.bb' % (testrecipe, testver), recipefile, 'Recipe file incorrectly named') |
236 | checkvars = {} | 236 | checkvars = {} |
237 | checkvars['S'] = '${WORKDIR}/MarkupSafe-%s' % testver | 237 | checkvars['S'] = '${WORKDIR}/MarkupSafe-${PV}' |
238 | checkvars['SRC_URI'] = url | 238 | checkvars['SRC_URI'] = url.replace(testver, '${PV}') |
239 | self._test_recipe_contents(recipefile, checkvars, []) | 239 | self._test_recipe_contents(recipefile, checkvars, []) |
240 | # Try with version specified | 240 | # Try with version specified |
241 | result = runCmd('devtool reset -n %s' % testrecipe) | 241 | result = runCmd('devtool reset -n %s' % testrecipe) |
242 | shutil.rmtree(srcdir) | 242 | shutil.rmtree(srcdir) |
243 | result = runCmd('devtool add %s %s -f %s -V %s' % (testrecipe, srcdir, url, testver)) | 243 | fakever = '1.9' |
244 | result = runCmd('devtool add %s %s -f %s -V %s' % (testrecipe, srcdir, url, fakever)) | ||
244 | self.assertTrue(os.path.isfile(os.path.join(srcdir, 'setup.py')), 'Unable to find setup.py in source directory') | 245 | self.assertTrue(os.path.isfile(os.path.join(srcdir, 'setup.py')), 'Unable to find setup.py in source directory') |
245 | # Test devtool status | 246 | # Test devtool status |
246 | result = runCmd('devtool status') | 247 | result = runCmd('devtool status') |
@@ -248,10 +249,10 @@ class DevtoolTests(DevtoolBase): | |||
248 | self.assertIn(srcdir, result.output) | 249 | self.assertIn(srcdir, result.output) |
249 | # Check recipe | 250 | # Check recipe |
250 | recipefile = get_bb_var('FILE', testrecipe) | 251 | recipefile = get_bb_var('FILE', testrecipe) |
251 | self.assertIn('%s_%s.bb' % (testrecipe, testver), recipefile, 'Recipe file incorrectly named') | 252 | self.assertIn('%s_%s.bb' % (testrecipe, fakever), recipefile, 'Recipe file incorrectly named') |
252 | checkvars = {} | 253 | checkvars = {} |
253 | checkvars['S'] = '${WORKDIR}/MarkupSafe-${PV}' | 254 | checkvars['S'] = '${WORKDIR}/MarkupSafe-%s' % testver |
254 | checkvars['SRC_URI'] = url.replace(testver, '${PV}') | 255 | checkvars['SRC_URI'] = url |
255 | self._test_recipe_contents(recipefile, checkvars, []) | 256 | self._test_recipe_contents(recipefile, checkvars, []) |
256 | 257 | ||
257 | @testcase(1161) | 258 | @testcase(1161) |
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) |