Skip to content

Commit cfeb8f2

Browse files
authored
Merge branch 'processing:main' into gradle-loggin
2 parents 00c5760 + fe152b7 commit cfeb8f2

File tree

8 files changed

+226
-183
lines changed

8 files changed

+226
-183
lines changed

.all-contributorsrc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1456,6 +1456,15 @@
14561456
"contributions": [
14571457
"code"
14581458
]
1459+
},
1460+
{
1461+
"login": "inteqam",
1462+
"name": "Aditya Chaudhary",
1463+
"avatar_url": "https://avatars.githubusercontent.com/u/104833943?v=4",
1464+
"profile": "https://github.com/inteqam",
1465+
"contributions": [
1466+
"code"
1467+
]
14591468
}
14601469
],
14611470
"repoType": "github",

.github/workflows/pull_request-gradle.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
fail-fast: false
1818
matrix:
1919
include:
20-
- os: [self-hosted, linux, ARM64]
20+
- os: ubuntu-24.04-arm
2121
os_prefix: linux
2222
arch: aarch64
2323
- os: ubuntu-latest

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ For a quick start:
3838
1. Fork and clone the repository
3939
1. Open it in IntelliJ IDEA
4040
1. Wait for Gradle to sync
41+
1. Next to the run Button, select the `Processing` Configuration
4142
1. Hit Run
4243

