|
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 './taesd_f.embd:.' \ |
|
--add-data './taesd_3.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@v4 |
|
with: |
|
name: kcpp_linux_arm64_binary |
|
path: dist/ |
|
|
|
|