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) |
