|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -Eeuo pipefail |
| 3 | + |
| 4 | +COMMIT="${1:?Missing netCDF-Java commit}" |
| 5 | +OUT="${2:?Missing output directory}" |
| 6 | +LIB=/usr/local/tomcat/webapps/thredds/WEB-INF/lib |
| 7 | +JAVA_HOME="${JAVA_HOME:-/opt/java/openjdk}" |
| 8 | +WORK=/tmp/netcdf-java-swiftfix |
| 9 | + |
| 10 | +rm -rf "$WORK" "$OUT" |
| 11 | +mkdir -p "$WORK/src/thredds/filesystem/s3" \ |
| 12 | + "$WORK/src/ucar/nc2/internal/ncml" \ |
| 13 | + "$WORK/classes/s3" "$WORK/classes/core" "$OUT" |
| 14 | + |
| 15 | +S3="$WORK/src/thredds/filesystem/s3/ControllerS3.java" |
| 16 | +CORE="$WORK/src/ucar/nc2/internal/ncml/AggregationExisting.java" |
| 17 | + |
| 18 | +curl -fsSL "https://raw.githubusercontent.com/Unidata/netcdf-java/${COMMIT}/cdm/s3/src/main/java/thredds/filesystem/s3/ControllerS3.java" -o "$S3" |
| 19 | +curl -fsSL "https://raw.githubusercontent.com/Unidata/netcdf-java/${COMMIT}/cdm/core/src/main/java/ucar/nc2/internal/ncml/AggregationExisting.java" -o "$CORE" |
| 20 | + |
| 21 | +awk ' |
| 22 | +{ |
| 23 | + print |
| 24 | + if ($0 ~ /^[[:space:]]*String continuationToken = useV2 \? responseV2\.nextContinuationToken\(\) : responseV1\.nextMarker\(\);[[:space:]]*$/) { |
| 25 | + print "" |
| 26 | + print " // OpenStack Swift may omit NextMarker for a truncated V1 response." |
| 27 | + print " if (!useV2" |
| 28 | + print " && continuationToken == null" |
| 29 | + print " && responseV1.isTruncated()" |
| 30 | + print " && !objects.isEmpty()) {" |
| 31 | + print " continuationToken = objects.get(objects.size() - 1).key();" |
| 32 | + print " }" |
| 33 | + } |
| 34 | +} |
| 35 | +' "$S3" > "$S3.patched" |
| 36 | +mv "$S3.patched" "$S3" |
| 37 | +grep -Fq 'continuationToken = objects.get(objects.size() - 1).key();' "$S3" |
| 38 | + |
| 39 | +OLD='Parse.readRootElement("file:" + cacheFile.getPath())' |
| 40 | +NEW='Parse.readRootElement(cacheFile.toURI().toString())' |
| 41 | +grep -Fq "$OLD" "$CORE" |
| 42 | +sed -i "s@${OLD}@${NEW}@" "$CORE" |
| 43 | +grep -Fq "$NEW" "$CORE" |
| 44 | + |
| 45 | +"$JAVA_HOME/bin/javac" -proc:none -cp "$LIB/*" -d "$WORK/classes/s3" "$S3" |
| 46 | +"$JAVA_HOME/bin/javac" -proc:none -cp "$LIB/*" -d "$WORK/classes/core" "$CORE" |
| 47 | + |
| 48 | +cp "$LIB/cdm-s3-5.9.1.jar" "$OUT/cdm-s3-5.9.1.jar" |
| 49 | +cp "$LIB/cdm-core-5.9.1.jar" "$OUT/cdm-core-5.9.1.jar" |
| 50 | + |
| 51 | +"$JAVA_HOME/bin/jar" --update --file "$OUT/cdm-s3-5.9.1.jar" \ |
| 52 | + -C "$WORK/classes/s3" thredds/filesystem/s3 |
| 53 | +"$JAVA_HOME/bin/jar" --update --file "$OUT/cdm-core-5.9.1.jar" \ |
| 54 | + -C "$WORK/classes/core" ucar/nc2/internal/ncml/AggregationExisting.class |
| 55 | + |
| 56 | +"$JAVA_HOME/bin/javap" -classpath "$OUT/cdm-core-5.9.1.jar" -c -p \ |
| 57 | + ucar.nc2.internal.ncml.AggregationExisting | grep -q 'java/io/File.toURI' |
| 58 | + |
| 59 | +sha256sum "$OUT/cdm-s3-5.9.1.jar" "$OUT/cdm-core-5.9.1.jar" \ |
| 60 | + > "$OUT/sha256sums.txt" |
| 61 | +cat "$OUT/sha256sums.txt" |
0 commit comments