diff options
| -rwxr-xr-x | bitbake/bin/bitbake-worker | 7 | ||||
| -rw-r--r-- | bitbake/lib/bb/tests/utils.py | 11 | ||||
| -rw-r--r-- | bitbake/lib/bb/utils.py | 17 |
3 files changed, 30 insertions, 5 deletions
diff --git a/bitbake/bin/bitbake-worker b/bitbake/bin/bitbake-worker index 35fa1ab62b..d2b146a6a9 100755 --- a/bitbake/bin/bitbake-worker +++ b/bitbake/bin/bitbake-worker | |||
| @@ -182,11 +182,8 @@ def fork_off_task(cfg, data, databuilder, workerdata, extraconfigdata, runtask): | |||
| 182 | elif workerdata["umask"]: | 182 | elif workerdata["umask"]: |
| 183 | umask = workerdata["umask"] | 183 | umask = workerdata["umask"] |
| 184 | if umask: | 184 | if umask: |
| 185 | # umask might come in as a number or text string.. | 185 | # Convert to a python numeric value as it could be a string |
| 186 | try: | 186 | umask = bb.utils.to_filemode(umask) |
| 187 | umask = int(umask, 8) | ||
| 188 | except TypeError: | ||
| 189 | pass | ||
| 190 | 187 | ||
| 191 | dry_run = cfg.dry_run or runtask['dry_run'] | 188 | dry_run = cfg.dry_run or runtask['dry_run'] |
| 192 | 189 | ||
diff --git a/bitbake/lib/bb/tests/utils.py b/bitbake/lib/bb/tests/utils.py index 48e61dfcea..52b7bf85bf 100644 --- a/bitbake/lib/bb/tests/utils.py +++ b/bitbake/lib/bb/tests/utils.py | |||
| @@ -692,3 +692,14 @@ class EnvironmentTests(unittest.TestCase): | |||
| 692 | self.assertIn("A", os.environ) | 692 | self.assertIn("A", os.environ) |
| 693 | self.assertEqual(os.environ["A"], "this is A") | 693 | self.assertEqual(os.environ["A"], "this is A") |
| 694 | self.assertNotIn("B", os.environ) | 694 | self.assertNotIn("B", os.environ) |
| 695 | |||
| 696 | class FilemodeTests(unittest.TestCase): | ||
| 697 | def test_filemode_convert(self): | ||
| 698 | self.assertEqual(0o775, bb.utils.to_filemode("0o775")) | ||
| 699 | self.assertEqual(0o775, bb.utils.to_filemode(0o775)) | ||
| 700 | self.assertEqual(0o775, bb.utils.to_filemode("775")) | ||
| 701 | with self.assertRaises(ValueError): | ||
| 702 | bb.utils.to_filemode("xyz") | ||
| 703 | with self.assertRaises(ValueError): | ||
| 704 | bb.utils.to_filemode("999") | ||
| 705 | |||
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index a2806fd360..1cc74ed546 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py | |||
| @@ -1211,6 +1211,23 @@ def which(path, item, direction = 0, history = False, executable=False): | |||
| 1211 | return "", hist | 1211 | return "", hist |
| 1212 | return "" | 1212 | return "" |
| 1213 | 1213 | ||
| 1214 | def to_filemode(input): | ||
| 1215 | """ | ||
| 1216 | Take a bitbake variable contents defining a file mode and return | ||
| 1217 | the proper python representation of the number | ||
| 1218 | |||
| 1219 | Arguments: | ||
| 1220 | |||
| 1221 | - ``input``: a string or number to convert, e.g. a bitbake variable | ||
| 1222 | string, assumed to be an octal representation | ||
| 1223 | |||
| 1224 | Returns the python file mode as a number | ||
| 1225 | """ | ||
| 1226 | # umask might come in as a number or text string.. | ||
| 1227 | if type(input) is int: | ||
| 1228 | return input | ||
| 1229 | return int(input, 8) | ||
| 1230 | |||
| 1214 | @contextmanager | 1231 | @contextmanager |
| 1215 | def umask(new_mask): | 1232 | def umask(new_mask): |
| 1216 | """ | 1233 | """ |
