refactor circle ci config

This commit is contained in:
Richard Guo 2023-05-10 13:57:54 -04:00
parent f48eb1a0d7
commit 48c5ab10b9
3 changed files with 178 additions and 2 deletions

177
.circleci/config.yml Normal file
View File

@ -0,0 +1,177 @@
version: 2.1
orbs:
win: circleci/windows@5.0
python: circleci/python@1.2
jobs:
build-linux:
docker:
- image: circleci/python:3.8
steps:
- checkout
- run:
name: Install dependencies
command: |
sudo apt-get update
sudo apt-get install -y cmake build-essential
pip install setuptools wheel cmake
- run:
name: Build C library
command: |
git submodule init
git submodule update
cd gpt4all-backend/llmodel
mkdir build
cd build
cmake ..
cmake --build . --parallel
- run:
name: Build wheel
command: |
cd gpt4all-bindings/python/
python setup.py bdist_wheel --plat-name=manylinux1_x86_64
- persist_to_workspace:
root: gpt4all-bindings/python/dist
paths:
- "*.whl"
build-macos:
macos:
xcode: "14.2.0"
resource_class: macos.m1.large.gen1
steps:
- checkout
- run:
name: Install dependencies
command: |
brew install cmake
pip install setuptools wheel cmake
- run:
name: Build C library
command: |
git submodule init
git submodule update
cd gpt4all-backend/llmodel
mkdir build
cd build
cmake .. -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
cmake --build . --parallel
- run:
name: Build wheel
command: |
cd gpt4all-bindings/python
python setup.py bdist_wheel --plat-name=macosx_10_9_universal2
- persist_to_workspace:
root: gpt4all-bindings/python/dist
paths:
- "*.whl"
# build-linux:
# docker:
# - image: circleci/python:3.8
# steps:
# - checkout
# - run:
# name: Install dependencies
# command: |
# sudo apt-get update
# sudo apt-get install -y cmake build-essential
# pip install setuptools wheel cmake
# - run:
# name: Install MingW
# command: sudo apt-get install -y mingw-w64
# - run:
# name: Build C library
# command: |
# git submodule init
# git submodule update
# cd llmodel
# mkdir build
# cd build
# cmake \
# -DCMAKE_SYSTEM_NAME=Windows \
# -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \
# -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ \
# -DCMAKE_EXECUTABLE_SUFFIX=".exe" \
# -DCMAKE_SHARED_LIBRARY_SUFFIX=".dll" \
# ..
# cmake --build . --parallel
# - run:
# name: Build wheel
# command: |
# cd bindings/python/
# python setup.py bdist_wheel --plat-name=manylinux1_x86_64
# - persist_to_workspace:
# root: bindings/python/dist
# paths:
# - "*.whl"
build-windows:
executor:
name: win/default
steps:
- checkout
- run:
name: Install MinGW64
command: choco install -y mingw --force --no-progress
- run:
name: Add MinGW64 to PATH
command: $env:Path += ";C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin"
- run:
name: Install dependencies
command: choco install -y cmake --installargs 'ADD_CMAKE_TO_PATH=System'
- run:
name: Install Python dependencies
command: pip install setuptools wheel cmake
- run:
name: Build C library
command: |
git submodule init
git submodule update
cd gpt4all-backend/llmodel
mkdir build
cd build
cmake -G "MinGW Makefiles" ..
cmake --build . --parallel
- run:
name: Build wheel
command: |
cd gpt4all-bindings/python
python setup.py bdist_wheel --plat-name=win_amd64
- persist_to_workspace:
root: gpt4all-bindings/python/dist
paths:
- "*.whl"
store-and-upload-wheels:
docker:
- image: circleci/python:3.8
steps:
- setup_remote_docker
- attach_workspace:
at: /tmp/workspace
- run:
name: Install dependencies
command: |
sudo apt-get update
sudo apt-get install -y cmake build-essential
pip install setuptools wheel twine
# - run:
# name: Upload Python package
# command: |
# twine upload /tmp/workspace/*.whl --username __token__ --password $PYPI_CRED
- store_artifacts:
path: /tmp/workspace
workflows:
version: 2
build-deploy:
jobs:
#- build-linux
#- build-macos
- build-windows
- store-and-upload-wheels:
requires:
- build-windows
# - build-linux
# - build-macos

View File

@ -38,4 +38,3 @@ messages = [{"role": "user", "content": "Name 3 colors"}]
gptj.chat_completion(messages)
```

View File

@ -7,7 +7,7 @@ import re
import sys
# TODO: provide a config file to make this more robust
LLMODEL_PATH = os.path.join("llmodel_DO_NOT_MODIFY", "build")
LLMODEL_PATH = os.path.join("llmodel_DO_NOT_MODIFY", "build").replace("\\", "\\\\")
def load_llmodel_library():
system = platform.system()