From 84e02be598d10f59a8320ee60a3d2efc31339ce2 Mon Sep 17 00:00:00 2001 From: Yureka Date: Tue, 12 Oct 2021 01:56:16 +0200 Subject: [PATCH] fetchYarnDeps, mkYarnModules: verify the FOD hash is up-to-date --- pkgs/build-support/node/fetch-yarn-deps/index.js | 11 ++++++----- .../tools/yarn2nix-moretea/yarn2nix/default.nix | 7 ++++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/pkgs/build-support/node/fetch-yarn-deps/index.js b/pkgs/build-support/node/fetch-yarn-deps/index.js index 0952235ee068..a9c5ab29cce5 100755 --- a/pkgs/build-support/node/fetch-yarn-deps/index.js +++ b/pkgs/build-support/node/fetch-yarn-deps/index.js @@ -92,7 +92,8 @@ const performParallel = tasks => { return Promise.all(workers) } -const prefetchYarnDeps = async (lockData, verbose) => { +const prefetchYarnDeps = async (lockContents, verbose) => { + const lockData = lockfile.parse(lockContents) const tasks = Object.values( Object.entries(lockData.object) .map(([key, value]) => { @@ -106,6 +107,7 @@ const prefetchYarnDeps = async (lockData, verbose) => { .map(pkg => () => downloadPkg(pkg, verbose)) await performParallel(tasks) + await fs.promises.writeFile('yarn.lock', lockContents) if (verbose) console.log('Done') } @@ -140,19 +142,18 @@ const main = async () => { let lockContents try { lockContents = await fs.promises.readFile(lockFile || 'yarn.lock', 'utf-8') - } catch(e) { + } catch { showUsage() } - const lockData = lockfile.parse(lockContents) if (isBuilder) { - await prefetchYarnDeps(lockData, verbose) + await prefetchYarnDeps(lockContents, verbose) } else { const { stdout: tmpDir } = await exec('mktemp', [ '-d' ]) try { process.chdir(tmpDir.trim()) - await prefetchYarnDeps(lockData, verbose) + await prefetchYarnDeps(lockContents, verbose) const { stdout: hash } = await exec('nix-hash', [ '--type', 'sha256', '--base32', tmpDir.trim() ]) console.log(hash) } finally { diff --git a/pkgs/development/tools/yarn2nix-moretea/yarn2nix/default.nix b/pkgs/development/tools/yarn2nix-moretea/yarn2nix/default.nix index 8097f2b364c2..0d0e2baccc70 100644 --- a/pkgs/development/tools/yarn2nix-moretea/yarn2nix/default.nix +++ b/pkgs/development/tools/yarn2nix-moretea/yarn2nix/default.nix @@ -108,7 +108,12 @@ in rec { dontInstall = true; buildInputs = [ yarn nodejs git ] ++ extraBuildInputs; - configurePhase = '' + configurePhase = lib.optionalString (offlineCache ? outputHash) '' + if ! cmp -s ${yarnLock} ${offlineCache}/yarn.lock; then + echo "yarn.lock changed, you need to update the fetchYarnDeps hash" + exit 1 + fi + '' + '' # Yarn writes cache directories etc to $HOME. export HOME=$PWD/yarn_home '';