From 379b1030d75148100a1a6f26d2549f9110c49872 Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Fri, 21 Oct 2016 16:10:44 -0700 Subject: [PATCH] Rollback commits to get iOS into a stable state (#6464) * Rollback commits to get iOS into a stable state This rolls back the following commits: * 23c52fc (#6434) * a97cf4b (#6433) * e72e174 (#6428) It also updates the engine to a newer revision that has the necessary rollbacks in the engine repo. Fixes #6458 --- bin/internal/engine.version | 2 +- .../lib/src/commands/build_aot.dart | 27 +++++++++++++++++++ packages/flutter_tools/lib/src/devfs.dart | 21 ++++++--------- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/bin/internal/engine.version b/bin/internal/engine.version index 4fa72da58c..c26975b5d2 100644 --- a/bin/internal/engine.version +++ b/bin/internal/engine.version @@ -1 +1 @@ -0aea498f611dff00c121e06d55044f7d2d3a599a +db12c5e6218389057809e1a75ee13f030d41d41c diff --git a/packages/flutter_tools/lib/src/commands/build_aot.dart b/packages/flutter_tools/lib/src/commands/build_aot.dart index fc05dca03a..453ac2901b 100644 --- a/packages/flutter_tools/lib/src/commands/build_aot.dart +++ b/packages/flutter_tools/lib/src/commands/build_aot.dart @@ -269,13 +269,38 @@ Future _buildAotSnapshot( if (platform == TargetPlatform.ios) { printStatus('Building app.dylib...'); + // These names are known to from the engine. + const String kDartVmIsolateSnapshotBuffer = 'kDartVmIsolateSnapshotBuffer'; + const String kDartIsolateSnapshotBuffer = 'kDartIsolateSnapshotBuffer'; + + runCheckedSync(['mv', vmIsolateSnapshot, path.join(outputDir.path, kDartVmIsolateSnapshotBuffer)]); + runCheckedSync(['mv', isolateSnapshot, path.join(outputDir.path, kDartIsolateSnapshotBuffer)]); + + String kDartVmIsolateSnapshotBufferC = path.join(outputDir.path, '$kDartVmIsolateSnapshotBuffer.c'); + String kDartIsolateSnapshotBufferC = path.join(outputDir.path, '$kDartIsolateSnapshotBuffer.c'); + + runCheckedSync([ + 'xxd', '--include', kDartVmIsolateSnapshotBuffer, path.basename(kDartVmIsolateSnapshotBufferC) + ], workingDirectory: outputDir.path); + runCheckedSync([ + 'xxd', '--include', kDartIsolateSnapshotBuffer, path.basename(kDartIsolateSnapshotBufferC) + ], workingDirectory: outputDir.path); + String assemblyO = path.join(outputDir.path, 'snapshot_assembly.o'); + String kDartVmIsolateSnapshotBufferO = path.join(outputDir.path, '$kDartVmIsolateSnapshotBuffer.o'); + String kDartIsolateSnapshotBufferO = path.join(outputDir.path, '$kDartIsolateSnapshotBuffer.o'); List commonBuildOptions = ['-arch', 'arm64', '-miphoneos-version-min=8.0']; if (!interpreter) runCheckedSync(['xcrun', 'cc'] ..addAll(commonBuildOptions) ..addAll(['-c', assembly, '-o', assemblyO])); + runCheckedSync(['xcrun', 'cc'] + ..addAll(commonBuildOptions) + ..addAll(['-c', kDartVmIsolateSnapshotBufferC, '-o', kDartVmIsolateSnapshotBufferO])); + runCheckedSync(['xcrun', 'cc'] + ..addAll(commonBuildOptions) + ..addAll(['-c', kDartIsolateSnapshotBufferC, '-o', kDartIsolateSnapshotBufferO])); String appSo = path.join(outputDir.path, 'app.dylib'); @@ -287,6 +312,8 @@ Future _buildAotSnapshot( '-Xlinker', '-rpath', '-Xlinker', '@loader_path/Frameworks', '-install_name', '@rpath/app.dylib', '-o', appSo, + kDartVmIsolateSnapshotBufferO, + kDartIsolateSnapshotBufferO, ]); if (!interpreter) linkCommand.add(assemblyO); diff --git a/packages/flutter_tools/lib/src/devfs.dart b/packages/flutter_tools/lib/src/devfs.dart index 451226a6c9..6dc6ce2629 100644 --- a/packages/flutter_tools/lib/src/devfs.dart +++ b/packages/flutter_tools/lib/src/devfs.dart @@ -222,19 +222,14 @@ class _DevFSHttpWriter { Future _scheduleWrite(DevFSEntry entry, DevFSProgressReporter progressReporter) async { - try { - HttpClientRequest request = await _client.putUrl(httpAddress); - request.headers.removeAll(HttpHeaders.ACCEPT_ENCODING); - request.headers.add('dev_fs_name', fsName); - request.headers.add('dev_fs_path_b64', - BASE64.encode(UTF8.encode(entry.devicePath))); - Stream> contents = entry.contentsAsCompressedStream(); - await request.addStream(contents); - HttpClientResponse response = await request.close(); - await response.drain(); - } catch (e, stackTrace) { - printError('Error writing "${entry.devicePath}" to DevFS: $e\n$stackTrace'); - } + HttpClientRequest request = await _client.putUrl(httpAddress); + request.headers.removeAll(HttpHeaders.ACCEPT_ENCODING); + request.headers.add('dev_fs_name', fsName); + request.headers.add('dev_fs_path', entry.devicePath); + Stream> contents = entry.contentsAsCompressedStream(); + await request.addStream(contents); + HttpClientResponse response = await request.close(); + await response.drain(); if (progressReporter != null) { _done++; progressReporter(_done, _max);