3232      - name : Clone 
3333        id : checkout 
3434        uses : actions/checkout@v4 
35+         with :
36+           fetch-depth : 0 
3537
3638      - name : Dependencies 
3739        id : depends 
5254        id : cmake_test 
5355        run : | 
5456          cd build 
55-           ctest -L main --verbose --timeout 900 
57+           ctest -L ' main|curl'  --verbose --timeout 900 
5658
5759       - name : Determine tag name 
5860        id : tag 
8890      - name : Clone 
8991        id : checkout 
9092        uses : actions/checkout@v4 
93+         with :
94+           fetch-depth : 0 
9195
9296      - name : Dependencies 
9397        id : depends 
@@ -101,7 +105,9 @@ jobs:
101105          sysctl -a 
102106          mkdir build 
103107          cd build 
104-           cmake -DLLAMA_FATAL_WARNINGS=ON -DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_CURL=ON .. 
108+           # Metal is disabled due to intermittent failures with Github runners not having a GPU: 
109+           # https://github.com/ggerganov/llama.cpp/actions/runs/8635935781/job/23674807267#step:5:2313 
110+           cmake -DLLAMA_FATAL_WARNINGS=ON -DLLAMA_METAL=OFF -DLLAMA_CURL=ON .. 
105111          cmake --build . --config Release -j $(sysctl -n hw.logicalcpu) 
106112
107113       - name : Test 
@@ -204,26 +210,28 @@ jobs:
204210      - name : Clone 
205211        id : checkout 
206212        uses : actions/checkout@v4 
213+         with :
214+           fetch-depth : 0 
207215
208216      - name : Dependencies 
209217        id : depends 
210218        run : | 
211219          sudo apt-get update 
212-           sudo apt-get install build-essential 
220+           sudo apt-get install build-essential libcurl4-openssl-dev  
213221
214222       - name : Build 
215223        id : cmake_build 
216224        run : | 
217225          mkdir build 
218226          cd build 
219-           cmake .. -DLLAMA_FATAL_WARNINGS=ON 
227+           cmake .. -DLLAMA_FATAL_WARNINGS=ON -DLLAMA_CURL=ON  
220228          cmake --build . --config Release -j $(nproc) 
221229
222230       - name : Test 
223231        id : cmake_test 
224232        run : | 
225233          cd build 
226-           ctest -L main --verbose --timeout 900 
234+           ctest -L ' main|curl'  --verbose --timeout 900 
227235
228236       - name : Test llama2c conversion 
229237        id : llama2c_test 
@@ -236,6 +244,33 @@ jobs:
236244          ./bin/convert-llama2c-to-ggml --copy-vocab-from-model ./tok512.bin --llama2c-model stories260K.bin --llama2c-output-model stories260K.gguf 
237245          ./bin/main -m stories260K.gguf -p "One day, Lily met a Shoggoth" -n 500 -c 256 
238246
247+        - name : Determine tag name 
248+         id : tag 
249+         shell : bash 
250+         run : | 
251+           BUILD_NUMBER="$(git rev-list --count HEAD)" 
252+           SHORT_HASH="$(git rev-parse --short=7 HEAD)" 
253+           if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then 
254+             echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT 
255+           else 
256+             SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') 
257+             echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT 
258+           fi 
259+ 
260+        - name : Pack artifacts 
261+         id : pack_artifacts 
262+         if : ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} 
263+         run : | 
264+           cp LICENSE ./build/bin/ 
265+           zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-x64.zip ./build/bin/* 
266+ 
267+        - name : Upload artifacts 
268+         if : ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} 
269+         uses : actions/upload-artifact@v4 
270+         with :
271+           path : llama-${{ steps.tag.outputs.name }}-bin-ubuntu-x64.zip 
272+           name : llama-bin-ubuntu-x64.zip 
273+ 
239274#   ubuntu-latest-cmake-sanitizer:
240275#     runs-on: ubuntu-latest
241276# 
@@ -558,6 +593,63 @@ jobs:
558593        run : | 
559594            make swift 
560595
596+    windows-msys2 :
597+     runs-on : windows-latest 
598+ 
599+     strategy :
600+       fail-fast : false 
601+       matrix :
602+         include :
603+           - { sys: UCRT64,  env: ucrt-x86_64,  build: Release } 
604+           - { sys: CLANG64, env: clang-x86_64, build: Release } 
605+ 
606+     steps :
607+       - name : Clone 
608+         uses : actions/checkout@v4 
609+ 
610+       - name : Setup ${{ matrix.sys }} 
611+         uses : msys2/setup-msys2@v2 
612+         with :
613+           update : true 
614+           msystem : ${{matrix.sys}} 
615+           install : >- 
616+             base-devel 
617+             mingw-w64-${{matrix.env}}-toolchain 
618+             mingw-w64-${{matrix.env}}-cmake 
619+             mingw-w64-${{matrix.env}}-openblas 
620+ 
621+        - name : Build using make 
622+         shell : msys2 {0} 
623+         run : | 
624+             make -j $(nproc) 
625+ 
626+        - name : Clean after building using make 
627+         shell : msys2 {0} 
628+         run : | 
629+             make clean 
630+ 
631+        - name : Build using make w/ OpenBLAS 
632+         shell : msys2 {0} 
633+         run : | 
634+             make LLAMA_OPENBLAS=1 -j $(nproc) 
635+ 
636+        - name : Build using CMake 
637+         shell : msys2 {0} 
638+         run : | 
639+             cmake -B build 
640+             cmake --build build --config ${{ matrix.build }} -j $(nproc) 
641+ 
642+        - name : Clean after building using CMake 
643+         shell : msys2 {0} 
644+         run : | 
645+             rm -rf build 
646+ 
647+        - name : Build using CMake w/ OpenBLAS 
648+         shell : msys2 {0} 
649+         run : | 
650+             cmake -B build -DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS 
651+             cmake --build build --config ${{ matrix.build }} -j $(nproc) 
652+ 
561653   windows-latest-cmake :
562654    runs-on : windows-latest 
563655
@@ -938,6 +1030,12 @@ jobs:
9381030       - name : Download artifacts 
9391031        id : download-artifact 
9401032        uses : actions/download-artifact@v4 
1033+         with :
1034+           path : ./artifact 
1035+ 
1036+       - name : Move artifacts 
1037+         id : move_artifacts 
1038+         run : mkdir -p ./artifact/release && mv ./artifact/*/*.zip ./artifact/release 
9411039
9421040      - name : Create release 
9431041        id : create_release 
@@ -956,15 +1054,15 @@ jobs:
9561054            const path = require('path'); 
9571055            const fs = require('fs'); 
9581056            const release_id = '${{ steps.create_release.outputs.id }}'; 
959-             for (let file of await fs.readdirSync('./artifact')) { 
1057+             for (let file of await fs.readdirSync('./artifact/release ')) { 
9601058              if (path.extname(file) === '.zip') { 
9611059                console.log('uploadReleaseAsset', file); 
9621060                await github.repos.uploadReleaseAsset({ 
9631061                  owner: context.repo.owner, 
9641062                  repo: context.repo.repo, 
9651063                  release_id: release_id, 
9661064                  name: file, 
967-                   data: await fs.readFileSync(`./artifact/${file}`) 
1065+                   data: await fs.readFileSync(`./artifact/release/ ${file}`) 
9681066                }); 
9691067              } 
9701068            } 
0 commit comments