1- import org.gradle.kotlin.dsl.support.zipTo
2- import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
1+ import org.gradle.internal.jvm.Jvm
32import org.jetbrains.compose.desktop.application.dsl.TargetFormat
43import org.jetbrains.compose.desktop.application.tasks.AbstractJPackageTask
54import org.jetbrains.compose.internal.de.undercouch.gradle.tasks.download.Download
6- import org.jetbrains.kotlin.fir.scopes.impl.overrides
75import java.io.FileOutputStream
86import java.util.zip.ZipEntry
97import java.util.zip.ZipOutputStream
@@ -335,41 +333,6 @@ tasks.register<Copy>("includeJavaMode") {
335333 into(composeResources(" modes/java/mode" ))
336334 duplicatesStrategy = DuplicatesStrategy .EXCLUDE
337335}
338- tasks.register<Download >(" includeJdk" ) {
339- val os = DefaultNativePlatform .getCurrentOperatingSystem()
340- val arch = when (System .getProperty(" os.arch" )) {
341- " amd64" , " x86_64" -> " x64"
342- else -> System .getProperty(" os.arch" )
343- }
344- val platform = when {
345- os.isWindows -> " windows"
346- os.isMacOsX -> " mac"
347- else -> " linux"
348- }
349-
350- val javaVersion = System .getProperty(" java.version" ).split(" ." )[0 ]
351- val imageType = " jdk"
352-
353- src(" https://api.adoptium.net/v3/binary/latest/" +
354- " $javaVersion /ga/" +
355- " $platform /" +
356- " $arch /" +
357- " $imageType /" +
358- " hotspot/normal/eclipse?project=jdk" )
359-
360- val extension = if (os.isWindows) " zip" else " tar.gz"
361- val jdk = layout.buildDirectory.file(" tmp/jdk-$platform -$arch .$extension " )
362- dest(jdk)
363- overwrite(false )
364- doLast {
365- copy {
366- val archive = if (os.isWindows) { zipTree(jdk) } else { tarTree(jdk) }
367- from(archive){ eachFile{ permissions{ unix(" 755" ) } } }
368- into(composeResources(" " ))
369- }
370- }
371- finalizedBy(" prepareAppResources" )
372- }
373336tasks.register<Copy >(" includeSharedAssets" ){
374337 from(" ../build/shared/" )
375338 into(composeResources(" " ))
@@ -414,21 +377,26 @@ tasks.register<Copy>("includeJavaModeResources") {
414377 from(java.layout.buildDirectory.dir(" resources-bundled" ))
415378 into(composeResources(" ../" ))
416379}
417- tasks.register<Copy >(" renameWindres" ) {
418- dependsOn(" includeSharedAssets" ," includeJavaModeResources" )
419- val dir = composeResources(" modes/java/application/launch4j/bin/" )
420- val os = DefaultNativePlatform .getCurrentOperatingSystem()
421- val platform = when {
422- os.isWindows -> " windows"
423- os.isMacOsX -> " macos"
424- else -> " linux"
425- }
426- from(dir) {
427- include(" *-$platform *" )
428- rename(" (.*)-$platform (.*)" , " $1$2" )
380+ tasks.register(" includeJdk" ) {
381+ dependsOn(" createDistributable" )
382+ doFirst {
383+ val jdk = Jvm .current().javaHome.absolutePath
384+ val target = layout.buildDirectory.dir(" compose/binaries" ).get().asFileTree.matching { include(" **/include.jdk" ) }
385+ .files
386+ .firstOrNull()
387+ ?.parentFile
388+ ?.resolve(" jdk" )
389+ ?.absolutePath
390+ ? : error(" Could not find include.jdk" )
391+
392+ val isWindows = System .getProperty(" os.name" ).lowercase().contains(" win" )
393+ val command = if (isWindows) {
394+ listOf (" xcopy" , " /E" , " /I" , " /Q" , jdk, target)
395+ } else {
396+ listOf (" cp" , " -a" , jdk, target)
397+ }
398+ ProcessBuilder (command).inheritIO().start().waitFor()
429399 }
430- duplicatesStrategy = DuplicatesStrategy .INCLUDE
431- into(dir)
432400}
433401tasks.register(" signResources" ){
434402 onlyIf {
@@ -440,19 +408,15 @@ tasks.register("signResources"){
440408 dependsOn(
441409 " includeCore" ,
442410 " includeJavaMode" ,
443- " includeJdk" ,
444411 " includeSharedAssets" ,
445412 " includeProcessingExamples" ,
446413 " includeProcessingWebsiteExamples" ,
447414 " includeJavaModeResources" ,
448- " renameWindres"
449415 )
450416 finalizedBy(" prepareAppResources" )
451417
452418 val resourcesPath = composeResources(" " )
453419
454-
455-
456420 // find jars in the resources directory
457421 val jars = mutableListOf<File >()
458422 doFirst{
@@ -529,31 +493,11 @@ afterEvaluate {
529493 " includeSharedAssets" ,
530494 " includeProcessingExamples" ,
531495 " includeProcessingWebsiteExamples" ,
532- " includeJavaModeResources" ,
533- " renameWindres"
496+ " includeJavaModeResources"
534497 )
535498 }
536- tasks.register(" setExecutablePermissions" ) {
537- description = " Sets executable permissions on binaries in Processing.app resources"
538- group = " compose desktop"
539-
540- doLast {
541- val resourcesPath = layout.buildDirectory.dir(" compose/binaries" )
542- fileTree(resourcesPath) {
543- include(" **/resources/**/bin/**" )
544- include(" **/resources/**/*.sh" )
545- include(" **/resources/**/*.dylib" )
546- include(" **/resources/**/*.so" )
547- include(" **/resources/**/*.exe" )
548- }.forEach { file ->
549- if (file.isFile) {
550- file.setExecutable(true , false )
551- }
552- }
553- }
554- }
555499 tasks.named(" createDistributable" ).configure {
556- dependsOn(" signResources" , " includeJdk " )
557- finalizedBy(" setExecutablePermissions " )
500+ dependsOn(" signResources" )
501+ finalizedBy(" includeJdk " )
558502 }
559503}
0 commit comments