From 3385ceaa02857dcd475b6f51f633590c5055452a Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 16 Sep 2024 01:13:14 +0000 Subject: [PATCH] fix(ollama): support bespoke file extensions, locations, version format, etc --- ollama/install.sh | 57 +++++++++++++++++++++++++++++++++++++++------- ollama/releases.js | 15 ++++++++++++ 2 files changed, 64 insertions(+), 8 deletions(-) diff --git a/ollama/install.sh b/ollama/install.sh index 402822e14..fa19e241d 100644 --- a/ollama/install.sh +++ b/ollama/install.sh @@ -1,21 +1,62 @@ #!/bin/sh -set -e -set -u +# shellcheck disable=SC2034 __init_ollama() { + set -e + set -u - ############## + ################## # Install ollama # - ############## + ################## - WEBI_SINGLE=true + # Every package should define these 6 variables + pkg_cmd_name="ollama" + + pkg_dst_cmd="${HOME}/.local/opt/ollama/bin/ollama" + pkg_dst_dir="${HOME}/.local/opt/ollama" + pkg_dst="${pkg_dst_dir}" + + pkg_src_cmd="${HOME}/.local/opt/ollama-v${WEBI_VERSION}/bin/ollama" + pkg_src_dir="${HOME}/.local/opt/ollama-v${WEBI_VERSION}" + pkg_src="${pkg_src_dir}" + + # pkg_install must be defined by every package + pkg_install() { + # ~/.local/opt/ + mkdir -p "$(dirname "${pkg_src_dir}")" + + if test -d ./ollama-*/; then + # the de facto way (in case it's supported in the future) + # mv ./ollama-*/ ~/.local/opt/ollama-v3.27.0/ + mv ./ollama-*/ "${pkg_src}" + elif test -d ./bin; then + # how linux is presently done + mkdir -p "${pkg_src_dir}" + mv ./bin "${pkg_src_dir}" + if test -f ./lib; then + mv ./lib "${pkg_src_dir}" + fi + else + # how macOS is presently done + mkdir -p "$(dirname "${pkg_src_cmd}")" + mv ./ollama-* "${pkg_src_cmd}" + fi + + # remove previous location + if test -f ~/.local/bin/ollama; then + rm ~/.local/bin/ollama + fi + } pkg_get_current_version() { # 'ollama --version' has output in this format: - # ollama version 0.1.3 + # ollama version is 0.3.10 # This trims it down to just the version number: - # 0.1.3 - ollama --version 2> /dev/null | head -n 1 | sed 's:^ollama version ::' + # 0.3.10 + ollama --version 2> /dev/null | + head -n 1 | + cut -d' ' -f4 | + sed 's:^v::' } } diff --git a/ollama/releases.js b/ollama/releases.js index b7b24f471..2112227cc 100644 --- a/ollama/releases.js +++ b/ollama/releases.js @@ -28,6 +28,21 @@ module.exports = async function (request) { Object.assign(rel, { arch: 'x86_64_rocm' }); } + let oddballs = { + tgz: 'tar.gz', + tbz2: 'tar.bz2', + txz: 'tar.xz', + }; + let oddExts = Object.keys(oddballs); + for (let oddExt of oddExts) { + let isOddball = rel.name.endsWith(`.${oddExt}`); + if (isOddball) { + let ext = oddballs[oddExt]; + rel.name = rel.name.replace(`.${oddExt}`, `.${ext}`); + rel.ext = ext; + } + } + releases.push(rel); } all.releases = releases;