build_linux.sh 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/bin/sh
  2. set -eu
  3. export VERSION=${VERSION:-$(git describe --tags --first-parent --abbrev=7 --long --dirty --always | sed -e "s/^v//g")}
  4. export GOFLAGS="'-ldflags=-w -s \"-X=github.com/ollama/ollama/version.Version=$VERSION\" \"-X=github.com/ollama/ollama/server.mode=release\"'"
  5. GZIP=$(which pigz 2>/dev/null || echo "gzip")
  6. BUILD_ARCH=${BUILD_ARCH:-"amd64 arm64"}
  7. export AMDGPU_TARGETS=${AMDGPU_TARGETS:=""}
  8. mkdir -p dist
  9. for TARGETARCH in ${BUILD_ARCH}; do
  10. docker build \
  11. --platform=linux/$TARGETARCH \
  12. --build-arg=GOFLAGS \
  13. --build-arg=CGO_CFLAGS \
  14. --build-arg=OLLAMA_CUSTOM_CPU_DEFS \
  15. --build-arg=AMDGPU_TARGETS \
  16. --target build-$TARGETARCH \
  17. -f Dockerfile \
  18. -t builder:$TARGETARCH \
  19. .
  20. docker create --platform linux/$TARGETARCH --name builder-$TARGETARCH builder:$TARGETARCH
  21. rm -rf ./dist/linux-$TARGETARCH
  22. docker cp builder-$TARGETARCH:/go/src/github.com/ollama/ollama/dist/linux-$TARGETARCH ./dist
  23. if echo ${TARGETARCH} | grep "amd64" > /dev/null; then
  24. docker cp builder-$TARGETARCH:/go/src/github.com/ollama/ollama/dist/linux-$TARGETARCH-rocm ./dist
  25. fi
  26. docker rm builder-$TARGETARCH
  27. echo "Compressing final linux bundle..."
  28. rm -f ./dist/ollama-linux-$TARGETARCH.tgz
  29. (cd dist/linux-$TARGETARCH && tar cf - . | ${GZIP} --best > ../ollama-linux-$TARGETARCH.tgz )
  30. if [ -d dist/linux-$TARGETARCH-rocm ]; then
  31. (cd dist/linux-$TARGETARCH-rocm && tar cf - . | ${GZIP} --best > ../ollama-linux-$TARGETARCH-rocm.tgz )
  32. fi
  33. done