4
4
name : Binaries (JDK and JavaFX early access builds)
5
5
6
6
on :
7
- schedule :
8
- - cron : " 0 18 * * *"
9
7
pull_request :
10
8
types :
11
9
- opened
@@ -121,9 +119,8 @@ jobs:
121
119
needs : [conditions]
122
120
if : ${{ needs.conditions.outputs.should-build == 'true' }}
123
121
env :
124
- javafx : ' 25'
125
- jdk_version : ' 25'
126
- jdk : ' openjdk-25.0.0-ea+21'
122
+ jdk_version : ' 24'
123
+ jdk_distribution : ' openjdk-25.0.0-ea+27'
127
124
strategy :
128
125
fail-fast : false
129
126
matrix :
@@ -134,6 +131,13 @@ jobs:
134
131
archivePortable : tar -c -C jabgui/build/distribution JabRef | pigz --rsyncable > jabgui/build/distribution/JabRef-portable_linux.tar.gz && rm -R jabgui/build/distribution/JabRef
135
132
archivePortableJabKit : tar -c -C jabkit/build/distribution jabkit | pigz --rsyncable > jabkit/build/distribution/jabkit-portable_linux.tar.gz && rm -R jabkit/build/distribution/jabkit
136
133
suffix : ' -ea'
134
+ archForDebianRepack : " _amd64"
135
+ - os : ubuntu-22.04-arm
136
+ displayName : linux-arm
137
+ archivePortable : tar -c -C jabgui/build/distribution JabRef | pigz --rsyncable > jabgui/build/distribution/JabRef-portable_linux_arm64.tar.gz && rm -R jabgui/build/distribution/JabRef
138
+ archivePortableJabKit : tar -c -C jabkit/build/distribution jabkit | pigz --rsyncable > jabkit/build/distribution/jabkit-portable_linux_arm64.tar.gz && rm -R jabkit/build/distribution/jabkit
139
+ suffix : ' -ea_arm64'
140
+ archForDebianRepack : ' _arm64'
137
141
- os : windows-latest
138
142
displayName : windows
139
143
archivePortable : 7z a -r jabgui/build/distribution/JabRef-portable_windows.zip ./jabgui/build/distribution/JabRef && rm -R jabgui/build/distribution/JabRef
@@ -145,6 +149,7 @@ jobs:
145
149
- os : macos-14
146
150
displayName : macOS (ARM64)
147
151
suffix : ' -ea_arm64'
152
+ archForDebianRepack : " "
148
153
runs-on : ${{ matrix.os }}
149
154
outputs :
150
155
major : ${{ steps.gitversion.outputs.Major }}
@@ -159,7 +164,7 @@ jobs:
159
164
submodules : ' true'
160
165
show-progress : ' false'
161
166
- name : Install pigz and cache (linux)
162
- if : (matrix.os == 'ubuntu-22.04' )
167
+ if : (startsWith( matrix.os, 'ubuntu') )
163
168
uses : awalsh128/cache-apt-pkgs-action@latest
164
169
with :
165
170
packages : pigz
@@ -175,37 +180,47 @@ jobs:
175
180
- name : Tell gradle to use JDK ${{ env.jdk_version }} (linux, Windows)
176
181
if : ${{ !startsWith(matrix.os, 'macos') }}
177
182
run : |
178
- sed -i "s/JavaLanguageVersion.of(24)/JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
179
- sed -i "s#vendor = JvmVendorSpec.AZUL##" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
180
- cat build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
183
+ # Update JavaLanguageVersion
184
+ sed -i "s/JavaLanguageVersion.of..../JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
185
+
186
+ # Update options.release
187
+ sed -i "s/options\.release = ../options.release = ${{ env.jdk_version }}/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
188
+
189
+ # Use default vendor
190
+ # sed -i "s#vendor = JvmVendorSpec\..*##" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
191
+
192
+ cat build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
181
193
- name : Tell gradle to use JDK ${{ env.jdk_version }} (macOS)
182
194
if : ${{ startsWith(matrix.os, 'macos') }}
183
195
run : |
184
- sed -i '.bak' "s/JavaLanguageVersion.of(24)/JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
185
- sed -i '.bak' "s#vendor = JvmVendorSpec.AZUL##" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
186
- cat build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
196
+ sed -i '.bak' "s/JavaLanguageVersion.of..../JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
197
+ sed -i '.bak' "s/options\.release = ../options.release = ${{ env.jdk_version }}/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
198
+ # sed -i '.bak' "s#vendor = JvmVendorSpec\..*##" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
199
+ cat build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
187
200
188
201
# region setup-JDK
189
202
- name : Setup JDK ${{ env.jdk_version }} (${{ env.jdk }}) for "java toolchain" of Gradle
203
+ if : false
190
204
uses : jdx/mise-action@v2
191
205
with :
192
206
mise_toml : |
193
207
[tools]
194
- java = { version = "${{ env.jdk }}", release_type = "ea" }
208
+ java = { version = "${{ env.jdk_distribution }}", release_type = "ea" }
195
209
- name : Debug
210
+ if : false
196
211
shell : bash
197
212
run : |
198
213
set -x
199
214
set -e
200
215
echo $JAVA_HOME
201
216
java --version
202
217
- name : Make JDK known to gradle (Linux, macOS)
203
- if : (matrix.os != 'windows-latest')
218
+ if : false && (matrix.os != 'windows-latest')
204
219
shell : bash
205
220
# Hint by https://github.com/gradle/gradle/issues/29355#issuecomment-2598556970
206
221
run : ln -s ~/.local/share/mise ~/.asdf
207
222
- name : Make JDK known to gradle (Windows)
208
- if : (matrix.os == 'windows-latest')
223
+ if : false && (matrix.os == 'windows-latest')
209
224
shell : bash
210
225
run : mv ~/AppData/Local/mise ~/.asdf
211
226
- name : Setup JDK for gradle itself
@@ -216,94 +231,27 @@ jobs:
216
231
# endregion
217
232
218
233
# region JavaFX
219
- - name : Download and extract JavaFX ${{ env.javafx }}
220
- if : (matrix.os != 'buildjet-8vcpu-ubuntu-2204-arm')
234
+ - name : ' Determine latest JavaFX version '
235
+ id : javafx
221
236
shell : bash
222
237
run : |
223
238
set -e
224
- set -x
225
- mkdir javafx
226
- cd javafx
227
- curl --no-progress-meter https://jdk.java.net/javafx${{ env.javafx }}/ > javafx.html
228
-
229
- case "${{ matrix.os }}" in
230
- "ubuntu-22.04")
231
- OS="linux-x64"
232
- EXTRACT="tar xzf *.tar.gz"
233
- EXT="tar.gz"
234
- ;;
235
- "windows-latest")
236
- OS="windows-x64"
237
- EXTRACT="unzip -qq *.zip"
238
- EXT="zip"
239
- ;;
240
- "macos-13")
241
- OS="macos-x64"
242
- EXTRACT="tar xzf *.tar.gz"
243
- EXT="tar.gz"
244
- ;;
245
- "macos-14")
246
- OS="macos-aarch64"
247
- EXTRACT="tar xzf *.tar.gz"
248
- EXT="tar.gz"
249
- ;;
250
- *)
251
- echo "Unsupported OS"
252
- exit 1
253
- ;;
254
- esac
255
- echo "OS set to $OS"
256
-
257
- URL_SDK=$(grep -o "https://download.java.net/java/.*/javafx.*${OS}_bin-sdk.${EXT}" javafx.html | head -n 1)
258
- echo "Downloading $URL_SDK..."
259
- curl -OJ --no-progress-meter $URL_SDK
260
- $EXTRACT
261
- rm *.$EXT
262
-
263
- URL_JMODS=$(grep -o "https://download.java.net/java/.*/javafx.*${OS}_bin-jmods.${EXT}" javafx.html | head -n 1)
264
- echo "Downloading $URL_JMODS..."
265
- curl -OJ --no-progress-meter $URL_JMODS
266
- $EXTRACT
267
- rm *.$EXT
268
-
269
- ls -la
270
- - name : ' Set JavaFX ${{ env.javafx }} (linux, Windows)'
271
- if : ${{ !startsWith(matrix.os, 'macos') && (matrix.os != 'buildjet-8vcpu-ubuntu-2204-arm') }}
239
+ curl -s "https://search.maven.org/solrsearch/select?q=g:org.openjfx+AND+a:javafx&rows=10&core=gav" > /tmp/versions.json
240
+ jq '[.response.docs[] | select(.v | test(".*-ea\\+.*")) | select(.v | test("^17|^18|^19|^20|^21|^22|^23") | not) | {version: .v}] | group_by(.version | capture("^(?<major>\\d+).*").major) | map(max_by(.version))' < /tmp/versions.json > /tmp/versions-latest.json
241
+ JAVAFX=$(jq -r '.[-1].version' /tmp/versions-latest.json)
242
+ echo "Using JavaFX ${JAVAFX}"
243
+ echo "version=${JAVAFX}" >> $GITHUB_OUTPUT
244
+ - name : ' Set JavaFX ${{ steps.javafx.output.version }} (linux, Windows)'
245
+ if : ${{ !startsWith(matrix.os, 'macos') }}
272
246
shell : bash
273
247
run : |
274
248
set -e
275
- shopt -s globstar
276
- for buildgradle in **/build.gradle.kts; do
277
- sed -i '/javafx {/{n;s#version = ".*"#sdk = "../javafx/javafx-sdk-${{ env.javafx }}"#}' $buildgradle
278
- sed -i "s#jlink {#jlink { addExtraModulePath(\"../javafx/javafx-jmods-${{ env.javafx }}\")#" $buildgradle
279
- echo "=========="
280
- echo $buidgradle
281
- echo "=========="
282
- cat $buildgradle
283
- done
284
- - name : ' Set JavaFX ${{ env.javafx }} (macOS)'
249
+ sed -i 's/val javafx = ".*/val javafx = "${{ steps.javafx.outputs.version }}"/' versions/build.gradle.kts
250
+ - name : ' Set JavaFX ${{ steps.javafx.output.version }} (macOS)'
285
251
if : startsWith(matrix.os, 'macos')
286
252
run : |
287
253
set -e
288
- find . -name 'build.gradle.kts' | while read -r buildgradle; do
289
- sed -i '.bak' -e '/javafx {/{n' -e 's#version = ".*"#sdk = "../javafx/javafx-sdk-${{ env.javafx }}"#;}' $buildgradle
290
- sed -i '.bak' -e "s#jlink {#jlink { addExtraModulePath(\"../javafx/javafx-jmods-${{ env.javafx }}\")#" $buildgradle
291
- cat $buildgradle
292
- done
293
- - name : ' Set JavaFX ${{ env.javafx }} (linux-arm)'
294
- if : (matrix.os == 'buildjet-8vcpu-ubuntu-2204-arm')
295
- # No JavaFX EA build for ARM at https://jdk.java.net/javafx23/, therefore using Maven Central artifact
296
- run : |
297
- set -e
298
- curl -s "https://search.maven.org/solrsearch/select?q=g:org.openjfx+AND+a:javafx&rows=10&core=gav" > /tmp/versions.json
299
- jq '[.response.docs[] | select(.v | test(".*-ea\\+.*")) | select(.v | test("^17|^18|^19|^20|^21|^22") | not) | {version: .v}] | group_by(.version | capture("^(?<major>\\d+).*").major) | map(max_by(.version))' < /tmp/versions.json > /tmp/versions-latest.json
300
- JAVAFX=$(jq -r '.[-1].version' /tmp/versions-latest.json)
301
- echo "Using JavaFX ${JAVAFX}"
302
- shopt -s globstar
303
- for buildgradle in **/build.gradle.kts; do
304
- sed -i "/javafx {/{n;s#version = \".*\"#version = \"${JAVAFX}\"#}" $buildgradle
305
- cat $buildgradle
306
- done
254
+ sed -i '.bak' 's/val javafx = ".*/val javafx = "${{ steps.javafx.outputs.version }}"/' versions/build.gradle.kts
307
255
# endregion
308
256
309
257
- name : Setup Gradle
@@ -450,16 +398,17 @@ jobs:
450
398
get-childitem -Path jabgui/build/distribution/* | rename-item -NewName {$_.name -replace "${{ steps.gitversion.outputs.AssemblySemVer }}","${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}"}
451
399
get-childitem -Path jabgui/build/distribution/* | rename-item -NewName {$_.name -replace "portable","${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}-portable"}
452
400
- name : Repack deb file for Debian
453
- if : (matrix.os == 'ubuntu-22.04' )
401
+ if : (startsWith( matrix.os, 'ubuntu') )
454
402
shell : bash
455
403
run : |
456
404
cd jabgui/build/distribution
457
- ar x jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}_amd64.deb
405
+ ls -l
406
+ ar x jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}${{ matrix.archForDebianRepack }}.deb
458
407
zstd -d < control.tar.zst | xz > control.tar.xz
459
408
zstd -d < data.tar.zst | xz > data.tar.xz
460
- ar -m -c -a sdsd jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}_amd64_repackaged .deb debian-binary control.tar.xz data.tar.xz
409
+ ar -m -c -a sdsd jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}${{ matrix.archForDebianRepack }}_repackaged .deb debian-binary control.tar.xz data.tar.xz
461
410
rm debian-binary control.tar.* data.tar.*
462
- mv -f jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}_amd64_repackaged. deb jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}_amd64 .deb
411
+ mv -f jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}${{ matrix.archForDebianRepack }}_repackaged. deb jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}.deb
463
412
464
413
- name : Build JabKit
465
414
shell : bash
0 commit comments