Unverified Commit d42e0cfa authored by superherointj's avatar superherointj Committed by GitHub
Browse files

Merge pull request #220704 from mdarocha/vsliveshare-update

vscode-extensions.ms-vsliveshare.vsliveshare: 1.0.5043 -> 1.0.5834
parents 7be86f22 836f16d1
Loading
Loading
Loading
Loading
+7 −84
Original line number Diff line number Diff line
@@ -2,20 +2,14 @@
#  -  <https://github.com/msteen/nixos-vsliveshare/blob/master/pkgs/vsliveshare/default.nix>
#  -  <https://github.com/NixOS/nixpkgs/issues/41189>
{ lib, gccStdenv, vscode-utils
, jq, autoPatchelfHook, bash, makeWrapper
, dotnet-sdk_3, curl, gcc, icu, libkrb5, libsecret, libunwind, libX11, lttng-ust, openssl, util-linux, zlib
, desktop-file-utils, xprop, xsel
, autoPatchelfHook, bash, makeWrapper
, curl, gcc, libsecret, libunwind, libX11, lttng-ust, util-linux
, desktop-file-utils, xsel
}:

let
  # https://docs.microsoft.com/en-us/visualstudio/liveshare/reference/linux#install-prerequisites-manually
  libs = [
    # .NET Core
    openssl
    libkrb5
    zlib
    icu

    # Credential Storage
    libsecret

@@ -36,91 +30,20 @@ in ((vscode-utils.override { stdenv = gccStdenv; }).buildVscodeMarketplaceExtens
  mktplcRef = {
    name = "vsliveshare";
    publisher = "ms-vsliveshare";
    version = "1.0.5043";
    sha256 = "OdFOFvidUV/trySHvF8iELPNVP2kq8+vZQ4q4Nf7SiQ=";
    version = "1.0.5834";
    sha256 = "sha256-+KfivY8W1VtUxhdXuUKI5e1elo6Ert1Tsf4xVXsKB3Y=";
  };
}).overrideAttrs({ nativeBuildInputs ? [], buildInputs ? [], ... }: {
  nativeBuildInputs = nativeBuildInputs ++ [
    jq
    autoPatchelfHook
    makeWrapper
  ];
}).overrideAttrs({ buildInputs ? [], ... }: {
  buildInputs = buildInputs ++ libs;

  # Using a patch file won't work, because the file changes too often, causing the patch to fail on most updates.
  # Rather than patching the calls to functions, we modify the functions to return what we want,
  # which is less likely to break in the future.
  postPatch = ''
    sed -i \
      -e 's/updateExecutablePermissionsAsync() {/& return;/' \
      -e 's/isInstallCorrupt(traceSource, manifest) {/& return false;/' \
      out/prod/extension-prod.js

    declare ext_unique_id
    ext_unique_id="$(basename "$out")"

    # Fix extension attempting to write to 'modifiedInternalSettings.json'.
    # Move this write to the tmp directory indexed by the nix store basename.
    substituteInPlace out/prod/extension-prod.js \
      --replace "path.resolve(constants_1.EXTENSION_ROOT_PATH, './modifiedInternalSettings.json')" \
                "path.join(os.tmpdir(), '$ext_unique_id-modifiedInternalSettings.json')"

    # Fix extension attempting to write to 'vsls-agent.lock'.
    # Move this write to the tmp directory indexed by the nix store basename.
    substituteInPlace out/prod/extension-prod.js \
      --replace "path + '.lock'" \
                "__webpack_require__('path').join(__webpack_require__('os').tmpdir(), '$ext_unique_id-vsls-agent.lock')"

    # Hardcode executable paths
    echo '#!/bin/sh' >node_modules/@vsliveshare/vscode-launcher-linux/check-reqs.sh
    substituteInPlace node_modules/@vsliveshare/vscode-launcher-linux/install.sh \
      --replace desktop-file-install ${desktop-file-utils}/bin/desktop-file-install
    substituteInPlace node_modules/@vsliveshare/vscode-launcher-linux/uninstall.sh \
      --replace update-desktop-database ${desktop-file-utils}/bin/update-desktop-database
    substituteInPlace node_modules/@vsliveshare/vscode-launcher-linux/vsls-launcher \
      --replace /bin/bash ${bash}/bin/bash
    substituteInPlace out/prod/extension-prod.js \
      --replace xprop ${xprop}/bin/xprop \
    substituteInPlace extension.js \
      --replace "'xsel'" "'${xsel}/bin/xsel'"
  '';

  postInstall = ''
    cd $out/share/vscode/extensions/ms-vsliveshare.vsliveshare

    bash -s <<ENDSUBSHELL
    shopt -s extglob

    # A workaround to prevent the journal filling up due to diagnostic logging.
    # See: https://github.com/MicrosoftDocs/live-share/issues/1272
    # See: https://unix.stackexchange.com/questions/481799/how-to-prevent-a-process-from-writing-to-the-systemd-journal
    gcc -fPIC -shared -ldl -o dotnet_modules/noop-syslog.so ${./noop-syslog.c}

    # Normally the copying of the right executables is done externally at a later time,
    # but we want it done at installation time.
    cp dotnet_modules/exes/linux-x64/* dotnet_modules

    # The required executables are already copied over,
    # and the other runtimes won't be used and thus are just a waste of space.
    rm -r dotnet_modules/exes dotnet_modules/runtimes/!(linux-x64|unix)

    # Not all executables and libraries are executable, so make sure that they are.
    jq <package.json '.executables.linux[]' -r | xargs chmod +x

    # Lock the extension downloader.
    touch install-linux.Lock externalDeps-linux.Lock
    ENDSUBSHELL
  '';

  postFixup = ''
    # We cannot use `wrapProgram`, because it will generate a relative path,
    # which will break when copying over the files.
    mv dotnet_modules/vsls-agent{,-wrapped}
    makeWrapper $PWD/dotnet_modules/vsls-agent{-wrapped,} \
      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath libs}" \
      --set LD_PRELOAD $PWD/dotnet_modules/noop-syslog.so \
      --set DOTNET_ROOT ${dotnet-sdk_3}
  '';

  meta = with lib; {
    description = "Live Share lets you achieve greater confidence at speed by streamlining collaborative editing, debugging, and more in real-time during development";
    homepage = "https://aka.ms/vsls-docs";
+0 −1
Original line number Diff line number Diff line
void syslog(int priority, const char *format, ...) { }