mirror of
https://github.com/containers/ramalama.git
synced 2026-02-05 15:47:26 +01:00
* Start adding rpm/ramalama.spec for Fedora Add a ramalama.spec to sit next to python-ramalama.spec while we get this reviewed. Change various configs so they are aware of ramalama.spec Signed-off-by: Stephen Smoogen <ssmoogen@redhat.com> * Add needed obsoletes/provides in base rpm to start process. Signed-off-by: Stephen Smoogen <ssmoogen@redhat.com> * Try to fix CI problems with initial mr The initial MR puts two spec files in the same directory which was causing problems with the CI. This splits them off into different directories which should allow for the tooling to work. Signed-off-by: Stephen Smoogen <ssmoogen@redhat.com> * Finish move of Fedora rpm package to new name. Put changes into various files needed to allow for new RPM package `ramalama` to build in Fedora infrastructure versus python3-ramalama. Signed-off-by: Stephen Smoogen <ssmoogen@redhat.com> * Fix problem with path names lsm5 caught Signed-off-by: Stephen Smoogen <ssmoogen@redhat.com> --------- Signed-off-by: Stephen Smoogen <ssmoogen@redhat.com> Co-authored-by: Stephen Smoogen <ssmoogen@redhat.com>
173 lines
3.6 KiB
Bash
Executable File
173 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
available() {
|
|
command -v "$1" >/dev/null
|
|
}
|
|
|
|
nvidia_lshw() {
|
|
lshw -c display -numeric -disable network | grep -q 'vendor: .* \[10DE\]'
|
|
}
|
|
|
|
amd_lshw() {
|
|
lshw -c display -numeric -disable network | grep -q 'vendor: .* \[1002\]'
|
|
}
|
|
|
|
mthreads_lshw() {
|
|
lshw -c display -numeric -disable network | grep -q 'vendor: .* \[1ED5\]'
|
|
}
|
|
|
|
dnf_install() {
|
|
if grep -q ostree= /proc/cmdline; then
|
|
return 1
|
|
fi
|
|
|
|
$sudo dnf install -y "$1"
|
|
|
|
return 0
|
|
}
|
|
|
|
dnf_install_podman() {
|
|
if ! available podman; then
|
|
dnf_install podman || true
|
|
fi
|
|
}
|
|
|
|
apt_install() {
|
|
apt install -y "$1"
|
|
}
|
|
|
|
apt_update_install() {
|
|
if ! available podman; then
|
|
$sudo apt update || true
|
|
|
|
# only install docker if podman can't be
|
|
if ! $sudo apt_install podman; then
|
|
if ! available docker; then
|
|
$sudo apt_install docker || true
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
install_mac_dependencies() {
|
|
if [ "$EUID" -eq 0 ]; then
|
|
echo "This script is intended to run as non-root on macOS"
|
|
|
|
return 1
|
|
fi
|
|
|
|
if ! available "brew"; then
|
|
echo "RamaLama requires brew to complete installation."
|
|
echo
|
|
echo "To install brew please run:"
|
|
echo
|
|
echo "curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash"
|
|
echo
|
|
|
|
return 2
|
|
fi
|
|
|
|
brew install llama.cpp
|
|
echo
|
|
}
|
|
|
|
check_platform() {
|
|
if [ "$os" = "Darwin" ]; then
|
|
install_mac_dependencies
|
|
elif [ "$os" = "Linux" ]; then
|
|
if [ "$EUID" -ne 0 ]; then
|
|
if ! available sudo; then
|
|
error "This script is intended to run as root on Linux"
|
|
|
|
return 3
|
|
fi
|
|
|
|
sudo="sudo"
|
|
fi
|
|
else
|
|
echo "This script is intended to run on Linux and macOS only"
|
|
|
|
return 4
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
parse_arguments() {
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
-l)
|
|
local_install="true"
|
|
shift
|
|
;;
|
|
*)
|
|
break
|
|
esac
|
|
done
|
|
}
|
|
|
|
print_banner() {
|
|
echo -e " _____ _\n" \
|
|
"| __ \ | |\n" \
|
|
"| |__) |__ _ _ __ ___ __ _| | __ _ _ __ ___ __ _\n" \
|
|
"| _ // _\` | '_ \` _ \ / _\` | | / _\` | '_ \` _ \ / _\` |\n" \
|
|
"| | \ \ (_| | | | | | | (_| | |___| (_| | | | | | | (_| |\n" \
|
|
"|_| \_\__,_|_| |_| |_|\__,_|______\__,_|_| |_| |_|\__,_|\n"
|
|
}
|
|
|
|
print_success_info() {
|
|
echo
|
|
echo "====================== Installation Completed ======================"
|
|
echo "Success! RamaLama has been installed successfully."
|
|
echo "For further details, check the documentation at:"
|
|
echo "https://github.com/containers/ramalama/tree/main/docs"
|
|
echo "Or use the '--help' flag to learn more about usage."
|
|
echo "===================================================================="
|
|
}
|
|
|
|
is_python3_at_least_310() {
|
|
python3 -c 'import sys; exit(0 if sys.version_info >= (3, 10) else 1)'
|
|
}
|
|
|
|
install_uv() {
|
|
local host="raw.githubusercontent.com"
|
|
local install_uv_url="https://$host/containers/ramalama/s/install-uv.sh"
|
|
curl -fsSL "$install_uv_url" | bash
|
|
echo
|
|
}
|
|
|
|
main() {
|
|
set -e -o pipefail
|
|
|
|
print_banner
|
|
local local_install="false"
|
|
parse_arguments "$@"
|
|
|
|
local os
|
|
os="$(uname -s)"
|
|
local sudo=""
|
|
check_platform
|
|
if ! $local_install && [ -z "$BRANCH" ]; then
|
|
if available dnf; then
|
|
dnf_install_podman
|
|
if is_python3_at_least_310 && dnf_install "ramalama"; then
|
|
return 0
|
|
fi
|
|
elif available apt; then
|
|
apt_update_install
|
|
fi
|
|
|
|
if available brew && brew install ramalama; then
|
|
install_uv
|
|
uv tool install mlx-lm
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
install_uv
|
|
uv tool install --force --python python3.12 ramalama
|
|
print_success_info
|
|
}
|
|
|
|
main "$@"
|