[2/2] fetch: npm: Use temporary file for empty user config

Message ID 20211213111353.28402-2-stefan.herbrechtsmeier-oss@weidmueller.com
State Accepted, archived
Commit 9f272ad7f76c1559e745e9af686d0a529f917659
Headers show
Series [1/2] fetch: npm: Quote destdir in run chmod command | expand

Commit Message

Stefan Herbrechtsmeier Dec. 13, 2021, 11:13 a.m. UTC
From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>

Always use a temporary file for the user config 'NPM_CONFIG_USERCONFIG'
because npm overwise failed if configs and npmrc isn't set:

double-loading config "/dev/null" as "global", previously loaded as "user"

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>

---

 lib/bb/fetch2/npm.py | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

Comments

Peter Kjellerstedt Dec. 13, 2021, 5:33 p.m. UTC | #1
> -----Original Message-----
> From: bitbake-devel@lists.openembedded.org <bitbake-
> devel@lists.openembedded.org> On Behalf Of Stefan Herbrechtsmeier
> Sent: den 13 december 2021 12:14
> To: bitbake-devel@lists.openembedded.org
> Cc: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> Subject: [bitbake-devel] [PATCH 2/2] fetch: npm: Use temporary file for empty user config
> 
> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> 
> Always use a temporary file for the user config 'NPM_CONFIG_USERCONFIG'
> because npm overwise failed if configs and npmrc isn't set:

Change "overwise failed" to "otherwise fails", and change "isn't" to 
"aren't".

//Peter

> 
> double-loading config "/dev/null" as "global", previously loaded as "user"
> 
> Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> 
> ---
> 
>  lib/bb/fetch2/npm.py | 14 +++++---------
>  1 file changed, 5 insertions(+), 9 deletions(-)
> 
> diff --git a/lib/bb/fetch2/npm.py b/lib/bb/fetch2/npm.py
> index d9daec20..b3a3a444 100644
> --- a/lib/bb/fetch2/npm.py
> +++ b/lib/bb/fetch2/npm.py
> @@ -79,16 +79,12 @@ class NpmEnvironment(object):
>      Using a npm config file seems more reliable than using cli arguments.
>      This class allows to create a controlled environment for npm
> commands.
>      """
> -    def __init__(self, d, configs=None, npmrc=None):
> +    def __init__(self, d, configs=[], npmrc=None):
>          self.d = d
> 
> -        if configs:
> -            self.user_config = tempfile.NamedTemporaryFile(mode="w",
> buffering=1)
> -            self.user_config_name = self.user_config.name
> -            for key, value in configs:
> -                self.user_config.write("%s=%s\n" % (key, value))
> -        else:
> -            self.user_config_name = "/dev/null"
> +        self.user_config = tempfile.NamedTemporaryFile(mode="w",
> buffering=1)
> +        for key, value in configs:
> +            self.user_config.write("%s=%s\n" % (key, value))
> 
>          if npmrc:
>              self.global_config_name = npmrc
> @@ -109,7 +105,7 @@ class NpmEnvironment(object):
>                  workdir = tmpdir
> 
>              def _run(cmd):
> -                cmd = "NPM_CONFIG_USERCONFIG=%s " %
> (self.user_config_name) + cmd
> +                cmd = "NPM_CONFIG_USERCONFIG=%s " %
> (self.user_config.name) + cmd
>                  cmd = "NPM_CONFIG_GLOBALCONFIG=%s " %
> (self.global_config_name) + cmd
>                  return runfetchcmd(cmd, d, workdir=workdir)
> 
> --
> 2.30.2

Patch

diff --git a/lib/bb/fetch2/npm.py b/lib/bb/fetch2/npm.py
index d9daec20..b3a3a444 100644
--- a/lib/bb/fetch2/npm.py
+++ b/lib/bb/fetch2/npm.py
@@ -79,16 +79,12 @@  class NpmEnvironment(object):
     Using a npm config file seems more reliable than using cli arguments.
     This class allows to create a controlled environment for npm commands.
     """
-    def __init__(self, d, configs=None, npmrc=None):
+    def __init__(self, d, configs=[], npmrc=None):
         self.d = d
 
-        if configs:
-            self.user_config = tempfile.NamedTemporaryFile(mode="w", buffering=1)
-            self.user_config_name = self.user_config.name
-            for key, value in configs:
-                self.user_config.write("%s=%s\n" % (key, value))
-        else:
-            self.user_config_name = "/dev/null"
+        self.user_config = tempfile.NamedTemporaryFile(mode="w", buffering=1)
+        for key, value in configs:
+            self.user_config.write("%s=%s\n" % (key, value))
 
         if npmrc:
             self.global_config_name = npmrc
@@ -109,7 +105,7 @@  class NpmEnvironment(object):
                 workdir = tmpdir
 
             def _run(cmd):
-                cmd = "NPM_CONFIG_USERCONFIG=%s " % (self.user_config_name) + cmd
+                cmd = "NPM_CONFIG_USERCONFIG=%s " % (self.user_config.name) + cmd
                 cmd = "NPM_CONFIG_GLOBALCONFIG=%s " % (self.global_config_name) + cmd
                 return runfetchcmd(cmd, d, workdir=workdir)