Skip to content

Koboldcpp Linux ARM64 #5

Koboldcpp Linux ARM64

Koboldcpp Linux ARM64 #5

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 Repository
id: checkout
uses: actions/checkout@v3
with:
ref: ${{ github.head_ref || github.ref_name }}
- name: Setup Build Environment
id: setup_environment
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
crossbuild-essential-arm64 \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
python3 \
python3-tk \
python3-pip \
qemu-user-static \
binfmt-support \
qemu-user-binfmt \
libffi-dev:arm64 \
zlib1g-dev:arm64 \
libssl-dev:arm64
sudo update-binfmts --enable qemu-aarch64
- name: Install ARM64 Python Environment
id: install_arm_python
run: |
# Install ARM64 Python with QEMU emulation
sudo apt-get install -y python3-arm64 python3-pip-arm64
sudo ln -sf /usr/bin/python3-arm64 /usr/bin/python3-arm
sudo ln -sf /usr/bin/pip3-arm64 /usr/bin/pip3-arm
# Install necessary Python packages in ARM64 environment
python3-arm -m pip install --no-cache-dir customtkinter pyinstaller tk psutil
- name: Build for ARM
id: build_binary
run: |
# Enable cross-compilation for ARM
export QEMU_LD_PREFIX=/usr/aarch64-linux-gnu
export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++
export AR=aarch64-linux-gnu-ar
export UNAME_M=aarch64
export UNAME_S=Linux
# Build any necessary C/C++ components
make LLAMA_PORTABLE=1
chmod +x './create_ver_file.sh'
./create_ver_file.sh
# Package with ARM64 PyInstaller
python3-arm -m 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/