@@ -212,7 +212,7 @@ private fun Project.configureKotlinCompilation(
212
212
val projectName = project.name
213
213
val dumpFileName = project.jvmDumpFileName
214
214
val apiDirProvider = targetConfig.apiDir
215
- val apiBuildDir = apiDirProvider.map { layout.buildDirectory.asFile.get() .resolve(it) }
215
+ val apiBuildDir = apiDirProvider.flatMap { f -> layout.buildDirectory.asFile.map { it .resolve(f) } }
216
216
217
217
val apiBuild = task<KotlinApiBuildTask >(targetConfig.apiTaskName(" Build" )) {
218
218
// Do not enable task for empty umbrella modules
@@ -259,7 +259,7 @@ private fun Project.configureApiTasks(
259
259
) {
260
260
val projectName = project.name
261
261
val dumpFileName = project.jvmDumpFileName
262
- val apiBuildDir = targetConfig.apiDir.map { layout.buildDirectory.asFile.get() .resolve(it) }
262
+ val apiBuildDir = targetConfig.apiDir.flatMap { f -> layout.buildDirectory.asFile.map { it .resolve(f) } }
263
263
val sourceSetsOutputsProvider = project.provider {
264
264
sourceSets
265
265
.filter { it.name == SourceSet .MAIN_SOURCE_SET_NAME || it.name in extension.additionalSourceSets }
@@ -297,7 +297,7 @@ private fun Project.configureCheckTasks(
297
297
isEnabled = apiCheckEnabled(projectName, extension) && apiBuild.map { it.enabled }.getOrElse(true )
298
298
group = " verification"
299
299
description = " Checks signatures of public API against the golden value in API folder for $projectName "
300
- projectApiFile.set (apiCheckDir.get() .resolve(jvmDumpFileName))
300
+ projectApiFile.fileProvider (apiCheckDir.map { it .resolve(jvmDumpFileName) } )
301
301
generatedApiFile.fileProvider(apiBuild.map { it.outputApiFile })
302
302
}
303
303
@@ -372,13 +372,13 @@ private class KlibValidationPipelineBuilder(
372
372
TargetConfig (project, extension, KLIB_INFERRED_DUMPS_DIRECTORY , intermediateFilesConfig)
373
373
374
374
val projectDir = project.projectDir
375
- val klibApiDir = klibApiDirConfig?.map {
376
- projectDir.resolve( it.apiDir.get())
375
+ val klibApiDir = klibApiDirConfig?.flatMap {
376
+ it.apiDir.map { projectDir.resolve(it) }
377
377
}!!
378
- val projectBuildDir = project.layout.buildDirectory.asFile.get()
379
- val klibMergeDir = projectBuildDir.resolve( klibDumpConfig.apiDir.get())
380
- val klibMergeInferredDir = projectBuildDir.resolve( klibInferDumpConfig.apiDir.get())
381
- val klibExtractedFileDir = klibMergeInferredDir.resolve(" extracted" )
378
+ val projectBuildDir = project.layout.buildDirectory.asFile
379
+ val klibMergeDir = projectBuildDir.flatMap { pd -> klibDumpConfig.apiDir.map { pd.resolve(it) } }
380
+ val klibMergeInferredDir = projectBuildDir.flatMap { pd -> klibInferDumpConfig.apiDir.map { pd.resolve(it) } }
381
+ val klibExtractedFileDir = klibMergeInferredDir.map { it. resolve(" extracted" ) }
382
382
383
383
val klibMerge = project.mergeKlibsUmbrellaTask(klibDumpConfig, klibMergeDir)
384
384
val klibMergeInferred = project.mergeInferredKlibsUmbrellaTask(klibDumpConfig, klibMergeInferredDir)
@@ -399,27 +399,29 @@ private class KlibValidationPipelineBuilder(
399
399
project.configureTargets(klibApiDir, klibMerge, klibMergeInferred)
400
400
}
401
401
402
- private fun Project.checkKlibsTask (klibDumpConfig : TargetConfig )
403
- = project.task<KotlinApiCompareTask >(klibDumpConfig.apiTaskName(" Check" )) {
404
- isEnabled = klibAbiCheckEnabled(project.name, extension)
405
- group = " verification"
406
- description = " Checks signatures of a public KLib ABI against the golden value in ABI folder for ${project.name} "
407
- }
402
+ private fun Project.checkKlibsTask (klibDumpConfig : TargetConfig ) =
403
+ project.task<KotlinApiCompareTask >(klibDumpConfig.apiTaskName(" Check" )) {
404
+ isEnabled = klibAbiCheckEnabled(project.name, extension)
405
+ group = " verification"
406
+ description =
407
+ " Checks signatures of a public KLib ABI against the golden value in ABI folder for ${project.name} "
408
+ }
408
409
409
- private fun Project.dumpKlibsTask (klibDumpConfig : TargetConfig ) = project.task<SyncFile >(klibDumpConfig.apiTaskName(" Dump" )) {
410
- isEnabled = klibAbiCheckEnabled(project.name, extension)
411
- description = " Syncs the KLib ABI file for ${project.name} "
412
- group = " other"
413
- onlyIf {
414
- it as SyncFile
415
- it.to.get().asFile.exists() || it.from.get().asFile.exists()
410
+ private fun Project.dumpKlibsTask (klibDumpConfig : TargetConfig ) =
411
+ project.task<SyncFile >(klibDumpConfig.apiTaskName(" Dump" )) {
412
+ isEnabled = klibAbiCheckEnabled(project.name, extension)
413
+ description = " Syncs the KLib ABI file for ${project.name} "
414
+ group = " other"
415
+ onlyIf {
416
+ it as SyncFile
417
+ it.to.get().asFile.exists() || it.from.get().asFile.exists()
418
+ }
416
419
}
417
- }
418
420
419
421
private fun Project.extractAbi (
420
422
klibDumpConfig : TargetConfig ,
421
423
klibApiDir : Provider <File >,
422
- klibOutputDir : File
424
+ klibOutputDir : Provider < File >
423
425
) = project.task<KotlinKlibExtractAbiTask >(
424
426
klibDumpConfig.apiTaskName(" ExtractForValidation" )
425
427
)
@@ -431,12 +433,12 @@ private class KlibValidationPipelineBuilder(
431
433
strictValidation.set(extension.klib.strictValidation)
432
434
requiredTargets.addAll(supportedTargets())
433
435
inputAbiFile.fileProvider(klibApiDir.map { it.resolve(klibDumpFileName) })
434
- outputAbiFile.set (klibOutputDir.resolve(klibDumpFileName))
436
+ outputAbiFile.fileProvider (klibOutputDir.map { it. resolve(klibDumpFileName) } )
435
437
}
436
438
437
439
private fun Project.mergeInferredKlibsUmbrellaTask (
438
440
klibDumpConfig : TargetConfig ,
439
- klibMergeDir : File ,
441
+ klibMergeDir : Provider < File > ,
440
442
) = project.task<KotlinKlibMergeAbiTask >(
441
443
klibDumpConfig.apiTaskName(" MergeInferred" )
442
444
)
@@ -445,17 +447,17 @@ private class KlibValidationPipelineBuilder(
445
447
description = " Merges multiple KLib ABI dump files generated for " +
446
448
" different targets (including inferred dumps for unsupported targets) " +
447
449
" into a single merged KLib ABI dump"
448
- mergedApiFile.set (klibMergeDir.resolve(klibDumpFileName))
450
+ mergedApiFile.fileProvider (klibMergeDir.map { it. resolve(klibDumpFileName) } )
449
451
}
450
452
451
453
private fun Project.mergeKlibsUmbrellaTask (
452
454
klibDumpConfig : TargetConfig ,
453
- klibMergeDir : File
455
+ klibMergeDir : Provider < File >
454
456
) = project.task<KotlinKlibMergeAbiTask >(klibDumpConfig.apiTaskName(" Merge" )) {
455
457
isEnabled = klibAbiCheckEnabled(project.name, extension)
456
458
description = " Merges multiple KLib ABI dump files generated for " +
457
459
" different targets into a single merged KLib ABI dump"
458
- mergedApiFile.set (klibMergeDir.resolve(klibDumpFileName))
460
+ mergedApiFile.fileProvider (klibMergeDir.map { it. resolve(klibDumpFileName) } )
459
461
}
460
462
461
463
fun Project.bannedTargets (): Set <String > {
@@ -494,14 +496,19 @@ private class KlibValidationPipelineBuilder(
494
496
val target = currentTarget.toKlibTarget()
495
497
val targetName = currentTarget.targetName
496
498
val targetConfig = TargetConfig (project, extension, targetName, intermediateFilesConfig)
497
- val apiBuildDir = targetConfig.apiDir.map { project.layout.buildDirectory.asFile.get().resolve(it) }.get()
499
+ val apiBuildDir =
500
+ targetConfig.apiDir.flatMap { f -> project.layout.buildDirectory.asFile.map { it.resolve(f) } }
498
501
val targetSupported = targetIsSupported(currentTarget)
499
502
// If a target is supported, the workflow is simple: create a dump, then merge it along with other dumps.
500
503
if (targetSupported) {
501
- val buildTargetAbi = configureKlibCompilation(mainCompilation, extension, targetConfig,
502
- target, apiBuildDir)
503
- generatedDumps.add(KlibDumpMetadata (target,
504
- objects.fileProperty().also { it.set(buildTargetAbi.flatMap { it.outputAbiFile }) }))
504
+ val buildTargetAbi = configureKlibCompilation(
505
+ mainCompilation, extension, targetConfig,
506
+ target, apiBuildDir
507
+ )
508
+ generatedDumps.add(
509
+ KlibDumpMetadata (target,
510
+ objects.fileProperty().also { it.set(buildTargetAbi.flatMap { it.outputAbiFile }) })
511
+ )
505
512
return @configureEach
506
513
}
507
514
// If the target is unsupported, the regular merge task will only depend on a task complaining about
@@ -518,10 +525,12 @@ private class KlibValidationPipelineBuilder(
518
525
apiBuildDir
519
526
)
520
527
proxy.configure { it.inputDumps.addAll(generatedDumps) }
521
- inferredDumps.add(KlibDumpMetadata (currentTarget.toKlibTarget(),
522
- objects.fileProperty().also {
523
- it.set(proxy.flatMap { it.outputAbiFile })
524
- }))
528
+ inferredDumps.add(
529
+ KlibDumpMetadata (currentTarget.toKlibTarget(),
530
+ objects.fileProperty().also {
531
+ it.set(proxy.flatMap { it.outputAbiFile })
532
+ })
533
+ )
525
534
}
526
535
}
527
536
@@ -557,7 +566,7 @@ private class KlibValidationPipelineBuilder(
557
566
extension : ApiValidationExtension ,
558
567
targetConfig : TargetConfig ,
559
568
target : KlibTarget ,
560
- apiBuildDir : File
569
+ apiBuildDir : Provider < File >
561
570
): TaskProvider <KotlinKlibAbiBuildTask > {
562
571
val projectName = project.name
563
572
val buildTask = project.task<KotlinKlibAbiBuildTask >(targetConfig.apiTaskName(" Build" )) {
@@ -569,7 +578,7 @@ private class KlibValidationPipelineBuilder(
569
578
this .target.set(target)
570
579
klibFile.from(compilation.output.classesDirs)
571
580
signatureVersion.set(extension.klib.signatureVersion)
572
- outputAbiFile.set (apiBuildDir.resolve(klibDumpFileName))
581
+ outputAbiFile.fileProvider (apiBuildDir.map { it. resolve(klibDumpFileName) } )
573
582
}
574
583
return buildTask
575
584
}
@@ -591,7 +600,7 @@ private class KlibValidationPipelineBuilder(
591
600
klibApiDir : Provider <File >,
592
601
targetConfig : TargetConfig ,
593
602
unsupportedTarget : KlibTarget ,
594
- apiBuildDir : File
603
+ apiBuildDir : Provider < File >
595
604
): TaskProvider <KotlinKlibInferAbiTask > {
596
605
val targetName = targetConfig.targetName!!
597
606
return project.task<KotlinKlibInferAbiTask >(targetConfig.apiTaskName(" Infer" )) {
@@ -601,7 +610,7 @@ private class KlibValidationPipelineBuilder(
601
610
group = " other"
602
611
target.set(unsupportedTarget)
603
612
oldMergedKlibDump.fileProvider(klibApiDir.map { it.resolve(klibDumpFileName) })
604
- outputAbiFile.set (apiBuildDir.resolve(klibDumpFileName))
613
+ outputAbiFile.fileProvider (apiBuildDir.map { it. resolve(klibDumpFileName) } )
605
614
}
606
615
}
607
616
}
0 commit comments