Unverified Commit af62462a authored by Weijia Wang's avatar Weijia Wang Committed by GitHub
Browse files

Merge pull request #257890 from nixdrin/jetbrains-ld

jetbrains: avoid LD_LIBRARY_PATH leaks
parents 5b1731b2 bcdfa188
Loading
Loading
Loading
Loading
+23 −12
Original line number Diff line number Diff line
@@ -7,7 +7,6 @@
, gdb
, zlib
, python3
, icu
, lldb
, dotnet-sdk_7
, maven
@@ -17,6 +16,7 @@
, openssl
, expat
, libxcrypt-legacy
, fontconfig
, vmopts ? null
}:

@@ -252,8 +252,6 @@ let
    (mkJetBrainsProduct {
      inherit pname version src wmClass jdk buildNumber;
      product = "Rider";
      # icu is required by Rider.Backend
      extraLdPath = [ icu ];
      meta = with lib; {
        homepage = "https://www.jetbrains.com/rider/";
        inherit description license platforms;
@@ -268,15 +266,28 @@ let
        maintainers = with maintainers; [ raphaelr ];
      };
    }).overrideAttrs (attrs: {
      postPatch = lib.optionalString (!stdenv.isDarwin) (attrs.postPatch + ''
        interp="$(cat $NIX_CC/nix-support/dynamic-linker)"
        patchelf --set-interpreter $interp \
          lib/ReSharperHost/linux-x64/Rider.Backend \
          plugins/dotCommon/DotFiles/linux-x64/JetBrains.Profiler.PdbServer
      nativeBuildInputs = (attrs.nativeBuildInputs or [ ]) ++ lib.optionals (stdenv.isLinux) [
        autoPatchelfHook
      ];
      buildInputs = (attrs.buildInputs or [ ]) ++ lib.optionals (stdenv.isLinux) [
        stdenv.cc.cc
        zlib
        fontconfig  # plugins/dotTrace/DotFiles/linux-x64/libSkiaSharp.so
      ];
      dontAutoPatchelf = true;
      postFixup = (attrs.postFixup or "") + lib.optionalString (stdenv.isLinux) ''
        (
          cd $out/rider

          # Remove dotnet copy first so it's not considered by autoPatchElf
          rm -rf lib/ReSharperHost/linux-x64/dotnet
          autoPatchelf \
            lib/ReSharperHost/linux-x64/ \
            plugins/dotCommon/DotFiles/linux-x64/ \
            plugins/dotTrace/DotFiles/linux-x64/
          ln -s ${dotnet-sdk_7} lib/ReSharperHost/linux-x64/dotnet
      '');
        )
      '';
    });

  buildRubyMine = { pname, version, src, license, description, wmClass, buildNumber, ... }:
+16 −8
Original line number Diff line number Diff line
@@ -89,6 +89,21 @@ with stdenv; lib.makeOverridable mkDerivation (rec {
    if [ -d "plugins/remote-dev-server" ]; then
      patch -p1 < ${./JetbrainsRemoteDev.patch}
    fi

    vmopts_file=bin/linux/${vmoptsName}
    if [[ ! -f $vmopts_file ]]; then
      vmopts_file=bin/${vmoptsName}
      if [[ ! -f $vmopts_file ]]; then
        echo "ERROR: $vmopts_file not found"
        exit 1
      fi
    fi
    echo -Djna.library.path=${lib.makeLibraryPath ([
      libsecret e2fsprogs libnotify
      # Required for Help -> Collect Logs
      # in at least rider and goland
      udev
    ])} >> $vmopts_file
  '';

  installPhase = ''
@@ -106,14 +121,7 @@ with stdenv; lib.makeOverridable mkDerivation (rec {

    wrapProgram  "$out/$pname/bin/${loName}.sh" \
      --prefix PATH : "$out/libexec/${pname}:${lib.makeBinPath [ jdk coreutils gnugrep which git python3 ]}" \
      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath ([
        # Some internals want libstdc++.so.6
        stdenv.cc.cc.lib libsecret e2fsprogs
        libnotify
        # Required for Help -> Collect Logs
        # in at least rider and goland
        udev
      ] ++ extraLdPath)}" \
      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath extraLdPath}" \
      ${lib.concatStringsSep " " extraWrapperArgs} \
      --set-default JDK_HOME "$jdk" \
      --set-default ANDROID_JAVA_HOME "$jdk" \