From f974ec4e852003873a47ab79ed7401c28333421a Mon Sep 17 00:00:00 2001 From: GGG Date: Tue, 8 Apr 2025 17:01:07 -0300 Subject: [PATCH] vscode-extensions.ms-dotnettools.csdevkit: 1.16.6 -> 1.18.23 --- .../ms-dotnettools.csdevkit/default.nix | 61 +++++--- .../ms-dotnettools.csdevkit/lockfile.json | 39 ------ .../ms-dotnettools.csdevkit/update.sh | 131 ++---------------- 3 files changed, 49 insertions(+), 182 deletions(-) delete mode 100644 pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/lockfile.json diff --git a/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/default.nix b/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/default.nix index 1f5b3bb39bff..1094edea1553 100644 --- a/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/default.nix +++ b/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/default.nix @@ -10,30 +10,33 @@ libxml2, }: let - inherit (stdenv.hostPlatform) system; - inherit (vscode-utils) buildVscodeMarketplaceExtension; - - lockfile = lib.importJSON ./lockfile.json; - extInfo = - (arch: { - inherit arch; - inherit (lockfile.${arch}) hash binaries; - }) - ( - { - x86_64-linux = "linux-x64"; - aarch64-linux = "linux-arm64"; - x86_64-darwin = "darwin-x64"; - aarch64-darwin = "darwin-arm64"; - } - .${system} or (throw "Unsupported system: ${system}") - ); + extInfo = ( + { + x86_64-linux = { + arch = "linux-x64"; + hash = "sha256-5B2LAV5azD1mGDFWnxIOYjyyJMXxqxyL5qP0zs6jWgs="; + }; + aarch64-linux = { + arch = "linux-arm64"; + hash = "sha256-6tmHa8XbuNLheUzY8pr6oEJlkUJpeCeT3O7xfo2Iqls="; + }; + x86_64-darwin = { + arch = "darwin-x64"; + hash = "sha256-KRJ148+N3Hzht1GgnO0s5Mv27q+onPyZlY9myXw3zjg="; + }; + aarch64-darwin = { + arch = "darwin-arm64"; + hash = "sha256-vmtE6oeLs1B9s69yaOHASdFKznV1p3v+SsJUAJrwUrU="; + }; + } + .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}") + ); in -buildVscodeMarketplaceExtension { +vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = { name = "csdevkit"; publisher = "ms-dotnettools"; - inherit (lockfile) version; + version = "1.18.23"; inherit (extInfo) hash arch; }; sourceRoot = "extension"; # This has more than one folder. @@ -56,9 +59,23 @@ buildVscodeMarketplaceExtension { substituteInPlace dist/extension.js \ --replace-fail 'e.extensionPath,"cache"' 'require("os").tmpdir(),"'"$ext_unique_id"'"' \ - --replace-fail 't.setExecuteBit=async function(e){if("win32"!==process.platform){const t=o.join(e[a.SERVICEHUB_CONTROLLER_COMPONENT_NAME],"Microsoft.ServiceHub.Controller"),r=o.join(e[a.SERVICEHUB_HOST_COMPONENT_NAME],(0,a.getServiceHubHostEntrypointName)()),n=[(0,a.getServerPath)(e),t,r,(0,c.getReliabilityMonitorPath)(e)];await Promise.all(n.map((e=>(0,i.chmod)(e,"0755"))))}}' 't.setExecuteBit=async function(e){}' + --replace-fail 't.setExecuteBit=async function(e){if("win32"!==process.platform){const t=i.join(e[a.SERVICEHUB_CONTROLLER_COMPONENT_NAME],"Microsoft.VisualStudio.Code.ServiceController"),r=i.join(e[a.SERVICEHUB_HOST_COMPONENT_NAME],(0,a.getServiceHubHostEntrypointName)()),n=[(0,a.getServerPath)(e),t,r,(0,c.getReliabilityMonitorPath)(e)];await Promise.all(n.map((e=>(0,o.chmod)(e,"0755"))))}}' 't.setExecuteBit=async function(e){}' + ''; - chmod +x ${lib.escapeShellArgs extInfo.binaries} + preFixup = '' + ( + shopt -s globstar + shopt -s dotglob + for file in "$out"/**/*; do + if [[ ! -f "$file" || "$file" == *.so || "$file" == *.dylib ]] || + (! isELF "$file" && ! isMachO "$file"); then + continue + fi + + echo Making "$file" executable... + chmod +x "$file" + done + ) ''; passthru.updateScript = ./update.sh; diff --git a/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/lockfile.json b/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/lockfile.json deleted file mode 100644 index 0907b601296f..000000000000 --- a/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/lockfile.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "version": "1.16.6", - "linux-x64": { - "hash": "sha256-/ONaevRlpGc4xaYr9vV8maZUP3HbjmgUk/AbXAJM4tg=", - "binaries": [ - "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/servicehub-controller-net60.linux-x64/Microsoft.ServiceHub.Controller", - "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/visualstudio-code-servicehost.linux-x64/Microsoft.VisualStudio.Code.ServiceHost", - "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/visualstudio-reliability-monitor.linux-x64/Microsoft.VisualStudio.Reliability.Monitor", - "components/vs-green-server/platforms/linux-x64/node_modules/@microsoft/visualstudio-server.linux-x64/Microsoft.VisualStudio.Code.Server" - ] - }, - "linux-arm64": { - "hash": "sha256-yhzozbnTsAddbx0Hior/DnN+vjRFWtIW8Z4zu1xfrhY=", - "binaries": [ - "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/servicehub-controller-net60.linux-arm64/Microsoft.ServiceHub.Controller", - "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/visualstudio-code-servicehost.linux-arm64/Microsoft.VisualStudio.Code.ServiceHost", - "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/visualstudio-reliability-monitor.linux-arm64/Microsoft.VisualStudio.Reliability.Monitor", - "components/vs-green-server/platforms/linux-arm64/node_modules/@microsoft/visualstudio-server.linux-arm64/Microsoft.VisualStudio.Code.Server" - ] - }, - "darwin-x64": { - "hash": "sha256-PZwhzd9yVAJiVz5g7ogICUIgwJvS2MyGQMZbNN+7QRM=", - "binaries": [ - "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/servicehub-controller-net60.darwin-x64/Microsoft.ServiceHub.Controller", - "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/visualstudio-code-servicehost.darwin-x64/Microsoft.VisualStudio.Code.ServiceHost", - "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/visualstudio-reliability-monitor.darwin-x64/Microsoft.VisualStudio.Reliability.Monitor", - "components/vs-green-server/platforms/darwin-x64/node_modules/@microsoft/visualstudio-server.darwin-x64/Microsoft.VisualStudio.Code.Server" - ] - }, - "darwin-arm64": { - "hash": "sha256-iR0jJnkcA12+CJUI0ECrRSR2+j2emtfmLt2Uz4ke7YY=", - "binaries": [ - "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/servicehub-controller-net60.darwin-arm64/Microsoft.ServiceHub.Controller", - "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/visualstudio-code-servicehost.darwin-arm64/Microsoft.VisualStudio.Code.ServiceHost", - "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/visualstudio-reliability-monitor.darwin-arm64/Microsoft.VisualStudio.Reliability.Monitor", - "components/vs-green-server/platforms/darwin-arm64/node_modules/@microsoft/visualstudio-server.darwin-arm64/Microsoft.VisualStudio.Code.Server" - ] - } -} diff --git a/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/update.sh b/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/update.sh index 650381998541..488f0352a457 100755 --- a/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/update.sh +++ b/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csdevkit/update.sh @@ -1,14 +1,12 @@ #!/usr/bin/env nix-shell -#!nix-shell -I nixpkgs=./. -i bash -p curl coreutils jq nix unzip +#!nix-shell -I nixpkgs=./. -i bash -p curl jq nix common-updater-scripts # shellcheck shell=bash set -euo pipefail -shopt -s globstar export LC_ALL=C PUBLISHER=ms-dotnettools EXTENSION=csdevkit -LOCKFILE=pkgs/applications/editors/vscode/extensions/$PUBLISHER.$EXTENSION/lockfile.json response=$(curl -s 'https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery' \ -H 'accept: application/json;api-version=3.0-preview.1' \ @@ -23,58 +21,12 @@ latest_version=$(jq --raw-output ' | map(select(.properties | map(select(.key == "Microsoft.VisualStudio.Code.PreRelease")) | .[0].value != "true")) | .[0].version' <<<"$response") -current_version=$(jq '.version' --raw-output <"$LOCKFILE") - -if [[ "$latest_version" == "$current_version" ]]; then - echo "Package is up to date." >&2 - exit 1 -fi - -# Return success if the specified file is an ELF object. -isELF() { - local fn="$1" - local fd - local magic - exec {fd}<"$fn" - read -r -n 4 -u "$fd" magic - exec {fd}<&- - if [ "$magic" = $'\177ELF' ]; then return 0; else return 1; fi -} - -# Return success if the specified file is a Mach-O object. -isMachO() { - local fn="$1" - local fd - local magic - exec {fd}<"$fn" - read -r -n 4 -u "$fd" magic - exec {fd}<&- - - # nix uses 'declare -F' in get-env.sh to retrieve the loaded functions. - # If we use the $'string' syntax instead of 'echo -ne' then 'declare' will print the raw characters and break nix. - # See https://github.com/NixOS/nixpkgs/pull/138334 and https://github.com/NixOS/nix/issues/5262. - - # https://opensource.apple.com/source/lldb/lldb-310.2.36/examples/python/mach_o.py.auto.html - if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then - # MH_MAGIC_64 || MH_CIGAM_64 - return 0 - elif [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then - # MH_MAGIC || MH_CIGAM - return 0 - elif [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then - # FAT_MAGIC || FAT_CIGAM - return 0 - else - return 1 - fi -} - getDownloadUrl() { nix-instantiate \ --eval \ --strict \ --json \ - pkgs/applications/editors/vscode/extensions/mktplcExtRefToFetchArgs.nix \ + 'pkgs/applications/editors/vscode/extensions/mktplcExtRefToFetchArgs.nix' \ --attr url \ --argstr publisher $PUBLISHER \ --argstr name $EXTENSION \ @@ -82,76 +34,13 @@ getDownloadUrl() { --argstr arch "$1" | jq . --raw-output } -TEMP=$(mktemp --directory --tmpdir) -OUTPUT="$TEMP/lockfile.json" -trap 'rm -r "$TEMP"' EXIT - -HASH= -BINARIES=() -fetchMarketplace() { - arch="$1" - - echo " Downloading VSIX..." - if ! curl -sLo "$TEMP/$arch".zip "$(getDownloadUrl "$arch")"; then - echo " Failed to download extension for arch $arch" >&2 - exit 1 - fi - - HASH=$(nix hash file --type sha256 --sri "$TEMP/$arch".zip) - BINARIES=() - - echo " Extracting VSIX..." - mkdir "$TEMP/$arch" - if ! unzip "$TEMP/$arch".zip -d "$TEMP/$arch" >/dev/null; then - echo " Failed to unzip extension for arch $arch" >&2 - file "$TEMP/$arch".zip >&2 - exit 1 - fi - - echo " Listing binaries..." - for file in "$TEMP/$arch"/**/*; do - if [[ ! -f "$file" || "$file" == *.so || "$file" == *.dylib ]] || - (! isELF "$file" && ! isMachO "$file"); then - continue - fi - - echo " FOUND: ${file#"$TEMP/$arch/extension/"}" - BINARIES+=("${file#"$TEMP/$arch/extension/"}") - done - rm -r "${TEMP:?}/$arch" +update_hash() { + local hash + hash=$(nix hash convert --hash-algo sha256 "$(nix-prefetch-url --type sha256 "$(getDownloadUrl "$2")")") + update-source-version vscode-extensions.$PUBLISHER.$EXTENSION "$latest_version" "$hash" --system="$1" --ignore-same-version } -cat >"$OUTPUT" <>"$OUTPUT" - fi - firstArch=false - - echo "Getting data for $arch..." - fetchMarketplace "$arch" - - cat >>"$OUTPUT" <>"$OUTPUT" - fi - firstBin=false - - echo -n " \"$binary\"" >>"$OUTPUT" - done - echo -ne '\n ]\n }' >>"$OUTPUT" -done -echo -e '\n}' >>"$OUTPUT" - -mv "$OUTPUT" "$LOCKFILE" +update_hash x86_64-linux linux-x64 +update_hash aarch64-linux linux-arm64 +update_hash x86_64-darwin darwin-x64 +update_hash aarch64-darwin darwin-arm64