mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-05 05:04:44 +02:00
bitbake: utils: Refactor filemode variable conversion to a function
We have other places in the code where we need to take filemode/mask information from a bitbake variable and turn it into a real python number. Turn this internal code into public API in bb.utils and add some tests for it. (Bitbake rev: d89e30fb2fb15b09f2cb95c4e5aa9f749ca257ea) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
c02b7accd5
commit
58b0a65ada
|
@ -182,11 +182,8 @@ def fork_off_task(cfg, data, databuilder, workerdata, extraconfigdata, runtask):
|
|||
elif workerdata["umask"]:
|
||||
umask = workerdata["umask"]
|
||||
if umask:
|
||||
# umask might come in as a number or text string..
|
||||
try:
|
||||
umask = int(umask, 8)
|
||||
except TypeError:
|
||||
pass
|
||||
# Convert to a python numeric value as it could be a string
|
||||
umask = bb.utils.to_filemode(umask)
|
||||
|
||||
dry_run = cfg.dry_run or runtask['dry_run']
|
||||
|
||||
|
|
|
@ -692,3 +692,14 @@ class EnvironmentTests(unittest.TestCase):
|
|||
self.assertIn("A", os.environ)
|
||||
self.assertEqual(os.environ["A"], "this is A")
|
||||
self.assertNotIn("B", os.environ)
|
||||
|
||||
class FilemodeTests(unittest.TestCase):
|
||||
def test_filemode_convert(self):
|
||||
self.assertEqual(0o775, bb.utils.to_filemode("0o775"))
|
||||
self.assertEqual(0o775, bb.utils.to_filemode(0o775))
|
||||
self.assertEqual(0o775, bb.utils.to_filemode("775"))
|
||||
with self.assertRaises(ValueError):
|
||||
bb.utils.to_filemode("xyz")
|
||||
with self.assertRaises(ValueError):
|
||||
bb.utils.to_filemode("999")
|
||||
|
||||
|
|
|
@ -1211,6 +1211,23 @@ def which(path, item, direction = 0, history = False, executable=False):
|
|||
return "", hist
|
||||
return ""
|
||||
|
||||
def to_filemode(input):
|
||||
"""
|
||||
Take a bitbake variable contents defining a file mode and return
|
||||
the proper python representation of the number
|
||||
|
||||
Arguments:
|
||||
|
||||
- ``input``: a string or number to convert, e.g. a bitbake variable
|
||||
string, assumed to be an octal representation
|
||||
|
||||
Returns the python file mode as a number
|
||||
"""
|
||||
# umask might come in as a number or text string..
|
||||
if type(input) is int:
|
||||
return input
|
||||
return int(input, 8)
|
||||
|
||||
@contextmanager
|
||||
def umask(new_mask):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue
Block a user