-
Notifications
You must be signed in to change notification settings - Fork 2
143 lines (125 loc) · 4.71 KB
/
build_deploy.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
name: Test-CI
on:
workflow_dispatch:
inputs:
create_release:
description: 'Create new release'
required: true
type: boolean
jobs:
#build linux lib
build-linux-lib:
runs-on: ubuntu-latest
steps:
- name: Dependencies
id: depends
run: |
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libopenblas-dev
sudo apt-get install libopenblas64-dev
- name: Checkout project
id: checkout_project
uses: actions/checkout@v4
- name: Build lib
id: build_lib
run: |
cd llama-java-core
/bin/bash build.sh linux
- name: Upload lib
uses: actions/upload-artifact@v4
with:
name: linux-libllama
path: llama-java-core/llama.cpp/build/llamajava/libllamajava.so
#build macos lib
build-macos-lib:
runs-on: macos-13
steps:
- name: Checkout project
id: checkout_project
uses: actions/checkout@v4
- name: Build lib
id: build_lib
run: |
cd llama-java-core
/bin/bash build.sh macos
- name: Upload lib
uses: actions/upload-artifact@v4
with:
name: macos-libllama
path: llama-java-core/llama.cpp/build/llamajava/libllamajava.dylib
- name: Upload metal lib
uses: actions/upload-artifact@v4
with:
name: macos-metallib
path: llama-java-core/llama.cpp/default.metallib
#build macos arm lib
build-macos-arm-lib:
runs-on: macos-latest
steps:
- name: Checkout project
id: checkout_project
uses: actions/checkout@v4
- name: Build lib
id: build_lib
run: |
cd llama-java-core
/bin/bash build.sh macos
- name: Upload lib
uses: actions/upload-artifact@v4
with:
name: macos-arm-libllama
path: llama-java-core/llama.cpp/build/llamajava/libllamajava.dylib
- name: Upload metal lib
uses: actions/upload-artifact@v4
with:
name: macos-arm-metallib
path: llama-java-core/llama.cpp/default.metallib
#build windows lib
build-windows-lib:
runs-on: windows-latest
env:
OPENBLAS_VERSION: 0.3.23
BUILD_ARGS: '-DLLAMA_NATIVE=OFF -DLLAMA_CUBLAS=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS -DBLAS_INCLUDE_DIRS="$env:RUNNER_TEMP/openblas/include" -DBLAS_LIBRARIES="$env:RUNNER_TEMP/openblas/lib/openblas.lib"'
steps:
- name: Download OpenBLAS
id: get_openblas
run: |
curl.exe -o $env:RUNNER_TEMP/openblas.zip -L "https://github.com/xianyi/OpenBLAS/releases/download/v${env:OPENBLAS_VERSION}/OpenBLAS-${env:OPENBLAS_VERSION}-x64.zip"
curl.exe -o $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt -L "https://github.com/xianyi/OpenBLAS/raw/v${env:OPENBLAS_VERSION}/LICENSE"
mkdir $env:RUNNER_TEMP/openblas
tar.exe -xvf $env:RUNNER_TEMP/openblas.zip -C $env:RUNNER_TEMP/openblas
$vcdir = $(vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath)
$msvc = $(join-path $vcdir $('VC\Tools\MSVC\'+$(gc -raw $(join-path $vcdir 'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt')).Trim()))
$lib = $(join-path $msvc 'bin\Hostx64\x64\lib.exe')
& $lib /machine:x64 "/def:${env:RUNNER_TEMP}/openblas/lib/libopenblas.def" "/out:${env:RUNNER_TEMP}/openblas/lib/openblas.lib" /name:openblas.dll
- name: Checkout project
id: checkout_project
uses: actions/checkout@v4
- name: Build lib
id: build_lib
run: |
cd llama-java-core
git.exe clone https://github.com/ggerganov/llama.cpp.git
if (!(Test-Path -Path "llama.cpp")) {
echo "Git clone llama.cpp failed."
exit 1
}
Copy-Item -Path llamajava/* -Destination llama.cpp/llamajava -Force
Copy-Item -Path llamajava/win/* -Destination llama.cpp/llamajava -Force
cd llama.cpp
$TAG_ID=(git.exe rev-list --tags --max-count=1)
$LATEST_TAG=(git.exe describe --tags $TAG_ID)
echo "=> Llama.cpp latest tag: $LATEST_TAG"
git.exe checkout $LATEST_TAG
Add-Content CMakeLists.txt "add_subdirectory(llamajava)"
echo "=> Checkout llama.cpp $LATEST_TAG finished."
mkdir build
cd build
cmake.exe .. ${env:BUILD_ARGS}
cmake.exe --build . --config Release
- name: Upload lib
uses: actions/upload-artifact@v4
with:
name: windows-libllama
path: llama-java-core/llama.cpp/build/bin/Release/llamajava.dll