Skip to content

fix: libjdwp_fat.so is not compiled with updated definitions #7

fix: libjdwp_fat.so is not compiled with updated definitions

fix: libjdwp_fat.so is not compiled with updated definitions #7

Workflow file for this run

name: Build oj-libjdwp
on: [push]
jobs:
build:
name: Build ${{ matrix.abi }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
abi:
- arm64-v8a
- armeabi-v7a
- x86
- x86_64
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Install Linux packages
run: sudo apt-get install cmake make ninja-build python3
- name: Install JDK (Linux/Windows)
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 8
- name: Setup NDK
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r27c
- name: CMake Configure
env:
NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
shell: bash
run: |
cmake -B build -GNinja \
-DCMAKE_TOOLCHAIN_FILE="$NDK/build/cmake/android.toolchain.cmake" \
-DANDROID_PLATFORM=android-26 \
-DANDROID_ABI=${{ matrix.abi }} \
-DCMAKE_SYSTEM_NAME=Android \
-DANDROID_ARM_NEON=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=build/install \
-DJava_ROOT="${JAVA_HOME_8_X64}" \
.
- name: Build
id: build-step
continue-on-error: true
env:
NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
shell: bash
run: |
export PATH="$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH"
ninja -C build
- name: Print error logs
if: steps.build-step.outcome == 'failure'
shell: bash
run: |
cat build/libiconv-prefix/src/libiconv/config.log
- name: Upload build logs
if: steps.build-step.outcome == 'failure'
uses: actions/upload-artifact@v4
with:
name: build-logs-${{ matrix.abi }}
path: build-logs/
- name: Check build status
if: steps.build-step.outcome == 'failure'
shell: bash
run: exit 1
- name: Upload
uses: actions/upload-artifact@v4
with:
name: oj-libjdwp-${{ matrix.abi }}
path: |
build/*.jar
build/*.so
build/*.a
build/libiconv/lib/*.so
build/libiconv/lib/*.a
release:
name: Create Release
needs: build
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Get version from git tag
id: get_version
run: |
SHORT_SHA=$(git rev-parse --short HEAD)
DATE=$(date '+%Y-%m-%d')
echo "version=$DATE-$SHORT_SHA" >> $GITHUB_OUTPUT
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: release-artifacts
- name: Prepare artifacts for release
run: |
# Create a directory for processed artifacts
mkdir -p processed-artifacts
# Create a directory for listings and checksums
mkdir -p release-info
mkdir -p release-info/checksums/md5
mkdir -p release-info/checksums/sha256
# Initialize markdown files
echo "# Available Artifacts" > release-info/ARTIFACTS.md
echo "" >> release-info/ARTIFACTS.md
echo "| Artifact | Platform | MD5 Checksum | SHA-256 Checksum |" >> release-info/ARTIFACTS.md
echo "| -------- | -------- | ------------ | ---------------- |" >> release-info/ARTIFACTS.md
echo "## File Checksums" > release-info/CHECKSUMS.md
echo "" >> release-info/CHECKSUMS.md
echo "| Artifact | Platform | MD5 Checksum | SHA-256 Checksum |" >> release-info/CHECKSUMS.md
echo "| -------- | -------- | ------------ | ---------------- |" >> release-info/CHECKSUMS.md
# Process JAR files first (platform-independent)
echo "Processing platform-independent files..."
find release-artifacts -name "*.jar" | while read file; do
FILENAME=$(basename "$file")
# Check if we already processed this JAR (by name)
if [ ! -f "processed-artifacts/$FILENAME" ]; then
echo "Adding platform-independent file: $FILENAME"
# Copy to processed directory
cp "$file" "processed-artifacts/$FILENAME"
# Calculate checksums
MD5=$(md5sum "processed-artifacts/$FILENAME" | awk '{print $1}')
SHA256=$(sha256sum "processed-artifacts/$FILENAME" | awk '{print $1}')
# Add to listings
echo "| $FILENAME | platform-independent | \`$MD5\` | \`$SHA256\` |" >> release-info/ARTIFACTS.md
echo "| $FILENAME | platform-independent | \`$MD5\` | \`$SHA256\` |" >> release-info/CHECKSUMS.md
# Create checksum files
echo "$MD5 $FILENAME" > "release-info/checksums/md5/$FILENAME.md5"
echo "$SHA256 $FILENAME" > "release-info/checksums/sha256/$FILENAME.sha256"
fi
done
# Process native libraries (platform-specific)
echo "Processing platform-specific files..."
find release-artifacts -type f \( -name "*.so" -o -name "*.a" \) | while read file; do
FILENAME=$(basename "$file")
# Determine platform
if [[ "$file" == *"arm64-v8a"* ]]; then
PLATFORM="arm64-v8a"
elif [[ "$file" == *"armeabi-v7a"* ]]; then
PLATFORM="armeabi-v7a"
elif [[ "$file" == *"x86_64"* ]]; then
PLATFORM="x86_64"
elif [[ "$file" == *"x86"* ]]; then
PLATFORM="x86"
else
PLATFORM="unknown"
fi
# Add platform prefix to filename to avoid collisions
PLATFORM_FILENAME="${PLATFORM}-${FILENAME}"
echo "Adding platform-specific file: $PLATFORM_FILENAME"
# Copy to processed directory with platform prefix
cp "$file" "processed-artifacts/$PLATFORM_FILENAME"
# Calculate checksums
MD5=$(md5sum "processed-artifacts/$PLATFORM_FILENAME" | awk '{print $1}')
SHA256=$(sha256sum "processed-artifacts/$PLATFORM_FILENAME" | awk '{print $1}')
# Add to listings
echo "| $PLATFORM_FILENAME | $PLATFORM | \`$MD5\` | \`$SHA256\` |" >> release-info/ARTIFACTS.md
echo "| $PLATFORM_FILENAME | $PLATFORM | \`$MD5\` | \`$SHA256\` |" >> release-info/CHECKSUMS.md
# Create checksum files
echo "$MD5 $PLATFORM_FILENAME" > "release-info/checksums/md5/$PLATFORM_FILENAME.md5"
echo "$SHA256 $PLATFORM_FILENAME" > "release-info/checksums/sha256/$PLATFORM_FILENAME.sha256"
done
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v1
with:
name: oj-libjdwp-${{ steps.get_version.outputs.version }}
tag_name: v${{ steps.get_version.outputs.version }}
draft: false
prerelease: false
files: |
release-info/ARTIFACTS.md
release-info/checksums/md5/*.md5
release-info/checksums/sha256/*.sha256
processed-artifacts/*
body: |
Release of oj-libjdwp version ${{ steps.get_version.outputs.version }}
This automated release contains pre-built binaries for:
- arm64-v8a
- armeabi-v7a
- x86
- x86_64
Built from commit: ${{ github.sha }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}