Skip to content

Commit b68f305

Browse files
committed
[native_assets_builder] Stop taking a workingDirectory
1 parent 477ede2 commit b68f305

8 files changed

+63
-71
lines changed

pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,13 @@ class NativeAssetsBuildPlanner {
2222
required this.logger,
2323
});
2424

25-
static Future<NativeAssetsBuildPlanner> fromWorkingDirectory({
26-
required Uri workingDirectory,
25+
static Future<NativeAssetsBuildPlanner> fromPackageConfigUri({
26+
required Uri packageConfigUri,
2727
required List<Package> packagesWithNativeAssets,
2828
required Uri dartExecutable,
2929
required Logger logger,
3030
}) async {
31+
final workingDirectory = packageConfigUri.resolve('../');
3132
final result = await Process.run(
3233
dartExecutable.toFilePath(),
3334
[

pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,6 @@ class NativeAssetsBuildRunner {
8080
hookEnvironment = hookEnvironment ??
8181
filteredEnvironment(hookEnvironmentVariablesFilter);
8282

83-
/// [workingDirectory] is expected to contain `.dart_tool`.
84-
///
8583
/// This method is invoked by launchers such as dartdev (for `dart run`) and
8684
/// flutter_tools (for `flutter run` and `flutter build`).
8785
///
@@ -99,15 +97,11 @@ class NativeAssetsBuildRunner {
9997
required BuildInputValidator inputValidator,
10098
required BuildValidator buildValidator,
10199
required ApplicationAssetValidator applicationAssetValidator,
102-
required Uri workingDirectory,
103-
PackageLayout? packageLayout,
100+
required PackageLayout packageLayout,
104101
required String runPackageName,
105102
required List<String> buildAssetTypes,
106103
required bool linkingEnabled,
107104
}) async {
108-
packageLayout ??=
109-
await PackageLayout.fromWorkingDirectory(_fileSystem, workingDirectory);
110-
111105
final (buildPlan, packageGraph) = await _makePlan(
112106
hook: Hook.build,
113107
packageLayout: packageLayout,
@@ -167,7 +161,6 @@ class NativeAssetsBuildRunner {
167161
(input, output) =>
168162
buildValidator(input as BuildInput, output as BuildOutput),
169163
packageLayout.packageConfigUri,
170-
workingDirectory,
171164
null,
172165
packageLayout,
173166
);
@@ -189,8 +182,6 @@ class NativeAssetsBuildRunner {
189182
return null;
190183
}
191184

192-
/// [workingDirectory] is expected to contain `.dart_tool`.
193-
///
194185
/// This method is invoked by launchers such as dartdev (for `dart run`) and
195186
/// flutter_tools (for `flutter run` and `flutter build`).
196187
///
@@ -204,17 +195,13 @@ class NativeAssetsBuildRunner {
204195
required LinkInputCreator inputCreator,
205196
required LinkInputValidator inputValidator,
206197
required LinkValidator linkValidator,
207-
required Uri workingDirectory,
208198
required ApplicationAssetValidator applicationAssetValidator,
209-
PackageLayout? packageLayout,
199+
required PackageLayout packageLayout,
210200
Uri? resourceIdentifiers,
211201
required String runPackageName,
212202
required List<String> buildAssetTypes,
213203
required BuildResult buildResult,
214204
}) async {
215-
packageLayout ??=
216-
await PackageLayout.fromWorkingDirectory(_fileSystem, workingDirectory);
217-
218205
final (buildPlan, packageGraph) = await _makePlan(
219206
hook: Hook.link,
220207
packageLayout: packageLayout,
@@ -270,7 +257,6 @@ class NativeAssetsBuildRunner {
270257
(input, output) =>
271258
linkValidator(input as LinkInput, output as LinkOutput),
272259
packageLayout.packageConfigUri,
273-
workingDirectory,
274260
resourceIdentifiers,
275261
packageLayout,
276262
);
@@ -326,7 +312,6 @@ class NativeAssetsBuildRunner {
326312
HookInput input,
327313
_HookValidator validator,
328314
Uri packageConfigUri,
329-
Uri workingDirectory,
330315
Uri? resources,
331316
PackageLayout packageLayout,
332317
) async {
@@ -345,7 +330,6 @@ class NativeAssetsBuildRunner {
345330
input.outputDirectory,
346331
input.packageRoot.resolve('hook/${hook.scriptName}'),
347332
packageConfigUri,
348-
workingDirectory,
349333
);
350334
if (hookCompileResult == null) {
351335
return null;
@@ -403,7 +387,6 @@ ${e.message}
403387
input,
404388
validator,
405389
packageConfigUri,
406-
workingDirectory,
407390
resources,
408391
hookKernelFile,
409392
packageLayout,
@@ -455,7 +438,6 @@ ${e.message}
455438
HookInput input,
456439
_HookValidator validator,
457440
Uri packageConfigUri,
458-
Uri workingDirectory,
459441
Uri? resources,
460442
File hookKernelFile,
461443
PackageLayout packageLayout,
@@ -488,6 +470,7 @@ ${e.message}
488470
if (resources != null) resources.toFilePath(),
489471
];
490472
final wrappedLogger = await _createFileStreamingLogger(input);
473+
final workingDirectory = input.packageRoot;
491474
final result = await runProcess(
492475
filesystem: _fileSystem,
493476
workingDirectory: workingDirectory,
@@ -608,7 +591,6 @@ ${e.message}
608591
Uri outputDirectory,
609592
Uri scriptUri,
610593
Uri packageConfigUri,
611-
Uri workingDirectory,
612594
) async {
613595
// Don't invalidate cache with environment changes.
614596
final environmentForCaching = <String, String>{};
@@ -645,7 +627,6 @@ ${e.message}
645627
packageName,
646628
scriptUri,
647629
packageConfigUri,
648-
workingDirectory,
649630
kernelFile,
650631
depFile,
651632
);
@@ -674,7 +655,6 @@ ${e.message}
674655
String packageName,
675656
Uri scriptUri,
676657
Uri packageConfigUri,
677-
Uri workingDirectory,
678658
File kernelFile,
679659
File depFile,
680660
) async {
@@ -686,6 +666,7 @@ ${e.message}
686666
'--depfile=${depFile.path}',
687667
scriptUri.toFilePath(),
688668
];
669+
final workingDirectory = packageConfigUri.resolve('../');
689670
final compileResult = await runProcess(
690671
filesystem: _fileSystem,
691672
workingDirectory: workingDirectory,
@@ -785,8 +766,8 @@ ${compileResult.stdout}
785766
final PackageGraph? packageGraph;
786767
switch (hook) {
787768
case Hook.build:
788-
final planner = await NativeAssetsBuildPlanner.fromWorkingDirectory(
789-
workingDirectory: packageLayout.packageConfigUri.resolve('../'),
769+
final planner = await NativeAssetsBuildPlanner.fromPackageConfigUri(
770+
packageConfigUri: packageLayout.packageConfigUri,
790771
packagesWithNativeAssets: packagesWithHook,
791772
dartExecutable: Uri.file(Platform.resolvedExecutable),
792773
logger: logger,

pkgs/native_assets_builder/test/build_runner/build_planner_test.dart

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,10 @@ void main() async {
6565
final packagesWithNativeAssets =
6666
await packageLayout.packagesWithAssets(Hook.build);
6767
final nativeAssetsBuildPlanner =
68-
await NativeAssetsBuildPlanner.fromWorkingDirectory(
69-
workingDirectory: nativeAddUri,
68+
await NativeAssetsBuildPlanner.fromPackageConfigUri(
69+
packageConfigUri: nativeAddUri.resolve(
70+
'.dart_tool/package_config.json',
71+
),
7072
packagesWithNativeAssets: packagesWithNativeAssets,
7173
dartExecutable: Uri.file(Platform.resolvedExecutable),
7274
logger: logger,
@@ -92,8 +94,10 @@ void main() async {
9294
final packagesWithNativeAssets =
9395
await packageLayout.packagesWithAssets(Hook.build);
9496
final nativeAssetsBuildPlanner =
95-
await NativeAssetsBuildPlanner.fromWorkingDirectory(
96-
workingDirectory: nativeAddUri,
97+
await NativeAssetsBuildPlanner.fromPackageConfigUri(
98+
packageConfigUri: nativeAddUri.resolve(
99+
'.dart_tool/package_config.json',
100+
),
97101
packagesWithNativeAssets: packagesWithNativeAssets,
98102
dartExecutable: Uri.file(Platform.resolvedExecutable),
99103
logger: logger,

pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import 'package:file/local.dart';
66
import 'package:native_assets_builder/src/build_runner/build_runner.dart';
7+
import 'package:native_assets_builder/src/package_layout/package_layout.dart';
78
import 'package:test/test.dart';
89

910
import '../helpers.dart';
@@ -42,9 +43,13 @@ void main() async {
4243
linkModePreference: LinkModePreference.dynamic,
4344
);
4445

46+
final packageLayout = await PackageLayout.fromWorkingDirectory(
47+
const LocalFileSystem(),
48+
packageUri,
49+
);
4550
await buildRunner.build(
4651
inputCreator: inputCreator,
47-
workingDirectory: packageUri,
52+
packageLayout: packageLayout,
4853
linkingEnabled: false,
4954
buildAssetTypes: [],
5055
inputValidator: (input) async => [],
@@ -54,7 +59,7 @@ void main() async {
5459
);
5560
await buildRunner.build(
5661
inputCreator: inputCreator,
57-
workingDirectory: packageUri,
62+
packageLayout: packageLayout,
5863
linkingEnabled: false,
5964
buildAssetTypes: [],
6065
inputValidator: (input) async => [],

pkgs/native_assets_builder/test/build_runner/build_runner_test.dart

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44

55
import 'dart:io';
66

7-
import 'package:file/local.dart';
8-
import 'package:native_assets_builder/native_assets_builder.dart';
97
import 'package:test/test.dart';
108

119
import '../helpers.dart';
@@ -62,33 +60,25 @@ void main() async {
6260
}
6361

6462
// Trigger a build, should not invoke anything.
65-
for (final passPackageLayout in [true, false]) {
66-
PackageLayout? packageLayout;
67-
if (passPackageLayout) {
68-
packageLayout = await PackageLayout.fromWorkingDirectory(
69-
const LocalFileSystem(), packageUri);
70-
}
71-
final logMessages = <String>[];
72-
final result = (await build(
73-
packageUri,
74-
logger,
75-
dartExecutable,
76-
capturedLogs: logMessages,
77-
packageLayout: packageLayout,
78-
buildAssetTypes: [CodeAsset.type],
79-
inputValidator: validateCodeAssetBuildInput,
80-
buildValidator: validateCodeAssetBuildOutput,
81-
applicationAssetValidator: validateCodeAssetInApplication,
82-
))!;
83-
expect(
84-
false,
85-
logMessages.join('\n').contains(
86-
'native_add${Platform.pathSeparator}hook'
87-
'${Platform.pathSeparator}build.dart',
88-
),
89-
);
90-
expect(result.encodedAssets.length, 1);
91-
}
63+
final logMessages = <String>[];
64+
final result = (await build(
65+
packageUri,
66+
logger,
67+
dartExecutable,
68+
capturedLogs: logMessages,
69+
buildAssetTypes: [CodeAsset.type],
70+
inputValidator: validateCodeAssetBuildInput,
71+
buildValidator: validateCodeAssetBuildOutput,
72+
applicationAssetValidator: validateCodeAssetInApplication,
73+
))!;
74+
expect(
75+
false,
76+
logMessages.join('\n').contains(
77+
'native_add${Platform.pathSeparator}hook'
78+
'${Platform.pathSeparator}build.dart',
79+
),
80+
);
81+
expect(result.encodedAssets.length, 1);
9282
});
9383
});
9484
}

pkgs/native_assets_builder/test/build_runner/concurrency_shared_test_helper.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,10 @@ void main(List<String> args) async {
3737
targetOS == OS.android ? AndroidCodeConfig(targetNdkApi: 30) : null,
3838
linkModePreference: LinkModePreference.dynamic,
3939
),
40-
41-
workingDirectory: packageUri,
40+
packageLayout: await PackageLayout.fromWorkingDirectory(
41+
const LocalFileSystem(),
42+
packageUri,
43+
),
4244
linkingEnabled: false,
4345
buildAssetTypes: [DataAsset.type, CodeAsset.type],
4446
inputValidator: (input) async => [

pkgs/native_assets_builder/test/build_runner/concurrency_test_helper.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ void main(List<String> args) async {
3939
? MacOSCodeConfig(targetVersion: defaultMacOSVersion)
4040
: null,
4141
),
42-
workingDirectory: packageUri,
42+
packageLayout: await PackageLayout.fromWorkingDirectory(
43+
const LocalFileSystem(),
44+
packageUri,
45+
),
4346
linkingEnabled: false,
4447
buildAssetTypes: [CodeAsset.type, DataAsset.type],
4548
inputValidator: (input) async => [

pkgs/native_assets_builder/test/build_runner/helpers.dart

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ Future<BuildResult?> build(
5656
LinkModePreference linkModePreference = LinkModePreference.dynamic,
5757
CCompilerConfig? cCompiler,
5858
List<String>? capturedLogs,
59-
PackageLayout? packageLayout,
6059
String? runPackageName,
6160
IOSSdk? targetIOSSdk,
6261
int? targetIOSVersion,
@@ -70,6 +69,10 @@ Future<BuildResult?> build(
7069
final targetOS = target?.os ?? OS.current;
7170
final runPackageName_ =
7271
runPackageName ?? packageUri.pathSegments.lastWhere((e) => e.isNotEmpty);
72+
final packageLayout = await PackageLayout.fromWorkingDirectory(
73+
const LocalFileSystem(),
74+
packageUri,
75+
);
7376
return await runWithLog(capturedLogs, () async {
7477
final result = await NativeAssetsBuildRunner(
7578
logger: logger,
@@ -103,7 +106,6 @@ Future<BuildResult?> build(
103106
return inputBuilder;
104107
},
105108
inputValidator: inputValidator,
106-
workingDirectory: packageUri,
107109
packageLayout: packageLayout,
108110
runPackageName: runPackageName_,
109111
linkingEnabled: linkingEnabled,
@@ -134,7 +136,6 @@ Future<LinkResult?> link(
134136
LinkModePreference linkModePreference = LinkModePreference.dynamic,
135137
CCompilerConfig? cCompiler,
136138
List<String>? capturedLogs,
137-
PackageLayout? packageLayout,
138139
String? runPackageName,
139140
required BuildResult buildResult,
140141
Uri? resourceIdentifiers,
@@ -148,6 +149,10 @@ Future<LinkResult?> link(
148149
final targetOS = target?.os ?? OS.current;
149150
final runPackageName_ =
150151
runPackageName ?? packageUri.pathSegments.lastWhere((e) => e.isNotEmpty);
152+
final packageLayout = await PackageLayout.fromWorkingDirectory(
153+
const LocalFileSystem(),
154+
packageUri,
155+
);
151156
return await runWithLog(capturedLogs, () async {
152157
final result = await NativeAssetsBuildRunner(
153158
logger: logger,
@@ -180,7 +185,6 @@ Future<LinkResult?> link(
180185
return inputBuilder;
181186
},
182187
inputValidator: inputValidator,
183-
workingDirectory: packageUri,
184188
packageLayout: packageLayout,
185189
buildResult: buildResult,
186190
resourceIdentifiers: resourceIdentifiers,
@@ -223,6 +227,10 @@ Future<(BuildResult?, LinkResult?)> buildAndLink(
223227
await runWithLog(capturedLogs, () async {
224228
final runPackageName_ = runPackageName ??
225229
packageUri.pathSegments.lastWhere((e) => e.isNotEmpty);
230+
final packageLayout = await PackageLayout.fromWorkingDirectory(
231+
const LocalFileSystem(),
232+
packageUri,
233+
);
226234
final buildRunner = NativeAssetsBuildRunner(
227235
logger: logger,
228236
dartExecutable: dartExecutable,
@@ -256,7 +264,6 @@ Future<(BuildResult?, LinkResult?)> buildAndLink(
256264
return inputBuilder;
257265
},
258266
inputValidator: buildInputValidator,
259-
workingDirectory: packageUri,
260267
packageLayout: packageLayout,
261268
runPackageName: runPackageName_,
262269
linkingEnabled: true,
@@ -302,7 +309,6 @@ Future<(BuildResult?, LinkResult?)> buildAndLink(
302309
return inputBuilder;
303310
},
304311
inputValidator: linkInputValidator,
305-
workingDirectory: packageUri,
306312
packageLayout: packageLayout,
307313
buildResult: buildResult,
308314
resourceIdentifiers: resourceIdentifiers,

0 commit comments

Comments
 (0)