fix: libjdwp_fat.so is not compiled with updated definitions #7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |