diff mbox series

package/nodejs: fix additional modules installation

Message ID 20231031090114.618913-1-giulio.benetti@benettiengineering.com
State Accepted
Headers show
Series package/nodejs: fix additional modules installation | expand

Commit Message

Giulio Benetti Oct. 31, 2023, 9:01 a.m. UTC
At the moment the npm_config_nodedir is set to the build directory but
npm nodedir must be the one on target to find the expected files. So let's
set npm_config_nodedir to $(TARGET_DIR)/usr.

Fixes:
https://bugs.busybox.net/show_bug.cgi?id=15826

Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
---
 package/nodejs/nodejs.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Marcus Hoffmann Nov. 6, 2023, 7:12 p.m. UTC | #1
Thanks Guilio, this fixes our build problem!

On 31.10.23 10:01, Giulio Benetti wrote:
> At the moment the npm_config_nodedir is set to the build directory but
> npm nodedir must be the one on target to find the expected files. So let's
> set npm_config_nodedir to $(TARGET_DIR)/usr.
>
> Fixes:
> https://bugs.busybox.net/show_bug.cgi?id=15826
>
> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

Tested-by: Marcus Hoffmann <marcus.hoffmann@othermo.de>

> ---
>   package/nodejs/nodejs.mk | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
> index 2a8c570932..8f86413049 100644
> --- a/package/nodejs/nodejs.mk
> +++ b/package/nodejs/nodejs.mk
> @@ -20,7 +20,7 @@ NODEJS_BIN_ENV = $(TARGET_CONFIGURE_OPTS) \
>       npm_config_arch=$(NODEJS_CPU) \
>       npm_config_target_arch=$(NODEJS_CPU) \
>       npm_config_build_from_source=true \
> -     npm_config_nodedir=$(BUILD_DIR)/nodejs-$(NODEJS_VERSION) \
> +     npm_config_nodedir=$(TARGET_DIR)/usr \
>       npm_config_prefix=$(TARGET_DIR)/usr \
>       npm_config_cache=$(BUILD_DIR)/.npm-cache
>
Yann E. MORIN Nov. 7, 2023, 3:15 p.m. UTC | #2
Giluio, All,

On 2023-10-31 10:01 +0100, Giulio Benetti spake thusly:
> At the moment the npm_config_nodedir is set to the build directory but
> npm nodedir must be the one on target to find the expected files. So let's
> set npm_config_nodedir to $(TARGET_DIR)/usr.
> 
> Fixes:
> https://bugs.busybox.net/show_bug.cgi?id=15826
> 
> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> ---
>  package/nodejs/nodejs.mk | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
> index 2a8c570932..8f86413049 100644
> --- a/package/nodejs/nodejs.mk
> +++ b/package/nodejs/nodejs.mk
> @@ -20,7 +20,7 @@ NODEJS_BIN_ENV = $(TARGET_CONFIGURE_OPTS) \
>  	npm_config_arch=$(NODEJS_CPU) \
>  	npm_config_target_arch=$(NODEJS_CPU) \
>  	npm_config_build_from_source=true \
> -	npm_config_nodedir=$(BUILD_DIR)/nodejs-$(NODEJS_VERSION) \
> +	npm_config_nodedir=$(TARGET_DIR)/usr \

So, there is a first issue in the original npm_config_nodedir, as it
references NODEJS_VERSION which no longer exists since 4cbc2af604e7
(package/nodejs: rename to nodejs-src and convert to virtual package),
when we renamed the actual version variable to NODEJS_COMMON_VERSION.

This is visible in the build log of #15826:

    npm ERR! gyp WARN read config.gypi ENOENT: no such file or directory, open '/home/marcus/repos/buildroot-upstream/output/build/nodejs-/include/node/config.gypi'

Notice the /nodejs-/ part of the path: it hints that a variable is not
expanded as would be expected; in this case, the wrong variable is
expanded. (I have started a build with the variable name fixed; let's
see what happens...)

Furthermore, even though this again is an npm-mess issue, I'd like a bit
more explanations on why we need to change npm_config_nodedir now, when
it has been working so far, since it was introduced 10 years ago with
commit b31bc7d43870 (nodejs: new package). Presumably, it did work then

