Skip to content

Commit a4e3b92

Browse files
authored
Merge branch 'main' into feature/static-analysis-fixes
2 parents f37e553 + ec413c0 commit a4e3b92

File tree

204 files changed

+4574
-1958
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

204 files changed

+4574
-1958
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
Closes #_____
1+
Closes _____
2+
<!-- LINK THE ISSUE WITH THE "Closes" KEYWORD. Example: Closes https://github.com/JabRef/jabref/issues/13109 OR Closes #13109 -->
23

3-
In about one to three sentences, describe the changes you have made: what, where, why, ...
4+
<!-- In about one to three sentences, describe the changes you have made: what, where, why, ... (REPLACE THIS LINE) -->
45

56
<!-- NOTE: If your work is not yet complete, please open a draft pull request. In that case, outline your intended next steps. Do you need feedback? Will you continue in parallel? ... -->
67

78
### Steps to test
89

9-
Describe how reviewers can test this fix/feature. Ideally, think of how you would guide a beginner user of Jabef to try out your change.
10-
You can add screenshots or videos (using [Loom](https://www.loom.com/) or by just adding .mp4 files).
10+
<!-- Describe how reviewers can test this fix/feature. Ideally, think of how you would guide a beginner user of Jabef to try out your change. -->
11+
<!-- You can add screenshots or videos (using Loom - https://www.loom.com or by just adding .mp4 files). -->
12+
<!-- (REPLACE THIS PARAGRAPH) -->
1113

1214
<!-- YOU HAVE TO MODIFY THE ABOVE TEXT FIT YOUR PR. OTHERWISE, YOUR PR WILL BE CLOSED WITHOUT FURTHER COMMENT. -->
13-
<!-- LINK THE ISSUE WITH THE "Closes" KEYWORD. Example: Closes (link) OR Closes #12345 -->
1415

1516
### Mandatory checks
1617

@@ -19,7 +20,7 @@ Go through the checklist below. It is mandatory, even for a draft pull request.
1920
2021
Keep ALL the items. Replace the dots inside [.] and mark them as follows:
2122
[x] done
22-
[ ] not done
23+
[ ] TODO (yet to be done)
2324
[/] not applicable
2425
-->
2526

.github/dependabot.yml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,8 @@ version: 2
22
updates:
33
- package-ecosystem: gradle
44
directories:
5-
- "/build-logic" # Build-related logic for gradle
6-
- "/jabgui" # JabRef's GUI
7-
- "/jabkit" # JabRef's CLI ("JabKit")
8-
- "/jablib" # Core library
9-
- "/jabsrv" # Server-related module
10-
- "/jabsrv-cli" # CLI for the server
11-
- "/test-support" # Module for test utilities
5+
- "/build-logic" # versions of 3rd party gradle plugins
6+
- "/versions" # versions of 3rd party dependencies of all JabRef modules
127
schedule:
138
interval: weekly
149
labels:

.github/workflows/automerge.yml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,19 @@ jobs:
1111
# Run only if PR is inside JabRef's main repository and created by dependabot or by an update workflow
1212
if: >
1313
(github.repository == 'JabRef/jabref') &&
14-
(github.event.pull_request.head.repo.full_name == 'JabRef/jabref') &&
1514
(
16-
(github.actor == 'dependabot[bot]') ||
15+
(github.actor == 'renovate-bot' && startsWith(github.event.pull_request.title, 'chore(deps):')) ||
1716
(
18-
startsWith(github.event.pull_request.title, '[Bot] ') ||
19-
startsWith(github.event.pull_request.title, 'Bump ') ||
20-
startsWith(github.event.pull_request.title, 'New Crowdin updates') ||
21-
startsWith(github.event.pull_request.title, 'Update Gradle Wrapper from')
17+
(github.event.pull_request.head.repo.full_name == 'JabRef/jabref') &&
18+
(
19+
(github.actor == 'dependabot[bot]') ||
20+
(
21+
startsWith(github.event.pull_request.title, '[Bot] ') ||
22+
startsWith(github.event.pull_request.title, 'Bump ') ||
23+
startsWith(github.event.pull_request.title, 'New Crowdin updates') ||
24+
startsWith(github.event.pull_request.title, 'Update Gradle Wrapper from')
25+
)
26+
)
2227
)
2328
)
2429
steps:

.github/workflows/binaries-ea.yml

Lines changed: 47 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
name: Binaries (JDK and JavaFX early access builds)
55

66
on:
7-
schedule:
8-
- cron: "0 18 * * *"
97
pull_request:
108
types:
119
- opened
@@ -121,9 +119,8 @@ jobs:
121119
needs: [conditions]
122120
if: ${{ needs.conditions.outputs.should-build == 'true' }}
123121
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'
127124
strategy:
128125
fail-fast: false
129126
matrix:
@@ -134,6 +131,13 @@ jobs:
134131
archivePortable: tar -c -C jabgui/build/distribution JabRef | pigz --rsyncable > jabgui/build/distribution/JabRef-portable_linux.tar.gz && rm -R jabgui/build/distribution/JabRef
135132
archivePortableJabKit: tar -c -C jabkit/build/distribution jabkit | pigz --rsyncable > jabkit/build/distribution/jabkit-portable_linux.tar.gz && rm -R jabkit/build/distribution/jabkit
136133
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'
137141
- os: windows-latest
138142
displayName: windows
139143
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:
145149
- os: macos-14
146150
displayName: macOS (ARM64)
147151
suffix: '-ea_arm64'
152+
archForDebianRepack: ""
148153
runs-on: ${{ matrix.os }}
149154
outputs:
150155
major: ${{ steps.gitversion.outputs.Major }}
@@ -159,7 +164,7 @@ jobs:
159164
submodules: 'true'
160165
show-progress: 'false'
161166
- name: Install pigz and cache (linux)
162-
if: (matrix.os == 'ubuntu-22.04')
167+
if: (startsWith(matrix.os, 'ubuntu'))
163168
uses: awalsh128/cache-apt-pkgs-action@latest
164169
with:
165170
packages: pigz
@@ -175,37 +180,47 @@ jobs:
175180
- name: Tell gradle to use JDK ${{ env.jdk_version }} (linux, Windows)
176181
if: ${{ !startsWith(matrix.os, 'macos') }}
177182
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
181193
- name: Tell gradle to use JDK ${{ env.jdk_version }} (macOS)
182194
if: ${{ startsWith(matrix.os, 'macos') }}
183195
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
187200
188201
# region setup-JDK
189202
- name: Setup JDK ${{ env.jdk_version }} (${{ env.jdk }}) for "java toolchain" of Gradle
203+
if: false
190204
uses: jdx/mise-action@v2
191205
with:
192206
mise_toml: |
193207
[tools]
194-
java = { version = "${{ env.jdk }}", release_type = "ea" }
208+
java = { version = "${{ env.jdk_distribution }}", release_type = "ea" }
195209
- name: Debug
210+
if: false
196211
shell: bash
197212
run: |
198213
set -x
199214
set -e
200215
echo $JAVA_HOME
201216
java --version
202217
- name: Make JDK known to gradle (Linux, macOS)
203-
if: (matrix.os != 'windows-latest')
218+
if: false && (matrix.os != 'windows-latest')
204219
shell: bash
205220
# Hint by https://github.com/gradle/gradle/issues/29355#issuecomment-2598556970
206221
run: ln -s ~/.local/share/mise ~/.asdf
207222
- name: Make JDK known to gradle (Windows)
208-
if: (matrix.os == 'windows-latest')
223+
if: false && (matrix.os == 'windows-latest')
209224
shell: bash
210225
run: mv ~/AppData/Local/mise ~/.asdf
211226
- name: Setup JDK for gradle itself
@@ -216,94 +231,27 @@ jobs:
216231
# endregion
217232

218233
# 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
221236
shell: bash
222237
run: |
223238
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') }}
272246
shell: bash
273247
run: |
274248
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)'
285251
if: startsWith(matrix.os, 'macos')
286252
run: |
287253
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
307255
# endregion
308256

309257
- name: Setup Gradle
@@ -450,16 +398,17 @@ jobs:
450398
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 }}"}
451399
get-childitem -Path jabgui/build/distribution/* | rename-item -NewName {$_.name -replace "portable","${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}-portable"}
452400
- name: Repack deb file for Debian
453-
if: (matrix.os == 'ubuntu-22.04')
401+
if: (startsWith(matrix.os, 'ubuntu'))
454402
shell: bash
455403
run: |
456404
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
458407
zstd -d < control.tar.zst | xz > control.tar.xz
459408
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
461410
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
463412
464413
- name: Build JabKit
465414
shell: bash

0 commit comments

Comments
 (0)