123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/bin/sh
- set -e
- status() { echo >&2 ">>> $@"; }
- usage() {
- echo "usage: $(basename $0) [build [sign]]"
- exit 1
- }
- export VERSION=${VERSION:-$(git describe --tags --first-parent --abbrev=7 --long --dirty --always | sed -e "s/^v//g")}
- 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 \
- -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX
- cmake --build build/darwin-$ARCH --target ggml-cpu -j
- cmake --install build/darwin-$ARCH --component CPU
- fi
- done
- }
- _sign_darwin() {
- status "Creating universal binary..."
- mkdir -p dist/darwin
- lipo -create -output dist/darwin/ollama dist/darwin-*/ollama
- chmod +x dist/darwin/ollama
- if [ -n "$APPLE_IDENTITY" ]; then
- for F in dist/darwin/ollama dist/darwin-amd64/lib/ollama/*; 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 "$TEMP" --wait --timeout 10m --apple-id $APPLE_ID --password $APPLE_PASSWORD --team-id $APPLE_TEAM_ID
- rm -f "$TEMP"
- fi
- status "Creating universal tarball..."
- tar -cf dist/ollama-darwin.tar --strip-components 2 dist/darwin/ollama
- tar -rf dist/ollama-darwin.tar --strip-components 4 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
|