[OE-core] [OE-Core][PATCH 1/1] package_manager.py: fix opkg custom config path

André Draszik git at andred.net
Fri Dec 8 10:48:45 UTC 2017


On Thu, 2017-12-07 at 16:16 -0500, Gaël PORTAY wrote:
> The opkg custom config feature has moved to the package_manager python
> module. This feature is broken since commit 19c538f57c.
> 
> The python function os.path.join joins path components. If a component
> is an absolute path, all previous components are thrown away.
> 
> The sysconfdir variable is an absolute path component. It causes the
> leading target rootfs component to be removed. As a result, the
> package-manager module tries to write in the real root filesystem
> instead of the temporary work directory for the rootfs image.
> 
> This fixes the issue by prepending the target rootfs component using the
> string concatenation operator when the file is opened (without using
> os.path module).
> 
> Cc: Ash Charles <ash.charles at savoirfairelinux.com>
> Signed-off-by: Gaël PORTAY <gael.portay at savoirfairelinux.com>
> ---
>  meta/lib/oe/package_manager.py | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/meta/lib/oe/package_manager.py
> b/meta/lib/oe/package_manager.py
> index 6cbb61fd84..ac29593f88 100644
> --- a/meta/lib/oe/package_manager.py
> +++ b/meta/lib/oe/package_manager.py
> @@ -953,12 +953,11 @@ class OpkgPM(OpkgDpkgPM):
>              """
>              if (self.d.getVar('FEED_DEPLOYDIR_BASE_URI') or "") != "":
>                  for arch in self.pkg_archs.split():
> -                    cfg_file_name = os.path.join(self.target_rootfs,
> -                                                 self.d.getVar("sysconfdi
> r"),
> +                    cfg_file_name =
> os.path.join(self.d.getVar("sysconfdir", True),

The 'True' argument has been removed from all getVar() calls, please don't
re-introduce it.


>                                                   "opkg",
>                                                   "local-%s-feed.conf" %
> arch)
>  
> -                    with open(cfg_file_name, "w+") as cfg_file:
> +                    with open(self.target_rootfs + cfg_file_name, "w+")
> as cfg_file:
>                          cfg_file.write("src/gz local-%s %s/%s" %
>                                         (arch,
>                                          self.d.getVar('FEED_DEPLOYDIR_BAS
> E_URI'),
> -- 
> 2.15.0
> 

Also, a simpler solution would be to simply strip the leading '/' from
sysconfdir:

                     cfg_file_name = os.path.join(self.target_rootfs,
-                                                 self.d.getVar("sysconfdir"),
+                                                 self.d.getVar("sysconfdir").lstrip("/"),
                                                  "opkg",
                                                  "local-%s-feed.conf" % arch)

would be the only change needed.


Cheers,
Andre'




More information about the Openembedded-core mailing list