diff --git a/.github/build.sh b/.github/build.sh index ba5e7a29..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/main/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/melt.sh b/.github/melt.sh new file mode 100755 index 00000000..b15e478d --- /dev/null +++ b/.github/melt.sh @@ -0,0 +1,4 @@ +#!/bin/sh +uv tool install "git+https://github.com/scijava/pombast.git +pombast melt . || true +pombast smelt --json smelt.json . diff --git a/.github/publish.sh b/.github/publish.sh new file mode 100755 index 00000000..be5b0745 --- /dev/null +++ b/.github/publish.sh @@ -0,0 +1,40 @@ +#!/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 github-actions +git config --global user.email github-actions@github.com + +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" +if git diff --quiet . +then + echo "== No changes ==" +else + echo "== Committing changes ==" + git commit -m "$message" + git push +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 6f254a7e..00000000 --- a/.github/setup.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -curl -fsLO https://raw.githubusercontent.com/scijava/scijava-scripts/main/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..60f1a401 --- /dev/null +++ b/.github/status.sh @@ -0,0 +1,6 @@ +#!/bin/sh +uv tool install "git+https://github.com/scijava/pombast.git +pombast status . +pombast badges -o badges.json . +pombast team . +.github/publish.sh "Update status reports" index.html badges.json team.html diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c2298d4a..a29e656c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,14 +8,18 @@ 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' jobs: build: runs-on: ubuntu-latest + permissions: + actions: write # needed to delete and re-save the pombast cache steps: - uses: actions/checkout@v4 + - name: Set up Java uses: actions/setup-java@v4 with: @@ -24,19 +28,20 @@ jobs: 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 }} @@ -46,22 +51,31 @@ jobs: 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: + path: ~/.cache/pombast + key: ${{ runner.os }}-pombast-build + + - name: Run pombast melt+smelt commands + run: .github/melt.sh + shell: bash + + - 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 + 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" smelt.json + shell: bash diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1848a199..27edfcb2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,12 +19,13 @@ jobs: 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 }} diff --git a/.github/workflows/status.yml b/.github/workflows/status.yml new file mode 100644 index 00000000..c14eaf3d --- /dev/null +++ b/.github/workflows/status.yml @@ -0,0 +1,71 @@ +name: status + +on: + schedule: + # Run daily at 0500 UTC. + - cron: '0 5 * * *' + push: + branches: + - master + +jobs: + status: + runs-on: ubuntu-latest + 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: + path: ~/.cache/pombast + 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 }} + + - 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 + 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/bombast.toml b/bombast.toml deleted file mode 100644 index 0b37d1db..00000000 --- a/bombast.toml +++ /dev/null @@ -1,160 +0,0 @@ -[filter] -includes = [ - "ca.mcgill:*", - "io.scif:*", - "jitk:*", - "mpicbg:*", - "net.imagej:*", - "net.imglib2:*", - "net.preibisch:*", - "org.bonej:*", - "org.janelia.saalfeldlab:*", - "org.janelia:*", - "org.morphonets:*", - "org.scijava:*", - "sc.fiji:*", -] -excludes = [ - # TEMP: Exclude org.bytedeco:hdf5 until cisd:jhdf5 is gone. - 'org.bytedeco:hdf5', - # TEMP: Skip components within multi-module reactors. - # Neither melting-pot.sh nor release-version.sh understand - # multi-module repositories; release-version.sh needs to learn - # how to tag and release individual components from multi-module - # repos, so that when melting-pot.sh shallow clones the repo at - # that tag and invokes a build, it will be building only the - # released component as it does with single-component repos. - 'org.scijava:scijava-collections', - 'org.scijava:scijava-common3', - 'org.scijava:scijava-concurrent', - 'org.scijava:scijava-discovery-test', - 'org.scijava:scijava-discovery', - 'org.scijava:scijava-function', - 'org.scijava:scijava-legacy', - 'org.scijava:scijava-meta', - 'org.scijava:scijava-ops-api', - 'org.scijava:scijava-ops-benchmarks', - 'org.scijava:scijava-ops-engine', - 'org.scijava:scijava-ops-ext-parser', - 'org.scijava:scijava-ops-flim', - 'org.scijava:scijava-ops-image', - 'org.scijava:scijava-ops-indexer', - 'org.scijava:scijava-ops-opencv', - 'org.scijava:scijava-ops-spi', - 'org.scijava:scijava-ops-tutorial', - 'org.scijava:scijava-priority', - 'org.scijava:scijava-progress', - 'org.scijava:scijava-struct', - 'org.scijava:scijava-taglets', - 'org.scijava:scijava-testutil', - 'org.scijava:scijava-types', - 'mpicbg:mpicbg', 'mpicbg:mpicbg_', - # NB: Skip artifacts requiring minimum Java version >8. - '*:algart-tiff', - '*:javafx-base', - '*:javafx-controls', - '*:javafx-fxml', - '*:javafx-graphics', - '*:javafx-media', - '*:javafx-swing', - '*:javafx-web', - '*:SNT', - # NB: Skip closed-source artifacts. - '*:bonej-plus', - # 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. - 'net.imagej: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. - 'org.scijava:j3dcore', - 'org.scijava:j3dutils', - 'org.scijava:jep', - 'org.scijava:junit-benchmarks', - 'org.scijava: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. - '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', -] - -[build] -min-java-version = 8 - -[skip-tests] -components = [ - # java.lang.AssertionError - # at org.scijava.minimaven.BasicTest.testClassifiers(BasicTest.java:216) - "org.scijava:minimaven", - - # 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 melt. -"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"] - -# Avoid notNull assertion error at -# org.janelia.saalfeldlab.n5.universe.metadata.MetadataTests.testEmptyBase(MetadataTests.java:346) -"org.janelia.saalfeldlab:n5-universe" = ["org.janelia.saalfeldlab.n5.universe.metadata.MetadataTests"] - -# In org.janelia.saalfeldlab.n5.zarr.ZarrCachedFSTest.cacheBehaviorTest: -# arrays first differed at element [0]; expected:<[a]> but was:<[c]> -"org.janelia.saalfeldlab:n5-zarr" = ["org.janelia.saalfeldlab.n5.zarr.ZarrCachedFSTest"] -# Note: The above test is fixed with saalfeldlab/n5-zarr@e7edcec3, -# but the fix is only available in n5-zarr 2.0.0-alpha-1, and we -# do not want to update the SciJava BOM to the alpha version. - -# In sc.fiji.labkit.ui.plugin.CalculateProbabilityMapWithLabkitIJ1PluginTest.test: -# Macro Error: "probability map for blobs.tif" not found in line 4 -# selectImage ( <"probability map for blobs.tif"> ) ; -# java.lang.RuntimeException: Macro canceled -# at ij.macro.Interpreter.error(Interpreter.java:1403) -# at ij.macro.Functions.selectImage(Functions.java:3225) -# at ij.macro.Functions.doFunction(Functions.java:136) -# at ij.macro.Interpreter.doStatement(Interpreter.java:280) -# at ij.macro.Interpreter.doStatements(Interpreter.java:266) -# at ij.macro.Interpreter.run(Interpreter.java:162) -# at ij.macro.Interpreter.run(Interpreter.java:92) -# at sc.fiji.labkit.ui.plugin.CalculateProbabilityMapWithLabkitIJ1PluginTest.test(CalculateProbabilityMapWithLabkitIJ1PluginTest.java:65) -"sc.fiji:labkit-ui" = ["sc.fiji.labkit.ui.plugin.CalculateProbabilityMapWithLabkitIJ1PluginTest"] - -[components."net.imagej:ij"] -"java-version" = 11 - -[components."net.imglib2:imglib2-mesh"] -"java-version" = 11 diff --git a/pom.xml b/pom.xml index a5a49c2c..e733cc1e 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ pom-scijava - 44.0.1-SNAPSHOT + 45.0.0-SNAPSHOT pom SciJava Parent POM @@ -376,13 +376,17 @@ ${scijava-cache.version} - 2.99.2 + 2.100.1 ${scijava-common.version} 2.0.3 ${scijava-config.version} + + 1.0.0 + ${scijava-desktop.version} + 0.1.2 ${scijava-grab.version} @@ -395,10 +399,6 @@ 0.1.0 ${scijava-java3d.version} - - 1.0.0 - ${scijava-links.version} - 1.0.0-beta-3 ${scijava-listeners.version} @@ -408,7 +408,7 @@ ${scijava-log-slf4j.version} - 1.0.1 + 1.0.2 ${scijava-optional.version} @@ -419,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} @@ -436,7 +432,7 @@ ${scijava-search.version} - 1.0.2 + 1.0.3 ${scijava-table.version} @@ -604,7 +600,7 @@ ${imagej-server.version} - 1.1.8 + 1.1.9 ${imagej-tensorflow.version} @@ -676,7 +672,7 @@ - 0.48.0 + 0.49.0 ${scifio.version} @@ -810,7 +806,7 @@ 3.2.0 ${Fiji_Plugins.version} - 2.0.1 + 3.0.0 ${FilamentDetector.version} 2.0.1 @@ -891,7 +887,7 @@ 3.0.1 ${Multi_Kymograph.version} - 2.0.0 + 3.0.0 ${OMEVisual.version} 2.0.0 @@ -1032,7 +1028,7 @@ - 2.5.4 + 2.5.6 ${View5D.version} ${View5D_.version} @@ -1046,7 +1042,7 @@ ${bigwarp_fiji.version} - 1.6.5 + 1.6.6 ${mpicbg.version} ${mpicbg.version} ${mpicbg_.version} @@ -1066,7 +1062,7 @@ ${bigdataviewer-core.version} - 3.1.2 + 4.0.0 ${bigdataviewer-server.version} @@ -1092,15 +1088,15 @@ - 7.14.0 + 8.0.0 ${TrackMate.version} - 0.1.2 + 1.0.1 ${TrackMate-Cellpose.version} - 3.1.4 + 4.0.0 ${TrackMate-CSVImporter.version} @@ -1114,11 +1110,11 @@ ${TrackMate-ExTrack.version} - 1.4.0 + 2.0.0 ${TrackMate-Ilastik.version} - 1.2.1 + 2.0.0 ${TrackMate-MorphoLibJ.version} @@ -1134,7 +1130,7 @@ ${TrackMate-StarDist.version} - 1.3.1 + 2.0.0 ${TrackMate-Weka.version} @@ -1236,8 +1232,8 @@ ${clijx-weka_.version} - 2.5.2 - 7.0.6 + 2.6.1 + 9.0.0 0.2.0 ${BigStitcher.version} ${multiview-reconstruction.version} @@ -1257,11 +1253,11 @@ ${bonej-utilities.version} - 4.2.1 + 5.0.9 ${SNT.version} - 7.1.1 + 8.0.1 ${MaMuT.version} @@ -2119,7 +2115,7 @@ 26 | 24 27 | 25 --> - 23.0.2 + 19.0.2.1 ${javafx.version} ${javafx.version} ${javafx.version} @@ -2651,6 +2647,13 @@ ${org.scijava.scijava-config.version} + + + org.scijava + scijava-desktop + ${org.scijava.scijava-desktop.version} + + org.scijava @@ -2672,13 +2675,6 @@ ${org.scijava.scijava-java3d.version} - - - org.scijava - scijava-links - ${org.scijava.scijava-links.version} - - org.scijava @@ -2714,13 +2710,6 @@ ${org.scijava.scijava-plugins-commands.version} - - - org.scijava - scijava-plugins-platforms - ${org.scijava.scijava-plugins-platforms.version} - - org.scijava diff --git a/pombast.toml b/pombast.toml new file mode 100644 index 00000000..fe0c8e8d --- /dev/null +++ b/pombast.toml @@ -0,0 +1,1092 @@ +[common] +default-java-version = 8 +repositories = ["scijava.public=https://maven.scijava.org/content/groups/public"] + +[status] +rules = "rules.xml" +html = "../status.scijava.org/index.html" +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] +html = "../status.scijava.org/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] +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 it makes sense to melt with that version of Java. +# Unfortunately, the scijava.jvm.version is currently set to 11 by default. +# So even though OpenJDK 21 is being used to run Maven, the enforcer plugin still +# complains when encountering any Java libraries with bytecode newer than 11. +# Setting scijava.jvm.version to 21 by default would avoid the issue, but... +# is that really a good idea? Setting to 11 seems like a nice baseline compromise right now. +java-version = 21 # Maximum Java version of all included component + deps. +template = "pombast/mega-melt-template.xml" +excludes = [ + # TEMP: Exclude org.bytedeco:hdf5 until cisd:jhdf5 is gone. + 'org.bytedeco:hdf5', + # TEMP: Skip components within multi-module reactors. + # Neither pombast nor release-version.sh understand multi- + # module repositories; release-version.sh needs to learn how + # to tag and release individual components from multi-module + # repos, so that when pombast shallow clones the repo at that + # tag and invokes a build, it will be building only the + # released component as it does with single-component repos. + 'org.scijava:scijava-collections', + 'org.scijava:scijava-common3', + 'org.scijava:scijava-concurrent', + 'org.scijava:scijava-discovery-test', + 'org.scijava:scijava-discovery', + 'org.scijava:scijava-function', + 'org.scijava:scijava-legacy', + 'org.scijava:scijava-meta', + 'org.scijava:scijava-ops-api', + 'org.scijava:scijava-ops-benchmarks', + 'org.scijava:scijava-ops-engine', + 'org.scijava:scijava-ops-ext-parser', + 'org.scijava:scijava-ops-flim', + 'org.scijava:scijava-ops-image', + 'org.scijava:scijava-ops-indexer', + 'org.scijava:scijava-ops-opencv', + 'org.scijava:scijava-ops-spi', + 'org.scijava:scijava-ops-tutorial', + 'org.scijava:scijava-priority', + 'org.scijava:scijava-progress', + 'org.scijava:scijava-struct', + 'org.scijava:scijava-taglets', + 'org.scijava:scijava-testutil', + 'org.scijava:scijava-types', + 'mpicbg:mpicbg', 'mpicbg:mpicbg_', + # NB: Skip artifacts requiring minimum Java version >11. + 'net.algart:algart-tiff', + 'org.morphonets:SNT', + # NB: Skip closed-source artifacts. + 'org.bonej:bonej-plus', + # 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 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', + # 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] +includes = [ + "ca.mcgill:*", + "de.nanoimaging:*", + "fr.inra.ijpb:*", + "io.scif:*", + "jitk:*", + "mpicbg:*", + "net.imagej:*", + "net.imglib2:*", + "net.preibisch:*", + "org.bonej:*", + "org.janelia.saalfeldlab:*", + "org.janelia:*", + "org.morphonets:*", + "org.scijava:*", + "sc.fiji:*", +] +excludes = [ + # 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', + # TEMP: Skip components within multi-module reactors. + # Neither pombast nor release-version.sh understand multi- + # module repositories; release-version.sh needs to learn how + # to tag and release individual components from multi-module + # repos, so that when pombast shallow clones the repo at that + # tag and invokes a build, it will be building only the + # released component as it does with single-component repos. + 'org.scijava:scijava-collections', + 'org.scijava:scijava-common3', + 'org.scijava:scijava-concurrent', + 'org.scijava:scijava-discovery-test', + 'org.scijava:scijava-discovery', + 'org.scijava:scijava-function', + 'org.scijava:scijava-legacy', + 'org.scijava:scijava-meta', + 'org.scijava:scijava-ops-api', + 'org.scijava:scijava-ops-benchmarks', + 'org.scijava:scijava-ops-engine', + 'org.scijava:scijava-ops-ext-parser', + 'org.scijava:scijava-ops-flim', + 'org.scijava:scijava-ops-image', + 'org.scijava:scijava-ops-indexer', + 'org.scijava:scijava-ops-opencv', + 'org.scijava:scijava-ops-spi', + 'org.scijava:scijava-ops-tutorial', + 'org.scijava:scijava-priority', + 'org.scijava:scijava-progress', + 'org.scijava:scijava-struct', + 'org.scijava:scijava-taglets', + 'org.scijava:scijava-testutil', + 'org.scijava:scijava-types', +] +skip-tests = [ + # java.lang.AssertionError + # at org.scijava.minimaven.BasicTest.testClassifiers(BasicTest.java:216) + "org.scijava:minimaven", + + # 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 melt. +"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"] + +# Avoid notNull assertion error at +# org.janelia.saalfeldlab.n5.universe.metadata.MetadataTests.testEmptyBase(MetadataTests.java:346) +"org.janelia.saalfeldlab:n5-universe" = ["org.janelia.saalfeldlab.n5.universe.metadata.MetadataTests"] + +# In org.janelia.saalfeldlab.n5.zarr.ZarrCachedFSTest.cacheBehaviorTest: +# arrays first differed at element [0]; expected:<[a]> but was:<[c]> +"org.janelia.saalfeldlab:n5-zarr" = ["org.janelia.saalfeldlab.n5.zarr.ZarrCachedFSTest"] +# Note: The above test is fixed with saalfeldlab/n5-zarr@e7edcec3, +# but the fix is only available in n5-zarr 2.0.0-alpha-1, and we +# do not want to update the SciJava BOM to the alpha version. + +# In sc.fiji.labkit.ui.plugin.CalculateProbabilityMapWithLabkitIJ1PluginTest.test: +# Macro Error: "probability map for blobs.tif" not found in line 4 +# selectImage ( <"probability map for blobs.tif"> ) ; +# java.lang.RuntimeException: Macro canceled +# at ij.macro.Interpreter.error(Interpreter.java:1403) +# at ij.macro.Functions.selectImage(Functions.java:3225) +# at ij.macro.Functions.doFunction(Functions.java:136) +# at ij.macro.Interpreter.doStatement(Interpreter.java:280) +# at ij.macro.Interpreter.doStatements(Interpreter.java:266) +# at ij.macro.Interpreter.run(Interpreter.java:162) +# at ij.macro.Interpreter.run(Interpreter.java:92) +# at sc.fiji.labkit.ui.plugin.CalculateProbabilityMapWithLabkitIJ1PluginTest.test(CalculateProbabilityMapWithLabkitIJ1PluginTest.java:65) +"sc.fiji:labkit-ui" = ["sc.fiji.labkit.ui.plugin.CalculateProbabilityMapWithLabkitIJ1PluginTest"] + +[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"] +java-version = 11 + +[components."net.preibisch:multiview-reconstruction"] +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-legacy-plugins_"] +java-version = 11 +ci-build = "build-main" + +[components."org.bonej:bonej-legacy-util_"] +java-version = 11 +ci-build = "build-main" + +[components."org.bonej:bonej-ops"] +java-version = 11 +ci-build = "build-main" + +[components."org.bonej:bonej-plugins"] +java-version = 11 +ci-build = "build-main" + +[components."org.bonej:bonej-utilities"] +java-version = 11 +ci-build = "build-main" + +[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.morphonets:SNT"] +java-version = 21 + +[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:minimaven"] +last-vetted = "20230309000000" + +[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-search"] +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-groovy"] +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-kotlin"] +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:FilamentDetector"] +java-version = 11 + +[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:OMEVisual"] +java-version = 11 + +[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-vistools"] +ci-build = "build-main" + +[components."sc.fiji:bigdataviewer_fiji"] +ci-build = "build-main" + +[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 @@ + + +
+ +
pom-scijava +
+
+ +
pom-scijava-base +
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/mega-melt-template.xml similarity index 94% rename from tests/mega-melt-template.xml rename to pombast/mega-melt-template.xml index c8709f34..d776adc6 100644 --- a/tests/mega-melt-template.xml +++ b/pombast/mega-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/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 fef2758d..00000000 --- a/tests/generate-mega-melt.py +++ /dev/null @@ -1,147 +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: 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', - # TEMP: Skip components within multi-module reactors. - # Neither melting-pot.sh nor release-version.sh understand - # multi-module repositories; release-version.sh needs to learn - # how to tag and release individual components from multi-module - # repos, so that when melting-pot.sh shallow clones the repo at - # that tag and invokes a build, it will be building only the - # released component as it does with single-component repos. - 'scijava-collections', - 'scijava-common3', - 'scijava-concurrent', - 'scijava-discovery-test', - 'scijava-discovery', - 'scijava-function', - 'scijava-legacy', - 'scijava-meta', - 'scijava-ops-api', - 'scijava-ops-benchmarks', - 'scijava-ops-engine', - 'scijava-ops-ext-parser', - 'scijava-ops-flim', - 'scijava-ops-image', - 'scijava-ops-indexer', - 'scijava-ops-opencv', - 'scijava-ops-spi', - 'scijava-ops-tutorial', - 'scijava-priority', - 'scijava-progress', - 'scijava-struct', - 'scijava-taglets', - 'scijava-testutil', - 'scijava-types', - 'mpicbg', 'mpicbg_', - # NB: Skip artifacts requiring minimum Java version >8. - 'algart-tiff', - 'javafx-base', - 'javafx-controls', - 'javafx-fxml', - 'javafx-graphics', - 'javafx-media', - 'javafx-swing', - 'javafx-web', - 'SNT', - # NB: Skip closed-source artifacts. - 'bonej-plus', - # 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 6ddc8716..00000000 --- a/tests/run.sh +++ /dev/null @@ -1,484 +0,0 @@ -#!/bin/sh - -# -# run.sh - Tests correctness of the pom-scijava BOM. -# - -die () { echo "$*" >&2; exit 1; } - -changed () { ! diff $@ >/dev/null; } - -sectionStart() { - startTime=$(date +%s) - echo - printf "$1... " -} - -sectionEnd() { - endTime=$(date +%s) - echo "Done! [$((endTime-startTime))s]" -} - -# Check prerequisites. - -# HACK: Work around macOS Python naming inconsistency. -if command -v python3 >/dev/null 2>&1; then - PYTHON=python3 -elif command -v python >/dev/null 2>&1; then - PYTHON=python -else - die "This script requires Python." -fi - -sectionStart 'Generating mega-melt project' - -dir=$(cd "$(dirname "$0")" && pwd) -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" -megaMeltDir=$(mkdir -p "$megaMeltDir" && cd "$megaMeltDir" && pwd) -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 'net.imglib2:imglib2-mesh' \ - -e 'org.bonej:bonej-plus' \ - -e 'org.openjfx:*' \ - -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!' - -buildScript="$meltingPotDir/build.sh" -versionPins="$meltingPotDir/version-pins.xml" - -echo -echo 'Hacking in any changed components...' - -# Mix in changed components. Syntax is: -# -# groupId|artifactId|path-to-remote|remote-ref -# -# Example: -# -# components=' -# org.janelia.saalfeldlab|n5-imglib2|git@github.com:saalfeldlab/n5-imglib2|pull/54/head -# sc.fiji|SPIM_Registration|git@github.com:fiji/SPIM_Registration|pull/142/head -# sc.fiji|labkit-ui|git@github.com:juglab/labkit-ui|pull/115/head -# sc.fiji|labkit-pixel-classification|git@github.com:juglab/labkit-pixel-classification|pull/12/head -# sc.fiji|z_spacing|git@github.com:saalfeldlab/z-spacing|pull/28/head -# net.imagej|imagej-common|git@github.com:imagej/imagej-common|pull/112/head -# sc.fiji|TrackMate|git@github.com:trackmate-sc/TrackMate|pull/289/head -# sc.fiji|TrackMate-Skeleton|git@github.com:trackmate-sc/TrackMate-Skeleton|pull/2/head -# sc.fiji|bigwarp_fiji|git@github.com:saalfeldlab/bigwarp|pull/170/head -# net.imagej|imagej-ops|git@github.com:imagej/imagej-ops|pull/654/head -# ' -# -# One entry per line inside the components variable declaration. -# No leading or trailing whitespace anywhere. -# -# Each component will: -# 1. Be updated to that ref (cloning as needed); -# 2. Have its version adjusted to 999 in its pom.xml and gav marker; -# 3. Be `mvn install`ed to the local repo cache at that version; -# 4. Have its version adjusted to 999 in melting pot's build.sh; -# 5. Be added to the list of components to build in melt.sh (if not already present). -components=' -' -failFile="$meltingPotDir/fail" -rm -f "$failFile" -echo "$components" | while read component -do - test "$component" || continue - - g=${component%%|*}; r=${component#*|} - a=${r%%|*}; r=${r#*|} - remote=${r%%|*}; ref=${r#*|} - test "$g" -a "$a" -a "$remote" -a "$ref" || { - touch "$failFile" - die "Invalid component line: $component" - } - d="$meltingPotDir/$g/$a" - printf "[$g:$a] " - - # Update component working copy to desired ref (cloning as needed). - mkdir -p "$d" && - echo "Log of actions for custom version of $g:$a" > "$d/surgery.log" && - echo >> "$d/surgery.log" && - test -f "$d/.git" || git init "$d" >> "$d/surgery.log" || { - touch "$failFile" - die "Failed to access or initialize repository in directory $d" - } - printf . - cd "$d" && - git remote add mega-melt "$remote" >> surgery.log && - printf . && - git fetch mega-melt --depth 1 "$ref":mega-melt >> surgery.log 2>&1 && - printf . && - git switch mega-melt >> surgery.log 2>&1 || { - touch "$failFile" - die "$g:$a: failed to fetch ref '$ref' from remote $remote" - } - printf . - - # Adjust component version to 999. - mvn versions:set -DnewVersion=999 >> surgery.log || { - touch "$failFile" - die "$g:$a: failed to adjust pom.xml version" - } - printf . - if [ -f gav ] - then - mv gav gav.prehacks - sed -E "s;:[^:]*$;:999;" gav.prehacks > gav && changed gav.prehacks gav || { - touch "$failFile" - die "$g:$a: failed to adjust gav version" - } - fi - printf . - - # Install changed component into the local repo cache. - mvn -Denforcer.skip -Dmaven.test.skip install >> surgery.log || { - touch "$failFile" - die "$g:$a: failed to build and install component" - } - printf . - - # Adjust component version to 999 in melting pot's version-pins.xml. - cd "$meltingPotDir" - test -f "$versionPins.prehacks" || cp "$versionPins" "$versionPins.prehacks" || { - touch "$failFile" - die "$g:$a: failed to back up $versionPins" - } - printf . - echo "$a" | grep -q '^[0-9]' && aa="_$a" || aa="$a" - mv -f "$versionPins" "$versionPins.tmp" && - sed -E "s;<\($g\\.$a\|$aa\)\\.version>[^<]*;<\1.version>999;g" "$versionPins.tmp" > "$versionPins" && - changed "$versionPins.tmp" "$versionPins" || - { - touch "$failFile" - die "$g:$a: failed to adjust component version in $versionPins" - } - printf . - - # Add component to the build list in melt.sh (if not already present). - grep -q "\b$g/$a\b" "$meltScript" || { - test -f "$meltScript.prehacks" || cp "$meltScript" "$meltScript.prehacks" - mv -f "$meltScript" "$meltScript.tmp" && - perl -0777 -pe 's;\n+do\n;\n '"$g/$a"' \\$&;igs' "$meltScript.tmp" > "$meltScript" - } || { - touch "$failFile" - die "$g:$a: failed to add component to the build list in $meltScript" - } - printf ".\n" -done -rm -f "$versionPins.tmp" "$meltScript.tmp" -test ! -f "$failFile" || - die "Failed to hack in changed components!" - -sectionStart 'Adjusting the melting pot: version-pins.xml configuration' - -cp "$versionPins" "$versionPins.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 "$versionPins" "$versionPins.tmp" && -sed -E 's;(<('"$shortVersionClashes"')\.version>[^ ]*) <[^ ]*;\1;' "$versionPins.tmp" > "$versionPins" && - changed "$versionPins.tmp" "$versionPins" || - die 'Error adjusting melting pot version pins! [1]' - -# HACK: Add non-standard version properties used prior to -# pom-scijava 32.0.0-beta-1; see d0bf752070d96a2613c42e4e1ab86ebdd07c29ee. -mv -f "$versionPins" "$versionPins.tmp" && -sed -E 's; ([^<]*);& \1;' "$versionPins.tmp" > "$versionPins" && - changed "$versionPins.tmp" "$versionPins" && -mv -f "$versionPins" "$versionPins.tmp" && -sed -E 's; ([^<]*);& \2;' "$versionPins.tmp" > "$versionPins" && - changed "$versionPins.tmp" "$versionPins" || - die 'Error adjusting melting pot version pins! [2]' - -# HACK: Add non-standard net.imagej:ij version property used prior to -# pom-scijava 28.0.0; see 7d2cc442b107b3ac2dcb799d282f2c0b5822649d. -mv -f "$versionPins" "$versionPins.tmp" && -sed -E 's; ([^<]*);& \1;' "$versionPins.tmp" > "$versionPins" && - changed "$versionPins.tmp" "$versionPins" || - die 'Error adjusting melting pot version pins! [3]' - -rm "$versionPins.tmp" || - die 'Error adjusting melting pot version pins! [4]' - -sectionEnd # Adjusting the melting pot: version-pins.xml configuration - -sectionStart 'Adjusting the melting pot: build.sh script' - -cp "$buildScript" "$buildScript.original" && - -# 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" "$buildScript.tmp" && -sed -E "s;mvn .*-Denforcer.skip;& -Dmaven-enforcer-plugin.version=$enforcerVersion -Dkotlin.version=$kotlinVersion;" "$buildScript.tmp" > "$buildScript" && - changed "$buildScript.tmp" "$buildScript" && - -chmod +x "$buildScript" && -rm "$buildScript.tmp" || - die 'Error adjusting melting pot build script!' - -sectionEnd # Adjusting the melting pot: build.sh script - -sectionStart 'Adjusting the melting pot: component POMs' - -# 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 - -sectionEnd # Adjusting the melting pot: component POMs - -sectionStart 'Adjusting the melting pot: melt.sh script' - -# 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" - -sectionEnd # Adjusting the melting pot: melt.sh script - -sectionStart 'Adjusting the melting pot: unit test hacks' - -# Remove flaky tests. - -# 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" - -# In org.janelia.saalfeldlab.n5.metadata.ome.ngff.v04.WriteAxesTests.testXYT: -# java.util.NoSuchElementException: No value present -rm -f "$meltingPotDir/org.janelia.saalfeldlab/n5-ij/src/test/java/org/janelia/saalfeldlab/n5/metadata/ome/ngff/v04/WriteAxesTests.java" - -# Avoid notNull assertion error at -# org.janelia.saalfeldlab.n5.universe.metadata.MetadataTests.testEmptyBase(MetadataTests.java:346) -rm -f "$meltingPotDir/org.janelia.saalfeldlab/n5-universe/src/test/java/org/janelia/saalfeldlab/n5/universe/metadata/MetadataTests.java" - -# In org.janelia.saalfeldlab.n5.zarr.ZarrCachedFSTest.cacheBehaviorTest: -# arrays first differed at element [0]; expected:<[a]> but was:<[c]> -rm -f "$meltingPotDir/org.janelia.saalfeldlab/n5-zarr/src/test/java/org/janelia/saalfeldlab/n5/zarr/ZarrCachedFSTest.java" -# Note: The above test is fixed with saalfeldlab/n5-zarr@e7edcec3, -# but the fix is only available in n5-zarr 2.0.0-alpha-1, and we -# do not want to update the SciJava BOM to the alpha version. - -# In sc.fiji.labkit.ui.plugin.CalculateProbabilityMapWithLabkitIJ1PluginTest.test: -# Macro Error: "probability map for blobs.tif" not found in line 4 -# selectImage ( <"probability map for blobs.tif"> ) ; -# java.lang.RuntimeException: Macro canceled -# at ij.macro.Interpreter.error(Interpreter.java:1403) -# at ij.macro.Functions.selectImage(Functions.java:3225) -# at ij.macro.Functions.doFunction(Functions.java:136) -# at ij.macro.Interpreter.doStatement(Interpreter.java:280) -# at ij.macro.Interpreter.doStatements(Interpreter.java:266) -# at ij.macro.Interpreter.run(Interpreter.java:162) -# at ij.macro.Interpreter.run(Interpreter.java:92) -# at sc.fiji.labkit.ui.plugin.CalculateProbabilityMapWithLabkitIJ1PluginTest.test(CalculateProbabilityMapWithLabkitIJ1PluginTest.java:65) -rm -f "$meltingPotDir/sc.fiji/labkit-ui/src/test/java/sc/fiji/labkit/ui/plugin/CalculateProbabilityMapWithLabkitIJ1PluginTest.java" - -# Skip testing of components with non-working tests. - -# java.lang.AssertionError -# at org.scijava.minimaven.BasicTest.testClassifiers(BasicTest.java:216) -echo "org.scijava/minimaven" >> "$skipTestsFile" || - die "Failed to generate $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: unit test hacks - -# 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'