Files
music-player/.github/workflows/release-for-arm.yml
2024-08-23 17:06:30 +00:00

152 lines
11 KiB
YAML

on:
release:
types: [created]
jobs:
release:
name: release ${{ matrix.target }}
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
target:
- aarch64-unknown-linux-gnu
- armv7-unknown-linux-gnueabihf
#- arm-unknown-linux-gnueabi
#- armv7-linux-androideabi
#- aarch64-linux-android
#- x86_64-linux-android
#- i686-linux-android
steps:
- uses: denoland/setup-deno@v1
with:
deno-version: v1.37
- name: Setup Fluent CI
uses: fluentci-io/setup-fluentci@v5
- uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- uses: actions/checkout@master
- uses: actions/setup-node@v3
with:
node-version: 18
- uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Installing Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: ${{ matrix.target }}
override: true
- name: Install Android NDK
if: matrix.target == 'aarch64-linux-android' || matrix.target == 'i686-linux-android' || matrix.target == 'x86_64-linux-android' || matrix.target == 'armv7-linux-androideabi'
run: |
wget https://dl.google.com/android/repository/android-ndk-r22b-linux-x86_64.zip
unzip android-ndk-r22b-linux-x86_64.zip
wget https://dl.google.com/android/repository/android-ndk-r25b-linux.zip
unzip android-ndk-r25b-linux.zip
cp android-ndk-r22b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/21
cp android-ndk-r22b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/libgcc.a android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/21
cp android-ndk-r22b/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x/libgcc.a android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/i686-linux-android/21
cp android-ndk-r22b/toolchains/x86_64-4.9/prebuilt/linux-x86_64/lib/gcc/x86_64-linux-android/4.9.x/libgcc.a android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/21
echo "ANDROID_NDK_HOME=$GITHUB_WORKSPACE/android-ndk-r25b" >> $GITHUB_ENV
echo "$GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-clang
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi-clang
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-clang
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android21-clang $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-clang
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-clang
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang++ $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-clang++
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang++ $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi-clang++
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang++ $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-clang++
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android21-clang++ $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-clang++
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang++ $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-clang++
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-ar
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-ar
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi-ar
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar
- name: Installing needed dependencies
run: sudo apt-get install -y libasound2-dev protobuf-compiler clang lldb lld
- name: Installing needed Ubuntu arm dependencies
if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf' || matrix.target == 'arm-unknown-linux-gnueabi'
run: |
sudo mkdir -p /build/sysroot
echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ focal main" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=armel] http://ports.ubuntu.com/ubuntu-ports/ focal main" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal main" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y -qq gcc-arm-linux-gnueabihf libc6-armhf-cross libc6-dev-armhf-cross gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi gcc-arm-linux-gnueabi libncurses5-dev build-essential bison flex libssl-dev bc pkg-config libudev-dev libssl-dev
sudo apt-get download libasound2:armhf libasound2-dev:armhf libasound2:arm64 libasound2-dev:arm64
sudo dpkg -x libasound2_1.2.2-2.1_armhf.deb /build/sysroot/
sudo dpkg -x libasound2_1.2.2-2.1_arm64.deb /build/sysroot/
sudo dpkg -x libasound2-dev_1.2.2-2.1_armhf.deb /build/sysroot/
sudo dpkg -x libasound2-dev_1.2.2-2.1_arm64.deb /build/sysroot//
echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV
echo "C_INCLUDE_PATH=/build/sysroot/usr/include" >> $GITHUB_ENV
- name: Configure Rust FLAGS
if: matrix.target == 'armv7-unknown-linux-gnueabihf'
run: |
echo "RUSTFLAGS=-C linker=arm-linux-gnueabihf-gcc -L/usr/arm-linux-gnueabihf/lib -L/build/sysroot/usr/lib/arm-linux-gnueabihf -L/build/sysroot/lib/arm-linux-gnueabihf" >> $GITHUB_ENV
- name: Configure Rust FLAGS
if: matrix.target == 'arm-unknown-linux-gnueabi'
run: |
echo "RUSTFLAGS=-C linker=arm-linux-gnueabi-gcc -L/usr/arm-linux-gnueabi/lib -L/build/sysroot/usr/lib/arm-linux-gnueabi -L/build/sysroot/lib/arm-linux-gnueabi" >> $GITHUB_ENV
- name: Configure Rust FLAGS
if: matrix.target == 'aarch64-unknown-linux-gnu'
run: |
echo "RUSTFLAGS=-C linker=aarch64-linux-gnu-gcc -L/usr/aarch64-linux-gnu/lib -L/build/sysroot/usr/lib/aarch64-linux-gnu -L/build/sysroot/lib/aarch64-linux-gnu" >> $GITHUB_ENV
- name: Configure Rust FLAGS
if: matrix.target == 'aarch64-linux-android'
run: |
echo "RUSTFLAGS=-C linker=aarch64-linux-android-clang -L$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/33 -lc++ -lstdc++ -lc" >> $GITHUB_ENV
- name: Configure Rust FLAGS
if: matrix.target == 'armv7-linux-androideabi'
run: |
echo "RUSTFLAGS=-C linker=armv7a-linux-androideabi-clang -L$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/33 -lc++ -lstdc++ -lc" >> $GITHUB_ENV
- name: Configure Rust FLAGS
if: matrix.target == 'i686-linux-android'
run: |
echo "RUSTFLAGS=-C linker=i686-linux-android-clang -L$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/i686-linux-android/33 -lc++ -lstdc++ -lc" >> $GITHUB_ENV
- name: Configure Rust FLAGS
if: matrix.target == 'x86_64-linux-android'
run: |
echo "RUSTFLAGS=-C linker=x86_64-linux-android-clang -L$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/33 -lc++ -lstdc++ -lc" >> $GITHUB_ENV
- name: Build webui
run: |
cd webui/musicplayer
bun install && bun run build
- name: Running cargo build
uses: actions-rs/cargo@v1
with:
command: build
toolchain: stable
args: --release --target ${{ matrix.target }}"
- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Packaging final binary
shell: bash
run: |
cd target/${{ matrix.target }}/release
tar czvf ../../../music-player_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.tar.gz music-player
shasum -a 256 ../../../music-player_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.tar.gz > ../../../music-player_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.tar.gz.sha256
cd ../../../ && rm -rf target
- name: Upload release assets
run: |
for ext in tar.gz tar.gz.sha256; do
export FILE="music-player_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.$ext"
fluentci run github_pipeline release_upload
done
env:
TAG: ${{ env.RELEASE_VERSION }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}