1
- import org.gradle.kotlin.dsl.support.zipTo
1
+ import org.gradle.internal.jvm.Jvm
2
+ import org.gradle.internal.os.OperatingSystem
2
3
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
3
4
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
4
5
import org.jetbrains.compose.desktop.application.tasks.AbstractJPackageTask
5
6
import org.jetbrains.compose.internal.de.undercouch.gradle.tasks.download.Download
6
- import org.jetbrains.kotlin.fir.scopes.impl.overrides
7
7
import java.io.FileOutputStream
8
8
import java.util.zip.ZipEntry
9
9
import java.util.zip.ZipOutputStream
@@ -139,11 +139,11 @@ tasks.compileJava{
139
139
val version = if (project.version == " unspecified" ) " 1.0.0" else project.version
140
140
141
141
tasks.register<Exec >(" installCreateDmg" ) {
142
- onlyIf { org.gradle.internal.os. OperatingSystem .current().isMacOsX }
142
+ onlyIf { OperatingSystem .current().isMacOsX }
143
143
commandLine(" arch" , " -arm64" , " brew" , " install" , " --quiet" , " create-dmg" )
144
144
}
145
145
tasks.register<Exec >(" packageCustomDmg" ){
146
- onlyIf { org.gradle.internal.os. OperatingSystem .current().isMacOsX }
146
+ onlyIf { OperatingSystem .current().isMacOsX }
147
147
group = " compose desktop"
148
148
149
149
val distributable = tasks.named<AbstractJPackageTask >(" createDistributable" ).get()
@@ -173,8 +173,6 @@ tasks.register<Exec>("packageCustomDmg"){
173
173
extra.add(" 25" )
174
174
}
175
175
176
- commandLine(" brew" , " install" , " --quiet" , " create-dmg" )
177
-
178
176
commandLine(" create-dmg" ,
179
177
" --volname" , packageName,
180
178
" --volicon" , file(" macos/volume.icns" ),
@@ -191,7 +189,7 @@ tasks.register<Exec>("packageCustomDmg"){
191
189
}
192
190
193
191
tasks.register<Exec >(" packageCustomMsi" ){
194
- onlyIf { org.gradle.internal.os. OperatingSystem .current().isWindows }
192
+ onlyIf { OperatingSystem .current().isWindows }
195
193
dependsOn(" createDistributable" )
196
194
workingDir = file(" windows" )
197
195
group = " compose desktop"
@@ -207,20 +205,22 @@ tasks.register<Exec>("packageCustomMsi"){
207
205
)
208
206
}
209
207
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
+
216
209
tasks.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 }
218
218
val distributable = tasks.named<AbstractJPackageTask >(" createDistributable" ).get()
219
219
dependsOn(distributable)
220
220
221
221
val dir = distributable.destinationDir.get()
222
222
val content = """
223
- name: $snapname
223
+ name: $name
224
224
version: $version
225
225
base: core22
226
226
summary: A creative coding editor
@@ -248,20 +248,19 @@ tasks.register("generateSnapConfiguration"){
248
248
parts:
249
249
processing:
250
250
plugin: dump
251
- source: deb/processing_$version -1_$snaparch .deb
251
+ source: deb/processing_$version -1_$arch .deb
252
252
source-type: deb
253
253
stage-packages:
254
254
- openjdk-17-jre
255
255
override-prime: |
256
256
snapcraftctl prime
257
- chmod -R +x opt/processing/lib/app/resources/jdk-*
258
257
rm -vf usr/lib/jvm/java-17-openjdk-*/lib/security/cacerts
259
258
""" .trimIndent()
260
259
dir.file(" ../snapcraft.yaml" ).asFile.writeText(content)
261
260
}
262
261
263
262
tasks.register<Exec >(" packageSnap" ){
264
- onlyIf { org.gradle.internal.os. OperatingSystem .current().isLinux }
263
+ onlyIf { OperatingSystem .current().isLinux }
265
264
dependsOn(" packageDeb" , " generateSnapConfiguration" )
266
265
group = " compose desktop"
267
266
@@ -283,19 +282,20 @@ tasks.register<Zip>("zipDistributable"){
283
282
}
284
283
285
284
afterEvaluate{
285
+ // Override the default DMG task to use our custom one
286
286
tasks.named(" packageDmg" ).configure{
287
287
dependsOn(" packageCustomDmg" )
288
288
group = " compose desktop"
289
289
actions = emptyList()
290
290
}
291
-
291
+ // Override the default MSI task to use our custom one
292
292
tasks.named(" packageMsi" ).configure{
293
293
dependsOn(" packageCustomMsi" )
294
294
group = " compose desktop"
295
295
actions = emptyList()
296
296
}
297
297
tasks.named(" packageDistributionForCurrentOS" ).configure {
298
- if (org.gradle.internal.os. OperatingSystem .current().isMacOsX
298
+ if (OperatingSystem .current().isMacOsX
299
299
&& compose.desktop.application.nativeDistributions.macOS.notarization.appleID.isPresent
300
300
){
301
301
dependsOn(" notarizeDmg" )
@@ -326,40 +326,9 @@ tasks.register<Copy>("includeJavaMode") {
326
326
into(composeResources(" modes/java/mode" ))
327
327
duplicatesStrategy = DuplicatesStrategy .EXCLUDE
328
328
}
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
363
332
}
364
333
tasks.register<Copy >(" includeSharedAssets" ){
365
334
from(" ../build/shared/" )
@@ -405,6 +374,7 @@ tasks.register<Copy>("includeJavaModeResources") {
405
374
from(java.layout.buildDirectory.dir(" resources-bundled" ))
406
375
into(composeResources(" ../" ))
407
376
}
377
+ // TODO: Move to java mode
408
378
tasks.register<Copy >(" renameWindres" ) {
409
379
dependsOn(" includeSharedAssets" ," includeJavaModeResources" )
410
380
val dir = composeResources(" modes/java/application/launch4j/bin/" )
@@ -421,29 +391,29 @@ tasks.register<Copy>("renameWindres") {
421
391
duplicatesStrategy = DuplicatesStrategy .INCLUDE
422
392
into(dir)
423
393
}
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" ){
431
395
dependsOn(
396
+ " includeJdk" ,
432
397
" includeCore" ,
433
398
" includeJavaMode" ,
434
- " includeJdk" ,
435
399
" includeSharedAssets" ,
436
400
" includeProcessingExamples" ,
437
401
" includeProcessingWebsiteExamples" ,
438
402
" includeJavaModeResources" ,
439
403
" renameWindres"
440
404
)
441
- finalizedBy(" prepareAppResources" )
405
+ finalizedBy(" signResources" )
406
+ }
442
407
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"
443
415
val resourcesPath = composeResources(" " )
444
416
445
-
446
-
447
417
// find jars in the resources directory
448
418
val jars = mutableListOf<File >()
449
419
doFirst{
@@ -476,7 +446,7 @@ tasks.register("signResources"){
476
446
include(" **/*x86_64*" )
477
447
include(" **/*ffmpeg*" )
478
448
include(" **/ffmpeg*/**" )
479
- exclude(" jdk-* /**" )
449
+ exclude(" jdk/**" )
480
450
exclude(" *.jar" )
481
451
exclude(" *.so" )
482
452
exclude(" *.dll" )
@@ -512,39 +482,32 @@ tasks.register("signResources"){
512
482
513
483
514
484
}
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"
530
488
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 )
543
501
}
544
502
}
545
503
}
504
+ }
505
+
506
+ afterEvaluate {
507
+ tasks.named(" prepareAppResources" ).configure {
508
+ dependsOn(" includeProcessingResources" )
509
+ }
546
510
tasks.named(" createDistributable" ).configure {
547
- dependsOn(" signResources" , " includeJdk" )
548
511
finalizedBy(" setExecutablePermissions" )
549
512
}
550
513
}
0 commit comments