diff --git a/llama/README.md b/llama/README.md index 79bf4fde..3b6b2067 100644 --- a/llama/README.md +++ b/llama/README.md @@ -93,7 +93,7 @@ make -j ## Vendoring -Ollama currently vendors [llama.cpp](https://github.com/ggerganov/llama.cpp/) and [ggml](https://github.com/ggerganov/ggml) through a vendoring model. While we generally strive to contribute changes back upstream to avoid drift, we cary a small set of patches which are applied to the tracking commit. A set of make targets are available to aid developers in updating to a newer tracking commit, or to work on changes. +Ollama currently vendors [llama.cpp](https://github.com/ggerganov/llama.cpp/) and [ggml](https://github.com/ggerganov/ggml) through a vendoring model. While we generally strive to contribute changes back upstream to avoid drift, we cary a small set of patches which are applied to the tracking commit. A set of make targets are available to aid developers in updating to a newer tracking commit, or to work on changes. If you update the vendoring code, start by running the following command to establish the tracking llama.cpp repo in the `./vendor/` directory. @@ -105,35 +105,35 @@ make apply-patches **Pin to new base commit** -To update to a newer base commit, select the upstream git tag or commit and update `llama/vendoring.env` +To update to a newer base commit, select the upstream git tag or commit and update `llama/vendoring` #### Applying patches When updating to a newer base commit, the existing patches may not apply cleanly and require manual merge resolution. -Start by applying the patches. If any of the patches have conflicts, the `git am` will stop at the first failure. +Start by applying the patches. If any of the patches have conflicts, the `git am` will stop at the first failure. ``` make apply-patches ``` -If you see an error message about a conflict, go into the `./vendor/` directory, and perform merge resolution using your preferred tool to the patch commit which failed. Save the file(s) and continue the patch series with `git am --continue` . If any additional patches fail, follow the same pattern until the full patch series is applied. Once finished, run a final `create-patches` and `sync` target to ensure everything is updated. +If you see an error message about a conflict, go into the `./vendor/` directory, and perform merge resolution using your preferred tool to the patch commit which failed. Save the file(s) and continue the patch series with `git am --continue` . If any additional patches fail, follow the same pattern until the full patch series is applied. Once finished, run a final `create-patches` and `sync` target to ensure everything is updated. ``` make create-patches sync ``` -Build and test Ollama, and make any necessary changes to the Go code based on the new base commit. Submit your PR to the Ollama repo. +Build and test Ollama, and make any necessary changes to the Go code based on the new base commit. Submit your PR to the Ollama repo. ### Generating Patches -When working on new fixes or features that impact vendored code, use the following model. First get a clean tracking repo with all current patches applied: +When working on new fixes or features that impact vendored code, use the following model. First get a clean tracking repo with all current patches applied: ``` make apply-patches ``` -Now edit the upstream native code in the `./vendor/` directory. You do not need to commit every change in order to build, a dirty working tree in the tracking repo is OK while developing. Simply save in your editor, and run the following to refresh the vendored code with your changes, build the backend(s) and build ollama: +Now edit the upstream native code in the `./vendor/` directory. You do not need to commit every change in order to build, a dirty working tree in the tracking repo is OK while developing. Simply save in your editor, and run the following to refresh the vendored code with your changes, build the backend(s) and build ollama: ``` make sync @@ -142,9 +142,9 @@ go build . ``` > [!IMPORTANT] -> Do **NOT** run `apply-patches` while you're iterating as that will reset the tracking repo. It will detect a dirty tree and abort, but if your tree is clean and you accidentally ran this target, use `git reflog` to recover your commit(s). +> Do **NOT** run `apply-patches` while you're iterating as that will reset the tracking repo. It will detect a dirty tree and abort, but if your tree is clean and you accidentally ran this target, use `git reflog` to recover your commit(s). -Iterate until you're ready to submit PRs. Once your code is ready, commit a change in the `./vendor/` directory, then generate the patches for ollama with +Iterate until you're ready to submit PRs. Once your code is ready, commit a change in the `./vendor/` directory, then generate the patches for ollama with ``` make create-patches @@ -157,4 +157,4 @@ In your `./vendor/` directory, create a branch, and cherry-pick the new commit t Commit the changes in the ollama repo and submit a PR to Ollama, which will include the vendored code update with your change, along with the patches. -After your PR upstream is merged, follow the **Updating Base Commit** instructions above, however first remove your patch before running `apply-patches` since the new base commit contains your change already. \ No newline at end of file +After your PR upstream is merged, follow the **Updating Base Commit** instructions above, however first remove your patch before running `apply-patches` since the new base commit contains your change already.