Maybe the explanation is just "in fact it has never worked!", and then
it would be nice to know why it never worked.

Daniel, I know it's been 10 years now, but do you happen to have some
recollection of what was going on?

Finally, I *think* your patch might be correct, but not for the good
reasons...

Regards,
Yann E. MORIN.

>  	npm_config_prefix=$(TARGET_DIR)/usr \
>  	npm_config_cache=$(BUILD_DIR)/.npm-cache
>  
> -- 
> 2.34.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
Yann E. MORIN Nov. 7, 2023, 5:27 p.m. UTC | #3
Giulio, All,

On 2023-11-07 16:15 +0100, Yann E. MORIN spake thusly:
> Giluio, All,

Woops, sorry for the typo... :-(

> On 2023-10-31 10:01 +0100, Giulio Benetti spake thusly:
> > At the moment the npm_config_nodedir is set to the build directory but
> > npm nodedir must be the one on target to find the expected files. So let's
> > set npm_config_nodedir to $(TARGET_DIR)/usr.
> > 
> > Fixes:
> > https://bugs.busybox.net/show_bug.cgi?id=15826
> > 
> > Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> > ---
> >  package/nodejs/nodejs.mk | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
> > index 2a8c570932..8f86413049 100644
> > --- a/package/nodejs/nodejs.mk
> > +++ b/package/nodejs/nodejs.mk
> > @@ -20,7 +20,7 @@ NODEJS_BIN_ENV = $(TARGET_CONFIGURE_OPTS) \
> >  	npm_config_arch=$(NODEJS_CPU) \
> >  	npm_config_target_arch=$(NODEJS_CPU) \
> >  	npm_config_build_from_source=true \
> > -	npm_config_nodedir=$(BUILD_DIR)/nodejs-$(NODEJS_VERSION) \
> > +	npm_config_nodedir=$(TARGET_DIR)/usr \
> 
> So, there is a first issue in the original npm_config_nodedir, as it
> references NODEJS_VERSION which no longer exists since 4cbc2af604e7
> (package/nodejs: rename to nodejs-src and convert to virtual package),
> when we renamed the actual version variable to NODEJS_COMMON_VERSION.
> 
> This is visible in the build log of #15826:
> 
>     npm ERR! gyp WARN read config.gypi ENOENT: no such file or directory, open '/home/marcus/repos/buildroot-upstream/output/build/nodejs-/include/node/config.gypi'
> 
> Notice the /nodejs-/ part of the path: it hints that a variable is not
> expanded as would be expected; in this case, the wrong variable is
> expanded. (I have started a build with the variable name fixed; let's
> see what happens...)

Seemingly the same error, so that did not fix the issue.

> Furthermore, even though this again is an npm-mess issue, I'd like a bit
> more explanations on why we need to change npm_config_nodedir now, when
> it has been working so far, since it was introduced 10 years ago with
> commit b31bc7d43870 (nodejs: new package). Presumably, it did work then
> 
> Maybe the explanation is just "in fact it has never worked!", and then
> it would be nice to know why it never worked.
> 
> Daniel, I know it's been 10 years now, but do you happen to have some
> recollection of what was going on?
> 
> Finally, I *think* your patch might be correct, but not for the good
> reasons...

So, the file that is looked for is:  ..../include/node/config.gypi , so
that looks more like something we should look in staging rather than in
target.

New build started... (nodejs takes 1h15min to build here....)

Regards,
Yann E. MORIN.
Yann E. MORIN Nov. 7, 2023, 9:40 p.m. UTC | #4
Giulio, All,

On 2023-10-31 10:01 +0100, Giulio Benetti spake thusly:
> At the moment the npm_config_nodedir is set to the build directory but
> npm nodedir must be the one on target to find the expected files. So let's
> set npm_config_nodedir to $(TARGET_DIR)/usr.
> 
> Fixes:
> https://bugs.busybox.net/show_bug.cgi?id=15826
> 
> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

I have drastically extended the commit log to explain what nodedir is,
and why we decided to set it to...

> ---
>  package/nodejs/nodejs.mk | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
> index 2a8c570932..8f86413049 100644
> --- a/package/nodejs/nodejs.mk
> +++ b/package/nodejs/nodejs.mk
> @@ -20,7 +20,7 @@ NODEJS_BIN_ENV = $(TARGET_CONFIGURE_OPTS) \
>  	npm_config_arch=$(NODEJS_CPU) \
>  	npm_config_target_arch=$(NODEJS_CPU) \
>  	npm_config_build_from_source=true \
> -	npm_config_nodedir=$(BUILD_DIR)/nodejs-$(NODEJS_VERSION) \
> +	npm_config_nodedir=$(TARGET_DIR)/usr \

... STAGING_DIR, not TARGET_DIR.

Applied to master, thanks.

Regards,
Yann E. MORIN.

>  	npm_config_prefix=$(TARGET_DIR)/usr \
>  	npm_config_cache=$(BUILD_DIR)/.npm-cache
>  
> -- 
> 2.34.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
Yann E. MORIN Nov. 7, 2023, 9:51 p.m. UTC | #5
Marcus, All,

On 2023-11-06 20:12 +0100, Marcus Hoffmann via buildroot spake thusly:
> Thanks Guilio, this fixes our build problem!
> 
> On 31.10.23 10:01, Giulio Benetti wrote:
> >At the moment the npm_config_nodedir is set to the build directory but
> >npm nodedir must be the one on target to find the expected files. So let's
> >set npm_config_nodedir to $(TARGET_DIR)/usr.
> >
> >Fixes:
> >https://bugs.busybox.net/show_bug.cgi?id=15826
> >
> >Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> Tested-by: Marcus Hoffmann <marcus.hoffmann@othermo.de>

Thanks for providing your tested-by tag.

However, since I changed the patch to use STAGING_DIR instead of
TARGET_DIR, I dropped your tested-by, because the new code is now too
different from what you tested.

Still, seeing a Tested-by tag on such a patch gave me enough interest
to look deeper and investigate to find the actual issue and come up with
a better fix. So, thank you!

Regards,
Yann E. MORIN.

> >---
> >  package/nodejs/nodejs.mk | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> >diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
> >index 2a8c570932..8f86413049 100644
> >--- a/package/nodejs/nodejs.mk
> >+++ b/package/nodejs/nodejs.mk
> >@@ -20,7 +20,7 @@ NODEJS_BIN_ENV = $(TARGET_CONFIGURE_OPTS) \
> >      npm_config_arch=$(NODEJS_CPU) \
> >      npm_config_target_arch=$(NODEJS_CPU) \
> >      npm_config_build_from_source=true \
> >-     npm_config_nodedir=$(BUILD_DIR)/nodejs-$(NODEJS_VERSION) \
> >+     npm_config_nodedir=$(TARGET_DIR)/usr \
> >      npm_config_prefix=$(TARGET_DIR)/usr \
> >      npm_config_cache=$(BUILD_DIR)/.npm-cache
> >
> ________________________________
> 
> othermo GmbH | Sitz der Gesellschaft: Alzenau | Amtsgericht Aschaffenburg: HRB 14783 | USt-IdNr.: DE319977978 | Geschäftsführung: Dr. Dennis Metz.
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/package/nodejs/nodejs.mk b/package/nodejs/nodejs.mk
index 2a8c570932..8f86413049 100644
--- a/package/nodejs/nodejs.mk
+++ b/package/nodejs/nodejs.mk
@@ -20,7 +20,7 @@  NODEJS_BIN_ENV = $(TARGET_CONFIGURE_OPTS) \
 	npm_config_arch=$(NODEJS_CPU) \
 	npm_config_target_arch=$(NODEJS_CPU) \
 	npm_config_build_from_source=true \
-	npm_config_nodedir=$(BUILD_DIR)/nodejs-$(NODEJS_VERSION) \
+	npm_config_nodedir=$(TARGET_DIR)/usr \
 	npm_config_prefix=$(TARGET_DIR)/usr \
 	npm_config_cache=$(BUILD_DIR)/.npm-cache