4344
For more information and detailed instructions, follow our [How to Build Processing](BUILD.md) guide.
@@ -64,7 +65,7 @@ For licensing information about the Processing website see the [processing-websi
6465

6566
Copyright (c) 2015-now The Processing Foundation
6667

67-
## All Contributors List
68+
## Contributors
6869

6970
Add yourself to the contributors list [here](https://github.com/processing/processing4-carbon-aug-19/issues/839)!
7071

@@ -285,6 +286,7 @@ Add yourself to the contributors list [here](https://github.com/processing/proce
285286
<td align="center" valign="top" width="16.66%"><a href="https://github.com/xinemata"><img src="https://avatars.githubusercontent.com/u/9159424?v=4?s=120" width="120px;" alt="Xin Xin"/><br /><sub><b>Xin Xin</b></sub></a><br /><a href="#eventOrganizing-xinemata" title="Event Organizing">📋</a> <a href="#ideas-xinemata" title="Ideas, Planning, & Feedback">🤔</a></td>
286287
<td align="center" valign="top" width="16.66%"><a href="http://benjaminfoxstudios.com"><img src="https://avatars.githubusercontent.com/u/234190?v=4?s=120" width="120px;" alt="Benjamin Fox"/><br /><sub><b>Benjamin Fox</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=tracerstar" title="Code">💻</a></td>
287288
<td align="center" valign="top" width="16.66%"><a href="https://github.com/e1dem"><img src="https://avatars.githubusercontent.com/u/32488297?v=4?s=120" width="120px;" alt="e1dem"/><br /><sub><b>e1dem</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=e1dem" title="Code">💻</a></td>
289+
<td align="center" valign="top" width="16.66%"><a href="https://github.com/inteqam"><img src="https://avatars.githubusercontent.com/u/104833943?v=4?s=120" width="120px;" alt="Aditya Chaudhary"/><br /><sub><b>Aditya Chaudhary</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=inteqam" title="Code">💻</a></td>
288290
</tr>
289291
</tbody>
290292
</table>

app/build.gradle.kts

Lines changed: 98 additions & 165 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,7 @@ plugins{
1313
}
1414

1515
group = rootProject.group
16-
tasks.withType<JavaExec> {
17-
systemProperty("processing.version", version)
18-
systemProperty("processing.revision", "1300")
19-
systemProperty("processing.contributions.source", "https://contributions-preview.processing.org/contribs.txt")
20-
systemProperty("processing.download.page", "https://processing.org/download/")
21-
systemProperty("processing.download.latest", "https://processing.org/download/latest.txt")
22-
}
23-
16+
version = rootProject.version
2417

2518
repositories{
2619
mavenCentral()
@@ -43,17 +36,25 @@ compose.desktop {
4336
application {
4437
mainClass = "processing.app.ui.Start"
4538

39+
jvmArgs(*listOf(
40+
Pair("processing.version", version),
41+
Pair("processing.revision", "1300"),
42+
Pair("processing.contributions.source", "https://contributions-preview.processing.org/contribs.txt"),
43+
Pair("processing.download.page", "https://processing.org/download/"),
44+
Pair("processing.download.latest", "https://processing.org/download/latest.txt"),
45+
Pair("processing.tutorials", "https://processing.org/tutorials/"),
46+
).map { "-D${it.first}=${it.second}" }.toTypedArray())
47+
4648
nativeDistributions{
47-
modules("jdk.jdi", "java.compiler")
49+
modules("jdk.jdi", "java.compiler", "jdk.accessibility")
4850
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
4951
packageName = "Processing"
50-
packageVersion = rootProject.version.toString()
5152

5253
macOS{
5354
bundleID = "org.processing.app"
5455
iconFile = project.file("../build/macos/processing.icns")
5556
infoPlist{
56-
extraKeysRawXml = plistStrings
57+
extraKeysRawXml = layout.projectDirectory.file("info.plist").asFile.readText()
5758
}
5859
entitlementsFile.set(project.file("entitlements.plist"))
5960
runtimeEntitlementsFile.set(project.file("entitlements.plist"))
@@ -69,9 +70,12 @@ compose.desktop {
6970
iconFile = project.file("../build/linux/processing.png")
7071
// Fix fonts on some Linux distributions
7172
jvmArgs("-Dawt.useSystemAAFontSettings=on")
72-
}
7373

74-
appResourcesRootDir.set(layout.buildDirectory.dir("resources-bundled"))
74+
fileAssociation("pde", "Processing Source Code", "application/x-processing")
75+
fileAssociation("pyde", "Processing Python Source Code", "application/x-processing")
76+
fileAssociation("pdez", "Processing Sketch Bundle", "application/x-processing")
77+
fileAssociation("pdex", "Processing Contribution Bundle", "application/x-processing")
78+
}
7579
}
7680
}
7781
}
@@ -97,34 +101,38 @@ dependencies {
97101
implementation(libs.kaml)
98102
}
99103

104+
tasks.compileJava{
105+
options.encoding = "UTF-8"
106+
}
107+
108+
100109
// LEGACY TASKS
101110
// Most of these are shims to be compatible with the old build system
102111
// They should be removed in the future, as we work towards making things more Gradle-native
103-
tasks.register<Copy>("copyCore"){
104-
val project = project(":core")
105-
dependsOn(project.tasks.jar)
106-
from(project.layout.buildDirectory.dir("libs"))
107-
from(project.configurations.runtimeClasspath)
108-
into(layout.buildDirectory.dir("resources-bundled/common/core/library"))
112+
val composeResources = { subPath: String -> layout.buildDirectory.dir("resources-bundled/common/$subPath") }
113+
compose.desktop.application.nativeDistributions.appResourcesRootDir.set(composeResources("../"))
114+
115+
tasks.register<Copy>("includeCore"){
116+
val core = project(":core")
117+
dependsOn(core.tasks.jar)
118+
from(core.layout.buildDirectory.dir("libs"))
119+
from(core.configurations.runtimeClasspath)
120+
into(composeResources("core/library"))
109121
}
110-
tasks.register<Copy>("copyJava"){
111-
val project = project(":java")
112-
dependsOn(project.tasks.jar)
113-
from(project.layout.buildDirectory.dir("libs"))
114-
from(project.configurations.runtimeClasspath)
115-
into(layout.buildDirectory.dir("resources-bundled/common/modes/java/mode"))
122+
tasks.register<Copy>("includeJavaMode") {
123+
val java = project(":java")
124+
dependsOn(java.tasks.jar)
125+
from(java.layout.buildDirectory.dir("libs"))
126+
from(java.configurations.runtimeClasspath)
127+
into(composeResources("modes/java/mode"))
116128
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
117129
}
118-
tasks.register<Download>("downloadJDK") {
119-
val os: OperatingSystem = DefaultNativePlatform.getCurrentOperatingSystem()
120-
val arch: String = System.getProperty("os.arch").let { originalArch ->
121-
when (originalArch) {
122-
"amd64" -> "x64"
123-
"x86_64" -> "x64"
124-
else -> originalArch
125-
}
130+
tasks.register<Download>("includeJdk") {
131+
val os = DefaultNativePlatform.getCurrentOperatingSystem()
132+
val arch = when (System.getProperty("os.arch")) {
133+
"amd64", "x86_64" -> "x64"
134+
else -> System.getProperty("os.arch")
126135
}
127-
128136
val platform = when {
129137
os.isWindows -> "windows"
130138
os.isMacOsX -> "mac"
@@ -142,73 +150,65 @@ tasks.register<Download>("downloadJDK") {
142150
"hotspot/normal/eclipse?project=jdk")
143151

144152
val extension = if (os.isWindows) "zip" else "tar.gz"
145-
dest(layout.buildDirectory.file("jdk-$platform-$arch.$extension"))
153+
val jdk = layout.buildDirectory.file("tmp/jdk-$platform-$arch.$extension")
154+
dest(jdk)
146155
overwrite(false)
147-
}
148-
tasks.register<Copy>("unzipJDK") {
149-
val dl = tasks.findByPath("downloadJDK") as Download
150-
dependsOn(dl)
151-
152-
val os = DefaultNativePlatform.getCurrentOperatingSystem()
153-
val archive = if (os.isWindows) {
154-
zipTree(dl.dest)
155-
} else {
156-
tarTree(dl.dest)
156+
doLast {
157+
copy {
158+
val archive = if (os.isWindows) { zipTree(jdk) } else { tarTree(jdk) }
159+
from(archive){ eachFile{ permissions{ unix("755") } } }
160+
into(composeResources(""))
161+
}
157162
}
158-
159-
from(archive){ eachFile{ permissions{ unix("755") } } }
160-
into(layout.buildDirectory.dir("resources-bundled/common"))
161163
}
162-
tasks.register<Copy>("copyShared"){
164+
tasks.register<Copy>("includeSharedAssets"){
163165
from("../build/shared/")
164-
into(layout.buildDirectory.dir("resources-bundled/common"))
166+
into(composeResources(""))
165167
}
166-
tasks.register<Download>("downloadProcessingExamples") {
168+
tasks.register<Download>("includeProcessingExamples") {
169+
val examples = layout.buildDirectory.file("tmp/processing-examples.zip")
167170
src("https://github.com/processing/processing-examples/archive/refs/heads/main.zip")
168-
dest(layout.buildDirectory.file("tmp/processing-examples.zip"))
171+
dest(examples)
169172
overwrite(false)
170-
}
171-
tasks.register<Copy>("unzipExamples") {
172-
val dl = tasks.findByPath("downloadProcessingExamples") as Download
173-
dependsOn(dl)
174-
from(zipTree(dl.dest)){ // remove top level directory
175-
exclude("processing-examples-main/README.md")
176-
exclude("processing-examples-main/.github/**")
177-
eachFile { relativePath = RelativePath(true, *relativePath.segments.drop(1).toTypedArray()) }
178-
includeEmptyDirs = false
173+
doLast{
174+
copy{
175+
from(zipTree(examples)){ // remove top level directory
176+
exclude("processing-examples-main/README.md")
177+
exclude("processing-examples-main/.github/**")
178+
eachFile { relativePath = RelativePath(true, *relativePath.segments.drop(1).toTypedArray()) }
179+
includeEmptyDirs = false
180+
}
181+
into(composeResources("/modes/java/examples"))
182+
}
179183
}
180-
into(layout.buildDirectory.dir("resources-bundled/common/modes/java/examples"))
181184
}
182-
tasks.register<Download>("downloadProcessingWebsiteExamples") {
185+
tasks.register<Download>("includeProcessingWebsiteExamples") {
186+
val examples = layout.buildDirectory.file("tmp/processing-website.zip")
183187
src("https://github.com/processing/processing-website/archive/refs/heads/main.zip")
184-
dest(layout.buildDirectory.file("tmp/processing-website.zip"))
188+
dest(examples)
185189
overwrite(false)
186-
}
187-
tasks.register<Copy>("unzipWebsiteExamples") {
188-
val dl = tasks.findByPath("downloadProcessingWebsiteExamples") as Download
189-
dependsOn(dl)
190-
dependsOn("unzipExamples")
191-
print(dl.dest)
192-
from(zipTree(dl.dest)){
193-
include("processing-website-main/content/examples/**")
194-
eachFile { relativePath = RelativePath(true, *relativePath.segments.drop(3).toTypedArray()) }
195-
includeEmptyDirs = false
196-
exclude {
197-
it.name.contains(".es.") || it.name == "liveSketch.js"
190+
doLast{
191+
copy{
192+
from(zipTree(examples)){
193+
include("processing-website-main/content/examples/**")
194+
eachFile { relativePath = RelativePath(true, *relativePath.segments.drop(3).toTypedArray()) }
195+
includeEmptyDirs = false
196+
exclude { it.name.contains(".es.") || it.name == "liveSketch.js" }
197+
}
198+
into(composeResources("modes/java/examples"))
198199
}
199200
}
200-
into(layout.buildDirectory.dir("resources-bundled/common/modes/java/examples"))
201201
}
202-
tasks.register<Copy>("copyJavaMode"){
203-
dependsOn("unzipExamples","unzipWebsiteExamples")
204-
dependsOn(project(":java").tasks.named("extraResources"))
205-
from(project(":java").layout.buildDirectory.dir("resources-bundled"))
206-
into(layout.buildDirectory.dir("resources-bundled"))
202+
tasks.register<Copy>("includeJavaModeResources") {
203+
val java = project(":java")
204+
dependsOn(java.tasks.named("extraResources"))
205+
from(java.layout.buildDirectory.dir("resources-bundled"))
206+
into(composeResources("../"))
207207
}
208208
tasks.register<Copy>("renameWindres") {
209-
dependsOn("copyJavaMode", "copyShared", "unzipJDK")
210-
val dir = layout.buildDirectory.dir("resources-bundled/common/modes/java/application/launch4j/bin/")
211-
val os: OperatingSystem = DefaultNativePlatform.getCurrentOperatingSystem()
209+
dependsOn("includeSharedAssets","includeJavaModeResources")
210+
val dir = composeResources("modes/java/application/launch4j/bin/")
211+
val os = DefaultNativePlatform.getCurrentOperatingSystem()
212212
val platform = when {
213213
os.isWindows -> "windows"
214214
os.isMacOsX -> "macos"
@@ -222,7 +222,18 @@ tasks.register<Copy>("renameWindres") {
222222
into(dir)
223223
}
224224
afterEvaluate {
225-
tasks.findByName("prepareAppResources")?.dependsOn("unzipJDK","copyShared", "copyCore", "copyJava", "unzipExamples","renameWindres", "copyJavaMode")
225+
tasks.named("prepareAppResources").configure {
226+
dependsOn(
227+
"includeCore",
228+
"includeJavaMode",
229+
"includeJdk",
230+
"includeSharedAssets",
231+
"includeProcessingExamples",
232+
"includeProcessingWebsiteExamples",
233+
"includeJavaModeResources",
234+
"renameWindres"
235+
)
236+
}
226237
tasks.register("setExecutablePermissions") {
227238
description = "Sets executable permissions on binaries in Processing.app resources"
228239
group = "compose desktop"
@@ -243,82 +254,4 @@ afterEvaluate {
243254
}
244255
}
245256
tasks.findByName("createDistributable")?.finalizedBy("setExecutablePermissions")
246-
}
247-
248-
val plistStrings: String
249-
get() = """
250-
<key>CFBundleURLTypes</key>
251-
<array>
252-
<dict>
253-
<key>CFBundleURLName</key>
254-
<string>org.processing.app</string>
255-
<key>CFBundleURLSchemes</key>
256-
<array>
257-
<string>pde</string>
258-
</array>
259-
</dict>
260-
</array>
261-
<key>CFBundleDocumentTypes</key>
262-
<array>
263-
<dict>
264-
<key>CFBundleTypeExtensions</key>
265-
<array>
266-
<string>pde</string>
267-
</array>
268-
<key>LSTypeIsPackage</key>
269-
<false/>
270-
<key>CFBundleTypeIconFile</key>
271-
<string>macos/pde.icns</string>
272-
<key>CFBundleTypeName</key>
273-
<string>Processing Source Code</string>
274-
<key>CFBundleTypeRole</key>
275-
<string>Editor</string>
276-
</dict>
277-
<dict>
278-
<key>CFBundleTypeExtensions</key>
279-
<array>
280-
<string>pyde</string>
281-
</array>
282-
<key>LSTypeIsPackage</key>
283-
<false/>
284-
<key>CFBundleTypeIconFile</key>
285-
<string>macos/pde.icns</string>
286-
<key>CFBundleTypeName</key>
287-
<string>Processing Python Source Code</string>
288-
<key>CFBundleTypeRole</key>
289-
<string>Editor</string>
290-
</dict>
291-
<dict>
292-
<key>CFBundleTypeExtensions</key>
293-
<array>
294-
<string>pdez</string>
295-
</array>
296-
<key>LSTypeIsPackage</key>
297-
<false/>
298-
<key>CFBundleTypeIconFile</key>
299-
<string>macos/pdez.icns</string>
300-
<key>CFBundleTypeName</key>
301-
<string>Processing Sketch Bundle</string>
302-
<key>CFBundleTypeRole</key>
303-
<string>Editor</string>
304-
</dict>
305-
<dict>
306-
<key>CFBundleTypeExtensions</key>
307-
<array>
308-
<string>pdex</string>
309-
</array>
310-
<key>LSTypeIsPackage</key>
311-
<false/>
312-
<key>CFBundleTypeIconFile</key>
313-
<string>macos/pdex.icns</string>
314-
<key>CFBundleTypeName</key>
315-
<string>Processing Contribution Bundle</string>
316-
<key>CFBundleTypeRole</key>
317-
<string>Viewer</string>
318-
</dict>
319-
</array>
320-
<key>NSCameraUsageDescription</key>
321-
<string>The sketch you're running needs access to your video camera.</string>
322-
<key>NSMicrophoneUsageDescription</key>
323-
<string>The sketch you're running needs access to your microphone.</string>
324-
"""
257+
}

0 commit comments

Comments
 (0)