Files
hibernate-demo/migration-5-to-7/scripts/compile-old-apis.sh
T

24 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Compiles src/compat/*.java against Hibernate 5.6.15 (h5/) and 7.4.14 (h7/) and records javac's answer in output/.
set -u
cd "$(dirname "$0")/.."
mkdir -p target output
compile() { # version dir file outfile
local v=$1 dir=$2 f=$3 out=$4
rm -rf target/classes-$f-$v; mkdir -p target/classes-$f-$v
{
echo "Hibernate $v, compiling $f.java"
javac -Xlint:deprecation -proc:none -d target/classes-$f-$v -cp "$(cat target/cp-$v.txt)" src/compat/$f.java 2>&1 | grep -v "^Picked up"
echo "javac exit status: ${PIPESTATUS[0]}"
} >> $out
}
for pair in "h5:5.6.15" "h7:7.4.14"; do
dir=${pair%%:*}; v=${pair##*:}
(cd $dir && mvn -q -B dependency:build-classpath -Dmdep.outputFile=../target/cp-$v.txt >/dev/null) || { echo "classpath failed for $v"; exit 1; }
for spec in "OldHibernate:03-old-hibernate-apis" "NewHibernate:04-new-hibernate-apis" "OldAnnotations:05-old-annotations" "NewAnnotations:06-new-annotations" "JavaxNamespace:09-namespace-javax" "JakartaNamespace:09-namespace-jakarta"; do
f=${spec%%:*}; n=${spec##*:}
out=output/$n-$v.txt; : > $out
compile $v $dir $f $out
done
done