This commit is contained in:
Concedo 2024-12-07 00:33:46 +08:00
parent 25b5301e5a
commit b411192db4

View file

@ -1,8 +1,6 @@
name: Koboldcpp Linux ARM64 name: Koboldcpp Linux ARM64
on: on: workflow_dispatch
workflow_dispatch
env: env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }} BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
@ -10,81 +8,43 @@ jobs:
linux-arm: linux-arm:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Clone Repository - name: Clone
id: checkout id: checkout
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
ref: ${{ github.head_ref || github.ref_name }} ref: ${{ github.head_ref || github.ref_name }}
- name: Setup Build Environment - name: Build Dependencies
id: setup_environment id: depends1
run: | run: |
sudo dpkg --add-architecture arm64
sudo apt-get update sudo apt-get update
sudo apt-get install -y \ sudo apt-get install -y python3-tk python3-pip python3-dev build-essential \
build-essential \ libffi-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev \
crossbuild-essential-arm64 \ crossbuild-essential-arm64 gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
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 - name: Python Dependencies
id: install_arm_python id: depends2
run: | run: |
# Install ARM64 Python packages using qemu pip install customtkinter pyinstaller tk
python3 -m pip install --upgrade pip
sudo apt-get install -y python3-arm64 python3-pip-arm64 || true
python3 -m pip install --no-cache-dir customtkinter pyinstaller tk psutil
- name: Build for ARM - name: Build with ARM NEON Support
id: build_binary id: build_binary
run: | run: |
# Enable cross-compilation for ARM # Enable cross-compilation for ARM
export QEMU_LD_PREFIX=/usr/aarch64-linux-gnu
export CC=aarch64-linux-gnu-gcc export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++ export CXX=aarch64-linux-gnu-g++
export AR=aarch64-linux-gnu-ar export AR=aarch64-linux-gnu-ar
export UNAME_M=aarch64 export UNAME_M=aarch64
export UNAME_S=Linux export UNAME_S=Linux
# Build any necessary C/C++ components
make LLAMA_PORTABLE=1 make LLAMA_PORTABLE=1
chmod +x './create_ver_file.sh' chmod +x './create_ver_file.sh'
./create_ver_file.sh . create_ver_file.sh
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"
# Package with ARM64 PyInstaller - name: Save artifact
python3-arm64 -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 uses: actions/upload-artifact@v3
with: with:
name: kcpp_linux_arm64_binary name: kcpp_linux_arm64_binary
path: dist/ path: dist/