[1/2] base: Don't add duplicates to sys.path

Message ID 20220331110151.1562779-1-richard.purdie@linuxfoundation.org
State Accepted, archived
Commit dadce8468db1c0fd0e04801cdc6cf287c2808477
Headers show
Series [1/2] base: Don't add duplicates to sys.path | expand

Commit Message

Richard Purdie March 31, 2022, 11:01 a.m. UTC
We can re-trigger this code and there is little point in stacking a ton of duplicate
paths which just waste time during searches for modules. This could in theory alter
layer module search order but that seems unlikely in common use.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 meta/classes/base.bbclass | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Ross Burton March 31, 2022, 2:42 p.m. UTC | #1
Oh, this might explain some weird errors I was having.  See the
de-duplication patch last week or so for oeqa.

Ross

On Thu, 31 Mar 2022 at 12:01, Richard Purdie
<richard.purdie@linuxfoundation.org> wrote:
>
> We can re-trigger this code and there is little point in stacking a ton of duplicate
> paths which just waste time during searches for modules. This could in theory alter
> layer module search order but that seems unlikely in common use.
>
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> ---
>  meta/classes/base.bbclass | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
> index cc81461473f..e51722d945d 100644
> --- a/meta/classes/base.bbclass
> +++ b/meta/classes/base.bbclass
> @@ -20,8 +20,8 @@ PACKAGECONFIG_CONFARGS ??= ""
>  def oe_import(d):
>      import sys
>
> -    bbpath = d.getVar("BBPATH").split(":")
> -    sys.path[0:0] = [os.path.join(dir, "lib") for dir in bbpath]
> +    bbpath = [os.path.join(dir, "lib") for dir in d.getVar("BBPATH").split(":")]
> +    sys.path[0:0] = [dir for dir in bbpath if dir not in sys.path]
>
>      def inject(name, value):
>          """Make a python object accessible from the metadata"""
> --
> 2.32.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#163808): https://lists.openembedded.org/g/openembedded-core/message/163808
> Mute This Topic: https://lists.openembedded.org/mt/90152116/1676615
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [ross@burtonini.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>

Patch

diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index cc81461473f..e51722d945d 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -20,8 +20,8 @@  PACKAGECONFIG_CONFARGS ??= ""
 def oe_import(d):
     import sys
 
-    bbpath = d.getVar("BBPATH").split(":")
-    sys.path[0:0] = [os.path.join(dir, "lib") for dir in bbpath]
+    bbpath = [os.path.join(dir, "lib") for dir in d.getVar("BBPATH").split(":")]
+    sys.path[0:0] = [dir for dir in bbpath if dir not in sys.path]
 
     def inject(name, value):
         """Make a python object accessible from the metadata"""