fetchYarnBerryDeps: init (#399404)
This commit is contained in:
commit
9979a56ae6
@ -552,7 +552,15 @@ In this example, `prePnpmInstall` will be run by both `pnpm.configHook` and by t
|
||||
|
||||
### Yarn {#javascript-yarn}
|
||||
|
||||
Yarn based projects use a `yarn.lock` file instead of a `package-lock.json` to pin dependencies. Nixpkgs provides the Nix function `fetchYarnDeps` which fetches an offline cache suitable for running `yarn install` before building the project. In addition, Nixpkgs provides the hooks:
|
||||
Yarn based projects use a `yarn.lock` file instead of a `package-lock.json` to pin dependencies.
|
||||
|
||||
To package yarn-based applications, you need to distinguish by the version pointers in the `yarn.lock` file. See the following sections.
|
||||
|
||||
#### Yarn v1 {#javascript-yarn-v1}
|
||||
|
||||
Yarn v1 lockfiles contain a comment `# yarn lockfile v1` at the beginning of the file.
|
||||
|
||||
Nixpkgs provides the Nix function `fetchYarnDeps` which fetches an offline cache suitable for running `yarn install` before building the project. In addition, Nixpkgs provides the hooks:
|
||||
|
||||
- `yarnConfigHook`: Fetches the dependencies from the offline cache and installs them into `node_modules`.
|
||||
- `yarnBuildHook`: Runs `yarn build` or a specified `yarn` command that builds the project.
|
||||
@ -602,28 +610,28 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
})
|
||||
```
|
||||
|
||||
#### `yarnConfigHook` arguments {#javascript-yarnconfighook}
|
||||
##### `yarnConfigHook` arguments {#javascript-yarnconfighook}
|
||||
|
||||
By default, `yarnConfigHook` relies upon the attribute `${yarnOfflineCache}` (or `${offlineCache}` if the former is not set) to find the location of the offline cache produced by `fetchYarnDeps`. To disable this phase, you can set `dontYarnInstallDeps = true` or override the `configurePhase`.
|
||||
|
||||
#### `yarnBuildHook` arguments {#javascript-yarnbuildhook}
|
||||
##### `yarnBuildHook` arguments {#javascript-yarnbuildhook}
|
||||
|
||||
This script by default runs `yarn --offline build`, and it relies upon the project's dependencies installed at `node_modules`. Below is a list of additional `mkDerivation` arguments read by this hook:
|
||||
|
||||
- `yarnBuildScript`: Sets a different `yarn --offline` subcommand (defaults to `build`).
|
||||
- `yarnBuildFlags`: Single string list of additional flags to pass the above command, or a Nix list of such additional flags.
|
||||
|
||||
#### `yarnInstallHook` arguments {#javascript-yarninstallhook}
|
||||
##### `yarnInstallHook` arguments {#javascript-yarninstallhook}
|
||||
|
||||
To install the package `yarnInstallHook` uses both `npm` and `yarn` to cleanup project files and dependencies. To disable this phase, you can set `dontYarnInstall = true` or override the `installPhase`. Below is a list of additional `mkDerivation` arguments read by this hook:
|
||||
|
||||
- `yarnKeepDevDeps`: Disables the removal of devDependencies from `node_modules` before installation.
|
||||
|
||||
### yarn2nix {#javascript-yarn2nix}
|
||||
#### yarn2nix {#javascript-yarn2nix}
|
||||
|
||||
WARNING: The `yarn2nix` functions have been deprecated in favor of the new `yarnConfigHook`, `yarnBuildHook` and `yarnInstallHook`. Documentation for them still appears here for the sake of the packages that still use them. See also a tracking issue [#324246](https://github.com/NixOS/nixpkgs/issues/324246).
|
||||
WARNING: The `yarn2nix` functions have been deprecated in favor of `yarnConfigHook`, `yarnBuildHook` and `yarnInstallHook` (for Yarn v1) and `yarn-berry_*.*` tooling (Yarn v3 and v4). Documentation for `yarn2nix` functions still appears here for the sake of the packages that still use them. See also a tracking issue [#324246](https://github.com/NixOS/nixpkgs/issues/324246).
|
||||
|
||||
#### Preparation {#javascript-yarn2nix-preparation}
|
||||
##### Preparation {#javascript-yarn2nix-preparation}
|
||||
|
||||
You will need at least a `yarn.lock` file. If upstream does not have one you need to generate it and reference it in your package definition.
|
||||
|
||||
@ -638,7 +646,7 @@ If the downloaded files contain the `package.json` and `yarn.lock` files they ca
|
||||
}
|
||||
```
|
||||
|
||||
#### mkYarnPackage {#javascript-yarn2nix-mkYarnPackage}
|
||||
##### mkYarnPackage {#javascript-yarn2nix-mkYarnPackage}
|
||||
|
||||
`mkYarnPackage` will by default try to generate a binary. For package only generating static assets (Svelte, Vue, React, WebPack, ...), you will need to explicitly override the build step with your instructions.
|
||||
|
||||
@ -689,7 +697,7 @@ or if you need a writeable node_modules directory:
|
||||
}
|
||||
```
|
||||
|
||||
#### mkYarnModules {#javascript-yarn2nix-mkYarnModules}
|
||||
##### mkYarnModules {#javascript-yarn2nix-mkYarnModules}
|
||||
|
||||
This will generate a derivation including the `node_modules` directory.
|
||||
If you have to build a derivation for an integrated web framework (rails, phoenix..), this is probably the easiest way.
|
||||
@ -724,7 +732,7 @@ mkYarnPackage rec {
|
||||
}
|
||||
```
|
||||
|
||||
#### Pitfalls {#javascript-yarn2nix-pitfalls}
|
||||
##### Pitfalls {#javascript-yarn2nix-pitfalls}
|
||||
|
||||
- If version is missing from upstream package.json, yarn will silently install nothing. In that case, you will need to override package.json as shown in the [package.json section](#javascript-upstream-package-json)
|
||||
- Having trouble with `node-gyp`? Try adding these lines to the `yarnPreBuild` steps:
|
||||
@ -744,6 +752,116 @@ mkYarnPackage rec {
|
||||
- Exporting the headers in `npm_config_nodedir` comes from this issue: <https://github.com/nodejs/node-gyp/issues/1191#issuecomment-301243919>
|
||||
- `offlineCache` (described [above](#javascript-yarn2nix-preparation)) must be specified to avoid [Import From Derivation](#ssec-import-from-derivation) (IFD) when used inside Nixpkgs.
|
||||
|
||||
#### Yarn Berry v3/v4 {#javascript-yarn-v3-v4}
|
||||
Yarn Berry (v3 / v4) have similar formats, they start with blocks like these:
|
||||
|
||||
```yaml
|
||||
__metadata:
|
||||
version: 6
|
||||
cacheKey: 8[cX]
|
||||
```
|
||||
|
||||
```yaml
|
||||
__metadata:
|
||||
version: 8
|
||||
cacheKey: 10[cX]
|
||||
```
|
||||
|
||||
For these packages, we have some helpers exposed under the respective `yarn-berry_3` and `yarn-berry_4` packages:
|
||||
|
||||
- `yarn-berry-fetcher`
|
||||
- `fetchYarnBerryDeps`
|
||||
- `yarnBerryConfigHook`
|
||||
|
||||
It's recommended to ensure you're explicitly pinning the major version used, for example by capturing the `yarn-berry_Xn` argument and then re-defining it as a `yarn-berry` `let` binding.
|
||||
|
||||
```nix
|
||||
{
|
||||
stdenv,
|
||||
nodejs,
|
||||
yarn-berry_4,
|
||||
}:
|
||||
|
||||
let
|
||||
yarn-berry = yarn-berry_4;
|
||||
in
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "foo";
|
||||
version = "0-unstable-1980-01-01";
|
||||
|
||||
src = {
|
||||
#...
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs
|
||||
yarn-berry.yarnBerryConfigHook
|
||||
];
|
||||
|
||||
offlineCache = yarn-berry.fetchYarnBerryDeps {
|
||||
inherit (finalAttrs) src;
|
||||
hash = "...";
|
||||
};
|
||||
})
|
||||
```
|
||||
|
||||
##### `yarn-berry_X.fetchYarnBerryDeps` {#javascript-fetchYarnBerryDeps}
|
||||
`fetchYarnBerryDeps` runs `yarn-berry-fetcher fetch` in a fixed-output-derivation. It is a custom fetcher designed to reproducibly download all files in the `yarn.lock` file, validating their hashes in the process. For git dependencies, it creates a checkout at `${offlineCache}/checkouts/<40-character-commit-hash>` (relying on the git commit hash to describe the contents of the checkout).
|
||||
|
||||
To produce the `hash` argument for `fetchYarnBerryDeps` function call, the `yarn-berry-fetcher prefetch` command can be used:
|
||||
|
||||
```console
|
||||
$ yarn-berry-fetcher prefetch </path/to/yarn.lock> [/path/to/missing-hashes.json]
|
||||
```
|
||||
|
||||
This prints the hash to stdout and can be used in update scripts to recalculate the hash for a new version of `yarn.lock`.
|
||||
|
||||
##### `yarn-berry_X.yarnBerryConfigHook` {#javascript-yarnBerryConfigHook}
|
||||
`yarnBerryConfigHook` uses the store path `offlineCache` points to, to run a `yarn install` during the build, producing a usable `node_modules` directory from the downloaded dependencies.
|
||||
|
||||
Internally, this uses a patched version of Yarn to ensure git dependencies are re-packed and any attempted downloads fail immediately.
|
||||
|
||||
##### Patching upstream `package.json` or `yarn.lock` files {#javascript-yarnBerry-patching}
|
||||
In case patching the upstream `package.json` or `yarn.lock` is needed, it's important to pass `finalAttrs.patches` to `fetchYarnBerryDeps` as well, so the patched variants are picked up (i.e. `inherit (finalAttrs) patches`.
|
||||
|
||||
##### Missing hashes in the `yarn.lock` file {#javascript-yarnBerry-missing-hashes}
|
||||
Unfortunately, `yarn.lock` files do not include hashes for optional/platform-specific dependencies. This is [by design](https://github.com/yarnpkg/berry/issues/6759).
|
||||
|
||||
To compensate for this, the `yarn-berry-fetcher missing-hashes` subcommand can be used to produce all missing hashes. These are usually stored in a `missing-hashes.json` file, which needs to be passed to both the build itself, as well as the `fetchYarnBerryDeps` helper:
|
||||
|
||||
```nix
|
||||
{
|
||||
stdenv,
|
||||
nodejs,
|
||||
yarn-berry_4,
|
||||
}:
|
||||
|
||||
let
|
||||
yarn-berry = yarn-berry_4;
|
||||
in
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "foo";
|
||||
version = "0-unstable-1980-01-01";
|
||||
|
||||
src = {
|
||||
#...
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs
|
||||
yarn-berry.yarnBerryConfigHook
|
||||
];
|
||||
|
||||
missingHashes = ./missing-hashes.json;
|
||||
offlineCache = yarn-berry.fetchYarnBerryDeps {
|
||||
inherit (finalAttrs) src missingHashes;
|
||||
hash = "...";
|
||||
};
|
||||
})
|
||||
```
|
||||
|
||||
## Outside Nixpkgs {#javascript-outside-nixpkgs}
|
||||
|
||||
There are some other tools available, which are written in the Nix language.
|
||||
|
@ -3227,6 +3227,12 @@
|
||||
"javascript-yarn": [
|
||||
"index.html#javascript-yarn"
|
||||
],
|
||||
"javascript-yarn-v1": [
|
||||
"index.html#javascript-yarn-v1"
|
||||
],
|
||||
"javascript-yarn-v3-v4": [
|
||||
"index.html#javascript-yarn-v3-v4"
|
||||
],
|
||||
"javascript-yarnconfighook": [
|
||||
"index.html#javascript-yarnconfighook"
|
||||
],
|
||||
@ -3254,6 +3260,18 @@
|
||||
"javascript-yarn2nix-pitfalls": [
|
||||
"index.html#javascript-yarn2nix-pitfalls"
|
||||
],
|
||||
"javascript-yarnBerry-missing-hashes": [
|
||||
"index.html#javascript-yarnBerry-missing-hashes"
|
||||
],
|
||||
"javascript-yarnBerryConfigHook": [
|
||||
"index.html#javascript-yarnBerryConfigHook"
|
||||
],
|
||||
"javascript-yarnBerry-patching": [
|
||||
"index.html#javascript-yarnBerry-patching"
|
||||
],
|
||||
"javascript-fetchYarnBerryDeps": [
|
||||
"index.html#javascript-fetchYarnBerryDeps"
|
||||
],
|
||||
"javascript-outside-nixpkgs": [
|
||||
"index.html#javascript-outside-nixpkgs"
|
||||
],
|
||||
|
27
pkgs/by-name/he/hedgedoc/missing-hashes.json
Normal file
27
pkgs/by-name/he/hedgedoc/missing-hashes.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"@esbuild/aix-ppc64@npm:0.25.2": "3b5ee5599a8446074bd6aad732c5f2833a4b77e8af62cfcdee7508ded661daa054c481c2fa69f5341e65cc8846a2b3f026ffca12934cb24d76df93e4800e2979",
|
||||
"@esbuild/android-arm64@npm:0.25.2": "556d958ea6f33073669a8a41645b0e51cecb2c0788ece8827a8752e666fd178ae28b2f9749b8a968f1e9c66b09dab7933be8d8b53e391ea9eca7bddf3f53b26a",
|
||||
"@esbuild/android-arm@npm:0.25.2": "0ce9f260216520a4d53c2736b60e8e55b8c6569b944555cb7840fbe2ff16278d4e6591aedcbc38b3f69a6d98167367f36bba1d35b41d725e4d68a67f942e2a28",
|
||||
"@esbuild/android-x64@npm:0.25.2": "57d0c438a3bcc25db5aa89c9d9b60827d3ee6d9553234d95a16f52f8a7780778e5e7a9975374e4d37a81e600d2b8f32bd46d5633bb83bcd958ee2f5162d1359b",
|
||||
"@esbuild/darwin-arm64@npm:0.25.2": "e148927428c0c5d69e681ee8d4b47e0bcc5116296c47c41ed44068d686a0568b23dc493dc47b4d103e7b21894fafbaf5c2d64bf2420a5d6b6b22f71bf6c2fb08",
|
||||
"@esbuild/darwin-x64@npm:0.25.2": "2bc37a902d7828f3973d28f486bcf26da13f6f421122348fc510551a4674bc706eb8e6f692ccd3d887523c373580b3228797f2fd73d641b2e106a6d44e3f20c7",
|
||||
"@esbuild/freebsd-arm64@npm:0.25.2": "431ddf98e7c0b7c6a7d1a689454ab449df8eaacca242442153a4f149017d6bd03e16b7fda01e9fe26316d135176d74f5de09e9a21357648c320a3211a1c862a2",
|
||||
"@esbuild/freebsd-x64@npm:0.25.2": "21545ec11969db7ed091819b63c88a9c4490edce8a98d64718f79352a5001927d1d85e6261170562850afdb5a7a2182ccf3d936eab0db615e51188ab6f95789b",
|
||||
"@esbuild/linux-arm64@npm:0.25.2": "332ba0533f2a2bba21dfb3c9130f9a1cef5b420da29f67116e7fbff4cfd12039d06646b4a636952b873b22129a4e5c6ea6ea9b57286949980add7bab5d6684c1",
|
||||
"@esbuild/linux-arm@npm:0.25.2": "a89613faa8ce9f307eea4c2b4ada8cdb56e378716d5250fc163674032bfbdda8b8aacc730c6b5fa05b5e5bff04a9a11dd02934d69b2233ecf0ff58af4ef5bb45",
|
||||
"@esbuild/linux-ia32@npm:0.25.2": "5907824945c067f092bb28807080a2617b5208583ef71b2091d57b6039df182735ba62ee0142e993260d80df3a5b7ae88c0fff28f2e4efd8254dd34de2f4ad95",
|
||||
"@esbuild/linux-loong64@npm:0.25.2": "ed521bfa81db13fc628455fc0feec4e75150ed2248013baaf8fa7d6d278295d3a2b09196c79169b7331e50e6d3abf86ee5773ad28f8d5914bbe4034758a424c2",
|
||||
"@esbuild/linux-mips64el@npm:0.25.2": "9961d5853e7ff048ae2cb3997136f96ca5180dcc483e88e2ae0d34ca8ec097af3cc7d7c8ac6303a3cf2582eadbe905fa97a38dd9b402f82b9e104a0070f04b79",
|
||||
"@esbuild/linux-ppc64@npm:0.25.2": "9ee2360fa976e7c0e16b09fd551fba232e19ede65a326544d16bcae0c399e2937b853eab5649a52589e483c77dbc4ab5e082177ee70e6fd2de53c421314ea458",
|
||||
"@esbuild/linux-riscv64@npm:0.25.2": "e6bff41e76d44a8d6f27a53b2aeb98c771f6215590d411a1b6b682aa41c96cc9ed8baa6d17412d09419b10778dc40ca75b6cfe71dc8e24f1bf5c1e7793e2c560",
|
||||
"@esbuild/linux-s390x@npm:0.25.2": "34ca97c2506f1a1e646bc74f7cfff7bc7990052c3a2ade963c010c6bff6ae6135b9788f7972af2fb47e1a5380b26b8ca1b7a6c3f2bc9eaa7c9e7fdf227e38ab0",
|
||||
"@esbuild/linux-x64@npm:0.25.2": "ac2c60f9dcbf9c55f66aef618b2a3218ddde92aad764aa6645b94b50c8c6242f1f97a0af956759738bca97686918dd71a0cfc82c73eadb0ab921918c9927a627",
|
||||
"@esbuild/netbsd-arm64@npm:0.25.2": "6d820e86cbf10d305520ed7dbf4358bd4d75d333de39c100156dcc5619446916b4d5a1c1e07b838d22f6013aaf57bdd93187f2e97b1357a426e94e91b485e0e1",
|
||||
"@esbuild/netbsd-x64@npm:0.25.2": "89153d1753254cd88f12b9e088a79398dcee11c0a1349a0886b54dd2db0ae2faf64ac0e364494f0cbd64163320cff94f02fc1fe827ff950daa0a27e50ef84a27",
|
||||
"@esbuild/openbsd-arm64@npm:0.25.2": "71ede4e8f1086bece4e6d528b46ee3a493e0d33d749d5ac9050afd5471465badce7f36f1d04c1edddec75fde49e1229adb0f7758bcd508219a7598086b9a3c5c",
|
||||
"@esbuild/openbsd-x64@npm:0.25.2": "95d90426c96d27980340d29c6d83f79ea2a22008041a5366c81820275ce36ba95ad0bf5e89ee199747a5921953587e7dcdc2e5a97368dec4efbcfc83ab5be4ee",
|
||||
"@esbuild/sunos-x64@npm:0.25.2": "da59382e27897f98ee7261651eff1bcf42b1d659b078e500f664ef18137d70298f0bc0a50cf5af2311931e5b0454c6d3756a0ff9e560ab0a754ea56b0f04768c",
|
||||
"@esbuild/win32-arm64@npm:0.25.2": "39f9a30d00a788ef168d7186f366397f7c471f1db3328efc0b9ff0861475f8a4484723b60ab6ab04c3bb27ebcdc8632e4883c28b5fa93b0606dd9f85f7904043",
|
||||
"@esbuild/win32-ia32@npm:0.25.2": "74a7726d21a347faa1debdcd540e77fa5af9f96d5e0d625f2752d24a1616ac0fdea6582a0499935d9d964ee4c7a57ad8f30c6fe355089af2095bd0e41b70ea49",
|
||||
"@esbuild/win32-x64@npm:0.25.2": "1e3f44cc53acaff9d45e2cded9811c750b7eb946f7b76d1fec66b862a89da800f9291269607d7cbb8d7e6068504571904d93a0813692e74fbae1fc321fe46440"
|
||||
}
|
@ -4,11 +4,11 @@
|
||||
fetchFromGitHub,
|
||||
gitMinimal,
|
||||
cacert,
|
||||
yarn,
|
||||
makeBinaryWrapper,
|
||||
nodejs,
|
||||
python3,
|
||||
nixosTests,
|
||||
yarn-berry_4,
|
||||
writableTmpDirAsHomeHook,
|
||||
}:
|
||||
|
||||
@ -21,58 +21,32 @@ let
|
||||
tag = version;
|
||||
hash = "sha256-hXcPcGj+efvRVt3cHQc9KttE0/DOD9Bul6f3cY4ofgs=";
|
||||
};
|
||||
|
||||
# we cannot use fetchYarnDeps because that doesn't support yarn 2/berry lockfiles
|
||||
offlineCache = stdenv.mkDerivation {
|
||||
name = "hedgedoc-${version}-offline-cache";
|
||||
inherit src;
|
||||
|
||||
nativeBuildInputs = [
|
||||
cacert # needed for git
|
||||
gitMinimal # needed to download git dependencies
|
||||
nodejs # needed for npm to download git dependencies
|
||||
yarn
|
||||
writableTmpDirAsHomeHook
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
yarn config set enableTelemetry 0
|
||||
yarn config set cacheFolder $out
|
||||
yarn config set --json supportedArchitectures.os '[ "linux" ]'
|
||||
yarn config set --json supportedArchitectures.cpu '["arm", "arm64", "ia32", "x64"]'
|
||||
yarn
|
||||
'';
|
||||
|
||||
outputHashMode = "recursive";
|
||||
outputHash = "sha256-KTUj1O2AA1qTQOqTbGBPLHAgiG5sG832Na8qLvEccmc=";
|
||||
};
|
||||
missingHashes = ./missing-hashes.json;
|
||||
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "hedgedoc";
|
||||
inherit version src;
|
||||
inherit version src missingHashes;
|
||||
|
||||
offlineCache = yarn-berry_4.fetchYarnBerryDeps {
|
||||
inherit src missingHashes;
|
||||
hash = "sha256-V7ptquAohv0t5oA+3iTvlQOZoEtY5xWyhSoJP8jwYI8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeBinaryWrapper
|
||||
(python3.withPackages (ps: with ps; [ setuptools ])) # required to build sqlite3 bindings
|
||||
yarn
|
||||
writableTmpDirAsHomeHook # A writable home directory is required for yarn
|
||||
yarn-berry_4
|
||||
yarn-berry_4.yarnBerryConfigHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
nodejs # for shebangs
|
||||
];
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
yarn config set enableTelemetry 0
|
||||
yarn config set cacheFolder ${offlineCache}
|
||||
export npm_config_nodedir=${nodejs} # prevent node-gyp from downloading headers
|
||||
|
||||
yarn --immutable-cache
|
||||
yarn run build
|
||||
|
||||
# Delete scripts that are not useful for NixOS
|
||||
@ -102,7 +76,6 @@ stdenv.mkDerivation {
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit offlineCache;
|
||||
tests = { inherit (nixosTests) hedgedoc; };
|
||||
};
|
||||
|
||||
|
85
pkgs/by-name/ya/yarn-berry/fetcher/berry-3-offline.patch
Normal file
85
pkgs/by-name/ya/yarn-berry/fetcher/berry-3-offline.patch
Normal file
@ -0,0 +1,85 @@
|
||||
diff --git a/packages/plugin-essentials/sources/commands/install.ts b/packages/plugin-essentials/sources/commands/install.ts
|
||||
index 9dcd02d..cf1765a 100644
|
||||
--- a/packages/plugin-essentials/sources/commands/install.ts
|
||||
+++ b/packages/plugin-essentials/sources/commands/install.ts
|
||||
@@ -254,6 +254,7 @@ export default class YarnCommand extends BaseCommand {
|
||||
// If migrating from a v1 install, we automatically enable the node-modules linker,
|
||||
// since that's likely what the author intended to do.
|
||||
if (content?.includes(`yarn lockfile v1`)) {
|
||||
+ throw new Error("Tried to use yarn-berry_3.yarnConfigHook (nixpkgs), but found a yarn v1 lockfile");
|
||||
const nmReport = await StreamReport.start({
|
||||
configuration,
|
||||
json: this.json,
|
||||
diff --git a/packages/plugin-git/sources/GitFetcher.ts b/packages/plugin-git/sources/GitFetcher.ts
|
||||
index fe2a4fc..bfa8272 100644
|
||||
--- a/packages/plugin-git/sources/GitFetcher.ts
|
||||
+++ b/packages/plugin-git/sources/GitFetcher.ts
|
||||
@@ -50,9 +50,14 @@ export class GitFetcher implements Fetcher {
|
||||
}
|
||||
|
||||
async cloneFromRemote(locator: Locator, opts: FetchOptions) {
|
||||
- const cloneTarget = await gitUtils.clone(locator.reference, opts.project.configuration);
|
||||
-
|
||||
const repoUrlParts = gitUtils.splitRepoUrl(locator.reference);
|
||||
+
|
||||
+ if (repoUrlParts.treeish.protocol !== "commit") {
|
||||
+ throw new Error(`Missing source for git dependency ${locator.reference}`);
|
||||
+ };
|
||||
+
|
||||
+ const cloneTarget = opts.cache.checkoutPath(repoUrlParts.treeish.request);
|
||||
+
|
||||
const packagePath = ppath.join(cloneTarget, `package.tgz` as PortablePath);
|
||||
|
||||
await scriptUtils.prepareExternalProject(cloneTarget, packagePath, {
|
||||
diff --git a/packages/plugin-npm/sources/NpmSemverFetcher.ts b/packages/plugin-npm/sources/NpmSemverFetcher.ts
|
||||
index 0f69423..5b21462 100644
|
||||
--- a/packages/plugin-npm/sources/NpmSemverFetcher.ts
|
||||
+++ b/packages/plugin-npm/sources/NpmSemverFetcher.ts
|
||||
@@ -47,6 +47,7 @@ export class NpmSemverFetcher implements Fetcher {
|
||||
}
|
||||
|
||||
private async fetchFromNetwork(locator: Locator, opts: FetchOptions) {
|
||||
+ throw new Error(`Missing sources for ${structUtils.prettyLocator(opts.project.configuration, locator)}`);
|
||||
let sourceBuffer;
|
||||
try {
|
||||
sourceBuffer = await npmHttpUtils.get(NpmSemverFetcher.getLocatorUrl(locator), {
|
||||
diff --git a/packages/yarnpkg-core/sources/Cache.ts b/packages/yarnpkg-core/sources/Cache.ts
|
||||
index d5e6864..374b5d6 100644
|
||||
--- a/packages/yarnpkg-core/sources/Cache.ts
|
||||
+++ b/packages/yarnpkg-core/sources/Cache.ts
|
||||
@@ -158,6 +158,10 @@ export class Cache {
|
||||
}
|
||||
}
|
||||
|
||||
+ checkoutPath(commit: string): string {
|
||||
+ return ppath.join(ppath.join(this.cwd, "../checkouts"), commit);
|
||||
+ }
|
||||
+
|
||||
async fetchPackageFromCache(locator: Locator, expectedChecksum: string | null, {onHit, onMiss, loader, ...opts}: {onHit?: () => void, onMiss?: () => void, loader?: () => Promise<ZipFS> } & CacheOptions): Promise<[FakeFS<PortablePath>, () => void, string | null]> {
|
||||
const mirrorPath = this.getLocatorMirrorPath(locator);
|
||||
|
||||
diff --git a/packages/yarnpkg-core/sources/scriptUtils.ts b/packages/yarnpkg-core/sources/scriptUtils.ts
|
||||
index b3c2c59..6b9eb2f 100644
|
||||
--- a/packages/yarnpkg-core/sources/scriptUtils.ts
|
||||
+++ b/packages/yarnpkg-core/sources/scriptUtils.ts
|
||||
@@ -287,10 +287,6 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
|
||||
// Run an install; we can't avoid it unless we inspect the
|
||||
// package.json, which I don't want to do to keep the codebase
|
||||
// clean (even if it has a slight perf cost when cloning v1 repos)
|
||||
- const install = await execUtils.pipevp(`yarn`, [`install`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
|
||||
- if (install.code !== 0)
|
||||
- return install.code;
|
||||
-
|
||||
stdout.write(`\n`);
|
||||
|
||||
const pack = await execUtils.pipevp(`yarn`, [...workspaceCli, `pack`, `--filename`, npath.fromPortablePath(outputPath)], {cwd, env, stdin, stdout, stderr});
|
||||
@@ -375,9 +371,6 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
|
||||
// We can't use `npm ci` because some projects don't have npm
|
||||
// lockfiles that are up-to-date. Hopefully npm won't decide
|
||||
// to change the versions randomly.
|
||||
- const install = await execUtils.pipevp(`npm`, [`install`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
|
||||
- if (install.code !== 0)
|
||||
- return install.code;
|
||||
|
||||
const packStream = new PassThrough();
|
||||
const packPromise = miscUtils.bufferStream(packStream);
|
81
pkgs/by-name/ya/yarn-berry/fetcher/berry-4-offline.patch
Normal file
81
pkgs/by-name/ya/yarn-berry/fetcher/berry-4-offline.patch
Normal file
@ -0,0 +1,81 @@
|
||||
diff --git a/packages/plugin-essentials/sources/commands/install.ts b/packages/plugin-essentials/sources/commands/install.ts
|
||||
index 90ba553..ef5368c 100644
|
||||
--- a/packages/plugin-essentials/sources/commands/install.ts
|
||||
+++ b/packages/plugin-essentials/sources/commands/install.ts
|
||||
@@ -302,6 +302,7 @@ export default class YarnCommand extends BaseCommand {
|
||||
|
||||
for (const rule of LOCKFILE_MIGRATION_RULES) {
|
||||
if (rule.selector(lockfileLastVersion) && typeof configuration.sources.get(rule.name) === `undefined`) {
|
||||
+ throw new Error(`Tried to use yarn-berry_4.yarnConfigHook (nixpkgs) which expects lockfile version 8, but found lockfile version ${lockfileLastVersion}`);
|
||||
configuration.use(`<compat>`, {[rule.name]: rule.value}, project.cwd, {overwrite: true});
|
||||
newSettings[rule.name] = rule.value;
|
||||
}
|
||||
diff --git a/packages/plugin-git/sources/GitFetcher.ts b/packages/plugin-git/sources/GitFetcher.ts
|
||||
index d9f8d85..4db9f90 100644
|
||||
--- a/packages/plugin-git/sources/GitFetcher.ts
|
||||
+++ b/packages/plugin-git/sources/GitFetcher.ts
|
||||
@@ -50,7 +50,11 @@ export class GitFetcher implements Fetcher {
|
||||
async cloneFromRemote(locator: Locator, opts: FetchOptions) {
|
||||
const repoUrlParts = gitUtils.splitRepoUrl(locator.reference);
|
||||
|
||||
- const cloneTarget = await gitUtils.clone(locator.reference, opts.project.configuration);
|
||||
+ if (repoUrlParts.treeish.protocol !== "commit") {
|
||||
+ throw new Error(`Missing source for git dependency ${locator.reference}`);
|
||||
+ };
|
||||
+
|
||||
+ const cloneTarget = opts.cache.checkoutPath(repoUrlParts.treeish.request);
|
||||
const projectPath = ppath.resolve(cloneTarget, repoUrlParts.extra.cwd ?? PortablePath.dot);
|
||||
|
||||
const packagePath = ppath.join(projectPath, `package.tgz`);
|
||||
diff --git a/packages/plugin-npm/sources/NpmSemverFetcher.ts b/packages/plugin-npm/sources/NpmSemverFetcher.ts
|
||||
index 7347859..ea5767f 100644
|
||||
--- a/packages/plugin-npm/sources/NpmSemverFetcher.ts
|
||||
+++ b/packages/plugin-npm/sources/NpmSemverFetcher.ts
|
||||
@@ -45,6 +45,7 @@ export class NpmSemverFetcher implements Fetcher {
|
||||
}
|
||||
|
||||
private async fetchFromNetwork(locator: Locator, opts: FetchOptions) {
|
||||
+ throw new Error(`Missing sources for ${structUtils.prettyLocator(opts.project.configuration, locator)}`);
|
||||
let sourceBuffer;
|
||||
try {
|
||||
sourceBuffer = await npmHttpUtils.get(NpmSemverFetcher.getLocatorUrl(locator), {
|
||||
diff --git a/packages/yarnpkg-core/sources/Cache.ts b/packages/yarnpkg-core/sources/Cache.ts
|
||||
index b712ecf..c7effbc 100644
|
||||
--- a/packages/yarnpkg-core/sources/Cache.ts
|
||||
+++ b/packages/yarnpkg-core/sources/Cache.ts
|
||||
@@ -225,6 +225,10 @@ export class Cache {
|
||||
}
|
||||
}
|
||||
|
||||
+ checkoutPath(commit: string): string {
|
||||
+ return ppath.join(ppath.join(this.cwd, "../checkouts"), commit);
|
||||
+ }
|
||||
+
|
||||
async fetchPackageFromCache(locator: Locator, expectedChecksum: string | null, {onHit, onMiss, loader, ...opts}: {onHit?: () => void, onMiss?: () => void, loader?: () => Promise<ZipFS>} & CacheOptions): Promise<[FakeFS<PortablePath>, () => void, string | null]> {
|
||||
const mirrorPath = this.getLocatorMirrorPath(locator);
|
||||
|
||||
diff --git a/packages/yarnpkg-core/sources/scriptUtils.ts b/packages/yarnpkg-core/sources/scriptUtils.ts
|
||||
index 2dcd7e5..fe40fbb 100644
|
||||
--- a/packages/yarnpkg-core/sources/scriptUtils.ts
|
||||
+++ b/packages/yarnpkg-core/sources/scriptUtils.ts
|
||||
@@ -287,10 +287,6 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
|
||||
// Run an install; we can't avoid it unless we inspect the
|
||||
// package.json, which I don't want to do to keep the codebase
|
||||
// clean (even if it has a slight perf cost when cloning v1 repos)
|
||||
- const install = await execUtils.pipevp(`yarn`, [`install`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
|
||||
- if (install.code !== 0)
|
||||
- return install.code;
|
||||
-
|
||||
stdout.write(`\n`);
|
||||
|
||||
const pack = await execUtils.pipevp(`yarn`, [...workspaceCli, `pack`, `--filename`, npath.fromPortablePath(outputPath)], {cwd, env, stdin, stdout, stderr});
|
||||
@@ -375,9 +371,6 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
|
||||
// We can't use `npm ci` because some projects don't have npm
|
||||
// lockfiles that are up-to-date. Hopefully npm won't decide
|
||||
// to change the versions randomly.
|
||||
- const install = await execUtils.pipevp(`npm`, [`install`, `--legacy-peer-deps`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
|
||||
- if (install.code !== 0)
|
||||
- return install.code;
|
||||
|
||||
const packStream = new PassThrough();
|
||||
const packPromise = miscUtils.bufferStream(packStream);
|
77
pkgs/by-name/ya/yarn-berry/fetcher/default.nix
Normal file
77
pkgs/by-name/ya/yarn-berry/fetcher/default.nix
Normal file
@ -0,0 +1,77 @@
|
||||
{
|
||||
lib,
|
||||
newScope,
|
||||
yarn-berry,
|
||||
libzip,
|
||||
zlib,
|
||||
zlib-ng,
|
||||
}:
|
||||
|
||||
let
|
||||
variantOverlays = {
|
||||
"3" = final: {
|
||||
berryCacheVersion = "8";
|
||||
|
||||
berryOfflinePatches = [ ./berry-3-offline.patch ];
|
||||
|
||||
# Known good version: 1.11.3
|
||||
libzip =
|
||||
(libzip.override {
|
||||
# Known good version: 1.3.1
|
||||
zlib = zlib;
|
||||
}).overrideAttrs
|
||||
(oA: {
|
||||
patches = (oA.patches or [ ]) ++ [
|
||||
(final.yarn-berry-fetcher.src + "/libzip-revert-to-old-versionneeded-behavior.patch")
|
||||
];
|
||||
});
|
||||
};
|
||||
"4" = final: {
|
||||
berryCacheVersion = "10";
|
||||
|
||||
berryOfflinePatches = [ ./berry-4-offline.patch ];
|
||||
|
||||
# Known good version: 1.11.3
|
||||
libzip =
|
||||
(libzip.override {
|
||||
# Known good version: 2.2.4
|
||||
zlib = zlib-ng.override {
|
||||
withZlibCompat = true;
|
||||
};
|
||||
}).overrideAttrs
|
||||
(oA: {
|
||||
patches = (oA.patches or [ ]) ++ [
|
||||
(final.yarn-berry-fetcher.src + "/libzip-revert-to-old-versionneeded-behavior.patch")
|
||||
];
|
||||
});
|
||||
};
|
||||
};
|
||||
in
|
||||
|
||||
lib.makeScope newScope (
|
||||
final:
|
||||
let
|
||||
berryVersion = lib.versions.major yarn-berry.version;
|
||||
|
||||
err = throw ''
|
||||
Berry version ${toString berryVersion} not supported by yarn-berry-fetcher.
|
||||
Supported versions: ${lib.concatStringsSep ", " (lib.attrNames variantOverlays)}
|
||||
'';
|
||||
variantOverlay = (variantOverlays.${berryVersion} or err) final;
|
||||
in
|
||||
(
|
||||
{
|
||||
inherit yarn-berry berryVersion;
|
||||
|
||||
yarn-berry-offline = final.yarn-berry.overrideAttrs (old: {
|
||||
pname = old.pname + "-offline";
|
||||
patches = (old.patches or [ ]) ++ final.berryOfflinePatches;
|
||||
});
|
||||
|
||||
yarn-berry-fetcher = final.callPackage ./yarn-berry-fetcher.nix { };
|
||||
fetchYarnBerryDeps = final.callPackage ./fetch-yarn-berry-deps.nix { };
|
||||
yarnBerryConfigHook = final.callPackage ./yarn-berry-config-hook.nix { };
|
||||
}
|
||||
// variantOverlay
|
||||
)
|
||||
)
|
76
pkgs/by-name/ya/yarn-berry/fetcher/fetch-yarn-berry-deps.nix
Normal file
76
pkgs/by-name/ya/yarn-berry/fetcher/fetch-yarn-berry-deps.nix
Normal file
@ -0,0 +1,76 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
yarn-berry-fetcher,
|
||||
nix-prefetch-git,
|
||||
cacert,
|
||||
berryVersion,
|
||||
}:
|
||||
|
||||
{
|
||||
src ? null,
|
||||
hash ? "",
|
||||
sha256 ? "",
|
||||
...
|
||||
}@args:
|
||||
|
||||
let
|
||||
hash_ =
|
||||
if hash != "" then
|
||||
{
|
||||
outputHashAlgo = null;
|
||||
outputHash = hash;
|
||||
}
|
||||
else if sha256 != "" then
|
||||
{
|
||||
outputHashAlgo = "sha256";
|
||||
outputHash = sha256;
|
||||
}
|
||||
else
|
||||
{
|
||||
outputHashAlgo = "sha256";
|
||||
outputHash = lib.fakeSha256;
|
||||
};
|
||||
in
|
||||
|
||||
stdenv.mkDerivation (
|
||||
{
|
||||
# The name is fixed as to not produce multiple store paths with the same content
|
||||
name = "offline";
|
||||
|
||||
dontUnpack = src == null;
|
||||
dontInstall = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
yarn-berry-fetcher
|
||||
nix-prefetch-git
|
||||
cacert
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
yarnLock=''${yarnLock:=$PWD/yarn.lock}
|
||||
yarn-berry-fetcher fetch $yarnLock $missingHashes
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
outputHashMode = "recursive";
|
||||
|
||||
passthru = {
|
||||
inherit berryVersion;
|
||||
};
|
||||
}
|
||||
// hash_
|
||||
// (removeAttrs args (
|
||||
[
|
||||
"name"
|
||||
"pname"
|
||||
"version"
|
||||
"hash"
|
||||
"sha256"
|
||||
]
|
||||
++ (lib.optional (src == null) "src")
|
||||
))
|
||||
)
|
@ -0,0 +1,24 @@
|
||||
{
|
||||
makeSetupHook,
|
||||
yarn-berry-offline,
|
||||
srcOnly,
|
||||
nodejs,
|
||||
diffutils,
|
||||
}:
|
||||
|
||||
makeSetupHook {
|
||||
name = "yarn-berry-config-hook";
|
||||
substitutions = {
|
||||
# Specify `diff` by abspath to ensure that the user's build
|
||||
# inputs do not cause us to find the wrong binaries.
|
||||
diff = "${diffutils}/bin/diff";
|
||||
|
||||
yarn_offline = "${yarn-berry-offline}/bin/yarn";
|
||||
|
||||
nodeSrc = srcOnly nodejs;
|
||||
nodeGyp = "${nodejs}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js";
|
||||
};
|
||||
meta = {
|
||||
description = "Install nodejs dependencies from an offline yarn cache produced by fetchYarnDeps";
|
||||
};
|
||||
} ./yarn-berry-config-hook.sh
|
85
pkgs/by-name/ya/yarn-berry/fetcher/yarn-berry-config-hook.sh
Normal file
85
pkgs/by-name/ya/yarn-berry/fetcher/yarn-berry-config-hook.sh
Normal file
@ -0,0 +1,85 @@
|
||||
yarnBerryConfigHook() {
|
||||
echo "Executing yarnBerryConfigHook"
|
||||
|
||||
# Use a constant HOME directory
|
||||
export HOME=$(mktemp -d)
|
||||
if [[ -n "$yarnOfflineCache" ]]; then
|
||||
offlineCache="$yarnOfflineCache"
|
||||
fi
|
||||
if [[ -z "$offlineCache" ]]; then
|
||||
echo yarnBerryConfigHook: No yarnOfflineCache or offlineCache were defined\! >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
local -r cacheLockfile="$offlineCache/yarn.lock"
|
||||
local -r srcLockfile="$PWD/yarn.lock"
|
||||
|
||||
echo "Validating consistency between $srcLockfile and $cacheLockfile"
|
||||
|
||||
if ! @diff@ "$srcLockfile" "$cacheLockfile"; then
|
||||
# If the diff failed, first double-check that the file exists, so we can
|
||||
# give a friendlier error msg.
|
||||
if ! [ -e "$srcLockfile" ]; then
|
||||
echo
|
||||
echo "ERROR: Missing yarn.lock from src. Expected to find it at: $srcLockfile"
|
||||
echo "Hint: You can copy a vendored yarn.lock file via postPatch."
|
||||
echo
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! [ -e "$cacheLockfile" ]; then
|
||||
echo
|
||||
echo "ERROR: Missing lockfile from cache. Expected to find it at: $cacheLockfile"
|
||||
echo
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "ERROR: fetchYarnDeps hash is out of date"
|
||||
echo
|
||||
echo "The yarn.lock in src is not the same as the in $offlineCache."
|
||||
echo
|
||||
echo "To fix the issue:"
|
||||
echo '1. Use `lib.fakeHash` as the fetchYarnBerryDeps hash value'
|
||||
echo "2. Build the derivation and wait for it to fail with a hash mismatch"
|
||||
echo "3. Copy the 'got: sha256-' value back into the fetchYarnBerryDeps hash field"
|
||||
echo
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -n "$missingHashes" ]] || [[ -f "$offlineCache/missing-hashes.json" ]]; then
|
||||
echo "Validating consistency of missing-hashes.json"
|
||||
if [[ -z "$missingHashes" ]]; then
|
||||
echo "You must specify missingHashes in your derivation"
|
||||
exit 1
|
||||
fi
|
||||
if ! @diff@ "$missingHashes" "$offlineCache/missing-hashes.json"; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
YARN_IGNORE_PATH=1 @yarn_offline@ config set enableTelemetry false
|
||||
YARN_IGNORE_PATH=1 @yarn_offline@ config set enableGlobalCache false
|
||||
|
||||
# The cache needs to be writable in case yarn needs to re-pack any patch: or git dependencies
|
||||
rm -rf ./.yarn/cache
|
||||
mkdir -p ./.yarn
|
||||
cp -r --reflink=auto $offlineCache/cache ./.yarn/cache
|
||||
chmod u+w -R ./.yarn/cache
|
||||
[ -d $offlineCache/checkouts ] && cp -r --reflink=auto $offlineCache/checkouts ./.yarn/checkouts
|
||||
[ -d $offlineCache/checkouts ] && chmod u+w -R ./.yarn/checkouts
|
||||
|
||||
export npm_config_nodedir="@nodeSrc@"
|
||||
export npm_config_node_gyp="@nodeGyp@"
|
||||
|
||||
YARN_IGNORE_PATH=1 @yarn_offline@ install --inline-builds
|
||||
|
||||
echo "finished yarnBerryConfigHook"
|
||||
}
|
||||
|
||||
if [[ -z "${dontYarnBerryInstallDeps-}" ]]; then
|
||||
postConfigureHooks+=(yarnBerryConfigHook)
|
||||
fi
|
50
pkgs/by-name/ya/yarn-berry/fetcher/yarn-berry-fetcher.nix
Normal file
50
pkgs/by-name/ya/yarn-berry/fetcher/yarn-berry-fetcher.nix
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
lib,
|
||||
rustPlatform,
|
||||
fetchFromGitLab,
|
||||
|
||||
libzip,
|
||||
openssl,
|
||||
pkg-config,
|
||||
|
||||
berryVersion,
|
||||
berryCacheVersion,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "yarn-berry-${toString berryVersion}-fetcher";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "cyberchaos.dev";
|
||||
owner = "yuka";
|
||||
repo = "yarn-berry-fetcher";
|
||||
tag = "1.0.0";
|
||||
hash = "sha256-iMU/SadzrNv8pZSgp2fBwWVgrgZsnyPRsvs0ugvwyks=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-ETFaCu+6Ar7tEeRCbTbesEqx9BdztSvPXB7Dc5KGIx0=";
|
||||
|
||||
env.YARN_ZIP_SUPPORTED_CACHE_VERSION = berryCacheVersion;
|
||||
env.LIBZIP_SYS_USE_PKG_CONFIG = 1;
|
||||
|
||||
nativeBuildInputs = [
|
||||
rustPlatform.bindgenHook
|
||||
pkg-config
|
||||
];
|
||||
buildInputs = [
|
||||
libzip
|
||||
openssl
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = "https://cyberchaos.dev/yuka/yarn-berry-fetcher";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "yarn-berry-fetcher";
|
||||
maintainers = with lib.maintainers; [
|
||||
yuka
|
||||
flokli
|
||||
];
|
||||
};
|
||||
})
|
@ -5,6 +5,7 @@
|
||||
stdenv,
|
||||
testers,
|
||||
yarn,
|
||||
callPackage,
|
||||
berryVersion ? 4,
|
||||
}:
|
||||
|
||||
@ -48,13 +49,15 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.updateScript = ./update.sh;
|
||||
passthru = {
|
||||
updateScript = ./update.sh;
|
||||
|
||||
passthru.tests = {
|
||||
version = testers.testVersion {
|
||||
package = finalAttrs.finalPackage;
|
||||
tests = {
|
||||
version = testers.testVersion {
|
||||
package = finalAttrs.finalPackage;
|
||||
};
|
||||
};
|
||||
};
|
||||
} // (callPackage ./fetcher { yarn-berry = finalAttrs; });
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://yarnpkg.com/";
|
||||
|
@ -6,7 +6,7 @@
|
||||
removeReferencesTo,
|
||||
tzdata,
|
||||
wire,
|
||||
yarn,
|
||||
yarn-berry_4,
|
||||
nodejs,
|
||||
python3,
|
||||
cacert,
|
||||
@ -62,44 +62,15 @@ buildGoModule rec {
|
||||
# borrowed from: https://github.com/NixOS/nixpkgs/blob/d70d9425f49f9aba3c49e2c389fe6d42bac8c5b0/pkgs/development/tools/analysis/snyk/default.nix#L20-L22
|
||||
env = {
|
||||
CYPRESS_INSTALL_BINARY = 0;
|
||||
|
||||
# The build OOMs on memory constrained aarch64 without this
|
||||
NODE_OPTIONS = "--max_old_space_size=4096";
|
||||
};
|
||||
|
||||
offlineCache = stdenv.mkDerivation {
|
||||
name = "${pname}-${version}-yarn-offline-cache";
|
||||
inherit src env;
|
||||
nativeBuildInputs = [
|
||||
yarn
|
||||
nodejs
|
||||
cacert
|
||||
jq
|
||||
moreutils
|
||||
# required to run old node-gyp
|
||||
(python3.withPackages (ps: [ ps.distutils ]))
|
||||
git
|
||||
# @esfx/equatable@npm:1.0.2 fails to build on darwin as it requires `xcbuild`
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild.xcbuild ];
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
export HOME="$(mktemp -d)"
|
||||
yarn config set enableTelemetry 0
|
||||
yarn config set cacheFolder $out
|
||||
yarn config set --json supportedArchitectures.os '[ "linux", "darwin" ]'
|
||||
yarn config set --json supportedArchitectures.cpu '["arm", "arm64", "ia32", "x64"]'
|
||||
yarn
|
||||
runHook postBuild
|
||||
'';
|
||||
dontConfigure = true;
|
||||
dontInstall = true;
|
||||
dontFixup = true;
|
||||
outputHashMode = "recursive";
|
||||
outputHash =
|
||||
rec {
|
||||
x86_64-linux = "sha256-52Sq7YJHhs0UICMOtEDta+bY7b/1SdNfzUOigQhH3E4=";
|
||||
aarch64-linux = x86_64-linux;
|
||||
aarch64-darwin = "sha256-9AJbuA1WDGiln2ea0nqD9lDMhKWdYyVkgFyFLB6/Etc=";
|
||||
x86_64-darwin = aarch64-darwin;
|
||||
}
|
||||
.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
missingHashes = ./missing-hashes.json;
|
||||
offlineCache = yarn-berry_4.fetchYarnBerryDeps {
|
||||
inherit src missingHashes;
|
||||
hash = "sha256-qJ1xP02tdoZmAlrO5J8wxRYdNeg420NN27Tt2gaNPFc=";
|
||||
};
|
||||
|
||||
disallowedRequisites = [ offlineCache ];
|
||||
@ -112,13 +83,14 @@ buildGoModule rec {
|
||||
|
||||
nativeBuildInputs = [
|
||||
wire
|
||||
yarn
|
||||
jq
|
||||
moreutils
|
||||
removeReferencesTo
|
||||
# required to run old node-gyp
|
||||
(python3.withPackages (ps: [ ps.distutils ]))
|
||||
faketty
|
||||
yarn-berry_4
|
||||
yarn-berry_4.yarnBerryConfigHook
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild.xcbuild ];
|
||||
|
||||
postConfigure = ''
|
||||
@ -129,22 +101,7 @@ buildGoModule rec {
|
||||
|
||||
GOARCH= CGO_ENABLED=0 go generate ./kinds/gen.go
|
||||
GOARCH= CGO_ENABLED=0 go generate ./public/app/plugins/gen.go
|
||||
# Setup node_modules
|
||||
export HOME="$(mktemp -d)"
|
||||
|
||||
# Help node-gyp find Node.js headers
|
||||
# (see https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/javascript.section.md#pitfalls-javascript-yarn2nix-pitfalls)
|
||||
mkdir -p $HOME/.node-gyp/${nodejs.version}
|
||||
echo 9 > $HOME/.node-gyp/${nodejs.version}/installVersion
|
||||
ln -sfv ${nodejs}/include $HOME/.node-gyp/${nodejs.version}
|
||||
export npm_config_nodedir=${nodejs}
|
||||
|
||||
yarn config set enableTelemetry 0
|
||||
yarn config set cacheFolder $offlineCache
|
||||
yarn install --immutable-cache
|
||||
|
||||
# The build OOMs on memory constrained aarch64 without this
|
||||
export NODE_OPTIONS=--max_old_space_size=4096
|
||||
'';
|
||||
|
||||
postBuild = ''
|
||||
|
88
pkgs/servers/monitoring/grafana/missing-hashes.json
Normal file
88
pkgs/servers/monitoring/grafana/missing-hashes.json
Normal file
@ -0,0 +1,88 @@
|
||||
{
|
||||
"@esbuild/aix-ppc64@npm:0.25.0": "f9a1263789c799c54255f102aa7e5eb92ff2938e5f1e28d7270ae9388d7f0b07a89c6928201089e9917da3531c3370675cbdf3ee213dbb46c219168826dcbf07",
|
||||
"@esbuild/android-arm64@npm:0.25.0": "b935e4909cfecaf6166268edb337ac481eb79760230efe9893d09dfffc242915307edc890220ff1fe6378f9a6dc88043971a8282929e21ee92d5bb32d1ff33ad",
|
||||
"@esbuild/android-arm@npm:0.25.0": "109a800ac79c78770cbc5f76c6ba8d2c3a3324c408748016429b5c8aad211463e33d8c0ed7a740f55d8df7a1bac4e78bc5029521f07e740731b7564c688c2206",
|
||||
"@esbuild/android-x64@npm:0.25.0": "033e21f87df0b0a50b6f54de5ba2dc20c232f008fc62c377c8a359dc27c6d96eaaf57fab8c87c829e36fb49249811bcb0dfb0df958fc2cd1a2311fe443db7a2c",
|
||||
"@esbuild/darwin-arm64@npm:0.25.0": "d82d5f8b724a77ee7d65b7d47159930015135c7fb0fc7dc3ad056203bb97a1a933f516fd91f0213420a80c0a9ddfec954c952c554edf00629d9bc964313a3836",
|
||||
"@esbuild/darwin-x64@npm:0.25.0": "ae029503666bfa48c6cbcbc991ac9d841e1f03f056f71782b78e57ac4083022eb505deab330651ee05deab76688cf3139bdbea84caea6491fcaf5caa2b912946",
|
||||
"@esbuild/freebsd-arm64@npm:0.25.0": "9f72aaa0c1845f3ada5a6a1cffa43c7683c25313455aa997ca8b233316a87d163722d8c26a0e86663c5ebbdca6ab91cf1975f0c0e7fbe062087cbef92c666b04",
|
||||
"@esbuild/freebsd-x64@npm:0.25.0": "b96749a6d7da71fff98309655eb85b09de84416ae5c09a02e803342bba25c81e0ac181212bac49fa8d8cc28bfa5e1fbb8d349f2b4722e2ca2df2e4a383d17935",
|
||||
"@esbuild/linux-arm64@npm:0.25.0": "1dbf78595fed87287eccde8fb9a5e35d448ab3b7cd84c03fdfa47c250701a62160d7aa45b4de9ca5e11039975680829644529636bbe254e1627836c5227efca2",
|
||||
"@esbuild/linux-arm@npm:0.25.0": "b1a165678166d006b32f965cb51719403fdea18c9ec2e498807f0b273b46a3a555b214d5d5f832393471180e1d39ca9f06e7bfe3c2c97c0cbc30314a38b422c0",
|
||||
"@esbuild/linux-ia32@npm:0.25.0": "21a136d8301fac7f23724061832426efddc2f9769b29b37e88443245ed0406f0b1f9bc05a02b6d0cf7b3e2e8ec2c8e1e8d99b3178a01ace6974369930f0020f6",
|
||||
"@esbuild/linux-loong64@npm:0.25.0": "f87baa1534a52b24198d9d845821f37bec9c4afb08307ee66c3f1d223d3c684151749f4a0eeb96f3905d365bea9f6256787256ff35b9f80fdd51ed7d4f8356b6",
|
||||
"@esbuild/linux-mips64el@npm:0.25.0": "2bfdec2d2730879795f6884d8f8a38a0297f0cd46bc3357c568fc59432d49d7e26c723d9b8111c799517628cafb469e30fa968387105079aa4b4b4d4192638bf",
|
||||
"@esbuild/linux-ppc64@npm:0.25.0": "bca7b660b91939b5d9f4942b4f2e404efad88fa166c51ba49474b3b5ba200213e1c44499c419d2b13c5afe01b560f361b46d201acc146d76515b953be497bd4f",
|
||||
"@esbuild/linux-riscv64@npm:0.25.0": "dfb00cd66f717315b9afab667a484c67a69a7a3f6bb9e4662cd3dd0b7465da3feb5182bca414ce0ad0f7a95d0a1fd248c792561c63008d483146eff8af6e678c",
|
||||
"@esbuild/linux-s390x@npm:0.25.0": "4c5872f244ade04c71f1d0f14bd0d3ef0cd24c5404e55e33964fa5ce7b6f2e1283e9d9adb5356db76468cd85724f6cfdb1cd9674ad630344a7d01ca614bf59e3",
|
||||
"@esbuild/linux-x64@npm:0.25.0": "22f6bfbb856653ee8cff0a93ce63947fd3bd4565c8bc7e9d437845fc4b44a2b3954b5e412b4aa4b63e62977beca12e0214b2607c7bc8c4ce359bd10118755df4",
|
||||
"@esbuild/netbsd-arm64@npm:0.25.0": "a8286e8b687857779047d005d4a540a693a2e173893a34273773d0272e9908006e10085a52788f54775ca231ad231e8a7af9270dbd8203b9182dbe2c7fee68b6",
|
||||
"@esbuild/netbsd-x64@npm:0.25.0": "e618540e5e086cabc260010e62110a8afb5b0dfc445e5cd6db843d8a7541403decee971265c5cf59e6f1268b03e8fb50e27b65f709faf647c4e20e0916f19621",
|
||||
"@esbuild/openbsd-arm64@npm:0.25.0": "60cc4ce058e03389155dd34f777d4d5cae1fb62f9bb9659c615ce5d70e8093a58aa89a9ebb8fde4d2dba56e5771c6aaf4442db45f4a1c9d54d6c36a149b857d0",
|
||||
"@esbuild/openbsd-x64@npm:0.25.0": "7ba16accc220c711d1bcbb17ada40de4503f9ed54b8a42957345a8a9b9a7c55eac550b234c6a5a812acf50386f2972fb6a5b0381b38f76cff4b3c44ba38ae1ac",
|
||||
"@esbuild/sunos-x64@npm:0.25.0": "e6cbfb0a93b9f78ef991ff43af2ab33faacf382d9b8db44bf53a80b3fc27a9d0f598061b9a77de1db9481d69fd43a3fd4b20a40a2938923fa52cabdcac84e972",
|
||||
"@esbuild/win32-arm64@npm:0.25.0": "47bd8e32c90da8472515ddc625e6284cf745b1b9eeecf16e2e699b94b3d11c2d773b16944c8de33d857a8e59426601063a3df04433cb670ed3e8421def07d96b",
|
||||
"@esbuild/win32-ia32@npm:0.25.0": "072874686fe049446bba0ec18285414275ac74e8232307a856966ede8a822e72ab9f6119f7352f8feb51c629a20065dbc88f4412120480fe5bcc039dd439d0a7",
|
||||
"@esbuild/win32-x64@npm:0.25.0": "ce021c1bb895345ee30f363d89e1f3631040fb44d2e27e614b65dc697090c30c5b66b80aa9d6e5e3b3153010b37e523d6ef34c7b4f2248192b1b4bdd30701b3f",
|
||||
"@nx/nx-darwin-arm64@npm:19.8.2": "c537778a4629def5492e8e65184c2d6f6b36004231580d9d4ae0fbbabfe411d0149c5fac6369e5d5522bcddc0ad8f458b09ef6826a5da984ffb0d1d632e763cd",
|
||||
"@nx/nx-darwin-x64@npm:19.8.2": "d9d8f9cea7b5a1e1ee7cdc783e6d0d228ea6d9bfd4b447ac6a99c7c12d64cb2a5fe26ab1633ccdc6cccbece828dc1f7cdfb628e1e7a7cfeb8ef8f843f200d533",
|
||||
"@nx/nx-freebsd-x64@npm:19.8.2": "526002cfbec66b52fcad54e731fd8253063bb1bd838822169debcfba397946c2f85059adee75619762797bd91f860f7f360e3545a0815a85e301cb70cb20e074",
|
||||
"@nx/nx-linux-arm-gnueabihf@npm:19.8.2": "0240584b8721eeaa44946df7d38259307dd03c1080d1b6086abde1e5bdb0bbd40c09e4fa8675e7103f1e3b381e11c941fe11743b8600aea0b30050cf71e8997b",
|
||||
"@nx/nx-linux-arm64-gnu@npm:19.8.2": "8b988d520deb01393a839b090cd7862bc05c678857f50e71fac752992d9109706bea2e4013db0de002490597a75f5f8575cd5600f3b2593c9f1707e4223d49ce",
|
||||
"@nx/nx-linux-arm64-musl@npm:19.8.2": "f49f65f457c200a4a16fc12384a86d262b06920988e946c7a06ec93de8bbdcc250779a1cbba363667a6faf7cecfe21bd11b06dc97f657e9fddb34d90b3cc6d5e",
|
||||
"@nx/nx-linux-x64-gnu@npm:19.8.2": "1a1c613a2cb5e6641f974a46e9e0e0c85a327355a39cd8909107001c41aaa0b52f3a0d9e31484a247c8b851496d9bb41212c00b930eee8a6b53bcb909f47443a",
|
||||
"@nx/nx-linux-x64-musl@npm:19.8.2": "bd8b6d6a6fa6c996de60f73c391364b9d1c094e24485da400b39209fac25aaca9d68ddb99b21b1a3666697b53eaa3afe325d998bebc656d5996a76788e8cab2f",
|
||||
"@nx/nx-win32-arm64-msvc@npm:19.8.2": "7bbdc04b82b64bb1caaf57e098bcb569f19ec57752a31e742922808b59e86216eebe20c4ac742e2c5769903f16274b2285a87eb9d484a6a6eb2a45ca096ada63",
|
||||
"@nx/nx-win32-x64-msvc@npm:19.8.2": "b6be716206e03e18e7ffabb13ba036abe22cda76af10c6342d836ad9185622be115f9ef91a8b28b38674cb7be0e7eae40614e29e1e81fc224514e6584283b3fa",
|
||||
"@parcel/watcher-android-arm64@npm:2.4.1": "279ac643abaccb2f9c986f35e39478e242b33bdda3128ca9e728ca1429b923d5f1bdc22268946138b0ced130ac3b2294cf2a44ff080b27c06a79062a5bbba13c",
|
||||
"@parcel/watcher-darwin-arm64@npm:2.4.1": "312fd03aaf7e75824fb84b6b99649caa4db01d55320320d88fb75ad5151bd24876555ae19fe8fdf81f92952bcf01e0a82db7c3bf540e54cee5beb20b85a6a80c",
|
||||
"@parcel/watcher-darwin-x64@npm:2.4.1": "47d8fd40e17e419459294b75c455ac7ce2a53dfcc578f2c2ab0fb0f59ad1ee6a6e87b6ecb92708139f48ed8568ffdd675fe5e57ed1468abac6a2a650fe490926",
|
||||
"@parcel/watcher-freebsd-x64@npm:2.4.1": "2f3a48d2f0baf9f70f1904c9288978308ea0632b39a59b0eb2b2ff7a34bf34a8ae31d7bfb1c6ac3c36e010cc1176dd04a6a7603a9b053f6230187a48ed07adc9",
|
||||
"@parcel/watcher-linux-arm-glibc@npm:2.4.1": "1805d7f98f67b826211a184093d4ec4c280d2f932885b6b886fa02ee60fd7b3bab37ad62cf3ea65b8398aac5c26b7a23fa7634d4d69aede54411847efb5d6546",
|
||||
"@parcel/watcher-linux-arm64-glibc@npm:2.4.1": "4e305f7a5763ba0dc1efee8de9ee31227a5e31f1124eb7cdbc3278dbc941ae1302bed28e7e53169914a9448c7768a548fa4df844ef4255e6afe95186e8558f27",
|
||||
"@parcel/watcher-linux-arm64-musl@npm:2.4.1": "fbc03542be07147fe66e84b683f2d05818b5b04d72ec2f4c89e32ce5b02a0c121d20623ae8121fff66dfebd0eb02ef6eca682624f90ed38c9d7969a2cd501065",
|
||||
"@parcel/watcher-linux-x64-glibc@npm:2.4.1": "4ab81240ba30adfdf360a0c1a62b2a6c1803997d70130b6238d99904d0ded1a71fdd35c0b3f14e5543e37660ad18c178e565e55f7cfd05316488f57a4293d759",
|
||||
"@parcel/watcher-linux-x64-musl@npm:2.4.1": "b4bf90b17b7e6b79a1ec999924fb2f5ca9a9142debc04c636146013450662ee8dbba5667265091023b930af5feadcdd147bb6358b51c52ab8d335af9bdd27078",
|
||||
"@parcel/watcher-win32-arm64@npm:2.4.1": "a1395a97d1373dd7075da7234af8996302e45cb9d2507633a0f8188c239e8121e63842dded6fc13613986e0833c88435a8750b3c6b35d86b9e1af2b97430b940",
|
||||
"@parcel/watcher-win32-ia32@npm:2.4.1": "05a294e24923a02febe852154d8f8dd75fdeb53db8522c3bc87860523f1dc70d41a7507318b3ac93a24feda44526720dba2f1a7e0e20de7ca815c7dd175e3c11",
|
||||
"@parcel/watcher-win32-x64@npm:2.4.1": "28dc8dc547c4ef8b24193356bab99c4e5aafb2c8097e2d06b875c2ce4d767a9034ff82fbfac34a86fd331f8daea91a3aeee5c179ed69120c02e035f72dd44877",
|
||||
"@rollup/rollup-android-arm-eabi@npm:4.32.1": "b017ace00bd6c6a7c4dba799cabb9ffd231a23b181aff1664b60aa95dcbb28845f980c61e0031eab23f00fa612b231576d1a1c7fe4ec68e5c3e1787fb1bdd03e",
|
||||
"@rollup/rollup-android-arm64@npm:4.32.1": "edcbb936fa8730598aa971f589f3413bd5148b8031c635a27ec9dd9415ef5a8257f6ef731d915aad0fbfcb5c5306d8ab135e09fefe0f876be198bd39466e1fdb",
|
||||
"@rollup/rollup-darwin-arm64@npm:4.32.1": "721985238c99bd45a2afc8d17906cfdb4b8e7d73cc8adc0d30da8488248030d9d8248e1bdf1088414a67dfe3af8945d664437cebf327363de5842563148887be",
|
||||
"@rollup/rollup-darwin-x64@npm:4.32.1": "dafe6ae9f41b1362bc0a40d7a9c65e769ddbc99a0f47420459b85eb35315016d8b2c7752491cceae9fba63a7b025bf9cba75fe0d7aeeb714c20adbe789d41836",
|
||||
"@rollup/rollup-freebsd-arm64@npm:4.32.1": "56b6addc09573afa9a4c2cdcf60d04f6a02a9fbad091c508390504cdcb5c8c2ac4fe5f57615e3808eb3ae95e0976a0f6058304d07918078ee6cdd1da51270532",
|
||||
"@rollup/rollup-freebsd-x64@npm:4.32.1": "8f0f96127a5011bdb94efbbb89c9cc1a2cb33bcd45501dd67f6615242be16d6e0fbb95a5827d4b81953755483565d8d8404e1edade20df1fadafda1e21842389",
|
||||
"@rollup/rollup-linux-arm-gnueabihf@npm:4.32.1": "2762a35b562ff48deaafb6fb2a3f3a61aeab9193ad404ac2f92c0c8c601aa7ec0e0419601cf45f3d76793b43bdd3497e63d98bc3fa410f6363f3dca37f08eb70",
|
||||
"@rollup/rollup-linux-arm-musleabihf@npm:4.32.1": "4ba13aa9a1ff86990a8aa13144942be97665d4cf657359c4d617f76dbf7d375ddf1e11531c74714997581645558df87d40b4e2e23d1d95ddf80909e529a6c2b9",
|
||||
"@rollup/rollup-linux-arm64-gnu@npm:4.32.1": "578a86aaa8ce61b1e9a3963c753752181b3ce360f00fb5eaa96ae4e48d62d994f7e2c69870781ded78d2ff530d9f03986c3145f19f657aa881222b8d13d0dc99",
|
||||
"@rollup/rollup-linux-arm64-musl@npm:4.32.1": "0800cced8692a3a0c48dfcc05b4ccd731ba288eb2bcfad680ea2a8272b31667c3bcabe3782d809bc9480a052144d6a6e91a7fa2584aded1fcd46ff81a5ec26ee",
|
||||
"@rollup/rollup-linux-loongarch64-gnu@npm:4.32.1": "7bff2363b2d00d264f0001cd510b41eb1b6ceabe000a211871931e04d15983b44bf4b58eb87c61b007c278caff45178bdda596d08c5a2e281a76945a0f4eadd4",
|
||||
"@rollup/rollup-linux-powerpc64le-gnu@npm:4.32.1": "0a86e6510f176d5e156bd2c77fbca2ab182289b54513ef5d450d308e1c1f144c94474d34c11a9f52be10512e92fe2f5239dc984914eaafd76cf96fd625b4f9ef",
|
||||
"@rollup/rollup-linux-riscv64-gnu@npm:4.32.1": "1c1daef81116da736228a921abe935f3d7398c5f7f78aeeef9171f237c2ece162cb3adedb618a57739ec43cce111a24985aa776a5d802b09be46f341d9878c29",
|
||||
"@rollup/rollup-linux-s390x-gnu@npm:4.32.1": "50974fbbd591a744ad5a6c240777fe7b96d1fc8827546655d38cfc3a764cd1a4491e2c012b949c8fd78d48b8000b91d0ec8b649299eaf26bba99564a20ca519c",
|
||||
"@rollup/rollup-linux-x64-gnu@npm:4.32.1": "cadcff5dd0e7d01ac30043e4ce9df81e308c14b7eab1de65e59f114d08c122d76c15b20b9677686c0b6061691bcc13aa835c488c504d6f8c782330cb7db81afe",
|
||||
"@rollup/rollup-linux-x64-musl@npm:4.32.1": "415b177b762909cd04af0277118c798e02f979ff86e84c8b4d65bc70323d8e221aff9c0c7d904221bd6338515fe0223b8d59610728dfcfc42c4dac864f9d0829",
|
||||
"@rollup/rollup-win32-arm64-msvc@npm:4.32.1": "0a86e7b0bd7d80b01c6850c27ba5c8ad52d17ae98069b0741c074ef796285735da2a0bd936e347078c344e569d288ba84a188414163bf67979764e1b532873d1",
|
||||
"@rollup/rollup-win32-ia32-msvc@npm:4.32.1": "e7076720071ba1020906a4ded867069bf20b48b44f2623f52eb06c006d1884aeebd05407f7b758375dc3ce351267c53185745de51fdb1593ec1302527b9b54ce",
|
||||
"@rollup/rollup-win32-x64-msvc@npm:4.32.1": "a49e24d28b1ec5a07b75ae9a23ffb3542300b094a057dc5b57bd4923670a90fb8ba093fe4d3e07a78d6712a9fa20c21289cf5e4a67e7d0e513111053dc807ae2",
|
||||
"@swc/core-darwin-arm64@npm:1.10.12": "f9e130a3f754b327499c9a2cce7ed7f7ade71430321a59d856102908c8d4c0ef873c1c84e35b303cfc632788579cd3f8474dc8d45d4f81ac2657e525b766aee9",
|
||||
"@swc/core-darwin-arm64@npm:1.11.4": "f66ade345eda79cb2d61f9f1ef3492bd1caca389c19090b839c9f1e5d5080dde0162269130a0b4b1aec757f5f2d82393bad8b04075968c277a8b2f495ff47c14",
|
||||
"@swc/core-darwin-x64@npm:1.10.12": "7176b9926e4bded9475fd964337fb2cf5a42dcd4d38ae660064c1ff554ce837c2b4c51b5ea8fe0b82f1cb7ee42f40ac913aa90cdb21b561b6cb0cf976ccebd91",
|
||||
"@swc/core-darwin-x64@npm:1.11.4": "b223e1375196c5b3395bb321e5acc5503c5ce1e9ea7292171d49421e8cb9dc678ba61a3a1013d0d28edadcafb687fea95d0c2883cdfbff7d35c3425732ee5b9f",
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.10.12": "3346e03f89e490978e6e87145790a47ffb563133ff37cefe21cd6ef0ea5b47b717ed82611305e4f70bf9f8023dc4f56e6d207c5e85fc2dd8d9a467c2bea339d9",
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.11.4": "76f0a34f144c08259d45fb864023cce52970f3b2cd401d371b6f27d57d6d418b0aed8e30b90ad736b3cd71b542c3cff0908fa58da5558b2ff22b1cf070a961ca",
|
||||
"@swc/core-linux-arm64-gnu@npm:1.10.12": "a3e19bc00cb0394b0f62e42220cff64f6e84aba72fd9a078cdba6523157d4ff240843a7dead6b5cdf8f143f5007445637e741ead794666d130644da70bb09737",
|
||||
"@swc/core-linux-arm64-gnu@npm:1.11.4": "b4c6dfa4a80064f861afa82d31b630f104733516dd48d5614b345f76fad2648d0e76fe4ac36e5c5f02621ddf8d5be7f8e61c00c2ddab33e6f11b633cbabb0174",
|
||||
"@swc/core-linux-arm64-musl@npm:1.10.12": "bca439723e73bef871ca0a22b00bd0f83bd972f172cc8b9594d85043c9ed2d0ca290ca58bba7afce064792685168f4e7c4561b7c25e085f95227252cee32e195",
|
||||
"@swc/core-linux-arm64-musl@npm:1.11.4": "b23e6800a7bc75e46af230ec26fe699078ed422adc0393300479dab1735771178ad96c64c3548e5d79d447e8dcd7807757af71e3741d70e9e29ddac43d09242a",
|
||||
"@swc/core-linux-x64-gnu@npm:1.10.12": "f0e40dc6c9c1b486ff8165b96e63cff66ccc1a35af922ee1ae99c9773eaaec8d6d080f18aacce5ef89987037aa8994422a73efb24eafdf151dcc0d6524a222ae",
|
||||
"@swc/core-linux-x64-gnu@npm:1.11.4": "9979a8e0cd4a333f279340bef4c92bbffe211b81a0a8303dd98e4164f95d7f186587ef5f6d34a7d0a1f75ae23dd0c7350bd9214fa090d220d37288eb5580ebda",
|
||||
"@swc/core-linux-x64-musl@npm:1.10.12": "a3d17b84d05233293280a9eb9a2a773a36b2a566147d8c1bc2551ee0166260f6e576589736f77a2f5270dd7b6988d4397119617232ecf351145dc4449e193212",
|
||||
"@swc/core-linux-x64-musl@npm:1.11.4": "5d919b8ccc791f169f7f2d44edab577eeb809b82bbede081d307328209c7be82a29ab65f54fa69b28022366ccb4bdbcaceb623d55753e2f6067d77c90a06dd15",
|
||||
"@swc/core-win32-arm64-msvc@npm:1.10.12": "9bc68365749129569258f6542a897eca224b67009aa43aabb08b074c3c7e63147acf2fb330c7fa0217e9816901eaeca7eb4e5abdf80c720a9296b865af8ff117",
|
||||
"@swc/core-win32-arm64-msvc@npm:1.11.4": "c78cace9e6942216587ff4c82ebb45f9ca050b84eddc9a2e8f3a511eeff570a683a5016cf3badfae176b76c22f68395fdebf719a725ea54fd1a97e70ed4c8faf",
|
||||
"@swc/core-win32-ia32-msvc@npm:1.10.12": "a6ff15734b55af34eebe86d6ee2d6b9447d4dd2bfcd50883a01d5310f5fa8274a1e2840b647a2b97e128cddc8463272f0258af35d1065e9c68784a425920e246",
|
||||
"@swc/core-win32-ia32-msvc@npm:1.11.4": "e122f27adf40e581a7790beae25ee3c2c29b38520de8a1ecbbfea006bec52b3d6060db1cc9d6d6db1cb2950c28391f46dcc989536138084f30d5c95accb6049c",
|
||||
"@swc/core-win32-x64-msvc@npm:1.10.12": "7efa206f3f2778cfeda3f9a580ebcbac34e91c3c720c16c1bc00bb7963f9c63a9dc226f89b6609f19d568a917fc9db3fc3ee5dcea931f70bbafb30602bc3b4d1",
|
||||
"@swc/core-win32-x64-msvc@npm:1.11.4": "45e698626c0336a70501c8fb1c23feb28cfb03d61108104a6de6be0090ca4a47e455baac2396167d05e9c710d087d8e48c36cfeb52470c93be1e7599666680e0"
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user