Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

vscode-extensions.rust-lang.rust-analyzer: move to buildNpmPackage

The existing node2nix-based build was broken with #382557. I could not
salvage it, however apparently it is considered the deprecated way of
building node packages in nixpkgs.

This commit moves rust-analyzer’s vsix build to buildNpmPackage.

Fixes: #382845
Part-Of: #229475

+14 -62
-24
pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/build-deps/package.json
··· 1 - { 2 - "name": "rust-analyzer", 3 - "version": "0.3.2029", 4 - "dependencies": { 5 - "@hpcc-js/wasm": "^2.13.0", 6 - "anser": "^2.1.1", 7 - "d3": "^7.8.5", 8 - "d3-graphviz": "^5.0.2", 9 - "vscode-languageclient": "^8.1.0", 10 - "@tsconfig/strictest": "^2.0.1", 11 - "@types/node": "~16.11.7", 12 - "@types/vscode": "~1.78.1", 13 - "@typescript-eslint/eslint-plugin": "^6.0.0", 14 - "@typescript-eslint/parser": "^6.0.0", 15 - "@vscode/test-electron": "^2.3.8", 16 - "@vscode/vsce": "^2.19.0", 17 - "eslint": "^8.44.0", 18 - "eslint-config-prettier": "^8.8.0", 19 - "ovsx": "^0.8.2", 20 - "prettier": "^3.0.0", 21 - "tslib": "^2.6.0", 22 - "typescript": "^5.1.6" 23 - } 24 - }
+12 -16
pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/default.nix
··· 1 1 { 2 + pkgsBuildBuild, 2 3 lib, 3 4 fetchFromGitHub, 4 5 vscode-utils, 5 6 jq, 6 7 rust-analyzer, 7 - nodePackages, 8 + buildNpmPackage, 8 9 moreutils, 9 10 esbuild, 10 11 pkg-config, ··· 30 31 hash = "sha256-STmaV9Zu74QtkGGrbr9uMhskwagfCjJqOAYapXabiuk="; 31 32 }; 32 33 33 - build-deps = 34 - nodePackages."rust-analyzer-build-deps-../../applications/editors/vscode/extensions/rust-lang.rust-analyzer/build-deps"; 35 - # FIXME: Making a new derivation to link `node_modules` and run `npm run package` 36 - # will cause a build failure. 37 - vsix = build-deps.override { 34 + vsix = buildNpmPackage { 35 + inherit pname releaseTag; 36 + version = lib.trim (lib.readFile ./version.txt); 38 37 src = "${src}/editors/code"; 39 - outputs = [ 40 - "vsix" 41 - "out" 38 + npmDepsHash = "sha256-EtkgnNOAKDQP7BDHI667SPu73tYrz1Hq6TmeeObXnf4="; 39 + buildInputs = [ 40 + pkgsBuildBuild.libsecret 42 41 ]; 43 - 44 - inherit releaseTag; 45 - 46 42 nativeBuildInputs = 47 43 [ 48 44 jq ··· 50 46 esbuild 51 47 # Required by `keytar`, which is a dependency of `vsce`. 52 48 pkg-config 53 - libsecret 54 49 ] 55 50 ++ lib.optionals stdenv.hostPlatform.isDarwin [ 56 51 darwin.apple_sdk.frameworks.AppKit ··· 58 53 ]; 59 54 60 55 # Follows https://github.com/rust-lang/rust-analyzer/blob/41949748a6123fd6061eb984a47f4fe780525e63/xtask/src/dist.rs#L39-L65 61 - postRebuild = '' 56 + installPhase = '' 62 57 jq ' 63 58 .version = $ENV.version | 64 59 .releaseTag = $ENV.releaseTag | ··· 66 61 walk(del(.["$generated-start"]?) | del(.["$generated-end"]?)) 67 62 ' package.json | sponge package.json 68 63 69 - mkdir -p $vsix 70 - npx vsce package -o $vsix/${pname}.zip 64 + mkdir -p $out 65 + npx vsce package -o $out/${pname}.zip 71 66 ''; 72 67 }; 68 + 73 69 in 74 70 vscode-utils.buildVscodeExtension { 75 71 inherit version vsix pname;
+1 -22
pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/update.sh
··· 4 4 set -euo pipefail 5 5 cd "$(dirname "$0")" 6 6 nixpkgs=../../../../../../ 7 - node_packages="$nixpkgs/pkgs/development/node-packages" 8 7 owner=rust-lang 9 8 repo=rust-analyzer 10 9 ver=$( ··· 25 24 extension_ver=$(curl "https://github.com/$owner/$repo/releases/download/$ver/rust-analyzer-linux-x64.vsix" -L | 26 25 bsdtar -xf - --to-stdout extension/package.json | # Use bsdtar to extract vsix(zip). 27 26 jq --raw-output '.version') 27 + echo -n $extension_ver > version.txt 28 28 echo "Extension version: $extension_ver" 29 - 30 - # We need devDependencies to build vsix. 31 - # `esbuild` is a binary package an is already in nixpkgs so we omit it here. 32 - jq '{ name, version: $ver, dependencies: (.dependencies + .devDependencies | del(.esbuild)) }' "$node_src/package.json" \ 33 - --arg ver "$extension_ver" \ 34 - >"build-deps/package.json.new" 35 - 36 - old_deps="$(jq '.dependencies' build-deps/package.json)" 37 - new_deps="$(jq '.dependencies' build-deps/package.json.new)" 38 - if [[ "$old_deps" == "$new_deps" ]]; then 39 - echo "package.json dependencies not changed, do simple version change" 40 - 41 - sed -E '/^ "rust-analyzer-build-deps/,+3 s/version = ".*"/version = "'"$extension_ver"'"/' \ 42 - --in-place "$node_packages"/node-packages.nix 43 - mv build-deps/package.json{.new,} 44 - else 45 - echo "package.json dependencies changed, updating nodePackages" 46 - mv build-deps/package.json{.new,} 47 - 48 - ./"$node_packages"/generate.sh 49 - fi 50 29 51 30 echo "Remember to also update the releaseTag and hash in default.nix!"
+1
pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/version.txt
··· 1 + 0.3.2029