Fix multi-step build handling process. (#24310)
* Fix multi-step build handling process. Stop listening for new step updates after 'all done.' log message. Make sure that we don't delete file too soon, until listener had a chance to process the 'all done' message. Fixes https://github.com/flutter/flutter/issues/18750 * Emit 'all output' explicitly when build process is done.
This commit is contained in:
parent
29d5210d8b
commit
3b7942c444
@ -443,18 +443,23 @@ Future<XcodeBuildResult> buildXcodeProject({
|
||||
Status initialBuildStatus;
|
||||
Directory tempDir;
|
||||
|
||||
File scriptOutputPipeFile;
|
||||
if (logger.hasTerminal) {
|
||||
tempDir = fs.systemTempDirectory.createTempSync('flutter_build_log_pipe.');
|
||||
final File scriptOutputPipeFile = tempDir.childFile('pipe_to_stdout');
|
||||
scriptOutputPipeFile = tempDir.childFile('pipe_to_stdout');
|
||||
os.makePipe(scriptOutputPipeFile.path);
|
||||
|
||||
Future<void> listenToScriptOutputLine() async {
|
||||
final List<String> lines = await scriptOutputPipeFile.readAsLines();
|
||||
for (String line in lines) {
|
||||
if (line == 'done') {
|
||||
if (line == 'done' || line == 'all done') {
|
||||
buildSubStatus?.stop();
|
||||
buildSubStatus = null;
|
||||
return null;
|
||||
if (line == 'all done') {
|
||||
// Free pipe file.
|
||||
tempDir?.deleteSync(recursive: true);
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
initialBuildStatus.cancel();
|
||||
buildSubStatus = logger.startProgress(
|
||||
@ -480,11 +485,11 @@ Future<XcodeBuildResult> buildXcodeProject({
|
||||
workingDirectory: app.project.hostAppRoot.path,
|
||||
allowReentrantFlutter: true
|
||||
);
|
||||
// Notifies listener that no more output is coming.
|
||||
scriptOutputPipeFile?.writeAsStringSync('all done');
|
||||
buildSubStatus?.stop();
|
||||
initialBuildStatus?.cancel();
|
||||
buildStopwatch.stop();
|
||||
// Free pipe file.
|
||||
tempDir?.deleteSync(recursive: true);
|
||||
printStatus(
|
||||
'Xcode build done.'.padRight(kDefaultStatusPadding + 1)
|
||||
+ '${getElapsedAsSeconds(buildStopwatch.elapsed).padLeft(5)}',
|
||||
|
Loading…
x
Reference in New Issue
Block a user