1- import org.gradle.kotlin.dsl.support.zipTo
1+ import org.gradle.internal.jvm.Jvm
2+ import org.gradle.internal.os.OperatingSystem
23import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
34import org.jetbrains.compose.desktop.application.dsl.TargetFormat
45import org.jetbrains.compose.desktop.application.tasks.AbstractJPackageTask
56import org.jetbrains.compose.internal.de.undercouch.gradle.tasks.download.Download
6- import org.jetbrains.kotlin.fir.scopes.impl.overrides
77import java.io.FileOutputStream
88import java.util.zip.ZipEntry
99import java.util.zip.ZipOutputStream
@@ -139,11 +139,11 @@ tasks.compileJava{
139139val version = if (project.version == " unspecified" ) " 1.0.0" else project.version
140140
141141tasks.register<Exec >(" installCreateDmg" ) {
142- onlyIf { org.gradle.internal.os. OperatingSystem .current().isMacOsX }
142+ onlyIf { OperatingSystem .current().isMacOsX }
143143 commandLine(" arch" , " -arm64" , " brew" , " install" , " --quiet" , " create-dmg" )
144144}
145145tasks.register<Exec >(" packageCustomDmg" ){
146- onlyIf { org.gradle.internal.os. OperatingSystem .current().isMacOsX }
146+ onlyIf { OperatingSystem .current().isMacOsX }
147147 group = " compose desktop"
148148
149149 val distributable = tasks.named<AbstractJPackageTask >(" createDistributable" ).get()
@@ -173,8 +173,6 @@ tasks.register<Exec>("packageCustomDmg"){
173173 extra.add(" 25" )
174174 }
175175
176- commandLine(" brew" , " install" , " --quiet" , " create-dmg" )
177-
178176 commandLine(" create-dmg" ,
179177 " --volname" , packageName,
180178 " --volicon" , file(" macos/volume.icns" ),
@@ -191,7 +189,7 @@ tasks.register<Exec>("packageCustomDmg"){
191189}
192190
193191tasks.register<Exec >(" packageCustomMsi" ){
194- onlyIf { org.gradle.internal.os. OperatingSystem .current().isWindows }
192+ onlyIf { OperatingSystem .current().isWindows }
195193 dependsOn(" createDistributable" )
196194 workingDir = file(" windows" )
197195 group = " compose desktop"
@@ -207,20 +205,22 @@ tasks.register<Exec>("packageCustomMsi"){
207205 )
208206}
209207
210- val snapname = findProperty(" snapname" ) ? : rootProject.name
211- val snaparch = when (System .getProperty(" os.arch" )) {
212- " amd64" , " x86_64" -> " amd64"
213- " aarch64" -> " arm64"
214- else -> System .getProperty(" os.arch" )
215- }
208+
216209tasks.register(" generateSnapConfiguration" ){
217- onlyIf { org.gradle.internal.os.OperatingSystem .current().isLinux }
210+ val name = findProperty(" snapname" ) ? : rootProject.name
211+ val arch = when (System .getProperty(" os.arch" )) {
212+ " amd64" , " x86_64" -> " amd64"
213+ " aarch64" -> " arm64"
214+ else -> System .getProperty(" os.arch" )
215+ }
216+
217+ onlyIf { OperatingSystem .current().isLinux }
218218 val distributable = tasks.named<AbstractJPackageTask >(" createDistributable" ).get()
219219 dependsOn(distributable)
220220
221221 val dir = distributable.destinationDir.get()
222222 val content = """
223- name: $snapname
223+ name: $name
224224 version: $version
225225 base: core22
226226 summary: A creative coding editor
@@ -248,20 +248,19 @@ tasks.register("generateSnapConfiguration"){
248248 parts:
249249 processing:
250250 plugin: dump
251- source: deb/processing_$version -1_$snaparch .deb
251+ source: deb/processing_$version -1_$arch .deb
252252 source-type: deb
253253 stage-packages:
254254 - openjdk-17-jre
255255 override-prime: |
256256 snapcraftctl prime
257- chmod -R +x opt/processing/lib/app/resources/jdk-*
258257 rm -vf usr/lib/jvm/java-17-openjdk-*/lib/security/cacerts
259258 """ .trimIndent()
260259 dir.file(" ../snapcraft.yaml" ).asFile.writeText(content)
261260}
262261
263262tasks.register<Exec >(" packageSnap" ){
264- onlyIf { org.gradle.internal.os. OperatingSystem .current().isLinux }
263+ onlyIf { OperatingSystem .current().isLinux }
265264 dependsOn(" packageDeb" , " generateSnapConfiguration" )
266265 group = " compose desktop"
267266
@@ -283,19 +282,20 @@ tasks.register<Zip>("zipDistributable"){
283282}
284283
285284afterEvaluate{
285+ // Override the default DMG task to use our custom one
286286 tasks.named(" packageDmg" ).configure{
287287 dependsOn(" packageCustomDmg" )
288288 group = " compose desktop"
289289 actions = emptyList()
290290 }
291-
291+ // Override the default MSI task to use our custom one
292292 tasks.named(" packageMsi" ).configure{
293293 dependsOn(" packageCustomMsi" )
294294 group = " compose desktop"
295295 actions = emptyList()
296296 }
297297 tasks.named(" packageDistributionForCurrentOS" ).configure {
298- if (org.gradle.internal.os. OperatingSystem .current().isMacOsX
298+ if (OperatingSystem .current().isMacOsX
299299 && compose.desktop.application.nativeDistributions.macOS.notarization.appleID.isPresent
300300 ){
301301 dependsOn(" notarizeDmg" )
@@ -326,40 +326,9 @@ tasks.register<Copy>("includeJavaMode") {
326326 into(composeResources(" modes/java/mode" ))
327327 duplicatesStrategy = DuplicatesStrategy .EXCLUDE
328328}
329- tasks.register<Download >(" includeJdk" ) {
330- val os = DefaultNativePlatform .getCurrentOperatingSystem()
331- val arch = when (System .getProperty(" os.arch" )) {
332- " amd64" , " x86_64" -> " x64"
333- else -> System .getProperty(" os.arch" )
334- }
335- val platform = when {
336- os.isWindows -> " windows"
337- os.isMacOsX -> " mac"
338- else -> " linux"
339- }
340-
341- val javaVersion = System .getProperty(" java.version" ).split(" ." )[0 ]
342- val imageType = " jdk"
343-
344- src(" https://api.adoptium.net/v3/binary/latest/" +
345- " $javaVersion /ga/" +
346- " $platform /" +
347- " $arch /" +
348- " $imageType /" +
349- " hotspot/normal/eclipse?project=jdk" )
350-
351- val extension = if (os.isWindows) " zip" else " tar.gz"
352- val jdk = layout.buildDirectory.file(" tmp/jdk-$platform -$arch .$extension " )
353- dest(jdk)
354- overwrite(false )
355- doLast {
356- copy {
357- val archive = if (os.isWindows) { zipTree(jdk) } else { tarTree(jdk) }
358- from(archive){ eachFile{ permissions{ unix(" 755" ) } } }
359- into(composeResources(" " ))
360- }
361- }
362- finalizedBy(" prepareAppResources" )
329+ tasks.register<Copy >(" includeJdk" ) {
330+ from(Jvm .current().javaHome.absolutePath)
331+ destinationDir = composeResources(" jdk" ).get().asFile
363332}
364333tasks.register<Copy >(" includeSharedAssets" ){
365334 from(" ../build/shared/" )
@@ -405,6 +374,7 @@ tasks.register<Copy>("includeJavaModeResources") {
405374 from(java.layout.buildDirectory.dir(" resources-bundled" ))
406375 into(composeResources(" ../" ))
407376}
377+ // TODO: Move to java mode
408378tasks.register<Copy >(" renameWindres" ) {
409379 dependsOn(" includeSharedAssets" ," includeJavaModeResources" )
410380 val dir = composeResources(" modes/java/application/launch4j/bin/" )
@@ -421,29 +391,29 @@ tasks.register<Copy>("renameWindres") {
421391 duplicatesStrategy = DuplicatesStrategy .INCLUDE
422392 into(dir)
423393}
424- tasks.register(" signResources" ){
425- onlyIf {
426- org.gradle.internal.os.OperatingSystem .current().isMacOsX
427- &&
428- compose.desktop.application.nativeDistributions.macOS.signing.sign.get()
429- }
430- group = " compose desktop"
394+ tasks.register(" includeProcessingResources" ){
431395 dependsOn(
396+ " includeJdk" ,
432397 " includeCore" ,
433398 " includeJavaMode" ,
434- " includeJdk" ,
435399 " includeSharedAssets" ,
436400 " includeProcessingExamples" ,
437401 " includeProcessingWebsiteExamples" ,
438402 " includeJavaModeResources" ,
439403 " renameWindres"
440404 )
441- finalizedBy(" prepareAppResources" )
405+ finalizedBy(" signResources" )
406+ }
442407
408+ tasks.register(" signResources" ){
409+ onlyIf {
410+ OperatingSystem .current().isMacOsX
411+ &&
412+ compose.desktop.application.nativeDistributions.macOS.signing.sign.get()
413+ }
414+ group = " compose desktop"
443415 val resourcesPath = composeResources(" " )
444416
445-
446-
447417 // find jars in the resources directory
448418 val jars = mutableListOf<File >()
449419 doFirst{
@@ -476,7 +446,7 @@ tasks.register("signResources"){
476446 include(" **/*x86_64*" )
477447 include(" **/*ffmpeg*" )
478448 include(" **/ffmpeg*/**" )
479- exclude(" jdk-* /**" )
449+ exclude(" jdk/**" )
480450 exclude(" *.jar" )
481451 exclude(" *.so" )
482452 exclude(" *.dll" )
@@ -512,39 +482,32 @@ tasks.register("signResources"){
512482
513483
514484}
515- afterEvaluate {
516- tasks.named(" prepareAppResources" ).configure {
517- dependsOn(
518- " includeCore" ,
519- " includeJavaMode" ,
520- " includeSharedAssets" ,
521- " includeProcessingExamples" ,
522- " includeProcessingWebsiteExamples" ,
523- " includeJavaModeResources" ,
524- " renameWindres"
525- )
526- }
527- tasks.register(" setExecutablePermissions" ) {
528- description = " Sets executable permissions on binaries in Processing.app resources"
529- group = " compose desktop"
485+ tasks.register(" setExecutablePermissions" ) {
486+ description = " Sets executable permissions on binaries in Processing.app resources"
487+ group = " compose desktop"
530488
531- doLast {
532- val resourcesPath = layout.buildDirectory.dir(" compose/binaries" )
533- fileTree(resourcesPath) {
534- include(" **/resources/**/bin/**" )
535- include(" **/resources/**/*.sh " )
536- include(" **/resources/**/*.dylib " )
537- include(" **/resources/**/*.so " )
538- include(" **/resources/**/*.exe " )
539- }.forEach { file ->
540- if ( file.isFile) {
541- file.setExecutable( true , false )
542- }
489+ doLast {
490+ val resourcesPath = layout.buildDirectory.dir(" compose/binaries" )
491+ fileTree(resourcesPath) {
492+ include(" **/resources/**/bin/**" )
493+ include(" **/resources/**/lib/** " )
494+ include(" **/resources/**/*.sh " )
495+ include(" **/resources/**/*.dylib " )
496+ include(" **/resources/**/*.so " )
497+ include( " **/resources/**/*.exe " )
498+ }.forEach { file ->
499+ if ( file.isFile) {
500+ file.setExecutable( true , false )
543501 }
544502 }
545503 }
504+ }
505+
506+ afterEvaluate {
507+ tasks.named(" prepareAppResources" ).configure {
508+ dependsOn(" includeProcessingResources" )
509+ }
546510 tasks.named(" createDistributable" ).configure {
547- dependsOn(" signResources" , " includeJdk" )
548511 finalizedBy(" setExecutablePermissions" )
549512 }
550513}
0 commit comments