Skip to content

TDLib ARM Release

TDLib ARM Release #45

name: TDLib ARM Release
on:
workflow_dispatch:
inputs:
commit:
description: 'Commit, branch or tag to checkout'
required: false
default: ''
jobs:
linux:
runs-on: self-hosted
timeout-minutes: 10000
name: Build on ${{ matrix.distro }} ${{ matrix.arch }}
strategy:
matrix:
include:
- arch: armv7
distro: ubuntu18.04
- arch: aarch64
distro: ubuntu18.04
steps:
- if: ${{ github.event.inputs.commit == 'master' || github.event.inputs.commit == '' }}
run: |
echo "release_name=tdlib-latest-${{ matrix.distro }}-${{ matrix.arch }}" >> $GITHUB_ENV
echo "release_version=latest" >> $GITHUB_ENV
- if: ${{ github.event.inputs.commit != 'master' && github.event.inputs.commit != '' }}
run: |
echo "release_name=tdlib-${{ github.event.inputs.commit }}-${{ matrix.distro }}-${{ matrix.arch }}" >> $GITHUB_ENV
echo "release_version=${{ github.event.inputs.commit }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: uraimo/run-on-arch-action@v2.2.0
with:
arch: ${{ matrix.arch }}
distro: ${{ matrix.distro }}
setup: |
mkdir -p -v "${PWD}/tdlib"
dockerRunArgs: |
--volume "${PWD}/tdlib:/root/tdlib"
env: |
arch: ${{ matrix.arch }}
release_name: ${{ env.release_name }}
release_version: ${{ env.release_version }}
install: |
case "${{ matrix.distro }}" in
ubuntu*|jessie|stretch|buster|bullseye)
apt-get update -q -y
apt-get install -q -y make git zlib1g-dev libssl-dev gperf php-cli cmake openjdk-8-jdk-headless clang-6.0 libc++-dev libc++abi-dev wget
;;
fedora*)
dnf -y update
dnf -y install make git zlib1g-dev libssl-dev gperf php-cli cmake openjdk-8-jdk-headless clang-6.0 libc++-dev libc++abi-dev wget
;;
alpine*)
apk update
apk add make git zlib1g-dev libssl-dev gperf php-cli cmake openjdk-8-jdk-headless clang-6.0 libc++-dev libc++abi-dev wget
;;
esac
run: |
cd /root
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
if [ $arch = "armv7" ]; then
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-armhf
wget -P /usr/lib/jvm/java-8-openjdk-armhf/include https://raw.githubusercontent.com/xkaers/tdlib-build/main/jawt.h
elif [ $arch = "aarch64" ]; then
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
wget -P /usr/lib/jvm/java-8-openjdk-arm64/include https://raw.githubusercontent.com/xkaers/tdlib-build/main/jawt.h
elif [ $arch = "s390x" ]; then
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-s390x
wget -P /usr/lib/jvm/java-8-openjdk-s390x/include https://raw.githubusercontent.com/xkaers/tdlib-build/main/jawt.h
elif [ $arch = "ppc64le" ]; then
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-ppc64el
wget -P /usr/lib/jvm/java-8-openjdk-ppc64el/include https://raw.githubusercontent.com/xkaers/tdlib-build/main/jawt.h
else
echo "do nothing........"
fi
if [ $release_version = "latest" ]; then
git clone https://github.com/tdlib/td.git
else
git clone --branch $release_version https://github.com/tdlib/td.git
fi
cd td
rm -rf build
mkdir build
cd build
CXXFLAGS="-stdlib=libc++" CC=/usr/bin/clang-6.0 CXX=/usr/bin/clang++-6.0 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../example/java/td -DTD_ENABLE_JNI=ON ..
cmake --build . --target install
cd ..
cd example/java
rm -rf build
mkdir build
cd build
CXXFLAGS="-stdlib=libc++" CC=/usr/bin/clang-6.0 CXX=/usr/bin/clang++-6.0 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../../../tdlib -DTd_DIR:PATH=$(readlink -e ../td/lib/cmake/Td) ..
cmake --build . --target install
cd ..
cp -r org/ ../../tdlib
cd ../..
tar -czvf ${release_name}-for-java.tar.gz tdlib/*
cp ${release_name}-for-java.tar.gz ../tdlib
- name: Upload artifact to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: tdlib-${{ env.release_version }}
file: ./tdlib/${{ env.release_name }}*.tar.gz
overwrite: true
file_glob: true