From 33ea7f84a98feca742b30b5466533f71dd059676 Mon Sep 17 00:00:00 2001 From: xster Date: Sun, 11 Feb 2018 05:54:14 -0800 Subject: [PATCH] Reduce xcodebuild noise #2 (#14622) * Revert "Revert "Reduce noise in xcodebuild stdout (#14586)" (#14605)" This reverts commit 8e2278bd8d8188883cd57ed62df2bd98375fab31. * Specify the build config when cleaning --- packages/flutter_tools/bin/xcode_backend.sh | 4 +- packages/flutter_tools/lib/src/ios/mac.dart | 50 ++++++++++++++++----- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/packages/flutter_tools/bin/xcode_backend.sh b/packages/flutter_tools/bin/xcode_backend.sh index 6f526695fd7..fc1539aedaa 100755 --- a/packages/flutter_tools/bin/xcode_backend.sh +++ b/packages/flutter_tools/bin/xcode_backend.sh @@ -4,7 +4,9 @@ # found in the LICENSE file. RunCommand() { - echo "♦ $*" + if [[ -n "$VERBOSE_SCRIPT_LOGGING" ]]; then + echo "♦ $*" + fi "$@" return $? } diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart index fb08fc3e1cc..29390bb6c1d 100644 --- a/packages/flutter_tools/lib/src/ios/mac.dart +++ b/packages/flutter_tools/lib/src/ios/mac.dart @@ -277,16 +277,41 @@ Future buildXcodeProject({ ); } + final Status cleanStatus = + logger.startProgress('Running Xcode clean...', expectSlowOperation: true); + final RunResult cleanResult = await runAsync( + [ + '/usr/bin/env', + 'xcrun', + 'xcodebuild', + 'clean', + '-configuration', configuration, + ], + workingDirectory: app.appDirectory, + ); + cleanStatus.stop(); + if (cleanResult.exitCode != 0) { + throwToolExit('Xcode failed to clean\n${cleanResult.stderr}'); + } + final List commands = [ '/usr/bin/env', 'xcrun', 'xcodebuild', - 'clean', 'build', '-configuration', configuration, 'ONLY_ACTIVE_ARCH=YES', ]; + if (logger.isVerbose) { + // An environment variable to be passed to xcode_backend.sh determining + // whether to echo back executed commands. + commands.add('VERBOSE_SCRIPT_LOGGING=YES'); + } else { + // This will print warnings and errors only. + commands.add('-quiet'); + } + if (developmentTeam != null) commands.add('DEVELOPMENT_TEAM=$developmentTeam'); @@ -318,27 +343,28 @@ Future buildXcodeProject({ ); } - final Status status = logger.startProgress('Running Xcode build...', expectSlowOperation: true); - final RunResult result = await runAsync( + final Status buildStatus = + logger.startProgress('Running Xcode build...', expectSlowOperation: true); + final RunResult buildResult = await runAsync( commands, workingDirectory: app.appDirectory, allowReentrantFlutter: true ); - status.stop(); - if (result.exitCode != 0) { + buildStatus.stop(); + if (buildResult.exitCode != 0) { printStatus('Failed to build iOS app'); - if (result.stderr.isNotEmpty) { + if (buildResult.stderr.isNotEmpty) { printStatus('Error output from Xcode build:\n↳'); - printStatus(result.stderr, indent: 4); + printStatus(buildResult.stderr, indent: 4); } - if (result.stdout.isNotEmpty) { + if (buildResult.stdout.isNotEmpty) { printStatus('Xcode\'s output:\n↳'); - printStatus(result.stdout, indent: 4); + printStatus(buildResult.stdout, indent: 4); } return new XcodeBuildResult( success: false, - stdout: result.stdout, - stderr: result.stderr, + stdout: buildResult.stdout, + stderr: buildResult.stderr, xcodeBuildExecution: new XcodeBuildExecution( commands, app.appDirectory, @@ -348,7 +374,7 @@ Future buildXcodeProject({ } else { // Look for 'clean build/-/Runner.app'. final RegExp regexp = new RegExp(r' clean (.*\.app)$', multiLine: true); - final Match match = regexp.firstMatch(result.stdout); + final Match match = regexp.firstMatch(buildResult.stdout); String outputDir; if (match != null) { final String actualOutputDir = match.group(1).replaceAll('\\ ', ' ');