mirror of
https://github.com/ollama/ollama.git
synced 2025-04-08 03:48:21 +02:00
* add build to .dockerignore * test: only build one arch * add build to .gitignore * fix ccache path * filter amdgpu targets * only filter if autodetecting * Don't clobber gpu list for default runner This ensures the GPU specific environment variables are set properly * explicitly set CXX compiler for HIP * Update build_windows.ps1 This isn't complete, but is close. Dependencies are missing, and it only builds the "default" preset. * build: add ollama subdir * add .git to .dockerignore * docs: update development.md * update build_darwin.sh * remove unused scripts * llm: add cwd and build/lib/ollama to library paths * default DYLD_LIBRARY_PATH to LD_LIBRARY_PATH in runner on macOS * add additional cmake output vars for msvc * interim edits to make server detection logic work with dll directories like lib/ollama/cuda_v12 * remove unncessary filepath.Dir, cleanup * add hardware-specific directory to path * use absolute server path * build: linux arm * cmake install targets * remove unused files * ml: visit each library path once * build: skip cpu variants on arm * build: install cpu targets * build: fix workflow * shorter names * fix rocblas install * docs: clean up development.md * consistent build dir removal in development.md * silence -Wimplicit-function-declaration build warnings in ggml-cpu * update readme * update development readme * llm: update library lookup logic now that there is one runner (#8587) * tweak development.md * update docs * add windows cuda/rocm tests --------- Co-authored-by: jmorganca <jmorganca@gmail.com> Co-authored-by: Daniel Hiltgen <daniel@ollama.com>
94 lines
2.6 KiB
Bash
Executable File
94 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
status() { echo >&2 ">>> $@"; }
|
|
usage() {
|
|
echo "usage: $(basename $0) [build [sign]]"
|
|
exit 1
|
|
}
|
|
|
|
export VERSION=${VERSION:-$(git describe --tags --dirty)}
|
|
export GOFLAGS="'-ldflags=-w -s \"-X=github.com/ollama/ollama/version.Version=${VERSION#v}\" \"-X=github.com/ollama/ollama/server.mode=release\"'"
|
|
export CGO_CPPFLAGS='-mmacosx-version-min=11.3'
|
|
|
|
ARCHS="arm64 amd64"
|
|
while getopts "a:h" OPTION; do
|
|
case $OPTION in
|
|
a) ARCHS=$OPTARG ;;
|
|
h) usage ;;
|
|
esac
|
|
done
|
|
|
|
shift $(( $OPTIND - 1 ))
|
|
|
|
_build_darwin() {
|
|
for ARCH in $ARCHS; do
|
|
status "Building darwin $ARCH"
|
|
INSTALL_PREFIX=dist/darwin-$ARCH/
|
|
GOOS=darwin GOARCH=$ARCH CGO_ENABLED=1 go build -o $INSTALL_PREFIX .
|
|
|
|
if [ "$ARCH" = "amd64" ]; then
|
|
status "Building darwin $ARCH dynamic backends"
|
|
cmake -B build/darwin-$ARCH \
|
|
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=11.3
|
|
cmake --build build/darwin-$ARCH --target ggml-cpu -j
|
|
install build/darwin-$ARCH/lib/ollama/*.{dylib,so} $INSTALL_PREFIX
|
|
fi
|
|
done
|
|
}
|
|
|
|
_sign_darwin() {
|
|
status "Creating universal binary..."
|
|
lipo -create -output dist/darwin/ollama dist/darwin/*/ollama
|
|
|
|
if [ -z "$APPLE_IDENTITY" ]; then
|
|
status "No APPLE_IDENTITY set, skipping code signing"
|
|
return
|
|
fi
|
|
|
|
for F in dist/darwin/ollama dist/darwin/amd64/lib*; do
|
|
codesign -f --timestamp -s "$APPLE_IDENTITY" --identifier ai.ollama.ollama --options=runtime $F
|
|
done
|
|
|
|
# create a temporary zip for notarization
|
|
TEMP=$(mktemp -u).zip
|
|
ditto -c -k --keepParent dist/darwin/ollama "$TEMP"
|
|
xcrun notarytool submit dist/darwin/temp.zip --wait --timeout 10m --apple-id $APPLE_ID --password $APPLE_PASSWORD --team-id $APPLE_TEAM_ID
|
|
rm -f "$TEMP"
|
|
|
|
# create a universal tarball
|
|
tar -cf dist/ollama-darwin.tar --strip-components 2 dist/darwin/ollama
|
|
tar -rf dist/ollama-darwin.tar --strip-components 3 dist/darwin/amd64/lib*
|
|
gzip -9vc <dist/ollama-darwin.tar >dist/ollama-darwin.tgz
|
|
}
|
|
|
|
_build_macapp() {
|
|
# build and optionally sign the mac app
|
|
npm install --prefix macapp
|
|
if [ -n "$APPLE_IDENTITY" ]; then
|
|
npm run --prefix macapp make:sign
|
|
else
|
|
npm run --prefix macapp make
|
|
fi
|
|
|
|
mv ./macapp/out/make/zip/darwin/universal/Ollama-darwin-universal-$VERSION.zip dist/Ollama-darwin.zip
|
|
}
|
|
|
|
if [ "$#" -eq 0 ]; then
|
|
_build_darwin
|
|
_sign_darwin
|
|
_build_macapp
|
|
exit 0
|
|
fi
|
|
|
|
for CMD in "$@"; do
|
|
case $CMD in
|
|
build) _build_darwin ;;
|
|
sign) _sign_darwin ;;
|
|
macapp) _build_macapp ;;
|
|
*) usage ;;
|
|
esac
|
|
done
|