koboldcpp/.github/workflows/kcpp-build-release-arm64.yaml
Concedo a11bba5893 cleanup, fix native build for arm (+28 squashed commit)
Squashed commit:

[d1f6a4154] bundle library

[947ab84b7] undo

[0f9aba8d8] test

[e9ac93873] test

[920438202] test

[1c6d98804] Revert "quick test"

This reverts commit acf8ec8940.

[acf8ec894] quick test

[6a9937233] undo

[5a263a5bd] test

[ddfd82bca] test

[0b30e45da] test

[c3bfece55] messed up

[2a4b37fe0] Revert "test"

This reverts commit 80a1fcaeaf.

[80a1fcaea] test

[e2aa7d944] test

[264d80200] test

[f5b123173] undo

[1ffacc484] test

[63c0be926] undo

[510e0377e] ofast try fix

[4ac199b20] try fix sigill

[1bc987ba2] try fix illegal instruction

[7697252b1] edit

[f87087b28] check gcc ver

[e9dfe2cef] try using qemu to do the pyinstaller

[b411192db] revert

[25b5301e5] try using qemu to do the pyinstaller

[58038cddc] try using qemu to do the pyinstaller
2024-12-10 19:42:23 +08:00

85 lines
3 KiB
YAML

name: Koboldcpp Linux ARM64
on: workflow_dispatch
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
jobs:
linux-arm:
runs-on: ubuntu-latest
steps:
- name: Clone
id: checkout
uses: actions/checkout@v3
with:
ref: ${{ github.head_ref || github.ref_name }}
- name: Install Dependencies
id: depends
run: |
sudo apt-get update
sudo apt-get install -y python3-tk python3-pip python3-dev build-essential \
libffi-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev \
crossbuild-essential-arm64 gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
- name: Install New GCC for Cross-Compilation
run: |
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y gcc-12 g++-12 gcc-12-aarch64-linux-gnu g++-12-aarch64-linux-gnu
export CC=/usr/bin/aarch64-linux-gnu-gcc-12
export CXX=/usr/bin/aarch64-linux-gnu-g++-12
export AR=aarch64-linux-gnu-ar
export UNAME_M=aarch64
export UNAME_S=Linux
export PATH=/usr/bin:$PATH
make LLAMA_PORTABLE=1
chmod +x './create_ver_file.sh'
. create_ver_file.sh
mkdir -p dist
cp './koboldcpp_default.so' dist
ls
- name: Install QEMU
run: |
sudo apt-get update
sudo apt-get install -y qemu-user-static binfmt-support
- name: Setup QEMU for ARM64
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- name: Build ARM64 PyInstaller
run: |
docker run --rm \
--platform linux/arm64 \
-v "${PWD}:/src" \
python:3.9-slim \
/bin/bash -c "
apt-get update && apt-get install -y build-essential && \
apt-get update && apt-get install -y gcc-12 g++-12 && \
export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12:$LD_LIBRARY_PATH && \
pip install customtkinter pyinstaller tk && \
cd /src && \
pyinstaller --noconfirm --onefile --collect-all customtkinter --collect-all psutil \
--add-data './koboldcpp_default.so:.' \
--add-data './kcpp_adapters:./kcpp_adapters' \
--add-data './koboldcpp.py:.' \
--add-data './klite.embd:.' \
--add-data './kcpp_docs.embd:.' \
--add-data './kcpp_sdui.embd:.' \
--add-data './taesd.embd:.' \
--add-data './taesd_xl.embd:.' \
--add-data './rwkv_vocab.embd:.' \
--add-data './rwkv_world_vocab.embd:.' \
--version-file './version.txt' \
--clean --console koboldcpp.py -n 'koboldcpp-linux-arm64'
"
- name: Save artifact
uses: actions/upload-artifact@v3
with:
name: kcpp_linux_arm64_binary
path: dist/