[OE-core] [PATCH] rootfs.py: support absolute paths in IMAGE_DEVICE_TABLES

Mark Hatle mark.hatle at windriver.com
Tue Sep 13 00:17:45 UTC 2016


On 9/12/16 6:00 PM, Andre McCurdy wrote:
> Paths relative to BBPATH are fine if device table files are always
> static and contained somewhere within a meta layer. However if device
> tables are created dynamically, they will be located somewhere within
> ${TMPDIR} and most conveniently referenced via an absolute path.
> 
> The legacy IMAGE_DEVICE_TABLE variable supported an absolute path,
> therefore make IMAGE_DEVICE_TABLES support absolute paths too, to
> avoid users who need dynamic device table files being dependent on
> the legacy variable.
> 
> Signed-off-by: Andre McCurdy <armccurdy at gmail.com>
> ---
>  meta/lib/oe/rootfs.py | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
> index a348b97..32cce64 100644
> --- a/meta/lib/oe/rootfs.py
> +++ b/meta/lib/oe/rootfs.py
> @@ -352,8 +352,8 @@ class Rootfs(object, metaclass=ABCMeta):
>      """
>      Create devfs:
>      * IMAGE_DEVICE_TABLE is the old name to an absolute path to a device table file
> -    * IMAGE_DEVICE_TABLES is a new name for a file, or list of files, seached
> -      for in the BBPATH
> +    * IMAGE_DEVICE_TABLES is the new name for a file, or list of files, which may be
> +      either absolute paths or paths relative to BBPATH.
>      If neither are specified then the default name of files/device_table-minimal.txt
>      is searched for in the BBPATH (same as the old version.)
>      """
> @@ -367,7 +367,10 @@ class Rootfs(object, metaclass=ABCMeta):
>              if devtables is None:
>                  devtables = 'files/device_table-minimal.txt'
>              for devtable in devtables.split():
> -                devtable_list.append("%s" % bb.utils.which(self.d.getVar('BBPATH', True), devtable))
> +                if os.path.isabs(devtable):
> +                    devtable_list.append(devtable)
> +                else:
> +                    devtable_list.append("%s" % bb.utils.which(self.d.getVar('BBPATH', True), devtable))

I'm wondering if maybe this is a bug in "bb.utils.which", I thought it would
return back -- in the case of an absolute path -- if the thing existed or not,
otherwise would search the BBPATH.  (I'm using the command line version of
'which' as my behavioral thinking.)

If it is an issue, then it would need a fix in bitbake, and I believe the
existing code should then work.

(Asking about the behavior on the bitbake list might be worth while in this case.)

>  
>          for devtable in devtable_list:
>              self._exec_shell_cmd(["makedevs", "-r",
> 




More information about the Openembedded-core mailing list