Fix gradle and add workflows
Build and Test j3270 / Build JAR & Run Tests (push) Failing after 2m24s
Build and Test j3270 / Build JAR & Run Tests (push) Failing after 2m24s
This commit is contained in:
+93
-28
@@ -1,37 +1,102 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "=== Building j3270 (Desktop JAR) and a3270 (Android APK) ==="
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
export JAVA_HOME="/Users/rudi/.sdkman/candidates/java/21.0.6-sem"
|
||||
export ANDROID_HOME="/Users/rudi/Library/Android/sdk"
|
||||
echo "=== Building j3270 Terminal Emulator ==="
|
||||
|
||||
GRADLE_BIN="/Users/rudi/.gradle/wrapper/dists/gradle-8.5-bin/5t9huq95ubn472n8rpzujfbqh/gradle-8.5/bin/gradle"
|
||||
BUILD_DIR="$(pwd)/build"
|
||||
# 1. Locate Java toolchain
|
||||
JAVAC_BIN=""
|
||||
JAR_BIN=""
|
||||
|
||||
mkdir -p "$BUILD_DIR"
|
||||
|
||||
echo "Building Android APK (a3270)..."
|
||||
"$GRADLE_BIN" :a3270:assembleDebug
|
||||
|
||||
echo "Building Desktop App JAR (j3270)..."
|
||||
mkdir -p "$BUILD_DIR/lib3270j" "$BUILD_DIR/j3270"
|
||||
"$JAVA_HOME/bin/javac" -d "$BUILD_DIR/lib3270j" $(find lib3270j/src -name "*.java")
|
||||
"$JAVA_HOME/bin/javac" -cp "$BUILD_DIR/lib3270j" -d "$BUILD_DIR/j3270" $(find j3270/src -name "*.java")
|
||||
|
||||
echo "Main-Class: org.pubvm.j3270.J3270App" > "$BUILD_DIR/MANIFEST.MF"
|
||||
echo "" >> "$BUILD_DIR/MANIFEST.MF"
|
||||
|
||||
"$JAVA_HOME/bin/jar" cvfm "$BUILD_DIR/j3270.jar" "$BUILD_DIR/MANIFEST.MF" \
|
||||
-C "$BUILD_DIR/lib3270j" . \
|
||||
-C "$BUILD_DIR/j3270" .
|
||||
|
||||
# Copy APK to build/
|
||||
if [ -f "a3270/build/outputs/apk/debug/a3270-debug.apk" ]; then
|
||||
cp "a3270/build/outputs/apk/debug/a3270-debug.apk" "$BUILD_DIR/a3270.apk"
|
||||
echo "Copied a3270-debug.apk to $BUILD_DIR/a3270.apk"
|
||||
if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/javac" ] && [ -x "$JAVA_HOME/bin/jar" ]; then
|
||||
JAVAC_BIN="$JAVA_HOME/bin/javac"
|
||||
JAR_BIN="$JAVA_HOME/bin/jar"
|
||||
elif command -v javac >/dev/null 2>&1 && command -v jar >/dev/null 2>&1; then
|
||||
JAVAC_BIN="$(command -v javac)"
|
||||
JAR_BIN="$(command -v jar)"
|
||||
else
|
||||
# Check common SDKMAN / macOS / Linux JDK locations
|
||||
POSSIBLE_HOMES=(
|
||||
"$HOME/.sdkman/candidates/java/current"
|
||||
"/Library/Java/JavaVirtualMachines"/*/Contents/Home
|
||||
"/usr/lib/jvm/default-java"
|
||||
"/usr/lib/jvm/java-21-openjdk"*
|
||||
"/usr/lib/jvm/java-17-openjdk"*
|
||||
"/usr/lib/jvm/java-11-openjdk"*
|
||||
)
|
||||
for h in "${POSSIBLE_HOMES[@]}"; do
|
||||
if [ -d "$h" ] && [ -x "$h/bin/javac" ] && [ -x "$h/bin/jar" ]; then
|
||||
export JAVA_HOME="$h"
|
||||
JAVAC_BIN="$JAVA_HOME/bin/javac"
|
||||
JAR_BIN="$JAVA_HOME/bin/jar"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -z "$JAVAC_BIN" ] || [ -z "$JAR_BIN" ]; then
|
||||
echo "ERROR: Java development tools (javac, jar) could not be found."
|
||||
echo "Please install JDK 11+ or set JAVA_HOME."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Using Java compiler: $JAVAC_BIN"
|
||||
echo "Using JAR utility: $JAR_BIN"
|
||||
|
||||
BUILD_DIR="$SCRIPT_DIR/build"
|
||||
rm -rf "$BUILD_DIR/lib3270j" "$BUILD_DIR/j3270" "$BUILD_DIR/MANIFEST.MF"
|
||||
mkdir -p "$BUILD_DIR/lib3270j" "$BUILD_DIR/j3270"
|
||||
|
||||
# 2. Compile lib3270j
|
||||
echo "Compiling lib3270j..."
|
||||
LIB_SOURCES=()
|
||||
while IFS= read -r -d '' file; do
|
||||
LIB_SOURCES+=("$file")
|
||||
done < <(find "$SCRIPT_DIR/lib3270j/src/main/java" -name "*.java" -print0)
|
||||
|
||||
if [ ${#LIB_SOURCES[@]} -eq 0 ]; then
|
||||
echo "ERROR: No sources found in lib3270j/src/main/java"
|
||||
exit 1
|
||||
fi
|
||||
"$JAVAC_BIN" -d "$BUILD_DIR/lib3270j" "${LIB_SOURCES[@]}"
|
||||
|
||||
# 3. Compile j3270
|
||||
echo "Compiling j3270 application..."
|
||||
APP_SOURCES=()
|
||||
while IFS= read -r -d '' file; do
|
||||
APP_SOURCES+=("$file")
|
||||
done < <(find "$SCRIPT_DIR/j3270/src/main/java" -name "*.java" -print0)
|
||||
|
||||
if [ ${#APP_SOURCES[@]} -eq 0 ]; then
|
||||
echo "ERROR: No sources found in j3270/src/main/java"
|
||||
exit 1
|
||||
fi
|
||||
"$JAVAC_BIN" -cp "$BUILD_DIR/lib3270j" -d "$BUILD_DIR/j3270" "${APP_SOURCES[@]}"
|
||||
|
||||
# Copy any resources if present
|
||||
if [ -d "$SCRIPT_DIR/j3270/src/main/resources" ]; then
|
||||
cp -r "$SCRIPT_DIR/j3270/src/main/resources/"* "$BUILD_DIR/j3270/" 2>/dev/null || true
|
||||
fi
|
||||
if [ -d "$SCRIPT_DIR/lib3270j/src/main/resources" ]; then
|
||||
cp -r "$SCRIPT_DIR/lib3270j/src/main/resources/"* "$BUILD_DIR/lib3270j/" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# 4. Package executable JAR
|
||||
echo "Packaging j3270.jar..."
|
||||
cat << 'EOF' > "$BUILD_DIR/MANIFEST.MF"
|
||||
Manifest-Version: 1.0
|
||||
Main-Class: org.pubvm.j3270.J3270App
|
||||
Implementation-Title: j3270
|
||||
Implementation-Version: 0.1.0
|
||||
Created-By: j3270 build_all.sh
|
||||
EOF
|
||||
|
||||
"$JAR_BIN" cvfm "$BUILD_DIR/j3270.jar" "$BUILD_DIR/MANIFEST.MF" \
|
||||
-C "$BUILD_DIR/lib3270j" . \
|
||||
-C "$BUILD_DIR/j3270" . > /dev/null
|
||||
|
||||
echo "=== Build Complete ==="
|
||||
echo "Artifacts in $BUILD_DIR:"
|
||||
ls -lh "$BUILD_DIR"/*.jar "$BUILD_DIR"/*.apk 2>/dev/null || true
|
||||
echo "Executable JAR created: $BUILD_DIR/j3270.jar"
|
||||
ls -lh "$BUILD_DIR/j3270.jar"
|
||||
|
||||
Reference in New Issue
Block a user