Skip to content

Commit ec0a7c9

Browse files
authored
[native_assets_cli] add packageName (#146)
1 parent 23d46c3 commit ec0a7c9

File tree

4 files changed

+49
-4
lines changed

4 files changed

+49
-4
lines changed

pkgs/native_assets_cli/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 0.3.0
2+
3+
- **Breaking change** Add required `BuildConfig.packageName`
4+
([#142](https://github.com/dart-lang/native/issues/142)).
5+
16
## 0.2.0
27

38
- **Breaking change** Rename `Asset.name` to `Asset.id`

pkgs/native_assets_cli/lib/src/model/build_config.dart

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ class BuildConfig {
2323
Uri get outDir => _outDir;
2424
late final Uri _outDir;
2525

26+
/// The name of the package the native assets are built for.
27+
String get packageName => _packageName;
28+
late final String _packageName;
29+
2630
/// The root of the package the native assets are built for.
2731
///
2832
/// Often a package's native assets are built because a package is a
@@ -124,6 +128,7 @@ class BuildConfig {
124128

125129
factory BuildConfig({
126130
required Uri outDir,
131+
required String packageName,
127132
required Uri packageRoot,
128133
required BuildMode buildMode,
129134
required Architecture targetArchitecture,
@@ -136,6 +141,7 @@ class BuildConfig {
136141
}) {
137142
final nonValidated = BuildConfig._()
138143
.._outDir = outDir
144+
.._packageName = packageName
139145
.._packageRoot = packageRoot
140146
.._buildMode = buildMode
141147
.._targetArchitecture = targetArchitecture
@@ -153,12 +159,14 @@ class BuildConfig {
153159

154160
factory BuildConfig.dryRun({
155161
required Uri outDir,
162+
required String packageName,
156163
required Uri packageRoot,
157164
required OS targetOs,
158165
required LinkModePreference linkModePreference,
159166
}) {
160167
final nonValidated = BuildConfig._()
161168
.._outDir = outDir
169+
.._packageName = packageName
162170
.._packageRoot = packageRoot
163171
.._targetOs = targetOs
164172
.._linkModePreference = linkModePreference
@@ -177,6 +185,7 @@ class BuildConfig {
177185
/// In particular, it only takes the package name from [packageRoot],
178186
/// so that the hash is equal across checkouts and ignores [outDir] itself.
179187
static String checksum({
188+
required String packageName,
180189
required Uri packageRoot,
181190
required Architecture targetArchitecture,
182191
required OS targetOs,
@@ -187,7 +196,6 @@ class BuildConfig {
187196
required LinkModePreference linkModePreference,
188197
Map<String, Metadata>? dependencyMetadata,
189198
}) {
190-
final packageName = packageRoot.pathSegments.lastWhere((e) => e.isNotEmpty);
191199
final input = [
192200
packageName,
193201
targetArchitecture.toString(),
@@ -273,6 +281,7 @@ class BuildConfig {
273281
}
274282

275283
static const outDirConfigKey = 'out_dir';
284+
static const packageNameConfigKey = 'package_name';
276285
static const packageRootConfigKey = 'package_root';
277286
static const dependencyMetadataConfigKey = 'dependency_metadata';
278287
static const _versionKey = 'version';
@@ -303,6 +312,7 @@ class BuildConfig {
303312
(config) => _config = config,
304313
(config) => _dryRun = config.optionalBool(dryRunConfigKey),
305314
(config) => _outDir = config.path(outDirConfigKey, mustExist: true),
315+
(config) => _packageName = config.string(packageNameConfigKey),
306316
(config) =>
307317
_packageRoot = config.path(packageRootConfigKey, mustExist: true),
308318
(config) {
@@ -469,6 +479,7 @@ class BuildConfig {
469479

470480
return {
471481
outDirConfigKey: _outDir.toFilePath(),
482+
packageNameConfigKey: _packageName,
472483
packageRootConfigKey: _packageRoot.toFilePath(),
473484
OS.configKey: _targetOs.toString(),
474485
LinkModePreference.configKey: _linkModePreference.toString(),
@@ -498,6 +509,7 @@ class BuildConfig {
498509
return false;
499510
}
500511
if (other.outDir != outDir) return false;
512+
if (other.packageName != packageName) return false;
501513
if (other.packageRoot != packageRoot) return false;
502514
if (other.dryRun != dryRun) return false;
503515
if (other.targetOs != targetOs) return false;
@@ -517,6 +529,7 @@ class BuildConfig {
517529
@override
518530
int get hashCode => Object.hashAll([
519531
outDir,
532+
packageName,
520533
packageRoot,
521534
targetOs,
522535
linkModePreference,

pkgs/native_assets_cli/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: native_assets_cli
22
description: >-
33
A library that contains the argument and file formats for implementing a
44
native assets CLI.
5-
version: 0.2.0
5+
version: 0.3.0
66
repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli
77

88
topics:

pkgs/native_assets_cli/test/model/build_config_test.dart

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ void main() async {
1414
late Uri tempUri;
1515
late Uri outDirUri;
1616
late Uri outDir2Uri;
17+
late String packageName;
1718
late Uri packageRootUri;
1819
late Uri fakeClang;
1920
late Uri fakeLd;
@@ -26,8 +27,9 @@ void main() async {
2627
outDirUri = tempUri.resolve('out1/');
2728
await Directory.fromUri(outDirUri).create();
2829
outDir2Uri = tempUri.resolve('out2/');
30+
packageName = 'my_package';
2931
await Directory.fromUri(outDir2Uri).create();
30-
packageRootUri = tempUri.resolve('my_package/');
32+
packageRootUri = tempUri.resolve('$packageName/');
3133
await Directory.fromUri(packageRootUri).create();
3234
fakeClang = tempUri.resolve('fake_clang');
3335
await File.fromUri(fakeClang).create();
@@ -48,6 +50,7 @@ void main() async {
4850
test('BuildConfig ==', () {
4951
final config1 = BuildConfig(
5052
outDir: outDirUri,
53+
packageName: packageName,
5154
packageRoot: tempUri,
5255
targetArchitecture: Architecture.arm64,
5356
targetOs: OS.iOS,
@@ -63,6 +66,7 @@ void main() async {
6366

6467
final config2 = BuildConfig(
6568
outDir: outDir2Uri,
69+
packageName: packageName,
6670
packageRoot: tempUri,
6771
targetArchitecture: Architecture.arm64,
6872
targetOs: OS.android,
@@ -92,6 +96,7 @@ void main() async {
9296
test('BuildConfig fromConfig', () {
9397
final buildConfig2 = BuildConfig(
9498
outDir: outDirUri,
99+
packageName: packageName,
95100
packageRoot: packageRootUri,
96101
targetArchitecture: Architecture.arm64,
97102
targetOs: OS.android,
@@ -105,6 +110,7 @@ void main() async {
105110
'dry_run': false,
106111
'link_mode_preference': 'prefer-static',
107112
'out_dir': outDirUri.toFilePath(),
113+
'package_name': packageName,
108114
'package_root': packageRootUri.toFilePath(),
109115
'target_android_ndk_api': 30,
110116
'target_architecture': 'arm64',
@@ -119,6 +125,7 @@ void main() async {
119125
test('BuildConfig.dryRun', () {
120126
final buildConfig2 = BuildConfig.dryRun(
121127
outDir: outDirUri,
128+
packageName: packageName,
122129
packageRoot: packageRootUri,
123130
targetOs: OS.android,
124131
linkModePreference: LinkModePreference.preferStatic,
@@ -128,6 +135,7 @@ void main() async {
128135
'dry_run': true,
129136
'link_mode_preference': 'prefer-static',
130137
'out_dir': outDirUri.toFilePath(),
138+
'package_name': packageName,
131139
'package_root': packageRootUri.toFilePath(),
132140
'target_os': 'android',
133141
'version': BuildOutput.version.toString(),
@@ -140,6 +148,7 @@ void main() async {
140148
test('BuildConfig toYaml fromConfig', () {
141149
final buildConfig1 = BuildConfig(
142150
outDir: outDirUri,
151+
packageName: packageName,
143152
packageRoot: packageRootUri,
144153
targetArchitecture: Architecture.arm64,
145154
targetOs: OS.iOS,
@@ -161,6 +170,7 @@ void main() async {
161170
test('BuildConfig == dependency metadata', () {
162171
final buildConfig1 = BuildConfig(
163172
outDir: outDirUri,
173+
packageName: packageName,
164174
packageRoot: tempUri,
165175
targetArchitecture: Architecture.arm64,
166176
targetOs: OS.android,
@@ -180,6 +190,7 @@ void main() async {
180190

181191
final buildConfig2 = BuildConfig(
182192
outDir: outDirUri,
193+
packageName: packageName,
183194
packageRoot: tempUri,
184195
targetArchitecture: Architecture.arm64,
185196
targetOs: OS.android,
@@ -205,6 +216,7 @@ void main() async {
205216
final outDir = outDirUri;
206217
final buildConfig1 = BuildConfig(
207218
outDir: outDir,
219+
packageName: packageName,
208220
packageRoot: tempUri,
209221
targetArchitecture: Architecture.arm64,
210222
targetOs: OS.iOS,
@@ -241,6 +253,7 @@ dependency_metadata:
241253
- a
242254
link_mode_preference: prefer-static
243255
out_dir: ${outDir.toFilePath()}
256+
package_name: $packageName
244257
package_root: ${tempUri.toFilePath()}
245258
target_architecture: arm64
246259
target_ios_sdk: iphoneos
@@ -270,6 +283,7 @@ version: ${BuildConfig.version}''';
270283
expect(
271284
() => BuildConfig.fromConfig(Config(fileParsed: {
272285
'version': BuildConfig.version.toString(),
286+
'package_name': packageName,
273287
'package_root': packageRootUri.toFilePath(),
274288
'target_architecture': 'arm64',
275289
'target_os': 'android',
@@ -288,6 +302,7 @@ version: ${BuildConfig.version}''';
288302
() => BuildConfig.fromConfig(Config(fileParsed: {
289303
'version': BuildConfig.version.toString(),
290304
'out_dir': outDirUri.toFilePath(),
305+
'package_name': packageName,
291306
'package_root': packageRootUri.toFilePath(),
292307
'target_architecture': 'arm64',
293308
'target_os': 'android',
@@ -311,6 +326,7 @@ version: ${BuildConfig.version}''';
311326
() => BuildConfig.fromConfig(Config(fileParsed: {
312327
'out_dir': outDirUri.toFilePath(),
313328
'version': BuildConfig.version.toString(),
329+
'package_name': packageName,
314330
'package_root': packageRootUri.toFilePath(),
315331
'target_architecture': 'arm64',
316332
'target_os': 'android',
@@ -342,6 +358,7 @@ version: ${BuildConfig.version}''';
342358
test('BuildConfig toString', () {
343359
final config = BuildConfig(
344360
outDir: outDirUri,
361+
packageName: packageName,
345362
packageRoot: tempUri,
346363
targetArchitecture: Architecture.arm64,
347364
targetOs: OS.iOS,
@@ -359,6 +376,7 @@ version: ${BuildConfig.version}''';
359376
test('BuildConfig fromArgs', () async {
360377
final buildConfig = BuildConfig(
361378
outDir: outDirUri,
379+
packageName: packageName,
362380
packageRoot: tempUri,
363381
targetArchitecture: Architecture.arm64,
364382
targetOs: OS.android,
@@ -380,6 +398,7 @@ version: ${BuildConfig.version}''';
380398
test('dependency metadata via config accessor', () {
381399
final buildConfig1 = BuildConfig(
382400
outDir: outDirUri,
401+
packageName: packageName,
383402
packageRoot: tempUri,
384403
targetArchitecture: Architecture.arm64,
385404
targetOs: OS.android,
@@ -407,6 +426,7 @@ version: ${BuildConfig.version}''';
407426
test('envScript', () {
408427
final buildConfig1 = BuildConfig(
409428
outDir: outDirUri,
429+
packageName: packageName,
410430
packageRoot: packageRootUri,
411431
targetArchitecture: Architecture.x64,
412432
targetOs: OS.windows,
@@ -455,6 +475,7 @@ version: ${BuildConfig.version}''';
455475
await File.fromUri(fakeClangUri).create();
456476

457477
final name1 = BuildConfig.checksum(
478+
packageName: packageName,
458479
packageRoot: nativeAddUri,
459480
targetArchitecture: Architecture.x64,
460481
targetOs: OS.linux,
@@ -463,10 +484,11 @@ version: ${BuildConfig.version}''';
463484
);
464485

465486
// Using the checksum for a build folder should be stable.
466-
expect(name1, '1397e1b887565784da364fddc021491a');
487+
expect(name1, '037109b9824b2559502fa7bd42e1b6f8');
467488

468489
// Build folder different due to metadata.
469490
final name2 = BuildConfig.checksum(
491+
packageName: packageName,
470492
packageRoot: nativeAddUri,
471493
targetArchitecture: Architecture.x64,
472494
targetOs: OS.linux,
@@ -481,6 +503,7 @@ version: ${BuildConfig.version}''';
481503

482504
// Build folder different due to cc.
483505
final name3 = BuildConfig.checksum(
506+
packageName: packageName,
484507
packageRoot: nativeAddUri,
485508
targetArchitecture: Architecture.x64,
486509
targetOs: OS.linux,
@@ -499,6 +522,7 @@ version: ${BuildConfig.version}''';
499522
final config = Config(fileParsed: {
500523
'link_mode_preference': 'prefer-static',
501524
'out_dir': outDir.toFilePath(),
525+
'package_name': packageName,
502526
'package_root': tempUri.toFilePath(),
503527
'target_os': 'windows',
504528
'target_architecture': 'arm',
@@ -518,6 +542,7 @@ version: ${BuildConfig.version}''';
518542
final config = Config(fileParsed: {
519543
'link_mode_preference': 'prefer-static',
520544
'out_dir': outDir.toFilePath(),
545+
'package_name': packageName,
521546
'package_root': tempUri.toFilePath(),
522547
'target_os': 'windows',
523548
'target_architecture': 'arm64',
@@ -539,6 +564,7 @@ version: ${BuildConfig.version}''';
539564
final config = Config(fileParsed: {
540565
'link_mode_preference': 'prefer-static',
541566
'out_dir': outDir.toFilePath(),
567+
'package_name': packageName,
542568
'package_root': tempUri.toFilePath(),
543569
'target_os': 'windows',
544570
'dry_run': true,
@@ -555,6 +581,7 @@ version: ${BuildConfig.version}''';
555581

556582
test('BuildConfig dry_run access invalid args', () {
557583
final buildConfig = BuildConfig.dryRun(
584+
packageName: packageName,
558585
outDir: outDirUri,
559586
packageRoot: tempUri,
560587
targetOs: OS.windows,

0 commit comments

Comments
 (0)