1
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
@@ -135,11 +136,11 @@ tasks.compileJava{
135
136
val version = if (project.version == " unspecified" ) " 1.0.0" else project.version
136
137
137
138
tasks.register<Exec >(" installCreateDmg" ) {
138
- onlyIf { org.gradle.internal.os. OperatingSystem .current().isMacOsX }
139
+ onlyIf { OperatingSystem .current().isMacOsX }
139
140
commandLine(" arch" , " -arm64" , " brew" , " install" , " --quiet" , " create-dmg" )
140
141
}
141
142
tasks.register<Exec >(" packageCustomDmg" ){
142
- onlyIf { org.gradle.internal.os. OperatingSystem .current().isMacOsX }
143
+ onlyIf { OperatingSystem .current().isMacOsX }
143
144
group = " compose desktop"
144
145
145
146
val distributable = tasks.named<AbstractJPackageTask >(" createDistributable" ).get()
@@ -169,8 +170,6 @@ tasks.register<Exec>("packageCustomDmg"){
169
170
extra.add(" 25" )
170
171
}
171
172
172
- commandLine(" brew" , " install" , " --quiet" , " create-dmg" )
173
-
174
173
commandLine(" create-dmg" ,
175
174
" --volname" , packageName,
176
175
" --volicon" , file(" macos/volume.icns" ),
@@ -187,7 +186,7 @@ tasks.register<Exec>("packageCustomDmg"){
187
186
}
188
187
189
188
tasks.register<Exec >(" packageCustomMsi" ){
190
- onlyIf { org.gradle.internal.os. OperatingSystem .current().isWindows }
189
+ onlyIf { OperatingSystem .current().isWindows }
191
190
dependsOn(" createDistributable" )
192
191
workingDir = file(" windows" )
193
192
group = " compose desktop"
@@ -203,20 +202,22 @@ tasks.register<Exec>("packageCustomMsi"){
203
202
)
204
203
}
205
204
206
- val snapname = findProperty(" snapname" ) ? : rootProject.name
207
- val snaparch = when (System .getProperty(" os.arch" )) {
208
- " amd64" , " x86_64" -> " amd64"
209
- " aarch64" -> " arm64"
210
- else -> System .getProperty(" os.arch" )
211
- }
205
+
212
206
tasks.register(" generateSnapConfiguration" ){
213
- onlyIf { org.gradle.internal.os.OperatingSystem .current().isLinux }
207
+ val name = findProperty(" snapname" ) ? : rootProject.name
208
+ val arch = when (System .getProperty(" os.arch" )) {
209
+ " amd64" , " x86_64" -> " amd64"
210
+ " aarch64" -> " arm64"
211
+ else -> System .getProperty(" os.arch" )
212
+ }
213
+
214
+ onlyIf { OperatingSystem .current().isLinux }
214
215
val distributable = tasks.named<AbstractJPackageTask >(" createDistributable" ).get()
215
216
dependsOn(distributable)
216
217
217
218
val dir = distributable.destinationDir.get()
218
219
val content = """
219
- name: $snapname
220
+ name: $name
220
221
version: $version
221
222
base: core22
222
223
summary: A creative coding editor
@@ -243,7 +244,7 @@ tasks.register("generateSnapConfiguration"){
243
244
parts:
244
245
processing:
245
246
plugin: dump
246
- source: deb/processing_$version -1_$snaparch .deb
247
+ source: deb/processing_$version -1_$arch .deb
247
248
source-type: deb
248
249
stage-packages:
249
250
- openjdk-17-jre
@@ -255,7 +256,7 @@ tasks.register("generateSnapConfiguration"){
255
256
}
256
257
257
258
tasks.register<Exec >(" packageSnap" ){
258
- onlyIf { org.gradle.internal.os. OperatingSystem .current().isLinux }
259
+ onlyIf { OperatingSystem .current().isLinux }
259
260
dependsOn(" packageDeb" , " generateSnapConfiguration" )
260
261
group = " compose desktop"
261
262
@@ -290,7 +291,7 @@ afterEvaluate{
290
291
actions = emptyList()
291
292
}
292
293
tasks.named(" packageDistributionForCurrentOS" ).configure {
293
- if (org.gradle.internal.os. OperatingSystem .current().isMacOsX
294
+ if (OperatingSystem .current().isMacOsX
294
295
&& compose.desktop.application.nativeDistributions.macOS.notarization.appleID.isPresent
295
296
){
296
297
dependsOn(" notarizeDmg" )
@@ -321,40 +322,9 @@ tasks.register<Copy>("includeJavaMode") {
321
322
into(composeResources(" modes/java/mode" ))
322
323
duplicatesStrategy = DuplicatesStrategy .EXCLUDE
323
324
}
324
- tasks.register(" includeJdk" ) {
325
- dependsOn(" createDistributable" )
326
- doFirst {
327
- val jdk = Jvm .current().javaHome.absolutePath
328
- val target = layout.buildDirectory.dir(" compose/binaries" ).get().asFileTree.matching { include(" **/include.jdk" ) }
329
- .files
330
- .firstOrNull()
331
- ?.parentFile
332
- ?.resolve(" jdk" )
333
- ?.absolutePath
334
- ? : error(" Could not find include.jdk" )
335
-
336
- val isWindows = System .getProperty(" os.name" ).lowercase().contains(" win" )
337
- val isMacOS = System .getProperty(" os.name" ).lowercase().contains(" mac" )
338
- val command = if (isWindows) {
339
- listOf (" xcopy" , " /E" , " /I" , " /Q" , jdk, target)
340
- } else {
341
- listOf (" cp" , " -a" , jdk, target)
342
- }
343
- ProcessBuilder (command).inheritIO().start().waitFor()
344
-
345
- if (org.gradle.internal.os.OperatingSystem .current().isMacOsX
346
- && compose.desktop.application.nativeDistributions.macOS.notarization.appleID.isPresent
347
- ) {
348
- // Sign the main binary again since changed it.
349
- val app = layout.buildDirectory.dir(" compose/binaries" ).get().asFileTree.matching { include(" **/*.app" ) }
350
- .files
351
- .firstOrNull()
352
- ?.parentFile ? : error(" Could not find Info.plist" )
353
- val signCommand = listOf (" codesign" , " --timestamp" , " --force" , " --deep" ," --options=runtime" , " --sign" , " Developer ID Application" , app.absolutePath)
354
- ProcessBuilder (signCommand).inheritIO().start().waitFor()
355
- }
356
-
357
- }
325
+ tasks.register<Copy >(" includeJdk" ) {
326
+ from(Jvm .current().javaHome.absolutePath)
327
+ destinationDir = composeResources(" jdk" ).get().asFile
358
328
}
359
329
tasks.register<Copy >(" includeSharedAssets" ){
360
330
from(" ../build/shared/" )
@@ -400,6 +370,7 @@ tasks.register<Copy>("includeJavaModeResources") {
400
370
from(java.layout.buildDirectory.dir(" resources-bundled" ))
401
371
into(composeResources(" ../" ))
402
372
}
373
+ // TODO: Move to java mode
403
374
tasks.register<Copy >(" renameWindres" ) {
404
375
dependsOn(" includeSharedAssets" ," includeJavaModeResources" )
405
376
val dir = composeResources(" modes/java/application/launch4j/bin/" )
@@ -416,14 +387,9 @@ tasks.register<Copy>("renameWindres") {
416
387
duplicatesStrategy = DuplicatesStrategy .INCLUDE
417
388
into(dir)
418
389
}
419
- tasks.register(" signResources" ){
420
- onlyIf {
421
- org.gradle.internal.os.OperatingSystem .current().isMacOsX
422
- &&
423
- compose.desktop.application.nativeDistributions.macOS.signing.sign.get()
424
- }
425
- group = " compose desktop"
390
+ tasks.register(" includeProcessingResources" ){
426
391
dependsOn(
392
+ " includeJdk" ,
427
393
" includeCore" ,
428
394
" includeJavaMode" ,
429
395
" includeSharedAssets" ,
@@ -432,12 +398,18 @@ tasks.register("signResources"){
432
398
" includeJavaModeResources" ,
433
399
" renameWindres"
434
400
)
435
- finalizedBy(" prepareAppResources" )
401
+ finalizedBy(" signResources" )
402
+ }
436
403
404
+ tasks.register(" signResources" ){
405
+ onlyIf {
406
+ OperatingSystem .current().isMacOsX
407
+ &&
408
+ compose.desktop.application.nativeDistributions.macOS.signing.sign.get()
409
+ }
410
+ group = " compose desktop"
437
411
val resourcesPath = composeResources(" " )
438
412
439
-
440
-
441
413
// find jars in the resources directory
442
414
val jars = mutableListOf<File >()
443
415
doFirst{
@@ -506,39 +478,32 @@ tasks.register("signResources"){
506
478
507
479
508
480
}
509
- afterEvaluate {
510
- tasks.named(" prepareAppResources" ).configure {
511
- dependsOn(
512
- " includeCore" ,
513
- " includeJavaMode" ,
514
- " includeSharedAssets" ,
515
- " includeProcessingExamples" ,
516
- " includeProcessingWebsiteExamples" ,
517
- " includeJavaModeResources" ,
518
- " renameWindres"
519
- )
520
- }
521
- tasks.register(" setExecutablePermissions" ) {
522
- description = " Sets executable permissions on binaries in Processing.app resources"
523
- group = " compose desktop"
481
+ tasks.register(" setExecutablePermissions" ) {
482
+ description = " Sets executable permissions on binaries in Processing.app resources"
483
+ group = " compose desktop"
524
484
525
- doLast {
526
- val resourcesPath = layout.buildDirectory.dir(" compose/binaries" )
527
- fileTree(resourcesPath) {
528
- include(" **/resources/**/bin/**" )
529
- include(" **/resources/**/*.sh " )
530
- include(" **/resources/**/*.dylib " )
531
- include(" **/resources/**/*.so " )
532
- include(" **/resources/**/*.exe " )
533
- }.forEach { file ->
534
- if ( file.isFile) {
535
- file.setExecutable( true , false )
536
- }
485
+ doLast {
486
+ val resourcesPath = layout.buildDirectory.dir(" compose/binaries" )
487
+ fileTree(resourcesPath) {
488
+ include(" **/resources/**/bin/**" )
489
+ include(" **/resources/**/lib/** " )
490
+ include(" **/resources/**/*.sh " )
491
+ include(" **/resources/**/*.dylib " )
492
+ include(" **/resources/**/*.so " )
493
+ include( " **/resources/**/*.exe " )
494
+ }.forEach { file ->
495
+ if ( file.isFile) {
496
+ file.setExecutable( true , false )
537
497
}
538
498
}
539
499
}
500
+ }
501
+
502
+ afterEvaluate {
503
+ tasks.named(" prepareAppResources" ).configure {
504
+ dependsOn(" includeProcessingResources" )
505
+ }
540
506
tasks.named(" createDistributable" ).configure {
541
- dependsOn(" signResources" )
542
- finalizedBy( " includeJdk" , " setExecutablePermissions" )
507
+ finalizedBy(" setExecutablePermissions" )
543
508
}
544
509
}
0 commit comments