Unverified Commit e56c83a1 authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Migrate build_system targets to null safety (#92869)

parent 1fe5b75c
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart = 2.8
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
import '../../android/deferred_components_gen_snapshot_validator.dart'; import '../../android/deferred_components_gen_snapshot_validator.dart';
...@@ -19,8 +17,8 @@ import 'android.dart'; ...@@ -19,8 +17,8 @@ import 'android.dart';
class DeferredComponentsGenSnapshotValidatorTarget extends Target { class DeferredComponentsGenSnapshotValidatorTarget extends Target {
/// Create an [AndroidAotDeferredComponentsBundle] implementation for a given [targetPlatform] and [buildMode]. /// Create an [AndroidAotDeferredComponentsBundle] implementation for a given [targetPlatform] and [buildMode].
DeferredComponentsGenSnapshotValidatorTarget({ DeferredComponentsGenSnapshotValidatorTarget({
@required this.deferredComponentsDependencies, required this.deferredComponentsDependencies,
@required this.nonDeferredComponentsDependencies, required this.nonDeferredComponentsDependencies,
this.title, this.title,
this.exitOnFail = true, this.exitOnFail = true,
}); });
...@@ -31,7 +29,7 @@ class DeferredComponentsGenSnapshotValidatorTarget extends Target { ...@@ -31,7 +29,7 @@ class DeferredComponentsGenSnapshotValidatorTarget extends Target {
/// The title of the [DeferredComponentsGenSnapshotValidator] that is /// The title of the [DeferredComponentsGenSnapshotValidator] that is
/// displayed to the developer when logging results. /// displayed to the developer when logging results.
final String title; final String? title;
/// Whether to exit the tool if a recommended change is found by the /// Whether to exit the tool if a recommended change is found by the
/// [DeferredComponentsGenSnapshotValidator]. /// [DeferredComponentsGenSnapshotValidator].
...@@ -72,7 +70,7 @@ class DeferredComponentsGenSnapshotValidatorTarget extends Target { ...@@ -72,7 +70,7 @@ class DeferredComponentsGenSnapshotValidatorTarget extends Target {
} }
@visibleForTesting @visibleForTesting
DeferredComponentsGenSnapshotValidator validator; DeferredComponentsGenSnapshotValidator? validator;
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
...@@ -92,18 +90,18 @@ class DeferredComponentsGenSnapshotValidatorTarget extends Target { ...@@ -92,18 +90,18 @@ class DeferredComponentsGenSnapshotValidatorTarget extends Target {
abis: _abis abis: _abis
); );
validator validator!
..checkAppAndroidManifestComponentLoadingUnitMapping( ..checkAppAndroidManifestComponentLoadingUnitMapping(
FlutterProject.current().manifest.deferredComponents, FlutterProject.current().manifest.deferredComponents ?? <DeferredComponent>[],
generatedLoadingUnits, generatedLoadingUnits,
) )
..checkAgainstLoadingUnitsCache(generatedLoadingUnits) ..checkAgainstLoadingUnitsCache(generatedLoadingUnits)
..writeLoadingUnitsCache(generatedLoadingUnits); ..writeLoadingUnitsCache(generatedLoadingUnits);
validator.handleResults(); validator!.handleResults();
depfileService.writeToFile( depfileService.writeToFile(
Depfile(validator.inputs, validator.outputs), Depfile(validator!.inputs, validator!.outputs),
environment.buildDir.childFile('flutter_$name.d'), environment.buildDir.childFile('flutter_$name.d'),
); );
} }
......
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart = 2.8
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
import '../../artifacts.dart'; import '../../artifacts.dart';
...@@ -37,45 +35,47 @@ abstract class AotAssemblyBase extends Target { ...@@ -37,45 +35,47 @@ abstract class AotAssemblyBase extends Target {
final AOTSnapshotter snapshotter = AOTSnapshotter( final AOTSnapshotter snapshotter = AOTSnapshotter(
fileSystem: environment.fileSystem, fileSystem: environment.fileSystem,
logger: environment.logger, logger: environment.logger,
xcode: globals.xcode, xcode: globals.xcode!,
artifacts: environment.artifacts, artifacts: environment.artifacts,
processManager: environment.processManager, processManager: environment.processManager,
); );
final String buildOutputPath = environment.buildDir.path; final String buildOutputPath = environment.buildDir.path;
if (environment.defines[kBuildMode] == null) { final String? environmentBuildMode = environment.defines[kBuildMode];
if (environmentBuildMode == null) {
throw MissingDefineException(kBuildMode, 'aot_assembly'); throw MissingDefineException(kBuildMode, 'aot_assembly');
} }
if (environment.defines[kTargetPlatform] == null) { final String? environmentTargetPlatform = environment.defines[kTargetPlatform];
if (environmentTargetPlatform== null) {
throw MissingDefineException(kTargetPlatform, 'aot_assembly'); throw MissingDefineException(kTargetPlatform, 'aot_assembly');
} }
if (environment.defines[kSdkRoot] == null) { final String? sdkRoot = environment.defines[kSdkRoot];
if (sdkRoot == null) {
throw MissingDefineException(kSdkRoot, 'aot_assembly'); throw MissingDefineException(kSdkRoot, 'aot_assembly');
} }
final List<String> extraGenSnapshotOptions = decodeCommaSeparated(environment.defines, kExtraGenSnapshotOptions); final List<String> extraGenSnapshotOptions = decodeCommaSeparated(environment.defines, kExtraGenSnapshotOptions);
final bool bitcode = environment.defines[kBitcodeFlag] == 'true'; final bool bitcode = environment.defines[kBitcodeFlag] == 'true';
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); final BuildMode buildMode = getBuildModeForName(environmentBuildMode);
final TargetPlatform targetPlatform = getTargetPlatformForName(environment.defines[kTargetPlatform]); final TargetPlatform targetPlatform = getTargetPlatformForName(environmentTargetPlatform);
final String splitDebugInfo = environment.defines[kSplitDebugInfo]; final String? splitDebugInfo = environment.defines[kSplitDebugInfo];
final bool dartObfuscation = environment.defines[kDartObfuscation] == 'true'; final bool dartObfuscation = environment.defines[kDartObfuscation] == 'true';
final List<DarwinArch> darwinArchs = environment.defines[kIosArchs] final List<DarwinArch> darwinArchs = environment.defines[kIosArchs]
?.split(' ') ?.split(' ')
?.map(getIOSArchForName) .map(getIOSArchForName)
?.toList() .toList()
?? <DarwinArch>[DarwinArch.arm64]; ?? <DarwinArch>[DarwinArch.arm64];
if (targetPlatform != TargetPlatform.ios) { if (targetPlatform != TargetPlatform.ios) {
throw Exception('aot_assembly is only supported for iOS applications.'); throw Exception('aot_assembly is only supported for iOS applications.');
} }
final String sdkRoot = environment.defines[kSdkRoot]; final EnvironmentType? environmentType = environmentTypeFromSdkroot(sdkRoot, environment.fileSystem);
final EnvironmentType environmentType = environmentTypeFromSdkroot(sdkRoot, environment.fileSystem);
if (environmentType == EnvironmentType.simulator) { if (environmentType == EnvironmentType.simulator) {
throw Exception( throw Exception(
'release/profile builds are only supported for physical devices. ' 'release/profile builds are only supported for physical devices. '
'attempted to build for simulator.' 'attempted to build for simulator.'
); );
} }
final String codeSizeDirectory = environment.defines[kCodeSizeDirectory]; final String? codeSizeDirectory = environment.defines[kCodeSizeDirectory];
// If we're building multiple iOS archs the binaries need to be lipo'd // If we're building multiple iOS archs the binaries need to be lipo'd
// together. // together.
...@@ -220,14 +220,13 @@ class DebugUniversalFramework extends Target { ...@@ -220,14 +220,13 @@ class DebugUniversalFramework extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
if (environment.defines[kSdkRoot] == null) { final String? sdkRoot = environment.defines[kSdkRoot];
if (sdkRoot == null) {
throw MissingDefineException(kSdkRoot, name); throw MissingDefineException(kSdkRoot, name);
} }
// Generate a trivial App.framework. // Generate a trivial App.framework.
final Set<String> iosArchNames = environment.defines[kIosArchs] final Set<String>? iosArchNames = environment.defines[kIosArchs]?.split(' ').toSet();
?.split(' ')
?.toSet();
final File output = environment.buildDir final File output = environment.buildDir
.childDirectory('App.framework') .childDirectory('App.framework')
.childFile('App'); .childFile('App');
...@@ -236,6 +235,7 @@ class DebugUniversalFramework extends Target { ...@@ -236,6 +235,7 @@ class DebugUniversalFramework extends Target {
output, output,
environment, environment,
iosArchNames, iosArchNames,
sdkRoot,
); );
} }
} }
...@@ -272,30 +272,31 @@ abstract class UnpackIOS extends Target { ...@@ -272,30 +272,31 @@ abstract class UnpackIOS extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
if (environment.defines[kSdkRoot] == null) { final String? sdkRoot = environment.defines[kSdkRoot];
if (sdkRoot == null) {
throw MissingDefineException(kSdkRoot, name); throw MissingDefineException(kSdkRoot, name);
} }
if (environment.defines[kIosArchs] == null) { final String? archs = environment.defines[kIosArchs];
if (archs == null) {
throw MissingDefineException(kIosArchs, name); throw MissingDefineException(kIosArchs, name);
} }
if (environment.defines[kBitcodeFlag] == null) { if (environment.defines[kBitcodeFlag] == null) {
throw MissingDefineException(kBitcodeFlag, name); throw MissingDefineException(kBitcodeFlag, name);
} }
_copyFramework(environment); _copyFramework(environment, sdkRoot);
final File frameworkBinary = environment.outputDir.childDirectory('Flutter.framework').childFile('Flutter'); final File frameworkBinary = environment.outputDir.childDirectory('Flutter.framework').childFile('Flutter');
final String frameworkBinaryPath = frameworkBinary.path; final String frameworkBinaryPath = frameworkBinary.path;
if (!frameworkBinary.existsSync()) { if (!frameworkBinary.existsSync()) {
throw Exception('Binary $frameworkBinaryPath does not exist, cannot thin'); throw Exception('Binary $frameworkBinaryPath does not exist, cannot thin');
} }
_thinFramework(environment, frameworkBinaryPath); _thinFramework(environment, frameworkBinaryPath, archs);
_bitcodeStripFramework(environment, frameworkBinaryPath); _bitcodeStripFramework(environment, frameworkBinaryPath);
_signFramework(environment, frameworkBinaryPath, buildMode); _signFramework(environment, frameworkBinaryPath, buildMode);
} }
void _copyFramework(Environment environment) { void _copyFramework(Environment environment, String sdkRoot) {
final String sdkRoot = environment.defines[kSdkRoot]; final EnvironmentType? environmentType = environmentTypeFromSdkroot(sdkRoot, environment.fileSystem);
final EnvironmentType environmentType = environmentTypeFromSdkroot(sdkRoot, environment.fileSystem);
final String basePath = environment.artifacts.getArtifactPath( final String basePath = environment.artifacts.getArtifactPath(
Artifact.flutterFramework, Artifact.flutterFramework,
platform: TargetPlatform.ios, platform: TargetPlatform.ios,
...@@ -321,8 +322,7 @@ abstract class UnpackIOS extends Target { ...@@ -321,8 +322,7 @@ abstract class UnpackIOS extends Target {
} }
/// Destructively thin Flutter.framework to include only the specified architectures. /// Destructively thin Flutter.framework to include only the specified architectures.
void _thinFramework(Environment environment, String frameworkBinaryPath) { void _thinFramework(Environment environment, String frameworkBinaryPath, String archs) {
final String archs = environment.defines[kIosArchs];
final List<String> archList = archs.split(' ').toList(); final List<String> archList = archs.split(' ').toList();
final ProcessResult infoResult = environment.processManager.runSync(<String>[ final ProcessResult infoResult = environment.processManager.runSync(<String>[
'lipo', 'lipo',
...@@ -454,10 +454,11 @@ abstract class IosAssetBundle extends Target { ...@@ -454,10 +454,11 @@ abstract class IosAssetBundle extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
if (environment.defines[kBuildMode] == null) { final String? environmentBuildMode = environment.defines[kBuildMode];
if (environmentBuildMode == null) {
throw MissingDefineException(kBuildMode, name); throw MissingDefineException(kBuildMode, name);
} }
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); final BuildMode buildMode = getBuildModeForName(environmentBuildMode);
final Directory frameworkDirectory = environment.outputDir.childDirectory('App.framework'); final Directory frameworkDirectory = environment.outputDir.childDirectory('App.framework');
final String frameworkBinaryPath = frameworkDirectory.childFile('App').path; final String frameworkBinaryPath = frameworkDirectory.childFile('App').path;
final Directory assetDirectory = frameworkDirectory.childDirectory('flutter_assets'); final Directory assetDirectory = frameworkDirectory.childDirectory('flutter_assets');
...@@ -574,7 +575,7 @@ class ReleaseIosApplicationBundle extends IosAssetBundle { ...@@ -574,7 +575,7 @@ class ReleaseIosApplicationBundle extends IosAssetBundle {
/// but it isn't actually executed. To generate something valid, we compile a trivial /// but it isn't actually executed. To generate something valid, we compile a trivial
/// constant. /// constant.
Future<void> _createStubAppFramework(File outputFile, Environment environment, Future<void> _createStubAppFramework(File outputFile, Environment environment,
Set<String> iosArchNames) async { Set<String>? iosArchNames, String sdkRoot) async {
try { try {
outputFile.createSync(recursive: true); outputFile.createSync(recursive: true);
} on Exception catch (e) { } on Exception catch (e) {
...@@ -590,13 +591,12 @@ Future<void> _createStubAppFramework(File outputFile, Environment environment, ...@@ -590,13 +591,12 @@ Future<void> _createStubAppFramework(File outputFile, Environment environment,
static const int Moo = 88; static const int Moo = 88;
'''); ''');
final String sdkRoot = environment.defines[kSdkRoot]; final EnvironmentType? environmentType = environmentTypeFromSdkroot(sdkRoot, fileSystem);
final EnvironmentType environmentType = environmentTypeFromSdkroot(sdkRoot, fileSystem);
await globals.xcode.clang(<String>[ await globals.xcode!.clang(<String>[
'-x', '-x',
'c', 'c',
for (String arch in iosArchNames) ...<String>['-arch', arch], for (String arch in iosArchNames ?? <String>{}) ...<String>['-arch', arch],
stubSource.path, stubSource.path,
'-dynamiclib', '-dynamiclib',
'-fembed-bitcode-marker', '-fembed-bitcode-marker',
...@@ -625,7 +625,7 @@ Future<void> _createStubAppFramework(File outputFile, Environment environment, ...@@ -625,7 +625,7 @@ Future<void> _createStubAppFramework(File outputFile, Environment environment,
} }
void _signFramework(Environment environment, String binaryPath, BuildMode buildMode) { void _signFramework(Environment environment, String binaryPath, BuildMode buildMode) {
String codesignIdentity = environment.defines[kCodesignIdentity]; String? codesignIdentity = environment.defines[kCodesignIdentity];
if (codesignIdentity == null || codesignIdentity.isEmpty) { if (codesignIdentity == null || codesignIdentity.isEmpty) {
codesignIdentity = '-'; codesignIdentity = '-';
} }
......
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart = 2.8
import '../../artifacts.dart'; import '../../artifacts.dart';
import '../../base/file_system.dart'; import '../../base/file_system.dart';
import '../../build_info.dart'; import '../../build_info.dart';
...@@ -49,7 +47,11 @@ class UnpackLinux extends Target { ...@@ -49,7 +47,11 @@ class UnpackLinux extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); final String? buildModeEnvironment = environment.defines[kBuildMode];
if (buildModeEnvironment == null) {
throw MissingDefineException(kBuildMode, name);
}
final BuildMode buildMode = getBuildModeForName(buildModeEnvironment);
final String engineSourcePath = environment.artifacts final String engineSourcePath = environment.artifacts
.getArtifactPath( .getArtifactPath(
Artifact.linuxDesktopPath, Artifact.linuxDesktopPath,
...@@ -117,10 +119,11 @@ abstract class BundleLinuxAssets extends Target { ...@@ -117,10 +119,11 @@ abstract class BundleLinuxAssets extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
if (environment.defines[kBuildMode] == null) { final String? buildModeEnvironment = environment.defines[kBuildMode];
if (buildModeEnvironment == null) {
throw MissingDefineException(kBuildMode, 'bundle_linux_assets'); throw MissingDefineException(kBuildMode, 'bundle_linux_assets');
} }
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); final BuildMode buildMode = getBuildModeForName(buildModeEnvironment);
final Directory outputDirectory = environment.outputDir final Directory outputDirectory = environment.outputDir
.childDirectory('flutter_assets'); .childDirectory('flutter_assets');
if (!outputDirectory.existsSync()) { if (!outputDirectory.existsSync()) {
......
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart = 2.8
import '../../artifacts.dart'; import '../../artifacts.dart';
import '../../base/build.dart'; import '../../base/build.dart';
import '../../base/file_system.dart'; import '../../base/file_system.dart';
...@@ -46,10 +44,11 @@ abstract class UnpackMacOS extends Target { ...@@ -46,10 +44,11 @@ abstract class UnpackMacOS extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
if (environment.defines[kBuildMode] == null) { final String? buildModeEnvironment = environment.defines[kBuildMode];
if (buildModeEnvironment == null) {
throw MissingDefineException(kBuildMode, 'unpack_macos'); throw MissingDefineException(kBuildMode, 'unpack_macos');
} }
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); final BuildMode buildMode = getBuildModeForName(buildModeEnvironment);
final String basePath = environment.artifacts.getArtifactPath(Artifact.flutterMacOSFramework, mode: buildMode); final String basePath = environment.artifacts.getArtifactPath(Artifact.flutterMacOSFramework, mode: buildMode);
final ProcessResult result = environment.processManager.runSync(<String>[ final ProcessResult result = environment.processManager.runSync(<String>[
...@@ -182,7 +181,7 @@ class DebugMacOSFramework extends Target { ...@@ -182,7 +181,7 @@ class DebugMacOSFramework extends Target {
final Iterable<DarwinArch> darwinArchs = environment.defines[kDarwinArchs] final Iterable<DarwinArch> darwinArchs = environment.defines[kDarwinArchs]
?.split(' ') ?.split(' ')
?.map(getDarwinArchForName) .map(getDarwinArchForName)
?? <DarwinArch>[DarwinArch.x86_64]; ?? <DarwinArch>[DarwinArch.x86_64];
final Iterable<String> darwinArchArguments = final Iterable<String> darwinArchArguments =
...@@ -193,7 +192,7 @@ class DebugMacOSFramework extends Target { ...@@ -193,7 +192,7 @@ class DebugMacOSFramework extends Target {
..writeAsStringSync(r''' ..writeAsStringSync(r'''
static const int Moo = 88; static const int Moo = 88;
'''); ''');
final RunResult result = await globals.xcode.clang(<String>[ final RunResult result = await globals.xcode!.clang(<String>[
'-x', '-x',
'c', 'c',
debugApp.path, debugApp.path,
...@@ -231,23 +230,28 @@ class CompileMacOSFramework extends Target { ...@@ -231,23 +230,28 @@ class CompileMacOSFramework extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
if (environment.defines[kBuildMode] == null) { final String? buildModeEnvironment = environment.defines[kBuildMode];
if (buildModeEnvironment == null) {
throw MissingDefineException(kBuildMode, 'compile_macos_framework'); throw MissingDefineException(kBuildMode, 'compile_macos_framework');
} }
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); final String? targetPlatformEnvironment = environment.defines[kTargetPlatform];
if (targetPlatformEnvironment == null) {
throw MissingDefineException(kTargetPlatform, 'kernel_snapshot');
}
final BuildMode buildMode = getBuildModeForName(buildModeEnvironment);
if (buildMode == BuildMode.debug) { if (buildMode == BuildMode.debug) {
throw Exception('precompiled macOS framework only supported in release/profile builds.'); throw Exception('precompiled macOS framework only supported in release/profile builds.');
} }
final String buildOutputPath = environment.buildDir.path; final String buildOutputPath = environment.buildDir.path;
final String codeSizeDirectory = environment.defines[kCodeSizeDirectory]; final String? codeSizeDirectory = environment.defines[kCodeSizeDirectory];
final String splitDebugInfo = environment.defines[kSplitDebugInfo]; final String? splitDebugInfo = environment.defines[kSplitDebugInfo];
final bool dartObfuscation = environment.defines[kDartObfuscation] == 'true'; final bool dartObfuscation = environment.defines[kDartObfuscation] == 'true';
final List<String> extraGenSnapshotOptions = decodeCommaSeparated(environment.defines, kExtraGenSnapshotOptions); final List<String> extraGenSnapshotOptions = decodeCommaSeparated(environment.defines, kExtraGenSnapshotOptions);
final TargetPlatform targetPlatform = getTargetPlatformForName(environment.defines[kTargetPlatform]); final TargetPlatform targetPlatform = getTargetPlatformForName(targetPlatformEnvironment);
final List<DarwinArch> darwinArchs = environment.defines[kDarwinArchs] final List<DarwinArch> darwinArchs = environment.defines[kDarwinArchs]
?.split(' ') ?.split(' ')
?.map(getDarwinArchForName) .map(getDarwinArchForName)
?.toList() .toList()
?? <DarwinArch>[DarwinArch.x86_64]; ?? <DarwinArch>[DarwinArch.x86_64];
if (targetPlatform != TargetPlatform.darwin) { if (targetPlatform != TargetPlatform.darwin) {
throw Exception('compile_macos_framework is only supported for darwin TargetPlatform.'); throw Exception('compile_macos_framework is only supported for darwin TargetPlatform.');
...@@ -256,7 +260,7 @@ class CompileMacOSFramework extends Target { ...@@ -256,7 +260,7 @@ class CompileMacOSFramework extends Target {
final AOTSnapshotter snapshotter = AOTSnapshotter( final AOTSnapshotter snapshotter = AOTSnapshotter(
fileSystem: environment.fileSystem, fileSystem: environment.fileSystem,
logger: environment.logger, logger: environment.logger,
xcode: globals.xcode, xcode: globals.xcode!,
artifacts: environment.artifacts, artifacts: environment.artifacts,
processManager: environment.processManager processManager: environment.processManager
); );
...@@ -353,10 +357,11 @@ abstract class MacOSBundleFlutterAssets extends Target { ...@@ -353,10 +357,11 @@ abstract class MacOSBundleFlutterAssets extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
if (environment.defines[kBuildMode] == null) { final String? buildModeEnvironment = environment.defines[kBuildMode];
if (buildModeEnvironment == null) {
throw MissingDefineException(kBuildMode, 'compile_macos_framework'); throw MissingDefineException(kBuildMode, 'compile_macos_framework');
} }
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); final BuildMode buildMode = getBuildModeForName(buildModeEnvironment);
final Directory frameworkRootDirectory = environment final Directory frameworkRootDirectory = environment
.outputDir .outputDir
.childDirectory('App.framework'); .childDirectory('App.framework');
......
...@@ -2,12 +2,9 @@ ...@@ -2,12 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart = 2.8
import 'dart:math'; import 'dart:math';
import 'package:crypto/crypto.dart'; import 'package:crypto/crypto.dart';
import 'package:meta/meta.dart';
import 'package:package_config/package_config.dart'; import 'package:package_config/package_config.dart';
import '../../artifacts.dart'; import '../../artifacts.dart';
...@@ -22,6 +19,7 @@ import '../../globals.dart' as globals; ...@@ -22,6 +19,7 @@ import '../../globals.dart' as globals;
import '../../project.dart'; import '../../project.dart';
import '../build_system.dart'; import '../build_system.dart';
import '../depfile.dart'; import '../depfile.dart';
import '../exceptions.dart';
import 'assets.dart'; import 'assets.dart';
import 'localizations.dart'; import 'localizations.dart';
...@@ -64,7 +62,7 @@ const String kOfflineFirst = 'offline-first'; ...@@ -64,7 +62,7 @@ const String kOfflineFirst = 'offline-first';
const String kNoneWorker = 'none'; const String kNoneWorker = 'none';
/// Convert a [value] into a [ServiceWorkerStrategy]. /// Convert a [value] into a [ServiceWorkerStrategy].
ServiceWorkerStrategy _serviceWorkerStrategyFromString(String value) { ServiceWorkerStrategy _serviceWorkerStrategyFromString(String? value) {
switch (value) { switch (value) {
case kNoneWorker: case kNoneWorker:
return ServiceWorkerStrategy.none; return ServiceWorkerStrategy.none;
...@@ -97,7 +95,7 @@ class WebEntrypointTarget extends Target { ...@@ -97,7 +95,7 @@ class WebEntrypointTarget extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
final String targetFile = environment.defines[kTargetFile]; final String? targetFile = environment.defines[kTargetFile];
final bool hasPlugins = environment.defines[kHasWebPlugins] == 'true'; final bool hasPlugins = environment.defines[kHasWebPlugins] == 'true';
final Uri importUri = environment.fileSystem.file(targetFile).absolute.uri; final Uri importUri = environment.fileSystem.file(targetFile).absolute.uri;
// TODO(zanderso): support configuration of this file. // TODO(zanderso): support configuration of this file.
...@@ -110,7 +108,7 @@ class WebEntrypointTarget extends Target { ...@@ -110,7 +108,7 @@ class WebEntrypointTarget extends Target {
final LanguageVersion languageVersion = determineLanguageVersion( final LanguageVersion languageVersion = determineLanguageVersion(
environment.fileSystem.file(targetFile), environment.fileSystem.file(targetFile),
packageConfig[flutterProject.manifest.appName], packageConfig[flutterProject.manifest.appName],
Cache.flutterRoot, Cache.flutterRoot!,
); );
// Use the PackageConfig to find the correct package-scheme import path // Use the PackageConfig to find the correct package-scheme import path
...@@ -211,16 +209,21 @@ class Dart2JSTarget extends Target { ...@@ -211,16 +209,21 @@ class Dart2JSTarget extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); final String? buildModeEnvironment = environment.defines[kBuildMode];
if (buildModeEnvironment == null) {
throw MissingDefineException(kBuildMode, name);
}
final BuildMode buildMode = getBuildModeForName(buildModeEnvironment);
final bool sourceMapsEnabled = environment.defines[kSourceMapsEnabled] == 'true'; final bool sourceMapsEnabled = environment.defines[kSourceMapsEnabled] == 'true';
final bool nativeNullAssertions = environment.defines[kNativeNullAssertions] == 'true'; final bool nativeNullAssertions = environment.defines[kNativeNullAssertions] == 'true';
final String librariesSpec = (globals.artifacts.getHostArtifact(HostArtifact.flutterWebSdk) as Directory).childFile('libraries.json').path; final Artifacts artifacts = globals.artifacts!;
final String librariesSpec = (artifacts.getHostArtifact(HostArtifact.flutterWebSdk) as Directory).childFile('libraries.json').path;
final List<String> sharedCommandOptions = <String>[ final List<String> sharedCommandOptions = <String>[
globals.artifacts.getHostArtifact(HostArtifact.engineDartBinary).path, artifacts.getHostArtifact(HostArtifact.engineDartBinary).path,
'--disable-dart-dev', '--disable-dart-dev',
globals.artifacts.getHostArtifact(HostArtifact.dart2jsSnapshot).path, artifacts.getHostArtifact(HostArtifact.dart2jsSnapshot).path,
'--libraries-spec=$librariesSpec', '--libraries-spec=$librariesSpec',
...?decodeCommaSeparated(environment.defines, kExtraFrontEndOptions), ...decodeCommaSeparated(environment.defines, kExtraFrontEndOptions),
if (nativeNullAssertions) if (nativeNullAssertions)
'--native-null-assertions', '--native-null-assertions',
if (buildMode == BuildMode.profile) if (buildMode == BuildMode.profile)
...@@ -247,7 +250,7 @@ class Dart2JSTarget extends Target { ...@@ -247,7 +250,7 @@ class Dart2JSTarget extends Target {
throw Exception(_collectOutput(kernelResult)); throw Exception(_collectOutput(kernelResult));
} }
final String dart2jsOptimization = environment.defines[kDart2jsOptimization]; final String? dart2jsOptimization = environment.defines[kDart2jsOptimization];
final File outputJSFile = environment.buildDir.childFile('main.dart.js'); final File outputJSFile = environment.buildDir.childFile('main.dart.js');
final bool csp = environment.defines[kCspMode] == 'true'; final bool csp = environment.defines[kCspMode] == 'true';
...@@ -384,12 +387,11 @@ class WebReleaseBundle extends Target { ...@@ -384,12 +387,11 @@ class WebReleaseBundle extends Target {
"navigator.serviceWorker.register('flutter_service_worker.js')", "navigator.serviceWorker.register('flutter_service_worker.js')",
"navigator.serviceWorker.register('flutter_service_worker.js?v=$randomHash')", "navigator.serviceWorker.register('flutter_service_worker.js?v=$randomHash')",
); );
if (resultString.contains(kBaseHrefPlaceholder) && final String? baseHref = environment.defines[kBaseHref];
environment.defines[kBaseHref] == null) { if (resultString.contains(kBaseHrefPlaceholder) && baseHref == null) {
resultString = resultString.replaceAll(kBaseHrefPlaceholder, '/'); resultString = resultString.replaceAll(kBaseHrefPlaceholder, '/');
} else if (resultString.contains(kBaseHrefPlaceholder) && } else if (resultString.contains(kBaseHrefPlaceholder) && baseHref != null) {
environment.defines[kBaseHref] != null) { resultString = resultString.replaceAll(kBaseHrefPlaceholder, baseHref);
resultString = resultString.replaceAll(kBaseHrefPlaceholder, environment.defines[kBaseHref]);
} }
outputFile.writeAsStringSync(resultString); outputFile.writeAsStringSync(resultString);
continue; continue;
...@@ -549,7 +551,7 @@ class WebServiceWorker extends Target { ...@@ -549,7 +551,7 @@ class WebServiceWorker extends Target {
String generateServiceWorker( String generateServiceWorker(
Map<String, String> resources, Map<String, String> resources,
List<String> coreBundle, { List<String> coreBundle, {
@required ServiceWorkerStrategy serviceWorkerStrategy, required ServiceWorkerStrategy serviceWorkerStrategy,
}) { }) {
if (serviceWorkerStrategy == ServiceWorkerStrategy.none) { if (serviceWorkerStrategy == ServiceWorkerStrategy.none) {
return ''; return '';
......
...@@ -2,10 +2,6 @@ ...@@ -2,10 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart = 2.8
import 'package:meta/meta.dart';
import '../../artifacts.dart'; import '../../artifacts.dart';
import '../../base/file_system.dart'; import '../../base/file_system.dart';
import '../../build_info.dart'; import '../../build_info.dart';
...@@ -68,7 +64,11 @@ class UnpackWindows extends Target { ...@@ -68,7 +64,11 @@ class UnpackWindows extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); final String? buildModeEnvironment = environment.defines[kBuildMode];
if (buildModeEnvironment == null) {
throw MissingDefineException(kBuildMode, name);
}
final BuildMode buildMode = getBuildModeForName(buildModeEnvironment);
final String engineSourcePath = environment.artifacts final String engineSourcePath = environment.artifacts
.getArtifactPath( .getArtifactPath(
Artifact.windowsDesktopPath, Artifact.windowsDesktopPath,
...@@ -135,7 +135,11 @@ class UnpackWindowsUwp extends Target { ...@@ -135,7 +135,11 @@ class UnpackWindowsUwp extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); final String? buildModeEnvironment = environment.defines[kBuildMode];
if (buildModeEnvironment == null) {
throw MissingDefineException(kBuildMode, name);
}
final BuildMode buildMode = getBuildModeForName(buildModeEnvironment);
final String engineSourcePath = environment.artifacts final String engineSourcePath = environment.artifacts
.getArtifactPath( .getArtifactPath(
Artifact.windowsUwpDesktopPath, Artifact.windowsUwpDesktopPath,
...@@ -209,10 +213,11 @@ abstract class BundleWindowsAssets extends Target { ...@@ -209,10 +213,11 @@ abstract class BundleWindowsAssets extends Target {
@override @override
Future<void> build(Environment environment) async { Future<void> build(Environment environment) async {
if (environment.defines[kBuildMode] == null) { final String? buildModeEnvironment = environment.defines[kBuildMode];
if (buildModeEnvironment == null) {
throw MissingDefineException(kBuildMode, 'bundle_windows_assets'); throw MissingDefineException(kBuildMode, 'bundle_windows_assets');
} }
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); final BuildMode buildMode = getBuildModeForName(buildModeEnvironment);
final Directory outputDirectory = environment.outputDir final Directory outputDirectory = environment.outputDir
.childDirectory('flutter_assets'); .childDirectory('flutter_assets');
if (!outputDirectory.existsSync()) { if (!outputDirectory.existsSync()) {
...@@ -255,7 +260,7 @@ abstract class BundleWindowsAssetsUwp extends BundleWindowsAssets { ...@@ -255,7 +260,7 @@ abstract class BundleWindowsAssetsUwp extends BundleWindowsAssets {
/// A wrapper for AOT compilation that copies app.so into the output directory. /// A wrapper for AOT compilation that copies app.so into the output directory.
class WindowsAotBundle extends Target { class WindowsAotBundle extends Target {
/// Create a [WindowsAotBundle] wrapper for [aotTarget]. /// Create a [WindowsAotBundle] wrapper for [aotTarget].
const WindowsAotBundle(this.aotTarget, {@required this.uwp}); const WindowsAotBundle(this.aotTarget, {required this.uwp});
/// The [AotElfBase] subclass that produces the app.so. /// The [AotElfBase] subclass that produces the app.so.
final AotElfBase aotTarget; final AotElfBase aotTarget;
......
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart = 2.8
import 'package:archive/archive.dart'; import 'package:archive/archive.dart';
import 'package:file/file.dart'; import 'package:file/file.dart';
import 'package:file_testing/file_testing.dart'; import 'package:file_testing/file_testing.dart';
...@@ -15,8 +13,8 @@ import 'test_driver.dart'; ...@@ -15,8 +13,8 @@ import 'test_driver.dart';
import 'test_utils.dart'; import 'test_utils.dart';
void main() { void main() {
Directory tempDir; late Directory tempDir;
FlutterRunTestDriver _flutter; late FlutterRunTestDriver _flutter;
setUp(() async { setUp(() async {
tempDir = createResolvedTempDirectorySync('run_test.'); tempDir = createResolvedTempDirectorySync('run_test.');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment