-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[pigeon] switched to using isolates instead of subprocesses to run pigeon_lib #210
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
packages/pigeon/bin/pigeon.dart
Outdated
void main(List<String> args) async { | ||
exit(await Pigeon.run(args)); | ||
void main(List<String> args, SendPort sendPort) async { | ||
sendPort.send(await Pigeon.run(args)); | ||
} | ||
"""; | ||
// TODO(aaclarke): Start using a system temp file. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea, that API isn't so helpful though because I should probably make a temp directory in there instead of placing the file directly in the system temp. It would be nice if we had something like mktemp -d
. At the very least i need a GUID to make sure I don't collide. I'll get around to this later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops sorry wrong link. I meant to point to https://api.dart.dev/stable/2.9.3/dart-io/Directory/createTempSync.html
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, dang you, I did it, haha. I had to do some trickery to get relative paths for the dart imports. Now it says stuff like:
import '../../../../../../Users/aaclarke/dev/packages/packages/pigeon/pigeons/message.dart';
I didn't check to see if dart actually supports absolute path imports.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would this whole problem go away once we do flutter/flutter#65071?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think so. There always has to be a link between the generated code that the isolate executes and the pigeon file.
Started spawning pigeon_lib in an isolate instead of a subprocess. The subprocess could have lead to errors if the dart version on $PATH didn't match the one that comes with Flutter when running through
flutter pub run
.