!NhAsaYbbgmzHtXTPQJ:funklause.de

Nix NodeJS

210 Members
60 Servers

Load older messages


SenderMessageTime
17 May 2023
@lily:lily.flowersLily Foster
In reply to @hexa:lossy.network
it's an unlanded PR rebased and locally updated to a newer version during rebase 🤡

If you want to test it yourself, add a npmWorkspace argument with the npm workspace package you are wanting to build and apply this diff locally:

diff --git a/pkgs/build-support/node/build-npm-package/default.nix b/pkgs/build-support/node/build-npm-package/default.nix
index 1c3fb6a74ef..0aa5ade9dc3 100644
--- a/pkgs/build-support/node/build-npm-package/default.nix
+++ b/pkgs/build-support/node/build-npm-package/default.nix
@@ -30,6 +30,8 @@
 , npmBuildFlags ? [ ]
   # Flags to pass to `npm pack`.
 , npmPackFlags ? [ ]
+  # Value for npm `--workspace` flag and directory in which the files to be installed are found.
+, npmWorkspace ? null
 , ...
 } @ args:
 
@@ -45,6 +47,8 @@ in
 stdenv.mkDerivation (args // {
   inherit npmDeps npmBuildScript;
 
+  npmFlags = args.npmFlags ++ lib.optionals (npmWorkspace != null) [ "--workspace" npmWorkspace ];
+
   nativeBuildInputs = nativeBuildInputs ++ [ nodejs npmConfigHook npmBuildHook npmInstallHook ];
   buildInputs = buildInputs ++ [ nodejs ];
 
diff --git a/pkgs/build-support/node/build-npm-package/hooks/npm-install-hook.sh b/pkgs/build-support/node/build-npm-package/hooks/npm-install-hook.sh
index 59ea2da993d..afc911cd021 100644
--- a/pkgs/build-support/node/build-npm-package/hooks/npm-install-hook.sh
+++ b/pkgs/build-support/node/build-npm-package/hooks/npm-install-hook.sh
@@ -13,7 +13,7 @@ npmInstallHook() {
     while IFS= read -r file; do
         local dest="$packageOut/$(dirname "$file")"
         mkdir -p "$dest"
-        cp "$file" "$dest"
+        cp "${npmWorkspace:-.}/$file" "$dest"
     done < <(@jq@ --raw-output '.[0].files | map(.path) | join("\n")' <<< "$(npm pack --json --dry-run $npmPackFlags "${npmPackFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}")")
 
     while IFS=" " read -ra bin; do
@@ -22,7 +22,7 @@ npmInstallHook() {
     done < <(@jq@ --raw-output '(.bin | type) as $typ | if $typ == "string" then
         .name + " " + .bin
         elif $typ == "object" then .bin | to_entries | map(.key + " " + .value) | join("\n")
-        else "invalid type " + $typ | halt_error end' package.json)
+        else "invalid type " + $typ | halt_error end' "${npmWorkspace:-.}/package.json")
 
     local -r nodeModulesPath="$packageOut/node_modules"
 
20:17:45
@lily:lily.flowersLily FosterOtherwise I'll wait for a derivation to poke at20:17:52
@hexa:lossy.networkhexaworking on a reverse dependency20:18:10
@hexa:lossy.networkhexa#soon20:18:15
@lily:lily.flowersLily Foster
In reply to @hexa:lossy.network
it's an unlanded PR rebased and locally updated to a newer version during rebase 🤡
*

If you want to test it yourself, add a npmWorkspace argument with the npm workspace package you are wanting to build and apply this diff locally:

diff --git a/pkgs/build-support/node/build-npm-package/default.nix b/pkgs/build-support/node/build-npm-package/default.nix
index 1c3fb6a74ef..0aa5ade9dc3 100644
--- a/pkgs/build-support/node/build-npm-package/default.nix
+++ b/pkgs/build-support/node/build-npm-package/default.nix
@@ -30,6 +30,8 @@
 , npmBuildFlags ? [ ]
   # Flags to pass to `npm pack`.
 , npmPackFlags ? [ ]
+  # Value for npm `--workspace` flag and directory in which the files to be installed are found.
+, npmWorkspace ? null
 , ...
 } @ args:
 
@@ -45,6 +47,8 @@ in
 stdenv.mkDerivation (args // {
   inherit npmDeps npmBuildScript;
 
+  npmFlags = npmFlags ++ lib.optionals (npmWorkspace != null) [ "--workspace" npmWorkspace ];
+
   nativeBuildInputs = nativeBuildInputs ++ [ nodejs npmConfigHook npmBuildHook npmInstallHook ];
   buildInputs = buildInputs ++ [ nodejs ];
 
diff --git a/pkgs/build-support/node/build-npm-package/hooks/npm-install-hook.sh b/pkgs/build-support/node/build-npm-package/hooks/npm-install-hook.sh
index 59ea2da993d..afc911cd021 100644
--- a/pkgs/build-support/node/build-npm-package/hooks/npm-install-hook.sh
+++ b/pkgs/build-support/node/build-npm-package/hooks/npm-install-hook.sh
@@ -13,7 +13,7 @@ npmInstallHook() {
     while IFS= read -r file; do
         local dest="$packageOut/$(dirname "$file")"
         mkdir -p "$dest"
-        cp "$file" "$dest"
+        cp "${npmWorkspace:-.}/$file" "$dest"
     done < <(@jq@ --raw-output '.[0].files | map(.path) | join("\n")' <<< "$(npm pack --json --dry-run $npmPackFlags "${npmPackFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}")")
 
     while IFS=" " read -ra bin; do
@@ -22,7 +22,7 @@ npmInstallHook() {
     done < <(@jq@ --raw-output '(.bin | type) as $typ | if $typ == "string" then
         .name + " " + .bin
         elif $typ == "object" then .bin | to_entries | map(.key + " " + .value) | join("\n")
-        else "invalid type " + $typ | halt_error end' package.json)
+        else "invalid type " + $typ | halt_error end' "${npmWorkspace:-.}/package.json")
 
     local -r nodeModulesPath="$packageOut/node_modules"
 
20:21:49
@hexa:lossy.networkhexa Lily Foster: https://github.com/NixOS/nixpkgs/pull/215406 20:38:29
@hexa:lossy.networkhexadisregard the panel build, this is about bokeh20:38:37
@lily:lily.flowersLily FosterWhat is this bespoke build system that bokehjs made...21:14:56
@lily:lily.flowersLily FosterYeah I'm gonna have to figure out the underlying issue of why npm workspaces cause npm to not use the cache for this one21:15:58
@hexa:lossy.networkhexa😄21:16:50
@hexa:lossy.networkhexayeah, it was pure suffering to get 3.0.3 source build going21:17:01
@hexa:lossy.networkhexahttps://github.com/NixOS/nixpkgs/pull/229953 trying out the npmRoot thing21:19:55
@hexa:lossy.networkhexa

navidrome> ERROR: Missing package-lock.json from src. Expected to find it at: /build/source/source/ui/package-lock.json

21:20:09
@hexa:lossy.networkhexagood error message21:20:12
@hexa:lossy.networkhexabut once I fixed the path it went poof21:20:28
@hexa:lossy.networkhexa
navidrome> unpacking sources
navidrome> unpacking source archive /nix/store/f51j4vbggdg3a7bq8xr8ksf3a5xs0wvv-source
navidrome> source root is source
navidrome> patching sources
navidrome> Executing npmConfigHook
navidrome> Configuring npm
navidrome> Validating consistency between /build/source/ui/package-lock.json and /nix/store/y2splh2dkp37gjkn77hqkscbsd9x89cj-npm-deps/package-lock.json
navidrome> Fixing lockfile
navidrome> Installing dependencies
navidrome> npm ERR! code EUSAGE
navidrome> npm ERR! 
navidrome> npm ERR! The `npm ci` command can only install with an existing package-lock.json or
navidrome> npm ERR! npm-shrinkwrap.json with lockfileVersion >= 1. Run an install with npm@5 or
navidrome> npm ERR! later to generate a package-lock.json file, then try again.
navidrome> npm ERR! 
navidrome> npm ERR! Clean install a project
navidrome> npm ERR! 
navidrome> npm ERR! Usage:
navidrome> npm ERR! npm ci
navidrome> npm ERR! 
navidrome> npm ERR! Options:
navidrome> npm ERR! [-S|--save|--no-save|--save-prod|--save-dev|--save-optional|--save-peer|--save-bundle]
navidrome> npm ERR! [-E|--save-exact] [-g|--global]
navidrome> npm ERR! [--install-strategy <hoisted|nested|shallow|linked>] [--legacy-bundling]
navidrome> npm ERR! [--global-style] [--omit <dev|optional|peer> [--omit <dev|optional|peer> ...]]
navidrome> npm ERR! [--strict-peer-deps] [--no-package-lock] [--foreground-scripts]
navidrome> npm ERR! [--ignore-scripts] [--no-audit] [--no-bin-links] [--no-fund] [--dry-run]
navidrome> npm ERR! [-w|--workspace <workspace-name> [-w|--workspace <workspace-name> ...]]
navidrome> npm ERR! [-ws|--workspaces] [--include-workspace-root] [--install-links]
navidrome> npm ERR! 
navidrome> npm ERR! aliases: clean-install, ic, install-clean, isntall-clean
navidrome> npm ERR! 
navidrome> npm ERR! Run "npm help ci" for more info
navidrome> 
navidrome> npm ERR! Log files were not written due to an error writing to the directory: /nix/store/y2splh2dkp37gjkn77hqkscbsd9x89cj-npm-deps/_logs
navidrome> npm ERR! You can rerun the command with `--loglevel=verbose` to see the logs in your terminal
navidrome> 
navidrome> ERROR: npm failed to install dependencies
navidrome> 
navidrome> Here are a few things you can try, depending on the error:
navidrome> 1. Set `makeCacheWritable = true`
navidrome>   Note that this won't help if npm is complaining about not being able to write to the logs directory -- look above that for the actual error.
navidrome> 2. Set `npmFlags = [ "--legacy-peer-deps" ]`
navidrome> 
21:20:32
@hexa:lossy.networkhexahttps://github.com/navidrome/navidrome/blob/master/ui/package.json21:21:14
@lily:lily.flowersLily Foster Yeah I believe winter was hoping to fix the npmRoot PR later today. I think we're gonna end up just making the whole hook have a pushd/popd 21:21:33
@hexa:lossy.networkhexayeah, that approach did work for me 🙂21:21:48
@hexa:lossy.networkhexafor update streams, what can I use to derive the hash for fetchNpmDeps?21:41:57
@hexa:lossy.networkhexais it prefetch-npm-deps?21:42:08
@lily:lily.flowersLily Foster Yep, prefetch-npm-deps 21:42:13
@hexa:lossy.networkhexaI wonder whether I remembered that wrong, but didn21:43:07
@hexa:lossy.networkhexa * I wonder whether I remembered that wrong, but didn't nix-update support updating those hashes? 🤔21:43:18
@lily:lily.flowersLily Foster Yes, nix-update does update npmDeps hashes 21:43:29
@hexa:lossy.networkhexaweird21:43:35
@lily:lily.flowersLily FosterDid it not for you?21:43:44
@hexa:lossy.networkhexait went poof 😄 https://github.com/NixOS/nixpkgs/pull/229953#issuecomment-155212077421:43:57
@hexa:lossy.networkhexatried downgrading to 0.49.2 from 0.49.321:44:09
@lily:lily.flowersLily Foster Wait why is the go-modules derivation running npmConfigHook 🤔 21:45:24

Show newer messages


Back to Room ListRoom Version: 6