distributable:
  url: git+https://github.com/ollama/ollama
  ref: v{{version}}

versions:
  github: ollama/ollama

dependencies:
  curl.se/ca-certs: '*'

build:
  dependencies:
    go.dev: ^1.21
    cmake.org: ^3
    git-scm.org: ^2
  script:
    - run: |
        git submodule init
        git submodule update
      if: '>=0.0.18'
    - go generate ./...
    - go build -ldflags="$GO_LDFLAGS" -o '{{prefix}}/bin/ollama' .
  env:
    GO_LDFLAGS:
      # versions older than 0.1.30
      - -X github.com/jmorganca/ollama/version.Version={{version}}
      # new versions
      - -X github.com/ollama/ollama/version.Version={{version}}
    linux:
      GO_LDFLAGS:
        # else segfaults
        - -buildmode=pie

provides:
  - bin/ollama

test:
  qa-required: true
  dependencies:
    linux:
      gitlab.com/procps-ng/procps: '*'
  script:
    - ollama --version | grep 'client version is {{version}}'
    # 0.0.19 complains about a missing blobs directory
    - run: mkdir -p ~/.ollama/models/blobs
      if: =0.0.19
    # why is this killing the test, it seems like?
    - run: pgrep -l ollama
      if: linux
    - $KILL ollama || true
    - sleep 5
    - ollama serve &
    - sleep 5
    - ollama create mario -f ./Modelfile
    - ollama list | grep 'mario'
    - $KILL ollama || true
  env:
    darwin:
      KILL: killall
    linux:
      KILL: pkill -x
