mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
add reverse mapping WSL-path -> Windows-path for build output messages (IDEA-287707)
GitOrigin-RevId: 09ab128d3547d01a0247cd9bb907b089b478bd7f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3b056ea490
commit
059bbfbd3d
@@ -110,7 +110,8 @@ import org.jetbrains.jps.model.java.compiler.JavaCompilers;
|
||||
import org.jvnet.winp.Priority;
|
||||
import org.jvnet.winp.WinProcess;
|
||||
|
||||
import javax.tools.*;
|
||||
import javax.tools.JavaCompiler;
|
||||
import javax.tools.ToolProvider;
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -844,8 +845,8 @@ public final class BuildManager implements Disposable {
|
||||
|
||||
final String projectPath = getProjectPath(project);
|
||||
final boolean isAutomake = messageHandler instanceof AutoMakeMessageHandler;
|
||||
final BuilderMessageHandler handler = new NotifyingMessageHandler(project, messageHandler, isAutomake);
|
||||
WSLDistribution wslDistribution = findWSLDistributionForBuild(project);
|
||||
final WSLDistribution wslDistribution = findWSLDistributionForBuild(project);
|
||||
final BuilderMessageHandler handler = new NotifyingMessageHandler(project, messageHandler, wslDistribution != null ? wslDistribution::getWindowsPath : null, isAutomake);
|
||||
try {
|
||||
ensureListening(wslDistribution != null ? wslDistribution.getHostIpAddress() : InetAddress.getLoopbackAddress());
|
||||
}
|
||||
@@ -1785,11 +1786,14 @@ public final class BuildManager implements Disposable {
|
||||
private static final class NotifyingMessageHandler extends DelegatingMessageHandler {
|
||||
private final Project myProject;
|
||||
private final BuilderMessageHandler myDelegateHandler;
|
||||
@Nullable
|
||||
private final Function<String, String> myPathMapper;
|
||||
private final boolean myIsAutomake;
|
||||
|
||||
NotifyingMessageHandler(@NotNull Project project, @NotNull BuilderMessageHandler delegateHandler, final boolean isAutomake) {
|
||||
NotifyingMessageHandler(@NotNull Project project, @NotNull BuilderMessageHandler delegateHandler, @Nullable Function<String, String> pathMapper, final boolean isAutomake) {
|
||||
myProject = project;
|
||||
myDelegateHandler = delegateHandler;
|
||||
myPathMapper = pathMapper;
|
||||
myIsAutomake = isAutomake;
|
||||
}
|
||||
|
||||
@@ -1827,6 +1831,34 @@ public final class BuildManager implements Disposable {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleBuildMessage(Channel channel, UUID sessionId, CmdlineRemoteProto.Message.BuilderMessage msg) {
|
||||
CmdlineRemoteProto.Message.BuilderMessage _message = msg;
|
||||
if (myPathMapper != null) {
|
||||
if (_message.hasCompileMessage()) {
|
||||
final CmdlineRemoteProto.Message.BuilderMessage.CompileMessage compileMessage = _message.getCompileMessage();
|
||||
if (compileMessage.hasSourceFilePath()) {
|
||||
final CmdlineRemoteProto.Message.BuilderMessage.CompileMessage.Builder builder = CmdlineRemoteProto.Message.BuilderMessage.CompileMessage.newBuilder(compileMessage);
|
||||
builder.setSourceFilePath(myPathMapper.apply(compileMessage.getSourceFilePath()));
|
||||
_message = CmdlineRemoteProto.Message.BuilderMessage.newBuilder(_message).setCompileMessage(builder).build();
|
||||
}
|
||||
}
|
||||
if (_message.hasBuildEvent()) {
|
||||
final CmdlineRemoteProto.Message.BuilderMessage.BuildEvent buildEvent = _message.getBuildEvent();
|
||||
final int filesCount = buildEvent.getGeneratedFilesCount();
|
||||
if (filesCount > 0) {
|
||||
final CmdlineRemoteProto.Message.BuilderMessage.BuildEvent.Builder builder = CmdlineRemoteProto.Message.BuilderMessage.BuildEvent.newBuilder(buildEvent);
|
||||
for (int idx = 0; idx < filesCount; idx++) {
|
||||
final CmdlineRemoteProto.Message.BuilderMessage.BuildEvent.GeneratedFile file = buildEvent.getGeneratedFiles(idx);
|
||||
builder.setGeneratedFiles(idx, CmdlineRemoteProto.Message.BuilderMessage.BuildEvent.GeneratedFile.newBuilder(file).setOutputRoot(myPathMapper.apply(file.getOutputRoot())));
|
||||
}
|
||||
_message = CmdlineRemoteProto.Message.BuilderMessage.newBuilder(_message).setBuildEvent(builder).build();
|
||||
}
|
||||
}
|
||||
}
|
||||
super.handleBuildMessage(channel, sessionId, _message);
|
||||
}
|
||||
}
|
||||
|
||||
private static final class StdOutputCollector extends ProcessAdapter {
|
||||
|
||||
Reference in New Issue
Block a user