mirror of https://github.com/ollama/ollama.git
				
				
				
			
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.7 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 \
 | |
|                 -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
 |