diff --git a/.github/build.sh b/.github/build.sh index 3820a247..523abeb8 100755 --- a/.github/build.sh +++ b/.github/build.sh @@ -1,55 +1,3 @@ #!/bin/sh - -# Discern whether this is a release build. -releasing= -if [ -f release.properties ]; then - releasing=1 -fi - -# Run the SciJava CI build script. -curl -fsLO https://raw.githubusercontent.com/scijava/scijava-scripts/master/ci-build.sh && -sh ci-build.sh || { echo "Maven build failed. Skipping melting pot tests."; exit 1; } - -# Skip melting pot if cutting a release. -if [ "$releasing" ]; then - exit 0 -fi - -# Helper method to get the last cache modified date as seconds since epoch -last_cache_modified() { - find "$HOME/.cache/scijava/melting-pot" -type f | while read f - do - stat -c '%Y' "$f" - done | sort -nr 2>/dev/null | head -n1 -} - -# Record the last time of cache modification before running melting-pot -cache_modified_pre=0 -cache_modified_post=0 - -if [ -d "$HOME/.cache/scijava/melting-pot" ]; then - cache_modified_pre=$(last_cache_modified) -fi - -# run melting-pot -tests/run.sh -meltResult=$? - -# Record the last time of cache modification after running melting-pot -if [ -d "$HOME/.cache/scijava/melting-pot" ]; then - cache_modified_post=$(last_cache_modified) -fi - -# Determine if cache needs to be re-generated -echo "cache_modified_pre=$cache_modified_pre" -echo "cache_modified_post=$cache_modified_post" -if [ "$cache_modified_post" -gt "$cache_modified_pre" ]; then - echo "cacheChanged=true" - echo "cacheChanged=true" >> $GITHUB_ENV -else - echo "cacheChanged=false" - echo "cacheChanged=false" >> $GITHUB_ENV -fi - -# NB: This script exits 0, but saves the exit code for a later build step. -echo $meltResult > exit-code +curl -fsLO https://raw.githubusercontent.com/scijava/scijava-scripts/main/ci-build.sh +sh ci-build.sh diff --git a/.github/delete-cache.sh b/.github/delete-cache.sh new file mode 100755 index 00000000..6c3dbb9c --- /dev/null +++ b/.github/delete-cache.sh @@ -0,0 +1,5 @@ +#!/bin/sh +test "$1" || { echo "Usage: delete-cache.sh cache-key"; exit 1; } +gh api --method DELETE \ + -H "Accept: application/vnd.github+json" \ + "/repos/scijava/pom-scijava/actions/caches?key=$1" || true diff --git a/.github/exit.sh b/.github/exit.sh deleted file mode 100755 index b5ab4d19..00000000 --- a/.github/exit.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -test -f exit-code || { - echo "[ERROR] No build exit code was saved!" - exit 255 -} -exitCode=$(cat exit-code) -rm -f exit-code -exit $exitCode diff --git a/.github/publish.sh b/.github/publish.sh new file mode 100755 index 00000000..997d0ffa --- /dev/null +++ b/.github/publish.sh @@ -0,0 +1,50 @@ +#!/bin/sh +# Commit a file to the status.scijava.org gh-pages branch. +# Requires SSH agent to be running with write access to status.scijava.org. +set -e + +test $# -gt 1 || { + echo "Usage: publish.sh \"Commit message\" file1 [file2 ...]" + exit 2 +} + +datestamp="$(TZ=UTC date +'%Y-%m-%d %H:%M:%S UTC')" +message="$1 ($datestamp)" +shift + +git config --global user.name "SciJava CI" +git config --global user.email ci@scijava.org + +dest_dir=site-publish + +git clone --depth=1 --branch=gh-pages git@github.com:scijava/status.scijava.org "$dest_dir" + +while [ $# -gt 0 ] +do + file=$1 + shift + test -f "$file" || { echo "File not found: $file" >&2; exit 1; } + dest=$(basename "$file") + cp "$file" "$dest_dir/$dest" + (cd "$dest_dir" && git add "$dest") +done + +cd "$dest_dir" +# Check staged changes (--cached): the files above were already `git add`ed, so +# a plain `git diff` would see an always-clean working tree and never commit. +if git diff --cached --quiet +then + echo "== No changes ==" +else + echo "== Committing changes ==" + git commit -m "$message" + # Retry against concurrent publishers (the build and status workflows both + # push here), rebasing onto whatever landed in between. + n=0 + until git push + do + n=$((n + 1)) + test "$n" -lt 5 || { echo "push failed after $n attempts" >&2; exit 1; } + git pull --rebase + done +fi diff --git a/.github/setup-build.sh b/.github/setup-build.sh new file mode 100755 index 00000000..bdc2ff72 --- /dev/null +++ b/.github/setup-build.sh @@ -0,0 +1,10 @@ +#!/bin/sh +curl -fsLO https://raw.githubusercontent.com/scijava/scijava-scripts/main/ci-setup-github-actions.sh +sh ci-setup-github-actions.sh + +# Install native libraries needed to smelt components. +pkgs="libxcb-shape0" # org.janelia:H5J_Loader_Plugin +pkgs="$pkgs libgtk2.0-0" # net.imagej:imagej-opencv +pkgs="$pkgs libblosc1" # org.janelia.saalfeldlab:n5-blosc +sudo apt-get update +sudo apt-get -y install $pkgs diff --git a/.github/setup-release.sh b/.github/setup-release.sh new file mode 100755 index 00000000..a03464be --- /dev/null +++ b/.github/setup-release.sh @@ -0,0 +1,3 @@ +#!/bin/sh +curl -fsLO https://raw.githubusercontent.com/scijava/scijava-scripts/main/ci-setup-github-actions.sh +sh ci-setup-github-actions.sh diff --git a/.github/setup.sh b/.github/setup.sh deleted file mode 100755 index 4ca47041..00000000 --- a/.github/setup.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -curl -fsLO https://raw.githubusercontent.com/scijava/scijava-scripts/master/ci-setup-github-actions.sh -sh ci-setup-github-actions.sh - -# Install needed packages. -pkgs="libxml2-utils" # needed for melting pot -pkgs="$pkgs libxcb-shape0" # org.janelia:H5J_Loader_Plugin (fiji/H5J_Loader_Plugin@d026a1bb) -pkgs="$pkgs libgtk2.0-0" # net.imagej:imagej-opencv (imagej/imagej-opencv@21113e08) -pkgs="$pkgs libblosc1" # org.janelia.saalfeldlab:n5-blosc -sudo apt-get update -sudo apt-get -y install $(echo "$pkgs") diff --git a/.github/status.sh b/.github/status.sh new file mode 100755 index 00000000..0ff55954 --- /dev/null +++ b/.github/status.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# CI orchestrator for the status dashboard: fetch the most recently published +# smelt.json, regenerate the status/badges/team reports from it, and publish +# them to status.scijava.org. The report generation itself lives in +# bin/report.sh so it can be run outside CI too. +set -e + +# Pull the most recently published smelt results so that `pombast status` can +# classify each available version bump by its bytecode-floor blast radius +# (flat / local / cascading / excluded). Read straight from the gh-pages branch +# rather than https://status.scijava.org/, so we pick up a freshly committed +# smelt.json immediately instead of waiting on the asynchronous Pages deploy. +# +# Best-effort: if smelt.json is not published yet (or the fetch fails), +# bin/report.sh still generates the reports -- just without the classification. +smelt_url=https://raw.githubusercontent.com/scijava/status.scijava.org/gh-pages/smelt.json +mkdir -p target/pombast +curl -fsSL -o target/pombast/smelt.json "$smelt_url" || + echo "== smelt.json unavailable; running status without classification ==" + +bin/report.sh + +.github/publish.sh "Update status reports" \ + target/pombast/index.html \ + target/pombast/badges.json \ + target/pombast/team.html \ + target/pombast/team.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0a83a169..1df2f9e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,59 +8,104 @@ on: branches: - master schedule: - - cron: "4 5 * * 0" # every Sunday at 0405, to keep cache alive + # Run weekly on Sunday to keep the Maven cache alive. + - cron: '4 5 * * 0' + +# Queue runs of the same ref; cancel superseded PR builds (they never publish). +concurrency: + group: build-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: build: runs-on: ubuntu-latest + permissions: + actions: write # needed to delete and re-save the pombast cache steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 + - name: Set up Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: - java-version: '8' + java-version: '11' java-package: 'jdk+fx' distribution: 'zulu' cache: 'maven' - - name: Set up CI environment - run: .github/setup.sh + - uses: astral-sh/setup-uv@v6 - - name: Restore the melting-pot cache - id: restore-cache - uses: actions/cache/restore@v3 + - uses: webfactory/ssh-agent@v0.9.0 + if: github.ref == 'refs/heads/master' && github.event_name == 'push' with: - path: ~/.cache/scijava/melting-pot - key: ${{ runner.os }}-cache + ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + + - name: Set up build environment + run: .github/setup-build.sh + shell: bash - - name: Execute the build - id: execute-build + - name: Maven CI build run: .github/build.sh + shell: bash env: GPG_KEY_NAME: ${{ secrets.GPG_KEY_NAME }} GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} MAVEN_USER: ${{ secrets.MAVEN_USER }} MAVEN_PASS: ${{ secrets.MAVEN_PASS }} - OSSRH_PASS: ${{ secrets.OSSRH_PASS }} + CENTRAL_USER: ${{ secrets.CENTRAL_USER }} + CENTRAL_PASS: ${{ secrets.CENTRAL_PASS }} SIGNING_ASC: ${{ secrets.SIGNING_ASC }} - - name: Delete the melting-pot cache - if: env.cacheChanged == 'true' - id: delete-cache - run: | - gh api --method DELETE -H "Accept: application/vnd.github+json" /repos/scijava/pom-scijava/actions/caches?key=${{ runner.os }}-cache || true + - name: Restore pombast cache + uses: actions/cache/restore@v4 + with: + # pombast: success/timestamp caches; cjdk: downloaded JDKs + Maven; + # jgo: per-artifact bytecode-scan results. (~/.m2 is cached above by + # setup-java's cache: 'maven'.) + path: | + ~/.cache/pombast + ~/.cache/cjdk + ~/.cache/jgo + key: ${{ runner.os }}-pombast-build + + - name: Run pombast checks (melt + smelt) + run: bin/check.sh + shell: bash + env: + COLUMNS: '200' # widen Rich tables so log output is legible + + - name: Upload pombast logs + if: always() + uses: actions/upload-artifact@v4 + with: + name: pombast-logs + # mega-melt validation.log + dependency-tree.log + per-component build + # logs, plus the smelt report. Lets us diagnose melt/smelt failures + # without waiting on a status.scijava.org deploy. + path: | + target/pombast/**/*.log + target/pombast/smelt.json + if-no-files-found: warn + retention-days: 14 + + - name: Delete old pombast cache + if: always() + run: .github/delete-cache.sh "${{ runner.os }}-pombast-build" + shell: bash env: - GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Save the melting-pot cache - if: env.cacheChanged == 'true' - id: save-cache - uses: actions/cache/save@v3 + - name: Save pombast cache + if: always() + uses: actions/cache/save@v4 with: - path: ~/.cache/scijava/melting-pot - key: ${{ runner.os }}-cache + path: | + ~/.cache/pombast + ~/.cache/cjdk + ~/.cache/jgo + key: ${{ runner.os }}-pombast-build - - name: Return the exit code - id: exit-build - run: .github/exit.sh + - name: Publish smelt results + if: always() && github.ref == 'refs/heads/master' && github.event_name == 'push' + run: .github/publish.sh "Update smelt results" target/pombast/smelt.json + shell: bash diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2bc2a513..27edfcb2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,25 +10,27 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: - java-version: '8' + java-version: '11' java-package: 'jdk+fx' distribution: 'zulu' cache: 'maven' - - name: Set up CI environment - run: .github/setup.sh + - name: Set up release environment + run: .github/setup-release.sh + shell: bash - - name: Execute the build - id: execute-build + - name: Execute the release run: .github/build.sh + shell: bash env: GPG_KEY_NAME: ${{ secrets.GPG_KEY_NAME }} GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} MAVEN_USER: ${{ secrets.MAVEN_USER }} MAVEN_PASS: ${{ secrets.MAVEN_PASS }} - OSSRH_PASS: ${{ secrets.OSSRH_PASS }} + CENTRAL_USER: ${{ secrets.CENTRAL_USER }} + CENTRAL_PASS: ${{ secrets.CENTRAL_PASS }} SIGNING_ASC: ${{ secrets.SIGNING_ASC }} diff --git a/.github/workflows/status.yml b/.github/workflows/status.yml new file mode 100644 index 00000000..67038f36 --- /dev/null +++ b/.github/workflows/status.yml @@ -0,0 +1,115 @@ +name: status + +on: + schedule: + # Run daily at 0500 UTC. + - cron: '0 5 * * *' + # Run right after the build workflow publishes a fresh smelt.json, so the + # status page picks up new bytecode classification immediately rather than + # waiting for the next daily run. The job-level guard below restricts this to + # master pushes, the only builds that republish smelt.json. + workflow_run: + workflows: [build] + types: [completed] + +# Serialize status runs (daily cron + each build completion) so two never push +# to the status.scijava.org gh-pages branch at the same time. +concurrency: + group: status-publish + cancel-in-progress: false + +jobs: + status: + runs-on: ubuntu-latest + # Restrict to the canonical repo, since scheduled (cron) triggers fire on + # every fork's default branch too, regardless of push activity there. + # Beyond that: scheduled runs always proceed, while workflow_run runs only + # when the triggering build was a push to master (i.e. one that + # republished smelt.json). + if: >- + github.repository == 'scijava/pom-scijava' && + (github.event_name != 'workflow_run' || + (github.event.workflow_run.event == 'push' && + github.event.workflow_run.head_branch == 'master')) + permissions: + actions: write # needed to delete and re-save caches + + steps: + - uses: actions/checkout@v4 + + - uses: astral-sh/setup-uv@v6 + + - uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + + - name: Restore pombast cache + uses: actions/cache/restore@v4 + with: + # pombast: status caches; jgo: per-artifact bytecode-scan results; + # ~/.m2: candidate JARs that bump classification downloads to scan. + # Persisting these keeps the daily classification from re-downloading + # and re-scanning every candidate on each run. + path: | + ~/.cache/pombast + ~/.cache/jgo + ~/.m2/repository + key: ${{ runner.os }}-pombast-status + + # The monoqueue library is used by pombast to read GitHub issues. + - name: Restore monoqueue cache + uses: actions/cache/restore@v4 + with: + path: ~/.cache/monoqueue + key: ${{ runner.os }}-monoqueue-status + + - name: Generate and publish status and team pages + run: .github/status.sh + shell: bash + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COLUMNS: '200' # widen Rich tables so log output is legible + + - name: Upload status reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: status-reports + path: | + target/pombast/index.html + target/pombast/badges.json + target/pombast/team.html + target/pombast/team.json + if-no-files-found: warn + retention-days: 14 + + - name: Delete old pombast status cache + if: always() + run: .github/delete-cache.sh "${{ runner.os }}-pombast-status" + shell: bash + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Save pombast cache + if: always() + uses: actions/cache/save@v4 + with: + path: | + ~/.cache/pombast + ~/.cache/jgo + ~/.m2/repository + key: ${{ runner.os }}-pombast-status + + - name: Delete old monoqueue cache + if: always() + run: .github/delete-cache.sh "${{ runner.os }}-monoqueue-status" + shell: bash + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Save monoqueue cache + if: always() + uses: actions/cache/save@v4 + with: + path: ~/.cache/monoqueue + key: ${{ runner.os }}-monoqueue-status diff --git a/SNAPSHOTS.md b/SNAPSHOTS.md index ccbdeb5b..2c351611 100644 --- a/SNAPSHOTS.md +++ b/SNAPSHOTS.md @@ -1,52 +1,4 @@ So, you want to run the mega-melt, but with some SNAPSHOTs built from branches? -Here is an example script that does so for the labkit-pixel-classification and -labkit-ui components. Copy this script into a file called `go`, change the -`adjust`... lines below to match the branches of your SNAPSHOT component(s), - and then give it a try with `sh go`! - -```shell -#!/bin/sh - -# Fail on error. -set -e - -# Generate the mega melt structure. -tests/run.sh -s - -# Pull appropriate branches, build artifacts, and install them locally. -adjust() { - dir=$1 - remote=$2 - branch=$3 - cd "target/mega-melt/melting-pot/$dir" - - # fetch the needed branch - git remote add upstream "$remote" - git fetch upstream - - # discard pom.xml hacks - git checkout pom.xml - - # switch to the needed branch - git checkout "upstream/$branch" - - # reapply pom.xml hacks - mv pom.xml pom.xml.original && - sed -E -e 's_(https?://maven.imagej.net|http://maven.scijava.org)_https://maven.scijava.org_g' \ - -e 's_http://maven.apache.org/xsd_https://maven.apache.org/xsd_g' pom.xml.original > pom.xml || - die "Failed to adjust pom.xml" - perl -0777 -i -pe 's/(\s*org.scijava<\/groupId>\s*pom-scijava<\/artifactId>\s*)[^\n]*/${1}999-mega-melt<\/version>/igs' pom.xml - - # build and install the component - mvn -Denforcer.skip -DskipTests -Dmaven.test.skip -Dinvoker.skip clean install - - cd - >/dev/null -} -adjust sc.fiji/labkit-pixel-classification https://github.com/ctrueden/labkit-pixel-classification bump-to-imglib2-6.1.0 -adjust sc.fiji/labkit-ui https://github.com/ctrueden/labkit-ui bump-to-imglib2-6.1.0 - -# Run the mega melt! -cd target/mega-melt/melting-pot -./melt.sh 2>&1 | tee melt.log -``` +Change the `components=` section of `tests/run.sh script` to include +your changed components, as documented in the comment block there! diff --git a/bin/check.sh b/bin/check.sh new file mode 100755 index 00000000..87fe6f18 --- /dev/null +++ b/bin/check.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# Validate a Maven BOM's managed components against each other: +# +# melt -- mega-melt classpath check (duplicate classes, SNAPSHOTs, enforcer) +# smelt -- per-component build + test against the BOM-pinned dependency set +# +# Both phases always run, so a failure in one (e.g. duplicate classes in melt) +# never hides real incompatibilities surfaced by the other. The script exits +# non-zero if either phase found a problem. +# +# Run from a BOM checkout (e.g. a pom-scijava working copy): +# +# bin/check.sh +# +# Outputs land under target/pombast/ (see pombast.toml). +command -v pombast >/dev/null 2>&1 || + uv tool install "git+https://github.com/scijava/pombast.git" + +rc=0 +pombast melt || rc=$? +pombast smelt || rc=$? +exit $rc diff --git a/bin/report.sh b/bin/report.sh new file mode 100755 index 00000000..58b0f259 --- /dev/null +++ b/bin/report.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# Generate the status, badges, and team reports for a Maven BOM, writing them +# under target/pombast/ (see pombast.toml). +# +# Run from a BOM checkout (e.g. a pom-scijava working copy): +# +# bin/report.sh +# +# The status report overlays binary/source compatibility info from +# target/pombast/smelt.json when present. Run bin/check.sh first, or drop a +# published smelt.json into target/pombast/, to populate it; without it, the +# reports are still generated, just without the bytecode classification. +command -v pombast >/dev/null 2>&1 || + uv tool install "git+https://github.com/scijava/pombast.git" + +smelt=target/pombast/smelt.json +if [ -f "$smelt" ]; then + pombast status --smelt "$smelt" +else + echo "== $smelt not found; generating status without bytecode classification ==" + pombast status +fi +pombast badges +pombast team diff --git a/gradle-scijava/build.gradle.kts b/gradle-scijava/build.gradle.kts index d54315c1..76e1adc6 100644 --- a/gradle-scijava/build.gradle.kts +++ b/gradle-scijava/build.gradle.kts @@ -14,7 +14,11 @@ plugins { layout.buildDirectory = layout.projectDirectory.asFile.parentFile.resolve("target/gradle") group = "org.scijava" -version = File("../pom.xml").readText().substringAfter("").substringBefore('<') +version = File("../pom.xml") + .readText() + .substringAfter("pom-scijava<") + .substringAfter("") + .substringBefore('<') javaPlatform { allowDependencies() diff --git a/pom.xml b/pom.xml index ea099af1..6b838dd6 100644 --- a/pom.xml +++ b/pom.xml @@ -6,12 +6,12 @@ org.scijava pom-scijava-base - 19.0.0 + 22.0.0 pom-scijava - 38.0.0-SNAPSHOT + 45.1.1-SNAPSHOT pom SciJava Parent POM @@ -305,6 +305,52 @@ + + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + 1.0.0 + ${scijava-collections.version} + ${scijava-common3.version} + ${scijava-concurrent.version} + ${scijava-discovery.version} + ${scijava-function.version} + ${scijava-legacy.version} + ${scijava-meta.version} + ${scijava-ops-api.version} + ${scijava-ops-engine.version} + ${scijava-ops-flim.version} + ${scijava-ops-image.version} + ${scijava-ops-indexer.version} + ${scijava-ops-opencv.version} + ${scijava-ops-spi.version} + ${scijava-priority.version} + ${scijava-progress.version} + ${scijava-struct.version} + ${scijava-taglets.version} + ${scijava-testutil.version} + ${scijava-types.version} + + + 2.3.1 + ${app-launcher.version} + 0.4.2 ${batch-processor.version} @@ -314,7 +360,7 @@ ${junit-benchmarks.version} - 2.2.2 + 2.2.3 ${minimaven.version} @@ -330,13 +376,17 @@ ${scijava-cache.version} - 2.98.0 + 2.100.1 ${scijava-common.version} 2.0.3 ${scijava-config.version} + + 1.0.0 + ${scijava-desktop.version} + 0.1.2 ${scijava-grab.version} @@ -358,7 +408,7 @@ ${scijava-log-slf4j.version} - 1.0.1 + 1.0.2 ${scijava-optional.version} @@ -369,10 +419,6 @@ 0.2.5 ${scijava-plugins-commands.version} - - 0.3.1 - ${scijava-plugins-platforms.version} - 0.1.3 ${scijava-plugins-text-markdown.version} @@ -382,11 +428,11 @@ ${scijava-plugins-text-plain.version} - 2.0.4 + 3.0.1 ${scijava-search.version} - 1.0.2 + 1.0.3 ${scijava-table.version} @@ -394,11 +440,11 @@ ${scijava-ui-awt.version} - 1.0.1 + 1.0.3 ${scijava-ui-swing.version} - 1.1.0 + 1.2.0 ${script-editor.version} @@ -410,11 +456,11 @@ ${script-editor-scala.version} - 0.4.1 + 1.0.0 ${scripting-beanshell.version} - 0.1.6 + 1.0.0 ${scripting-clojure.version} @@ -422,7 +468,7 @@ ${scripting-groovy.version} - 0.4.1 + 1.0.1 ${scripting-java.version} @@ -438,7 +484,7 @@ ${scripting-jython.version} - 0.2.1 + 1.0.0 ${scripting-kotlin.version} @@ -446,7 +492,7 @@ ${scripting-matlab.version} - 0.3.0 + 0.4.1 ${scripting-python.version} @@ -467,34 +513,30 @@ - - 2.15.0 - ${imagej2.version} - ${imagej.version} - - 1.54g + 1.54p ${imagej1.version} ${ij.version} - 1.2.6 + 2.0.0 ${ij1-patcher.version} + + 2.18.0 + ${imagej2.version} + ${imagej.version} + - 2.1.0 + 2.1.1 ${imagej-common.version} 0.2.0 ${imagej-deprecated.version} - - 6.0.2 - ${imagej-launcher.version} - - 1.2.2 + 2.0.3 ${imagej-legacy.version} @@ -502,7 +544,7 @@ ${imagej-matlab.version} - 0.8.1 + 0.8.2 ${imagej-mesh.version} @@ -522,11 +564,11 @@ ${imagej-omero-legacy.version} - 0.1.3 + 0.1.4 ${imagej-opencv.version} - 2.0.0 + 2.2.0 ${imagej-ops.version} @@ -534,7 +576,7 @@ ${imagej-plugins-batch.version} - 0.8.1 + 1.0.0 ${imagej-plugins-commands.version} @@ -550,7 +592,7 @@ ${imagej-plugins-uploader-webdav.version} - 0.8.4 + 1.0.0 ${imagej-scripting.version} @@ -558,7 +600,7 @@ ${imagej-server.version} - 1.1.7 + 1.1.9 ${imagej-tensorflow.version} @@ -566,11 +608,11 @@ ${imagej-ui-awt.version} - 1.0.1 + 1.2.2 ${imagej-ui-swing.version} - 1.0.1 + 2.0.3 ${imagej-updater.version} @@ -580,11 +622,11 @@ - 6.3.0 + 8.0.0 ${imglib2.version} - 0.14.0 + 0.18.3 ${imglib2-algorithm.version} @@ -596,37 +638,41 @@ ${imglib2-algorithm-gpl.version} - 1.0.0-beta-17 + 1.0.0-beta-20 ${imglib2-cache.version} - 2.0.1 + 2.0.3 ${imglib2-ij.version} + + 0.1.0 + ${imglib2-imagej.version} + - 2.0.0 + 2.0.1 ${imglib2-imglyb.version} - 1.0.0 + 1.1.0 ${imglib2-mesh.version} - 4.0.2 + 4.0.5 ${imglib2-realtransform.version} - 0.14.1 + 0.15.2 ${imglib2-roi.version} - 1.0.0 + 1.1.0 ${imglib2-unsafe.version} - 0.46.0 + 0.49.0 ${scifio.version} @@ -646,7 +692,7 @@ ${scifio-jai-imageio.version} - 0.3.1 + 0.4.0 ${scifio-labeling.version} @@ -660,18 +706,18 @@ - 2.15.1 + 2.17.0 ${fiji.version} - <_3D_Blob_Segmentation.version>3.0.2 + <_3D_Blob_Segmentation.version>4.0.0 ${_3D_Blob_Segmentation.version} <_3D_Objects_Counter.version>2.0.1 ${_3D_Objects_Counter.version} - <_3D_Viewer.version>4.0.5 + <_3D_Viewer.version>5.0.1 ${_3D_Viewer.version} 3.4.2 @@ -712,7 +758,7 @@ 3.0.0 ${Cell_Counter.version} - 3.0.6 + 3.1.0 ${Colocalisation_Analysis.version} 2.0.7 @@ -728,10 +774,10 @@ ${CorrectBleach.version} ${CorrectBleach_.version} - 1.0.6 + 1.0.7 ${Correct_3D_Drift.version} - 2.1.8 + 3.0.3 ${Descriptor_based_registration.version} 2.1.2 @@ -757,10 +803,10 @@ 2.1.1 ${Fiji_Package_Maker.version} - 3.1.3 + 3.2.0 ${Fiji_Plugins.version} - 2.0.1 + 3.0.0 ${FilamentDetector.version} 2.0.1 @@ -785,7 +831,7 @@ 2.0.1 ${IJ_Robot.version} - 4.2.2 + 4.3.0 ${IO.version} ${IO_.version} @@ -807,7 +853,7 @@ 2.0.1 ${Kuwahara_Filter.version} - 3.0.0 + 3.0.2 ${KymographBuilder.version} 4.1.2 @@ -841,7 +887,7 @@ 3.0.1 ${Multi_Kymograph.version} - 2.0.0 + 3.0.0 ${OMEVisual.version} 2.0.0 @@ -861,7 +907,7 @@ 2.0.2 ${SPIM_Opener.version} - 5.0.25 + 5.0.26 ${SPIM_Registration.version} 2.0.3 @@ -891,7 +937,7 @@ 2.0.1 ${Statistical_Region_Merging.version} - 3.1.9 + 3.1.10 ${Stitching.version} ${Stitching_.version} @@ -915,7 +961,7 @@ ${TopoJ.version} ${TopoJ_.version} - 3.3.4 + 4.0.0 ${Trainable_Segmentation.version} 2.0.4 @@ -924,7 +970,7 @@ 2.2.0 ${VIB-lib.version} - 3.0.4 + 4.0.0 ${VIB.version} ${VIB_.version} @@ -937,7 +983,7 @@ 2.0.1 ${Video_Editing.version} - 2.0.3 + 3.0.0 ${Volume_Calculator.version} 2.01.4 @@ -957,7 +1003,7 @@ 2.1.3 ${fiji-lib.version} - 1.1.10 + 1.1.11 ${legacy-imglib1.version} 1.0.2 @@ -982,7 +1028,7 @@ - 2.5.4 + 2.5.6 ${View5D.version} ${View5D_.version} @@ -991,12 +1037,12 @@ ${jitk-tps.version} - 9.1.2 + 9.4.0 ${bigwarp.version} ${bigwarp_fiji.version} - 1.6.0 + 1.6.6 ${mpicbg.version} ${mpicbg.version} ${mpicbg_.version} @@ -1006,43 +1052,47 @@ ${trakem2_tps.version} - 1.1.2 + 1.1.3 ${z_spacing.version} - 10.4.14 + 10.6.11 ${bigdataviewer-core.version} - 3.1.2 + 4.0.0 ${bigdataviewer-server.version} - - 1.0.0-beta-34 - ${bigdataviewer-vistools.version} - - 6.3.0 + 6.4.1 ${bigdataviewer_fiji.version} + + 1.0.2 + ${bigdataviewer-n5.version} + + + 0.5.0 + ${bigvolumeviewer.version} + - 2.2.7 + 2.3.5 ${spim_data.version} - 7.12.1 + 8.0.0 ${TrackMate.version} - 0.1.2 + 1.0.1 ${TrackMate-Cellpose.version} - 3.1.4 + 4.0.0 ${TrackMate-CSVImporter.version} @@ -1056,11 +1106,11 @@ ${TrackMate-ExTrack.version} - 1.4.0 + 2.0.0 ${TrackMate-Ilastik.version} - 1.2.1 + 2.0.0 ${TrackMate-MorphoLibJ.version} @@ -1068,15 +1118,15 @@ ${TrackMate-Oneat.version} - 2.0.1 + 3.0.0 ${TrackMate-Skeleton.version} - 1.2.1 + 2.0.0 ${TrackMate-StarDist.version} - 1.3.1 + 2.0.0 ${TrackMate-Weka.version} @@ -1090,12 +1140,12 @@ ${T2-TreelineGraph.version} - 1.3.10 + 2.0.0 ${TrakEM2.version} ${TrakEM2_.version} - 2.0.3 + 3.0.0 ${VectorString.version} @@ -1105,57 +1155,66 @@ - 0.14.0 + 0.15.2 ${imglib2-label-multisets.version} - 3.2.0 + 4.0.1 ${n5.version} - 4.2.0 + 5.0.1 ${n5-aws-s3.version} - 1.1.1 + 2.0.0 ${n5-blosc.version} - 4.1.0 + 6.0.1 ${n5-google-cloud.version} - 2.2.0 + 3.0.0 ${n5-hdf5.version} - 4.2.1 + 5.0.0 ${n5-ij.version} - 7.0.0 + 8.0.0 ${n5-imglib2.version} - 1.6.0 + 3.0.2 ${n5-universe.version} - 6.1.1 + 6.2.0 ${n5-viewer_fiji.version} - 1.3.4 + 2.0.1 ${n5-zarr.version} - 1.0.2 + 2.0.0 ${n5-zstandard.version} + + 2.1.2 + 2.0.0 + 2.1.1 + ${flimj-ops.version} + ${flimj-ui.version} + ${flimlib.version} + ${scijava.natives.classifier} + - 1.6.2 + 1.6.4 ${MorphoLibJ.version} ${MorphoLibJ_.version} @@ -1178,15 +1237,15 @@ ${clijx-weka_.version} - 1.2.10 - 3.2.7 - 0.2.0 + 3.0.8 + 9.0.11 + 0.3.1 ${BigStitcher.version} ${multiview-reconstruction.version} ${multiview-simulation.version} - 7.0.19 + 7.2.2 ${bonej.version} ${bonej.version} ${bonej.version} @@ -1199,16 +1258,16 @@ ${bonej-utilities.version} - 4.2.1 + 5.0.9 ${SNT.version} - 7.1.1 + 8.0.1 ${MaMuT.version} - 0.1.17 - 0.3.11 + 0.1.18 + 0.4.0 ${labkit-pixel-classification.version} ${labkit-ui.version} @@ -1221,23 +1280,23 @@ ${ice.version} - 1.0.1 + 1.1.3 ${ome-codecs.version} - 6.0.21 + 6.2.1 ${ome-common.version} - 5.3.6 + 5.3.10 ${metakit.version} - 5.3.8 + 5.3.11 ${ome-poi.version} - 6.3.6 + 6.5.3 ${ome-model.version} ${ome-model.version} ${ome-xml.version} @@ -1249,7 +1308,7 @@ ${jxrlib-all.version} - 7.3.0 + 8.5.0 ${bio-formats.version} ${bio-formats.version} ${bio-formats.version} @@ -1262,45 +1321,45 @@ ${formats-gpl.version} - 5.7.2 + 5.8.3 ${omero-blitz.version} - 5.6.4 + 5.7.3 ${omero-common.version} - 5.5.2 + 5.5.4 ${omero-dsl-plugin.version} - 5.9.0 + 5.9.3 ${omero-gateway.version} - 5.6.13 + 5.7.3 ${omero-model.version} - 5.5.15 + 5.6.3 ${omero-renderer.version} - 5.7.5 + 5.8.3 ${omero-romio.version} - 5.6.10 + 5.7.3 ${omero-server.version} - - 0.4.8 + + 0.4.5 ${coremem.version} - - 2.2.10 + + 2.2.11 ${cleargl.version} @@ -1310,16 +1369,22 @@ ${org.abego.treelayout.core.version} - 1.2.7 + 1.5.0 ${algart-tiff.version} - - 1.12.667 + + 1.12.791 ${aws.version} ${aws.version} ${aws-java-sdk-core.version} ${aws-java-sdk-s3.version} + + 2.46.15 + ${awssdk.version} + ${s3.version} + + 4.3.4 2.7.7 @@ -1336,13 +1401,13 @@ ${antlr4-runtime.version} - 1.10.14 + 1.10.15 ${ant.version} ${ant.version} ${ant-launcher.version} - 4.0.18 + 4.0.28 ${groovy.version} ${groovy.version} ${groovy.version} @@ -1408,7 +1473,7 @@ ${ivy.version} - 2.20.0 + 2.25.1 ${log4j.version} ${log4j.version} ${log4j-api.version} @@ -1416,11 +1481,11 @@ 0.13.1 - 3.3.2 - 3.9.6 - 3.11.0 + 3.4.0 + 3.9.11 + 4.0.0-beta-1 2.2.0 - 4.0.0 + 4.0.2 2.6.0 2.6.0 ${maven-artifact-transfer.version} @@ -1433,7 +1498,7 @@ ${sisu-inject-plexus.version} - 5.2.5 + 5.4.1 ${poi.version} ${poi.version} ${poi.version} @@ -1460,11 +1525,12 @@ ${httpmime.version} + 2.33 ${args4j.version} - 9.6 + 9.8 ${asm.version} ${asm.version} ${asm.version} @@ -1476,7 +1542,7 @@ ${asm-util.version} - 1.17 + 1.19 ${batik.version} ${batik.version} ${batik.version} @@ -1493,7 +1559,6 @@ ${batik.version} ${batik.version} ${batik.version} - ${batik.version} ${batik.version} ${batik.version} ${batik.version} @@ -1504,7 +1569,7 @@ ${batik.version} ${batik.version} ${batik.version} - 2.9 + 2.11 ${batik-anim.version} ${batik-awt-util.version} ${batik-bridge.version} @@ -1521,7 +1586,6 @@ ${batik-rasterizer.version} ${batik-rasterizer-ext.version} ${batik-script.version} - ${batik-slideshow.version} ${batik-squiggle.version} ${batik-squiggle-ext.version} ${batik-svg-dom.version} @@ -1547,47 +1611,51 @@ ${cdi-api.version} - 3.42.0 + 3.50.0 ${checker-qual.version} + + 4.8.181 + ${classgraph.version} + - 1.9.4 + 1.11.0 ${commons-beanutils.version} - 1.6.0 + 1.10.0 ${commons-cli.version} - 1.16.1 + 1.19.0 ${commons-codec.version} 3.2.2 - 4.4 + 4.5.0 ${commons-collections.version} ${commons-collections4.version} - 1.26.0 + 1.28.0 ${commons-compress.version} - 1.10.0 + 1.14.1 ${commons-csv.version} - 2.15.1 + 2.20.0 ${commons-io.version} 2.6 - 3.14.0 + 3.18.0 ${commons-lang.version} ${commons-lang3.version} - 1.3.0 + 1.3.5 ${commons-logging.version} @@ -1595,11 +1663,11 @@ ${commons-math3.version} - 2.12.0 + 2.12.1 ${commons-pool2.version} - 1.11.0 + 1.14.0 ${commons-text.version} @@ -1611,6 +1679,7 @@ ${directories.version} + 11.1.0 ${eclipse-collections.version} ${eclipse-collections.version} @@ -1654,11 +1723,12 @@ ${org.eclipse.swt.win32.win32.x86_64.version} + 0.41 ${ejml.version} - 2.25.0 + 2.41.0 - 3.4 + 3.6.1 ${flatlaf.version} 2.304 ${flatlaf-fonts-jetbrains-mono.version} - 2.3.0 + 2.8.1 ${google-api-client.version} ${google-api-client.version} ${google-api-client.version} @@ -1691,12 +1761,12 @@ ${google-api-client-xml.version} - 2.26.0 - 2.43.0 + 2.53.1 + 2.70.1 ${gax.version} ${gax.version} - 2.34.0 - 1.29.0 + 2.61.1 + 1.56.1 ${api-common.version} ${gax.version} ${gax-grpc.version} @@ -1707,7 +1777,7 @@ ${proto-google-iam-v1.version} - 1.23.0 + 1.39.0 ${google-auth-library.version} ${google-auth-library.version} ${google-auth-library.version} @@ -1716,17 +1786,17 @@ ${google-auth-library-oauth2-http.version} - 1.10.4 + 1.11.0 ${auto-value.version} ${auto-value.version} ${auto-value-annotations.version} - 2.33.0 + 2.72.0 ${google-cloud-core.version} - 0.127.13 - 1.38.0 - 2.34.0 + 0.134.0 + 1.96.0 + 2.70.0 ${google-cloud-core.version} ${google-cloud-core-http.version} ${google-cloud-nio.version} @@ -1734,7 +1804,7 @@ ${google-cloud-storage.version} - 1.44.1 + 1.47.1 ${google-http-client.version} ${google-http-client.version} ${google-http-client.version} @@ -1747,8 +1817,12 @@ ${google-http-client-jackson2.version} ${google-http-client-xml.version} + + 1.39.0 + ${google-oauth-client.version} + - 1.62.2 + 1.75.0 ${grpc.version} ${grpc.version} ${grpc.version} @@ -1756,6 +1830,7 @@ ${grpc.version} ${grpc.version} ${grpc.version} + ${grpc.version} ${grpc.version} ${grpc.version} ${grpc.version} @@ -1768,6 +1843,7 @@ ${grpc-core.version} ${grpc-googleapis.version} ${grpc-grpclb.version} + ${grpc-inprocess.version} ${grpc-netty-shaded.version} ${grpc-protobuf.version} ${grpc-services.version} @@ -1775,12 +1851,12 @@ ${grpc-xds.version} - 2.10.1 + 2.14.0 ${gson.version} - 33.0.0-jre - 1.0.2 + 33.4.8-jre + 1.0.3 ${guava.version} ${failureaccess.version} @@ -1798,15 +1874,15 @@ ${hsqldb.version} - 74.2 + 77.1 ${icu4j.version} - 5.5.13.3 + 5.5.13.4 ${itextpdf.version} - 2.8 + 3.1 ${j2objc-annotations.version} @@ -1815,16 +1891,18 @@ ${jackrabbit-webdav.version} - 2.16.1 + 2.19.2 ${jackson.version} ${jackson.version} ${jackson.version} ${jackson.version} + ${jackson.version} ${jackson.version} ${jackson-annotations.version} ${jackson-core.version} ${jackson-databind.version} ${jackson-dataformat-cbor.version} + ${jackson-dataformat-smile.version} ${jackson-dataformat-yaml.version} @@ -1838,15 +1916,6 @@ 1.0.3 ${jama.version} - - 1.6.0-scijava-2 - ${java3d.version} - ${java3d.version} - ${java3d.version} - ${j3dcore.version} - ${j3dutils.version} - ${vecmath.version} - 1.5.10 @@ -1879,7 +1948,7 @@ ${javassist.version} - 1.0.58 + 1.0.63 ${jcodings.version} @@ -1891,7 +1960,7 @@ ${jep.version} - 9.4.54.v20240208 + 9.4.58.v20250814 ${jetty.version} - 1.5.4 + 1.5.6 ${jfreechart.version} - 3.4.3 + 3.4.4 ${jfreesvg.version} - 1.4.0 + 1.5.2 ${jgrapht.version} ${jgrapht.version} ${jgrapht.version} @@ -2001,7 +2070,7 @@ ${jline2.version} ${jline.version} - 3.25.1 + 3.30.5 ${jline3.version} ${jline3.version} @@ -2034,11 +2103,55 @@ ${jmh-core.version} ${jmh-generator-annprocess.version} + + + 19.0.2.1 + ${javafx.version} + ${javafx.version} + ${javafx.version} + ${javafx.version} + ${javafx.version} + ${javafx.version} + ${javafx.version} + ${javafx-base.version} + ${javafx-controls.version} + ${javafx-fxml.version} + ${javafx-graphics.version} + ${javafx-media.version} + ${javafx-swing.version} + ${javafx-web.version} + + 1.49 ${jmockit.version} + 5.14.0 ${jna.version} ${jna.version} @@ -2047,9 +2160,9 @@ 1.3.13 0.10.4 - 2.2.16 + 2.2.17 1.2.0 - 3.1.19 + 3.1.20 ${jffi.version} ${jnr-constants.version} ${jnr-ffi.version} @@ -2057,7 +2170,7 @@ ${jnr-posix.version} - 2.12.7 + 2.14.0 ${joda-time.version} @@ -2066,7 +2179,7 @@ - 2.5.0 + 2.6.0 ${jogamp.version} ${jogamp.version} @@ -2091,18 +2204,17 @@ 1.7.2 ${jogamp-java3d.version} ${jogamp-java3d.version} - - + ${jogamp-java3d.version} ${java3d-core.version} ${java3d-utils.version} ${jogamp-java3d.version} - 1.10.5 + 1.10.8 ${joml.version} - 2.2.1 + 2.2.6 ${joni.version} @@ -2119,7 +2231,7 @@ ${jsch.version} - 20240205 + 20250517 ${json.version} @@ -2127,7 +2239,7 @@ ${junit.version} - 5.10.2 + 5.13.4 ${junit-jupiter.version} ${junit-jupiter.version} ${junit-jupiter.version} @@ -2141,7 +2253,7 @@ ${junit-vintage-engine.version} - 2.7.3 + 2.7.4 ${jython.version} ${jython-slim.version} @@ -2203,7 +2315,7 @@ ${kotlinx-coroutines-core-jvm.version} - 5.6.0 + 5.6.2 1.3.1 1.11.9 ${kryo.version} @@ -2211,18 +2323,15 @@ ${reflectasm.version} - - 1.2.12 + + 1.3.16 ${logback.version} ${logback.version} ${logback-classic.version} ${logback-core.version} - 1.8.0 + 1.9-inv ${lz4-java.version} @@ -2243,15 +2352,16 @@ ${mines-jtk.version} - 4.11.0 + 5.20.0 ${mockito.version} ${mockito-core.version} - 3.3 + 3.4 ${objenesis.version} + 45.1.1 ${ojalgo.version} @@ -2260,13 +2370,13 @@ ${okhttp.version} - 3.8.0 + 3.16.0 ${okio.version} ${okio.version} ${okio-jvm.version} - 5.9 + 5.12.0 ${opencsv.version} @@ -2275,15 +2385,15 @@ ${perfmark-api.version} - 4.7.5 + 4.7.7 ${picocli.version} - 42.7.2 + 42.7.7 ${postgresql.version} - 3.23.0 + 4.32.0 - 1.7 + 1.8 ${re2j.version} - 1.2.25 + 1.2.26 ${reload4j.version} - 3.4.0 - 3.3.1 + 3.6.0 + 3.3.2 + 3.3.0 ${rsyntaxtextarea.version} ${autocomplete.version} ${languagesupport.version} - 1.7.36 + 2.0.17 ${slf4j.version} ${slf4j.version} ${slf4j.version} @@ -2329,11 +2440,11 @@ ${jcl-over-slf4j.version} - 2.2 + 2.5 ${snakeyaml.version} - 2.7 + 2.10 ${snakeyaml-engine.version} @@ -2364,7 +2475,7 @@ ${proto.version} - 1.6.8 + 1.7.2 ${threetenbp.version} @@ -2377,11 +2488,11 @@ ${weka-dev.version} - 1.9 + 1.10 ${xz.version} - 1.5.5-11 + 1.5.7-4 ${zstd-jni.version} @@ -2389,6 +2500,115 @@ + + + org.scijava + scijava-collections + ${org.scijava.scijava-collections.version} + + + org.scijava + scijava-common3 + ${org.scijava.scijava-common3.version} + + + org.scijava + scijava-concurrent + ${org.scijava.scijava-concurrent.version} + + + org.scijava + scijava-discovery + ${org.scijava.scijava-discovery.version} + + + org.scijava + scijava-function + ${org.scijava.scijava-function.version} + + + org.scijava + scijava-legacy + ${org.scijava.scijava-legacy.version} + + + org.scijava + scijava-meta + ${org.scijava.scijava-meta.version} + + + org.scijava + scijava-ops-api + ${org.scijava.scijava-ops-api.version} + + + org.scijava + scijava-ops-engine + ${org.scijava.scijava-ops-engine.version} + + + org.scijava + scijava-ops-flim + ${org.scijava.scijava-ops-flim.version} + + + org.scijava + scijava-ops-image + ${org.scijava.scijava-ops-image.version} + + + org.scijava + scijava-ops-indexer + ${org.scijava.scijava-ops-indexer.version} + + + org.scijava + scijava-ops-opencv + ${org.scijava.scijava-ops-opencv.version} + + + org.scijava + scijava-ops-spi + ${org.scijava.scijava-ops-spi.version} + + + org.scijava + scijava-priority + ${org.scijava.scijava-priority.version} + + + org.scijava + scijava-progress + ${org.scijava.scijava-progress.version} + + + org.scijava + scijava-struct + ${org.scijava.scijava-struct.version} + + + org.scijava + scijava-taglets + ${org.scijava.scijava-taglets.version} + + + org.scijava + scijava-testutil + ${org.scijava.scijava-testutil.version} + + + org.scijava + scijava-types + ${org.scijava.scijava-types.version} + + + + + org.scijava + app-launcher + ${org.scijava.app-launcher.version} + + org.scijava @@ -2438,6 +2658,13 @@ ${org.scijava.scijava-config.version} + + + org.scijava + scijava-desktop + ${org.scijava.scijava-desktop.version} + + org.scijava @@ -2494,13 +2721,6 @@ ${org.scijava.scijava-plugins-commands.version} - - - org.scijava - scijava-plugins-platforms - ${org.scijava.scijava-plugins-platforms.version} - - org.scijava @@ -2639,6 +2859,25 @@ org.scijava scripting-renjin ${org.scijava.scripting-renjin.version} + + + + org.apache.commons + commons-math + + @@ -2664,13 +2903,6 @@ - - - net.imagej - imagej - ${net.imagej.imagej.version} - - net.imagej @@ -2691,6 +2923,13 @@ ${net.imagej.ij1-patcher.version} + + + net.imagej + imagej + ${net.imagej.imagej.version} + + net.imagej @@ -2705,13 +2944,6 @@ ${net.imagej.imagej-deprecated.version} - - - net.imagej - imagej-launcher - ${net.imagej.imagej-launcher.version} - - net.imagej @@ -2903,11 +3135,25 @@ ${net.imglib2.imglib2-ij.version} + + + net.imglib2 + imglib2-imagej + ${net.imglib2.imglib2-imagej.version} + + net.imglib2 imglib2-imglyb ${net.imglib2.imglib2-imglyb.version} + + + + sc.fiji + bigdataviewer-vistools + + @@ -3003,6 +3249,13 @@ sc.fiji fiji ${sc.fiji.fiji.version} + + + + sc.fiji + bigdataviewer-vistools + + @@ -3546,13 +3799,18 @@ sc.fiji - bigdataviewer-vistools - ${sc.fiji.bigdataviewer-vistools.version} + bigdataviewer_fiji + ${sc.fiji.bigdataviewer_fiji.version} + + + org.bigdataviewer + bigdataviewer-n5 + ${org.bigdataviewer.bigdataviewer-n5.version} sc.fiji - bigdataviewer_fiji - ${sc.fiji.bigdataviewer_fiji.version} + bigvolumeviewer + ${sc.fiji.bigvolumeviewer.version} sc.fiji @@ -3699,15 +3957,50 @@ org.janelia.saalfeldlab n5-viewer_fiji ${org.janelia.saalfeldlab.n5-viewer_fiji.version} + + + + sc.fiji + bigdataviewer-vistools + + org.janelia.saalfeldlab n5-zarr ${org.janelia.saalfeldlab.n5-zarr.version} + + org.janelia + n5-zstandard + ${org.janelia.n5-zstandard.version} + + + + flimlib + flimj-ops + ${flimlib.flimj-ops.version} + + + flimlib + flimj-ui + ${flimlib.flimj-ui.version} + + + flimlib + flimlib + ${flimlib.flimlib.version} + + + flimlib + flimlib + ${flimlib.flimlib.version} + ${scijava.natives.classifier.flimlib} + + fr.inra.ijpb @@ -3762,11 +4055,25 @@ net.preibisch BigStitcher ${net.preibisch.BigStitcher.version} + + + + sc.fiji + bigdataviewer-vistools + + net.preibisch multiview-reconstruction ${net.preibisch.multiview-reconstruction.version} + + + + sc.fiji + bigdataviewer-vistools + + net.preibisch @@ -3829,6 +4136,13 @@ sc.fiji MaMuT ${sc.fiji.MaMuT.version} + + + + sc.fiji + bigdataviewer-vistools + + @@ -3862,23 +4176,6 @@ org.openmicroscopy metakit ${org.openmicroscopy.metakit.version} - - - - ch.qos.logback - logback-classic - - @@ -3886,6 +4183,16 @@ org.openmicroscopy ome-codecs ${org.openmicroscopy.ome-codecs.version} + + + + org.openmicroscopy + ome-jai + + @@ -3894,28 +4201,6 @@ ome-common ${org.openmicroscopy.ome-common.version} - - - ch.qos.logback - logback-classic - xalan serializer @@ -3973,31 +4258,6 @@ ome bio-formats_plugins ${ome.bio-formats_plugins.version} - - - - ch.qos.logback - logback-classic - - ome @@ -4041,6 +4301,18 @@ omero-blitz ${org.openmicroscopy.omero-blitz.version} + + + ch.qos.logback + logback-classic + ch.qos.logback logback-classic @@ -4169,7 +4438,7 @@ - + net.clearcontrol coremem @@ -4183,23 +4452,11 @@ - + net.clearvolume cleargl ${net.clearvolume.cleargl.version} - - - - org.jogamp.gluegen - gluegen-rt-main - - - - org.jogamp.jogl - jogl-all-main - - @@ -4218,7 +4475,7 @@ ${net.algart.algart-tiff.version} - + com.amazonaws aws-java-sdk-core @@ -4230,6 +4487,13 @@ ${com.amazonaws.aws-java-sdk-s3.version} + + + software.amazon.awssdk + s3 + ${software.amazon.awssdk.s3.version} + + antlr @@ -4703,11 +4967,6 @@ batik-script ${org.apache.xmlgraphics.batik-script.version} - - org.apache.xmlgraphics - batik-slideshow - ${org.apache.xmlgraphics.batik-slideshow.version} - org.apache.xmlgraphics batik-squiggle @@ -4805,6 +5064,13 @@ ${org.checkerframework.checker-qual.version} + + + io.github.classgraph + classgraph + ${io.github.classgraph.classgraph.version} + + commons-beanutils @@ -5210,6 +5476,13 @@ ${com.google.http-client.google-http-client-xml.version} + + + com.google.oauth-client + google-oauth-client + ${com.google.oauth-client.google-oauth-client.version} + + io.grpc @@ -5246,6 +5519,11 @@ grpc-grpclb ${io.grpc.grpc-grpclb.version} + + io.grpc + grpc-inprocess + ${io.grpc.grpc-inprocess.version} + io.grpc grpc-netty-shaded @@ -5373,6 +5651,11 @@ jackson-dataformat-cbor ${com.fasterxml.jackson.dataformat.jackson-dataformat-cbor.version} + + com.fasterxml.jackson.dataformat + jackson-dataformat-smile + ${com.fasterxml.jackson.dataformat.jackson-dataformat-smile.version} + com.fasterxml.jackson.dataformat jackson-dataformat-yaml @@ -5398,23 +5681,6 @@ ${gov.nist.math.jama.version} - - - org.scijava - j3dcore - ${org.scijava.j3dcore.version} - - - org.scijava - j3dutils - ${org.scijava.j3dutils.version} - - - org.scijava - vecmath - ${org.scijava.vecmath.version} - - @@ -6064,11 +6330,41 @@ org.jogamp.java3d java3d-core ${org.jogamp.java3d.java3d-core.version} + + + + org.jogamp.gluegen + gluegen-rt-main + + + org.jogamp.jogl + jogl-all-main + + org.jogamp.java3d java3d-utils ${org.jogamp.java3d.java3d-utils.version} + + + + org.jogamp.joal + joal-main + + org.jogamp.java3d @@ -6846,6 +7142,20 @@ jmockit ${org.jmockit.jmockit.version} test + + + + com.github.spotbugs + spotbugs-annotations + + @@ -6869,6 +7179,50 @@ ${org.openjdk.jmh.jmh-generator-annprocess.version} test + + + + org.openjfx + javafx-base + ${org.openjfx.javafx-base.version} + ${scijava.natives.classifier.javafx} + + + org.openjfx + javafx-controls + ${org.openjfx.javafx-controls.version} + ${scijava.natives.classifier.javafx} + + + org.openjfx + javafx-fxml + ${org.openjfx.javafx-fxml.version} + ${scijava.natives.classifier.javafx} + + + org.openjfx + javafx-graphics + ${org.openjfx.javafx-graphics.version} + ${scijava.natives.classifier.javafx} + + + org.openjfx + javafx-media + ${org.openjfx.javafx-media.version} + ${scijava.natives.classifier.javafx} + + + org.openjfx + javafx-swing + ${org.openjfx.javafx-swing.version} + ${scijava.natives.classifier.javafx} + + + org.openjfx + javafx-web + ${org.openjfx.javafx-web.version} + ${scijava.natives.classifier.javafx} + @@ -6919,6 +7273,8 @@ ${gradle.wrapper} ${basedir}/gradle-scijava + -q + --no-daemon --project-cache-dir ../target/gradle/build generateCatalogAndPlatform diff --git a/pombast.toml b/pombast.toml new file mode 100644 index 00000000..d6891f70 --- /dev/null +++ b/pombast.toml @@ -0,0 +1,996 @@ +[common] +default-java-version = 8 +repositories = ["scijava.public=https://maven.scijava.org/content/groups/public"] +settings = "pombast/settings.xml" + +[status] +output = "target/pombast/index.html" +rules = "rules.xml" +header = "pombast/header-status.html" +footer = "pombast/footer-status.html" +nexus-base = "https://maven.scijava.org" +cuttable = [ + "de.nanoimaging:*", + "fr.inra.ijpb:*", + "io.scif:*", + "jitk:*", + "mpicbg:*", + "net.imagej:*", + "net.imglib2:*", + "net.preibisch:*", + "org.bonej:*", + "org.janelia*:*", + "org.morphonets:*", + "org.scijava:*", + "sc.fiji:*", +] + +[team] +output = "target/pombast/team.html" +header = "pombast/header-team.html" +footer = "pombast/footer-team.html" +includes = [ + "de.nanoimaging:*", + "fr.inra.ijpb:*", + "io.scif:*", + "jitk:*", + "mpicbg:*", + "net.imagej:*", + "net.imglib2:*", + "net.preibisch:*", + "org.bonej:*", + "org.janelia*:*", + "org.morphonets:*", + "org.scijava:*", + "sc.fiji:*", +] + +[badges] +output = "target/pombast/badges.json" +includes = [ + "de.nanoimaging:*", + "fr.inra.ijpb:*", + "io.scif:*", + "jitk:*", + "mpicbg:*", + "net.imagej:*", + "net.imglib2:*", + "net.preibisch:*", + "ome:*", + "org.bonej:*", + "org.janelia*:*", + "org.morphonets:*", + "org.openmicroscopy:*", + "org.scijava:*", + "sc.fiji:*", +] + +[melt] +# Some managed components require Java 21+, so we melt with that Java +# version. But pom-scijava sets scijava.jvm.version to 11 by default. +# So beyond just using OpenJDK 21 to run Maven, we also need to set the +# scijava.jvm.version property to target the right bytecode version. +# Otherwise, the enforcer complains about any Java libraries targeting >11. +java-version = 21 +properties = { "scijava.jvm.version" = "21" } + +template = "pombast/melt-template.xml" +excludes = [ + # TEMP: Exclude org.bytedeco:hdf5 until cisd:jhdf5 is gone. + "org.bytedeco:hdf5", + # NB: The following artifacts have messy dependency trees. + # Too many problems to test as part of the melt action. + # See WARNING block in pom-scijava's pom.xml for details. + "net.imagej:imagej-server", + "org.apache.spark:spark-core_2.11", + # NB: Skip alternate flavors of other managed components. + "org.jogamp.gluegen:gluegen", # uberjar flavor of gluegen-rt + "org.jogamp.jogl:jogl-all-noawt", # slimmed down flavor of jogl-all + # NB: All the SWT platform JARs have the same classes. + # The current platform will be brought in transitively. + "org.eclipse.swt:org.eclipse.swt.cocoa.macosx", + "org.eclipse.swt:org.eclipse.swt.cocoa.macosx.x86_64", + "org.eclipse.swt:org.eclipse.swt.gtk.aix.ppc", + "org.eclipse.swt:org.eclipse.swt.gtk.aix.ppc64", + "org.eclipse.swt:org.eclipse.swt.gtk.hpux.ia64", + "org.eclipse.swt:org.eclipse.swt.gtk.linux.ppc", + "org.eclipse.swt:org.eclipse.swt.gtk.linux.ppc64", + "org.eclipse.swt:org.eclipse.swt.gtk.linux.s390", + "org.eclipse.swt:org.eclipse.swt.gtk.linux.s390x", + "org.eclipse.swt:org.eclipse.swt.gtk.linux.x86", + "org.eclipse.swt:org.eclipse.swt.gtk.linux.x86_64", + "org.eclipse.swt:org.eclipse.swt.gtk.solaris.sparc", + "org.eclipse.swt:org.eclipse.swt.gtk.solaris.x86", + "org.eclipse.swt:org.eclipse.swt.win32.win32.x86", + "org.eclipse.swt:org.eclipse.swt.win32.win32.x86_64", + # NB: All SLF4J bindings have the same classes. + # We'll rely on logback-classic being present here. + "org.slf4j:slf4j-jcl", + "org.slf4j:slf4j-jdk14", + "org.slf4j:slf4j-nop", + "org.slf4j:slf4j-simple", + # NB: Cannot include both commons-logging and jcl-over-slf4j; + # see: http://www.slf4j.org/codes.html#jclDelegationLoop + "org.slf4j:jcl-over-slf4j", +] + +[smelt] +output = "target/pombast/smelt.json" +includes = [ + "de.nanoimaging:*", + "fr.inra.ijpb:*", + "io.scif:*", + "jitk:*", + "mpicbg:*", + "net.imagej:*", + "net.imglib2:*", + "net.preibisch:*", + "org.bonej:*", + "org.janelia*:*", + "org.morphonets:*", + "org.scijava:*", + "sc.fiji:*", +] +excludes = [ + # TEMP: Until scijava-ops-image 2.0.0 is released. + "org.scijava:scijava-ops-image", + # NB: Skip closed-source artifacts. + "org.bonej:bonej-plus", + # NB: Skip scijava forks of third-party projects. + # These are very stable, with few/no dependencies, and + # don't need to be retested as pom-scijava evolves. + "org.scijava:j3dcore", + "org.scijava:j3dutils", + "org.scijava:jep", + "org.scijava:junit-benchmarks", + "org.scijava:vecmath", +] +skip-tests = [ + # Error while checking the CLIJ2 installation: null + "sc.fiji:labkit-pixel-classification", +] + +[remove-tests] + +# CachedOpEnvironmentTest fails intermittently. Of course, it should be +# somehow fixed in imagej-ops. But for now, let's not let it ruin the smelt. +"net.imagej:imagej-ops" = ["net.imagej.ops.cached.CachedOpEnvironmentTest"] + +# In org.janelia.saalfeldlab.n5.metadata.ome.ngff.v04.WriteAxesTests.testXYT: +# java.util.NoSuchElementException: No value present +#"org.janelia.saalfeldlab:n5-ij" = ["org.janelia.saalfeldlab.n5.metadata.ome.ngff.v04.WriteAxesTests"] + +# In org.janelia.saalfeldlab.n5.s3.AmazonS3UtilsTest.testUriParsing: +# SdkClient Unable to load region from any of the providers in the chain +# software.amazon.awssdk.regions.providers.DefaultAwsRegionProviderChain@427475a2: +# [software.amazon.awssdk.regions.providers.SystemSettingsRegionProvider@768b79db: +# Unable to load region from system settings. Region must be specified either +# via environment variable (AWS_REGION) or system property (aws.region)., +# software.amazon.awssdk.regions.providers.AwsProfileRegionProvider@3b59d246: +# No region provided in profile: default, +# software.amazon.awssdk.regions.providers.InstanceProfileRegionProvider@11b0cf30: +# Unable to contact EC2 metadata service.] +"org.janelia.saalfeldlab:n5-aws-s3" = ["org.janelia.saalfeldlab.n5.s3.AmazonS3UtilsTest"] + +# Skip n5-universe slow tests. +"org.janelia.saalfeldlab:n5-universe" = [ + "org.janelia.saalfeldlab.n5.universe.storage.zarr.ZarrStorageTests", # Time elapsed: 1753 s + "org.janelia.saalfeldlab.n5.universe.storage.zarr.zarr2.Zarr2HttpFactoryTest", # Time elapsed: 947.2 s + "org.janelia.saalfeldlab.n5.universe.storage.n5.N5StorageTests", # Time elapsed: 843.5 s + "org.janelia.saalfeldlab.n5.universe.storage.n5.N5HttpFactoryTest", # Time elapsed: 832.3 s + "org.janelia.saalfeldlab.n5.universe.storage.zarr.zarr3.Zarr3HttpFactoryTest", # Time elapsed: 785.5 s + + # And these are all dependent on the above removed classes. :-( + "org.janelia.saalfeldlab.n5.universe.BackendStorageFormatTests", + "org.janelia.saalfeldlab.n5.universe.storage.n5.N5AmazonS3FactoryTest", + "org.janelia.saalfeldlab.n5.universe.storage.n5.N5FileSystemTest", + "org.janelia.saalfeldlab.n5.universe.storage.n5.N5GoogleCloudFactoryTest", + "org.janelia.saalfeldlab.n5.universe.storage.zarr.zarr2.Zarr2AmazonS3FactoryTest", + "org.janelia.saalfeldlab.n5.universe.storage.zarr.zarr2.Zarr2FileSystemTest", + "org.janelia.saalfeldlab.n5.universe.storage.zarr.zarr2.Zarr2GoogleCloudFactoryTest", + "org.janelia.saalfeldlab.n5.universe.storage.zarr.zarr3.Zarr3AmazonS3FactoryTest", + "org.janelia.saalfeldlab.n5.universe.storage.zarr.zarr3.Zarr3FileSystemTest", + "org.janelia.saalfeldlab.n5.universe.storage.zarr.zarr3.Zarr3GoogleCloudFactoryTest", +] + +"sc.fiji:labkit-ui" = [ + "sc.fiji.labkit.ui.GarbageCollectionTest", # Too slow (7 s) + "sc.fiji.labkit.ui.plugin.LabkitProbabilityMapForImagesInDirectoryPluginTest", # Too slow (65 s) + "sc.fiji.labkit.ui.plugin.SegmentRGBImageTest", # Too slow (35 s) + "sc.fiji.labkit.ui.segmentation.SegmentationToolTest", # Too slow (34 s) +] + +[components."fr.inra.ijpb:MorphoLibJ_"] +ci-build = "build-main" + +[components."hsqldb:hsqldb"] +last-vetted = "20190101000000" + +[components."io.scif:scifio-bf-compat"] +ci-build = "build-main" + +[components."io.scif:scifio-cli"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."io.scif:scifio-hdf5"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."io.scif:scifio-jai-imageio"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."io.scif:scifio-labeling"] +ci-build = "build-main" + +[components."io.scif:scifio-lifesci"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."io.scif:scifio-ome-xml"] +ci-build = "build-main" + +[components."jitk:jitk-tps"] +ci-build = "build-main" + +[components."net.imagej:ij"] +java-version = 11 + +[components."net.imagej:imagej-deprecated"] +ci-build = "build-main" + +[components."net.imagej:imagej-mesh"] +ci-build = "build-main" + +[components."net.imagej:imagej-mesh-io"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."net.imagej:imagej-notebook"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."net.imagej:imagej-omero"] +ci-build = "build-main" + +[components."net.imagej:imagej-omero-legacy"] +ci-build = "build-main" + +[components."net.imagej:imagej-opencv"] +ci-build = "build-main" + +[components."net.imagej:imagej-ops"] +ci-build = "build-main" + +[components."net.imagej:imagej-plugins-batch"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."net.imagej:imagej-plugins-commands"] +ci-build = "build-main" + +[components."net.imagej:imagej-plugins-tools"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."net.imagej:imagej-plugins-uploader-ssh"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."net.imagej:imagej-plugins-uploader-webdav"] +ci-build = "build-main" + +[components."net.imagej:imagej-scripting"] +ci-build = "build-main" + +[components."net.imagej:imagej-tensorflow"] +ci-build = "build-main" + +[components."net.imagej:imagej-ui-awt"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."net.imagej:imagej-ui-swing"] +ci-build = "build-main" + +[components."net.imagej:imagej-updater"] +ci-build = "build-main" + +[components."net.imagej:op-finder"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."net.imglib2:imglib2-algorithm"] +ci-build = "build-main" + +[components."net.imglib2:imglib2-algorithm-fft"] +last-vetted = "20230309000000" + +[components."net.imglib2:imglib2-mesh"] +# NOTE: Workaround for: error: Could not load processor class file due to +# 'org/scijava/ops/indexer/OpImplNoteParser has been compiled by a more recent +# version of the Java Runtime (class file version 55.0), this version of the +# Java Runtime only recognizes class file versions up to 52.0'. +java-version = 11 + +[components."net.preibisch:multiview-simulation"] +ci-build = "build-main" + +[components."ome:formats-api"] +ci-build = "maven" + +[components."ome:formats-bsd"] +ci-build = "maven" + +[components."ome:formats-gpl"] +ci-build = "maven" + +[components."org.bonej:bonej-plugins"] +# TEMP: Until a BoneJ release exists incorporating bonej-org/BoneJ2#414. +properties = { "skipTests" = "true" } + +[components."org.codehaus.groovy:groovy"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-ant"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-astbuilder"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-bsf"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-cli-commons"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-cli-picocli"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-console"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-datetime"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-dateutil"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-docgenerator"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-groovydoc"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-groovysh"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-jaxb"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-jmx"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-json"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-jsr223"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-macro"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-nio"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-servlet"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-sql"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-swing"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-templates"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-test"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-test-junit5"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-testng"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-xml"] +last-vetted = "20250101000000" + +[components."org.codehaus.groovy:groovy-yaml"] +last-vetted = "20250101000000" + +[components."org.janelia:H5J_Loader_Plugin"] +ci-build = "build-main" + +[components."org.janelia.saalfeldlab:n5-aws-s3"] +ci-build = "build-main" + +[components."org.janelia.saalfeldlab:n5-google-cloud"] +ci-build = "build-main" + +[components."org.janelia.saalfeldlab:n5-hdf5"] +ci-build = "build-main" + +[components."org.janelia.saalfeldlab:n5-ij"] +ci-build = "build-main" + +[components."org.janelia.saalfeldlab:n5-imglib2"] +ci-build = "build-main" + +[components."org.janelia.saalfeldlab:n5-universe"] +ci-build = "build-main" + +[components."org.janelia.saalfeldlab:n5-viewer_fiji"] +ci-build = "build-main" + +[components."org.mockito:mockito-core"] +last-vetted = "20250101000000" + +[components."org.ojalgo:ojalgo"] +last-vetted = "20250101000000" + +[components."org.openmicroscopy:metakit"] +project-url = "https://github.com/ome/ome-metakit" +ci-build = "maven" + +[components."org.openmicroscopy:ome-codecs"] +ci-build = "maven" + +[components."org.openmicroscopy:ome-common"] +ci-build = "maven" + +[components."org.openmicroscopy:ome-poi"] +ci-build = "maven" + +[components."org.openmicroscopy:ome-xml"] +project-url = "https://github.com/ome/ome-model" +ci-build = "maven" + +[components."org.openmicroscopy:omero-blitz"] +ci-build = "gradle" + +[components."org.openmicroscopy:omero-common"] +ci-build = "gradle" + +[components."org.openmicroscopy:omero-dsl-plugin"] +ci-build = "gradle" + +[components."org.openmicroscopy:omero-gateway"] +project-url = "https://github.com/ome/omero-gateway-java" +ci-build = "gradle" + +[components."org.openmicroscopy:omero-model"] +ci-build = "gradle" + +[components."org.openmicroscopy:omero-renderer"] +ci-build = "gradle" + +[components."org.openmicroscopy:omero-romio"] +ci-build = "gradle" + +[components."org.openmicroscopy:omero-server"] +ci-build = "gradle" + +[components."org.openmicroscopy:specification"] +project-url = "https://github.com/ome/ome-model" +ci-build = "maven" + +[components."org.scijava:batch-processor"] +ci-build = "build-main" + +[components."org.scijava:j3dcore"] +last-vetted = "20180905120000" + +[components."org.scijava:j3dutils"] +last-vetted = "20180905120000" + +[components."org.scijava:java3d-core"] +ci-build = false + +[components."org.scijava:java3d-utils"] +ci-build = false + +[components."org.scijava:jep"] +ci-build = false +last-vetted = "20171225120000" + +[components."org.scijava:junit-benchmarks"] +ci-build = false +last-vetted = "20180905120000" + +[components."org.scijava:scijava-cache"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."org.scijava:scijava-grab"] +ci-build = "build-main" + +[components."org.scijava:scijava-io-http"] +ci-build = "build-main" + +[components."org.scijava:scijava-java3d"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."org.scijava:scijava-listeners"] +last-vetted = "20211021000000" + +[components."org.scijava:scijava-maven-plugin"] +last-vetted = "20230309000000" + +[components."org.scijava:scijava-plot"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."org.scijava:scijava-plugins-commands"] +ci-build = "build-main" + +[components."org.scijava:scijava-plugins-platforms"] +last-vetted = "20230309000000" + +[components."org.scijava:scijava-plugins-text-markdown"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."org.scijava:scijava-plugins-text-plain"] +ci-build = "build-main" + +[components."org.scijava:scijava-table"] +ci-build = "build-main" + +[components."org.scijava:scijava-ui-awt"] +last-vetted = "20230309000000" + +[components."org.scijava:scijava-ui-swing"] +ci-build = "build-main" + +[components."org.scijava:script-editor"] +ci-build = "build-main" + +[components."org.scijava:script-editor-jython"] +ci-build = "build-main" + +[components."org.scijava:scripting-beanshell"] +ci-build = "build-main" + +[components."org.scijava:scripting-clojure"] +ci-build = "build-main" + +[components."org.scijava:scripting-javascript"] +ci-build = "build-main" + +[components."org.scijava:scripting-jruby"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."org.scijava:scripting-jython"] +ci-build = "build-main" + +[components."org.scijava:scripting-matlab"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."org.scijava:scripting-renjin"] +ci-build = "build-main" + +[components."org.scijava:scripting-scala"] +ci-build = "build-main" + +[components."org.scijava:swing-checkbox-tree"] +last-vetted = "20230309000000" + +[components."org.scijava:ui-behaviour"] +ci-build = "build-main" + +[components."org.scijava:vecmath"] +ci-build = false +last-vetted = "20180905120000" + +[components."org.springframework:spring-aop"] +last-vetted = "20250101000000" + +[components."org.springframework:spring-beans"] +last-vetted = "20250101000000" + +[components."org.springframework:spring-core"] +last-vetted = "20250101000000" + +[components."org.tensorflow:libtensorflow"] +last-vetted = "20200701000000" + +[components."org.tensorflow:libtensorflow_jni"] +last-vetted = "20200701000000" + +[components."org.tensorflow:libtensorflow_jni_gpu"] +last-vetted = "20200701000000" + +[components."org.tensorflow:proto"] +last-vetted = "20200701000000" + +[components."org.tensorflow:tensorflow"] +last-vetted = "20200701000000" + +[components."sc.fiji:3D_Blob_Segmentation"] +ci-build = "build-main" + +[components."sc.fiji:3D_Objects_Counter"] +ci-build = "build-main" +last-vetted = "20230313000000" + +[components."sc.fiji:3D_Viewer"] +ci-build = "build-main" + +[components."sc.fiji:AnalyzeSkeleton_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Anisotropic_Diffusion_2D"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Archipelago_Plugins"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Arrow_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Auto_Local_Threshold"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Auto_Threshold"] +ci-build = "build-main" + +[components."sc.fiji:BalloonSegmentation_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Bug_Submitter"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:CPU_Meter"] +ci-build = "build-main" + +[components."sc.fiji:Calculator_Plus"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Cell_Counter"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Color_Histogram"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Color_Inspector_3D"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Colour_Deconvolution"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:CorrectBleach_"] +ci-build = "build-main" + +[components."sc.fiji:Correct_3D_Drift"] +ci-build = "build-main" + +[components."sc.fiji:Descriptor_based_registration"] +ci-build = "build-main" + +[components."sc.fiji:Dichromacy_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Directionality_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:FS_Align_TrakEM2"] +ci-build = "build-main" + +[components."sc.fiji:Feature_Detection"] +ci-build = "build-main" + +[components."sc.fiji:Fiji_Archipelago"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Fiji_Developer"] +ci-build = "build-main" + +[components."sc.fiji:Fiji_Package_Maker"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:FlowJ_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Graph_Cut"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Gray_Morphology"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:HDF5_Vibez"] +ci-build = "build-main" + +[components."sc.fiji:Helmholtz_Analysis"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:IJ_Robot"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:IO_"] +ci-build = "build-main" + +[components."sc.fiji:Image_5D"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Image_Expression_Parser"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Interactive_3D_Surface_Plot"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:IsoData_Classifier"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Kappa"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Kuwahara_Filter"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:LSM_Reader"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:LSM_Toolbox"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Lasso_and_Blow_Tool"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Linear_Kuwahara"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:LocalThickness_"] +ci-build = "build-main" + +[components."sc.fiji:MTrack2_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:M_I_P"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Manual_Tracking"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Multi_Kymograph"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:PIV_analyser"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:QuickPALM_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:RATS_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Reconstruct_Reader"] +ci-build = "build-main" + +[components."sc.fiji:SPIM_Opener"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:SPIM_Registration"] +ci-build = "build-main" + +[components."sc.fiji:Samples_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Series_Labeler"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Siox_Segmentation"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Skeletonize3D_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:SplineDeformationGenerator_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Stack_Manipulation"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Statistical_Region_Merging"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Stitching_"] +ci-build = "build-main" + +[components."sc.fiji:Sync_Win"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:T2-NIT"] +ci-build = "build-main" + +[components."sc.fiji:T2-TreelineGraph"] +ci-build = "build-main" + +[components."sc.fiji:Thread_Killer"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Time_Lapse"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Time_Stamper"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:ToAST_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:TopoJ_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Trainable_Segmentation"] +ci-build = "build-main" + +[components."sc.fiji:TrakEM2_"] +ci-build = "build-main" + +[components."sc.fiji:TrakEM2_Archipelago"] +ci-build = "build-main" + +[components."sc.fiji:VIB-lib"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:VIB_"] +ci-build = "build-main" + +[components."sc.fiji:Vaa3d_Reader"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Vaa3d_Writer"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:VectorString"] +ci-build = "build-main" + +[components."sc.fiji:Video_Editing"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:Volume_Calculator"] +ci-build = "build-main" + +[components."sc.fiji:Volume_Viewer"] +ci-build = "build-main" + +[components."sc.fiji:bUnwarpJ_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:bigdataviewer-server"] +ci-build = "build-main" + +[components."sc.fiji:bigdataviewer_fiji"] +ci-build = "build-main" + +[components."sc.fiji:bigvolumeviewer"] +# NOTE: Using the release flag disallows access to sun.misc.Unsafe. +properties = { "maven.compiler.release" = "" } + +[components."sc.fiji:bij"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:blockmatching_"] +ci-build = "build-main" + +[components."sc.fiji:fiji-lib"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:labkit-pixel-classification"] +ci-build = "build-main" + +[components."sc.fiji:labkit-ui"] +ci-build = "build-main" + +[components."sc.fiji:legacy-imglib1"] +ci-build = "build-main" + +[components."sc.fiji:level_sets"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:pal-optimization"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:panorama_"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:register_virtual_stack_slices"] +ci-build = "build-main" + +[components."sc.fiji:registration_3d"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:spim_data"] +ci-build = "build-main" + +[components."sc.fiji:trakem2-transform"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:trakem2_tps"] +ci-build = "build-main" + +[components."sc.fiji:weave_jy2java"] +ci-build = "build-main" +last-vetted = "20230309000000" + +[components."sc.fiji:z_spacing"] +ci-build = "build-main" diff --git a/pombast/footer-status.html b/pombast/footer-status.html new file mode 100644 index 00000000..e5c038dd --- /dev/null +++ b/pombast/footer-status.html @@ -0,0 +1,41 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+👍 diff --git a/pombast/footer-team.html b/pombast/footer-team.html new file mode 100644 index 00000000..64db37f1 --- /dev/null +++ b/pombast/footer-team.html @@ -0,0 +1,2 @@ +
+👍 diff --git a/pombast/header-status.html b/pombast/header-status.html new file mode 100644 index 00000000..923b0e61 --- /dev/null +++ b/pombast/header-status.html @@ -0,0 +1,47 @@ + + + + diff --git a/pombast/header-team.html b/pombast/header-team.html new file mode 100644 index 00000000..41befe76 --- /dev/null +++ b/pombast/header-team.html @@ -0,0 +1,27 @@ + + diff --git a/tests/mega-melt-template.xml b/pombast/melt-template.xml similarity index 94% rename from tests/mega-melt-template.xml rename to pombast/melt-template.xml index c8709f34..d776adc6 100644 --- a/tests/mega-melt-template.xml +++ b/pombast/melt-template.xml @@ -19,8 +19,8 @@ - CC0 1.0 Universal License - https://creativecommons.org/publicdomain/zero/1.0/ + Unlicense + https://unlicense.org/ repo diff --git a/pombast/settings.xml b/pombast/settings.xml new file mode 100644 index 00000000..534a5e62 --- /dev/null +++ b/pombast/settings.xml @@ -0,0 +1,22 @@ + + + + + update-interval + + + scijava.public + https://maven.scijava.org/content/groups/public + interval:120 + interval:120 + + + central + https://repo.maven.apache.org/maven2 + interval:120 + + + + + update-interval + diff --git a/rules.xml b/rules.xml index 3451542b..35c783db 100644 --- a/rules.xml +++ b/rules.xml @@ -9,11 +9,26 @@ 3.0ea8 + + + + ^(?!2\.33).* + + .*-(alpha|beta|rc)-?[0-9]+ - - 1\.[34].* + + ^(?!1\.3\.).* @@ -36,6 +51,15 @@ .*-kohsuke-?[0-9]+ + + + + ^(?!3\.3\.).* + + + ^(?!4\.).* - + + + + ^(?!2\.21\.22).* + + + + + .*-(alpha|beta|rc)-?[0-9]+ + + + .*-(alpha|beta|rc)-?[0-9]+ - + .*\.M[0-9]+ + + ^(?!11\.).* @@ -159,6 +207,25 @@ .*\.RC[0-9]+ + + + + ^(?!1\.41).* + + + + + .*-(alpha|beta|rc)-?[0-9]+ + + + + + .*-(alpha|beta|rc)-?[0-9]+ + + .*-(Beta|RC)[0-9]* @@ -173,6 +240,48 @@ ^(?!1\.4\.).* + + + + ^(?!1\.49).* + + + + + .*-pre.* + + + + + + ^(?!51\.).* + + + + + + ^(?!5\.9\.).* + + + + + .*-(alpha|beta|rc|RC|M)-?[0-9]+ + + + + + .*-(alpha|beta|rc|RC|M)-?[0-9]+ + + + ^(?!23\.).* + + .*-m[0-9]+ diff --git a/settings.xml b/settings.xml index 9a578714..930113f6 100644 --- a/settings.xml +++ b/settings.xml @@ -3,8 +3,22 @@ scijava-mirror SciJava public repositories - https://maven.scijava.org/service/local/repo_groups/public/content - * + https://maven.scijava.org/content/groups/public + *,!central + + + scijava + + true + + + + scijava.public + https://maven.scijava.org/content/groups/public + + + + diff --git a/tests/filter-build-log.py b/tests/filter-build-log.py deleted file mode 100644 index 4e8f1942..00000000 --- a/tests/filter-build-log.py +++ /dev/null @@ -1,48 +0,0 @@ -# -# filter-build-log.py - Cuts out cruft to focus on build failure details. -# - -# This script filters build logs down to only [WARNING] and [ERROR] lines, -# and consolidates lengthy duplicate class listings down to packages only. - -import sys - -def print_filtered_log(log): - dups = [] - parsingdups = False - atbeginning = True - for line in log: - line = line.rstrip('\n') - if line.startswith('[INFO]'): - # Filter out non-error build messages. - continue - if line.startswith('Download') or line.startswith('Progress'): - # Filter out details of remote resource queries. - continue - if atbeginning and not line.strip(): - # Filter out leading blank lines. - continue - atbeginning = False - if parsingdups: - if line.startswith(' '): - if line.find('/') >= 0: - # Strip to containing package only. - line = line[:line.rindex('/')] - dups.append(line) - else: - parsingdups = False - for dup in sorted(set(dups)): - print(dup) - print('') - dups = [] - else: - if line == ' Duplicate classes:': - print(' Duplicate packages:') - parsingdups = True - else: - print(line) - -for arg in sys.argv[1:]: - with open(arg) as f: - print_filtered_log(f) - diff --git a/tests/generate-mega-melt.py b/tests/generate-mega-melt.py deleted file mode 100644 index 1b548da3..00000000 --- a/tests/generate-mega-melt.py +++ /dev/null @@ -1,109 +0,0 @@ -# -# generate-mega-melt.py - Make a POM depending on everything in pom-scijava. -# - -import os, re, sys -from xml.dom import minidom - -def child(node, tag): - nodes = node.getElementsByTagName(tag) - return None if len(nodes) == 0 else nodes[0] - -script_dir = os.path.dirname(os.path.realpath(__file__)) if __file__ else '.' -out = minidom.parse(os.path.join(script_dir, 'mega-melt-template.xml')) -out.getElementsByTagName('project')[0].appendChild(out.createElement('dependencies')) -outDeps = out.getElementsByTagName('dependencies')[0] - -psj = minidom.parse(os.path.join(script_dir, '..', 'pom.xml')) -depMgmt = psj.getElementsByTagName('dependencyManagement')[0] -deps = depMgmt.getElementsByTagName('dependencies')[0] -depList = deps.getElementsByTagName('dependency') - -# Artifacts to exclude from the mega melt. -ignoredArtifacts = [ - # TEMP: The SNT project needs a new release without the - # obsolete scijava-plugins-io-table dependency. - 'SNT', - - # TEMP: Exclude org.bytedeco:hdf5 until cisd:jhdf5 is gone. - 'hdf5', - # TEMP: The original ImageJ requires Java 9+ to compile, - # because it has a module-info.java, so skip it until the - # component collection is updated from Java 8 to Java 11. - 'ij', - # NB: Skip artifacts requiring minimum Java version >8. - 'algart-tiff', - # NB: The following artifacts have messy dependency trees. - # Too many problems to test as part of the mega-melt. - # See WARNING block in pom-scijava's pom.xml for details. - 'imagej-server', - 'spark-core_2.11', - # NB: Skip scijava forks of third-party projects. - # These are very stable, with few/no dependencies, and - # don't need to be retested as pom-scijava evolves. - 'j3dcore', - 'j3dutils', - 'jep', - 'junit-benchmarks', - 'vecmath', - # NB: Skip alternate flavors of other managed components. - 'gluegen', # uberjar flavor of gluegen-rt - 'jogl-all-noawt', # slimmed down flavor of jogl-all - # NB: All the SWT platform JARs have the same classes. - # The current platform will be brought in transitively. - 'org.eclipse.swt.cocoa.macosx', - 'org.eclipse.swt.cocoa.macosx.x86_64', - 'org.eclipse.swt.gtk.aix.ppc', - 'org.eclipse.swt.gtk.aix.ppc64', - 'org.eclipse.swt.gtk.hpux.ia64', - 'org.eclipse.swt.gtk.linux.ppc', - 'org.eclipse.swt.gtk.linux.ppc64', - 'org.eclipse.swt.gtk.linux.s390', - 'org.eclipse.swt.gtk.linux.s390x', - 'org.eclipse.swt.gtk.linux.x86', - 'org.eclipse.swt.gtk.linux.x86_64', - 'org.eclipse.swt.gtk.solaris.sparc', - 'org.eclipse.swt.gtk.solaris.x86', - 'org.eclipse.swt.win32.win32.x86', - 'org.eclipse.swt.win32.win32.x86_64', - # NB: All SLF4J bindings have the same classes. - # We'll rely on logback-classic being present here. - 'slf4j-jcl', - 'slf4j-jdk14', - 'slf4j-nop', - 'slf4j-simple', - # NB: Cannot include both commons-logging and jcl-over-slf4j; - # see: http://www.slf4j.org/codes.html#jclDelegationLoop - 'jcl-over-slf4j' -] - -for dep in depList: - # Harvest relevant information (ignore exclusions and version). - groupId = child(dep, 'groupId') - artifactId = child(dep, 'artifactId') - classifier = child(dep, 'classifier') - scope = child(dep, 'scope') - - if artifactId.firstChild.data in ignoredArtifacts: - continue - - outDep = out.createElement('dependency') - outDep.appendChild(groupId) - outDep.appendChild(artifactId) - if classifier: - outDep.appendChild(classifier) - if scope: - outDep.appendChild(scope) - outDeps.appendChild(outDep) - -# Filter XML through a hacky substitution to avoid unwanted whitespace. -xml = re.sub('\n[\n\r\t]*\n', '\n', out.toprettyxml()) - -outDir = sys.argv[1] if len(sys.argv) > 1 else 'mega-melt' -try: - os.mkdir(outDir) -except: - pass - -with open(os.path.join(outDir, 'pom.xml'), 'w') as outPOM: - outPOM.write(xml) diff --git a/tests/run.sh b/tests/run.sh deleted file mode 100755 index f36bbb39..00000000 --- a/tests/run.sh +++ /dev/null @@ -1,286 +0,0 @@ -#!/bin/sh - -# -# run.sh - Tests correctness of the pom-scijava BOM. -# - -die () { echo "$*" >&2; exit 1; } - -sectionStart() { - startTime=$(date +%s) - echo - printf "$1... " -} - -sectionEnd() { - endTime=$(date +%s) - echo "Done! [$((endTime-startTime))s]" -} - -sectionStart 'Generating mega-melt project' - -dir=$(dirname "$0") -pom="$dir/../pom.xml" -test -f "$pom" || die 'Where is pom.xml?!' - -generateMegaMeltScript="$dir/generate-mega-melt.py" -filterBuildLogScript="$dir/filter-build-log.py" - -megaMeltDir="$dir/../target/mega-melt" -pomParent="$megaMeltDir/../pom.xml" -versionSwapLog="$megaMeltDir/version-swap.log" -dependencyTreeLog="$megaMeltDir/dependency-tree.log" -validationLog="$megaMeltDir/validation.log" -validationErrorsLog="$megaMeltDir/validation-errors.log" -megaMeltPOM="$megaMeltDir/pom.xml" -meltingPotLocal="$dir/../../scijava-scripts/melting-pot.sh" -meltingPotURL=https://raw.githubusercontent.com/scijava/scijava-scripts/main/melting-pot.sh -meltingPotScript="$megaMeltDir/melting-pot.sh" -meltingPotLog="$megaMeltDir/melting-pot.log" -meltingPotDir="$megaMeltDir/melting-pot" -skipTestsFile="$meltingPotDir/skipTests.txt" -meltScript="$meltingPotDir/melt.sh" - -# HACK: List of artifacts with known-duplicate short version properties. -shortVersionClashes=\ -'net.sourceforge.findbugs.annotations'\ -'|antlr.antlr'\ -'|org.jogamp.jocl.jocl'\ -'|net.sf.opencsv.opencsv'\ -'|org.jetbrains.intellij.deps.trove4j' - -rm -rf "$megaMeltDir" && mkdir -p "$megaMeltDir" || die "Creation of $megaMeltDir failed!" -cp "$pom" "$pomParent" && -mvn -B -f "$pomParent" versions:set -DnewVersion=999-mega-melt > "$versionSwapLog" && - mvn -B -f "$pomParent" install:install >> "$versionSwapLog" || - die "pom-scijava version update failed:\n$(cat "$versionSwapLog")" -python "$generateMegaMeltScript" "$megaMeltDir" || die 'Generation failed!' -sectionEnd # Generating mega-melt project - -# Ensure the mega-melt dependency structure validates. -# In particular, this runs our enforcer rules: the build -# will fail if there are any snapshot dependencies, or -# any duplicate classes across artifacts on the classpath. -sectionStart 'Validating mega-melt project' -mvn -B -f "$megaMeltPOM" dependency:tree > "$dependencyTreeLog" || - die "Invalid dependency tree:\n$(cat "$dependencyTreeLog")" -mvn -B -f "$megaMeltPOM" -U clean package > "$validationLog" || { - python "$filterBuildLogScript" "$validationLog" > "$validationErrorsLog" - die "Validation build failed!\n\nDependency tree:\n$(cat "$dependencyTreeLog")\n\nBuild log:\n$(cat "$validationErrorsLog")" -} -sectionEnd # Validating mega-melt project - -# Run mega-melt through the melting pot, with all SciJava-affiliated groupIds, -# minus excluded artifacts (see ignoredArtifacts in generate-mega-melt.py). -echo && -echo 'Generating melting pot...' && -if [ -e "$meltingPotLocal" ] -then - cp "$meltingPotLocal" "$meltingPotScript" -else - curl -fsL "$meltingPotURL" > "$meltingPotScript" -fi || - die "Failed to obtain melting pot script!" - -# Build the melting pot structure. -chmod +x "$meltingPotScript" && -"$meltingPotScript" "$megaMeltDir" \ - -r scijava.public::::https://maven.scijava.org/content/groups/public \ - -o "$meltingPotDir" \ - -i 'ca.mcgill:*' \ - -i 'io.scif:*' \ - -i 'jitk:*' \ - -i 'mpicbg:*' \ - -i 'net.imagej:*' \ - -i 'net.imglib2:*' \ - -i 'net.preibisch:*' \ - -i 'org.bonej:*' \ - -i 'org.janelia.saalfeldlab:*' \ - -i 'org.janelia:*' \ - -i 'org.morphonets:*' \ - -i 'org.scijava:*' \ - -i 'sc.fiji:*' \ - -e 'net.imagej:ij' \ - -e 'org.scijava:j3dcore' \ - -e 'org.scijava:j3dutils' \ - -e 'org.scijava:jep' \ - -e 'org.scijava:junit-benchmarks' \ - -e 'org.scijava:vecmath' \ - -f -v -s $@ 2>&1 | tee "$meltingPotLog" - -# NB: The pipe to tee eats the melting-pot error code. -# Even with the POSIX-unfriendly pipefail flag set. -# So we resort to this hacky error check of the log. -test "$(grep -F "[ERROR]" "$meltingPotLog" | grep -v "using default branch")" && - die 'Melting pot generation failed!' - -sectionStart 'Adjusting the melting pot' - -buildScript="$meltingPotDir/build.sh" -buildScriptTemp="$buildScript.tmp" -cp "$buildScript" "$buildScript.original" && - -# HACK: Remove known-duplicate short version properties, keeping -# the short version declaration only for the more common groupId. -# E.g.: org.antlr:antlr is preferred over antlr:antlr, so we set -# antlr.version to match org.antlr:antlr, not antlr:antlr. -mv -f "$buildScript" "$buildScriptTemp" && -sed -E 's;(-D('"$shortVersionClashes"').version=[^ ]*) -D[^ ]*;\1;' "$buildScriptTemp" > "$buildScript" && - -# HACK: Add leading underscore to version properties that start with a digit. -mv -f "$buildScript" "$buildScriptTemp" && -sed -E 's; -D([0-9][^ ]*);& -D_\1;' "$buildScriptTemp" > "$buildScript" && - -# HACK: Add non-standard version properties used prior to -# pom-scijava 32.0.0-beta-1; see d0bf752070d96a2613c42e4e1ab86ebdd07c29ee. -mv -f "$buildScript" "$buildScriptTemp" && -sed -E 's; -Dsc.fiji.3D_Blob_Segmentation\.version=([^ ]*);& -DFiji_3D_Blob_Segmentation.version=\1;' "$buildScriptTemp" > "$buildScript" && -mv -f "$buildScript" "$buildScriptTemp" && -sed -E 's; -Dsc.fiji.(3D_Objects_Counter|3D_Viewer)\.version=([^ ]*);& -DImageJ_\1.version=\2;' "$buildScriptTemp" > "$buildScript" && - -# HACK: Add non-standard net.imagej:ij version property used prior to -# pom-scijava 28.0.0; see 7d2cc442b107b3ac2dcb799d282f2c0b5822649d. -mv -f "$buildScript" "$buildScriptTemp" && -sed -E 's; -Dij\.version=([^ ]*);& -Dimagej1.version=\1;' "$buildScriptTemp" > "$buildScript" && - -# HACK: Add explicit kotlin.version to match our pom-scijava-base. -# Otherwise, components built on older pom-scijava-base will have -# mismatched kotlin component versions. The sed expression avoids -# a bug in mvn's batch mode that results in [0m[0m still -# appearing as a leading ANSI sequence when echoing the property. -kotlinVersion=$( - mvn -B -U -q -Denforcer.skip=true -Dexec.executable=echo \ - -Dexec.args='${kotlin.version}' --non-recursive validate exec:exec 2>&1 | - head -n1 | sed 's;\(.\[[0-9]m\)*;;') && -# TEMP: Also fix the version of maven-enforcer-plugin, to prevent n5 from -# overriding it with a too-old version. Even though we pass enforcer.skip, -# so that the enforcer plugin does not actually do any checking, this version -# mismatch still triggers a problem: -# -# [ERROR] Failed to execute goal -# org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce -# (enforce-rules) on project n5-blosc: Unable to parse configuration of -# mojo org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce -# for parameter banDuplicateClasses: Cannot create instance of interface -# org.apache.maven.enforcer.rule.api.EnforcerRule: -# org.apache.maven.enforcer.rule.api.EnforcerRule.() -> [Help 1] -# -# Once n5 components stop doing that version pin, we can remove this here. -enforcerVersion=$( - mvn -B -U -q -Denforcer.skip=true -Dexec.executable=echo \ - -Dexec.args='${maven-enforcer-plugin.version}' --non-recursive validate exec:exec 2>&1 | - head -n1 | sed 's;\(.\[[0-9]m\)*;;') && -mv -f "$buildScript" "$buildScriptTemp" && -sed -E "s;mvn -Denforcer.skip;& -Dmaven-enforcer-plugin.version=$enforcerVersion -Dkotlin.version=$kotlinVersion;" "$buildScriptTemp" > "$buildScript" && - -chmod +x "$buildScript" && -rm "$buildScriptTemp" || - die 'Error adjusting melting pot build script!' - -# HACK: Adjust component POMs to satisfy Maven HTTPS strictness. -find "$meltingPotDir" -name pom.xml | - while read pom -do - mv "$pom" "$pom.original" && - sed -E -e 's_(https?://maven.imagej.net|http://maven.scijava.org)_https://maven.scijava.org_g' \ - -e 's_http://maven.apache.org/xsd_https://maven.apache.org/xsd_g' "$pom.original" > "$pom" || - die "Failed to adjust $pom" -done - -# HACK: Make component POMs extend the same version of pom-scijava -# being tested. This reduces dependency skew for transitively inherited -# components that were not managed at the time of that component release. -find "$meltingPotDir" -name pom.xml | while read pom -do - perl -0777 -i -pe 's/(\s*org.scijava<\/groupId>\s*pom-scijava<\/artifactId>\s*)[^\n]*/${1}999-mega-melt<\/version>/igs' "$pom" -done - -# HACK: Skip tests for projects with known problems. - -mv "$meltScript" "$meltScript.original" && -sed 's_\s*"$dir/build.sh"_\ -# HACK: If project is on the skipTests list, then skip the tests.\ -buildFlags=-Djava.awt.headless=true\ -grep -qxF "$f" $dir/skipTests.txt \&\& buildFlags=-DskipTests\ -\ -& $buildFlags_' "$meltScript.original" > "$meltScript" && -chmod +x "$meltScript" || - die "Failed to adjust $meltScript" - -# HACK: Remove flaky tests from imagej-ops builds. -# CachedOpEnvironmentTest fails intermittently. Of course, it should be -# somehow fixed in imagej-ops. But for now, let's not let it ruin the melt. -#rm -f "$meltingPotDir/net.imagej/imagej-ops/src/test/java/net/imagej/ops/cached/CachedOpEnvironmentTest.java" - -# TEMP: Until scijava/pom-scijava#236 is solved. -echo "net.imagej/imagej-ops" >> "$skipTestsFile" && - -# TEMP: Until saalfeldlab/n5-aws-s3#13 is released. -echo "org.janelia.saalfeldlab/n5-aws-s3" >> "$skipTestsFile" && - -# Error while checking the CLIJ2 installation: null -echo "sc.fiji/labkit-pixel-classification" >> "$skipTestsFile" || - die "Failed to generate $skipTestsFile" - -sectionEnd # Adjusting the melting pot - -# Run the melting pot now, unless -s flag was given. -doMelt=t -for arg in "$@" -do - if [ "$arg" = '-s' ] || [ "$arg" = '--skipBuild' ] - then - doMelt= - fi -done -if [ "$doMelt" ] -then - echo - cd "$meltingPotDir" - sh melt.sh - meltResult=$? - - # Dump logs for failing builds and/or tests. - for d in */* - do - test -d "$d" || continue - - # Check for failing build log. - buildLog="$d/build.log" - if [ -f "$buildLog" ] - then - if grep -qF 'BUILD FAILURE' "$buildLog" - then - echo - echo "[$buildLog]" - cat "$buildLog" - fi - fi - - # Check for failing test logs. - testLogsDir="$dir/target/surefire-reports" - if [ -d "$testLogsDir" ] - then - find "$testLogsDir" -name '*.txt' | - while read report - do - if grep -qF 'FAILURE!' "$report" - then - echo - echo "[$report]" - cat "$report" - fi - done - fi - done - - # Terminate the script with same exit code if the melt failed. - test "$meltResult" -eq 0 || exit "$meltResult" -else - echo && - echo 'Melting the pot... SKIPPED' -fi - -# Complete! -echo -echo 'All checks succeeded! :-D'