summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorAmineChikhaoui <amine@chikhaoui.org>2021-04-15 05:02:41 -0400
committerJan Tojnar <jtojnar@gmail.com>2021-12-04 08:02:10 +0100
commit487aaa905f78e7f3acaef238650552d74730851b (patch)
tree1a5ec9061a012b17d34357b5778816a4b0696d28 /pkgs
parentdad4fddd52923d90c5ad981d5e29963e829de3c1 (diff)
downloadnixpkgs-487aaa905f78e7f3acaef238650552d74730851b.tar
nixpkgs-487aaa905f78e7f3acaef238650552d74730851b.tar.gz
nixpkgs-487aaa905f78e7f3acaef238650552d74730851b.tar.bz2
nixpkgs-487aaa905f78e7f3acaef238650552d74730851b.tar.lz
nixpkgs-487aaa905f78e7f3acaef238650552d74730851b.tar.xz
nixpkgs-487aaa905f78e7f3acaef238650552d74730851b.tar.zst
nixpkgs-487aaa905f78e7f3acaef238650552d74730851b.zip
yarn2nix: use yarn lockfile integrity field whenever possible
Whenever available use the SRI hashes from the integrity field to create
the fetchurl calls instead of entirely relying on the `resolved` sha1
which may or may not exist with recent yarn versions.

Related issues:

- https://github.com/nix-community/yarn2nix/issues/125
- https://github.com/NixOS/nixpkgs/issues/77238
Diffstat (limited to 'pkgs')
-rwxr-xr-xpkgs/development/tools/yarn2nix-moretea/yarn2nix/internal/fixup_yarn_lock.js4
-rw-r--r--pkgs/development/tools/yarn2nix-moretea/yarn2nix/lib/generateNix.js6
2 files changed, 5 insertions, 5 deletions
diff --git a/pkgs/development/tools/yarn2nix-moretea/yarn2nix/internal/fixup_yarn_lock.js b/pkgs/development/tools/yarn2nix-moretea/yarn2nix/internal/fixup_yarn_lock.js
index 86e92f85208..3c067fc99aa 100755
--- a/pkgs/development/tools/yarn2nix-moretea/yarn2nix/internal/fixup_yarn_lock.js
+++ b/pkgs/development/tools/yarn2nix-moretea/yarn2nix/internal/fixup_yarn_lock.js
@@ -25,14 +25,14 @@ const result = []
 
 readFile
   .on('line', line => {
-    const arr = line.match(/^ {2}resolved "([^#]+)#([^"]+)"$/)
+    const arr = line.match(/^ {2}resolved "([^#]+)(#[^"]+)?"$/)
 
     if (arr !== null) {
       const [_, url, shaOrRev] = arr
 
       const fileName = urlToName(url)
 
-      result.push(`  resolved "${fileName}#${shaOrRev}"`)
+      result.push(`  resolved "${fileName}${shaOrRev ?? ''}"`)
     } else {
       result.push(line)
     }
diff --git a/pkgs/development/tools/yarn2nix-moretea/yarn2nix/lib/generateNix.js b/pkgs/development/tools/yarn2nix-moretea/yarn2nix/lib/generateNix.js
index 1e7b4f34100..5004e6f3903 100644
--- a/pkgs/development/tools/yarn2nix-moretea/yarn2nix/lib/generateNix.js
+++ b/pkgs/development/tools/yarn2nix-moretea/yarn2nix/lib/generateNix.js
@@ -69,7 +69,7 @@ function fetchgit(fileName, url, rev, branch, builtinFetchGit) {
 
 function fetchLockedDep(builtinFetchGit) {
   return function (pkg) {
-    const { nameWithVersion, resolved } = pkg
+    const { integrity, nameWithVersion, resolved } = pkg
 
     if (!resolved) {
       console.error(
@@ -102,14 +102,14 @@ function fetchLockedDep(builtinFetchGit) {
       return fetchgit(fileName, urlForGit, rev, branch || 'master', builtinFetchGit)
     }
 
-    const sha = sha1OrRev
+    const [algo, hash] = integrity ? integrity.split('-') : ['sha1', sha1OrRev]
 
     return `    {
       name = "${fileName}";
       path = fetchurl {
         name = "${fileName}";
         url  = "${url}";
-        sha1 = "${sha}";
+        ${algo} = "${hash}";
       };
     }`
   }