| Message ID | 20231031090114.618913-1-giulio.benetti@benettiengineering.com |
|---|---|
| State | Accepted |
| Headers | show |
| Series | package/nodejs: fix additional modules installation | expand |
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 >
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
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.
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
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 --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
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(-)