Files
2026-11-06 21:43:48 +05:30

43 lines
1.7 KiB
Bash

#!/usr/bin/env bash
# Download real jars from Maven Central (sha1-checked) into a throw-away dir and scan them with tools/ScanJar.java.
# JDK25=/path/to/jdk-25 ./scripts/scan-libs.sh [--classes] needs network; ONLY='regex' limits the coordinate list
set -uo pipefail
unset JAVA_TOOL_OPTIONS
HERE="$(cd "$(dirname "$0")/.." && pwd)"
JDK25="${JDK25:-/tmp/tools/jdk-25.0.5+8}"
D="$(mktemp -d)"; trap 'rm -rf "$D"' EXIT
COORDS="
io.netty:netty-common:4.2.20.Final
io.netty:netty-common:4.1.140.Final
io.netty:netty-common:4.1.100.Final
com.google.guava:guava:33.8.0-jre
com.google.guava:guava:32.1.3-jre
org.apache.lucene:lucene-core:10.6.0
org.apache.lucene:lucene-core:9.12.3
com.esotericsoftware:kryo:5.7.1
org.apache.hadoop:hadoop-common:3.5.0
org.apache.hadoop:hadoop-common:3.3.6
org.apache.cassandra:cassandra-all:5.0.9
org.agrona:agrona:2.7.1
org.jctools:jctools-core:4.0.7
com.github.ben-manes.caffeine:caffeine:3.3.1
com.google.protobuf:protobuf-java:4.36.2
org.xerial.snappy:snappy-java:1.1.10.12
org.apache.spark:spark-unsafe_2.13:4.3.0
"
JARS=()
for c in $(echo "$COORDS" | grep -E "${ONLY:-.}"); do
IFS=: read -r g a v <<<"$c"
url="https://repo1.maven.org/maven2/${g//.//}/$a/$v/$a-$v.jar"
ok=no
for try in 1 2 3 4 5 6 7 8; do sleep 1; # the sandbox proxy occasionally truncates a transfer; the sha1 check catches it
curl -sfL -o "$D/$a-$v.jar" "$url" || continue
want="$(curl -sfL "$url.sha1" | cut -c1-40)"; got="$(sha1sum "$D/$a-$v.jar" | cut -c1-40)"
[ -n "$want" ] && [ "$want" = "$got" ] && { ok=yes; break; }
done
[ $ok = yes ] && echo "sha1 ok $c" || { echo "FAILED (download or sha1) $c"; continue; }
JARS+=("$D/$a-$v.jar")
done
echo
"$JDK25/bin/java" "$HERE/tools/ScanJar.java" "$@" "${JARS[@]}" 2>&1 | sed "s#$D/##g"