| 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/ | |