git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
115 lines
2.9 KiB
Bash
Executable File
115 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# RuVector Setup Script for RHEL/CentOS/Fedora
|
|
# Installs all required dependencies for building RuVector
|
|
#
|
|
set -e
|
|
|
|
echo "RuVector Dependency Setup for RHEL/CentOS/Fedora"
|
|
echo "================================================="
|
|
echo ""
|
|
|
|
# Check if running as root
|
|
if [ "$EUID" -ne 0 ]; then
|
|
SUDO="sudo"
|
|
else
|
|
SUDO=""
|
|
fi
|
|
|
|
# Detect distro
|
|
if [ -f /etc/os-release ]; then
|
|
. /etc/os-release
|
|
DISTRO="$ID"
|
|
VERSION="$VERSION_ID"
|
|
else
|
|
DISTRO="unknown"
|
|
fi
|
|
|
|
echo "Detected: $DISTRO $VERSION"
|
|
|
|
# Determine package manager
|
|
if command -v dnf &> /dev/null; then
|
|
PKG_MGR="dnf"
|
|
elif command -v yum &> /dev/null; then
|
|
PKG_MGR="yum"
|
|
else
|
|
echo "Error: Neither dnf nor yum found"
|
|
exit 1
|
|
fi
|
|
|
|
# Install EPEL if needed (for CentOS/RHEL)
|
|
if [[ "$DISTRO" == "centos" || "$DISTRO" == "rhel" ]]; then
|
|
echo "Installing EPEL repository..."
|
|
$SUDO $PKG_MGR install -y epel-release
|
|
fi
|
|
|
|
# Install development tools
|
|
echo "Installing development tools..."
|
|
$SUDO $PKG_MGR groupinstall -y "Development Tools"
|
|
$SUDO $PKG_MGR install -y \
|
|
openssl-devel \
|
|
clang \
|
|
clang-devel \
|
|
llvm-devel \
|
|
cmake \
|
|
git \
|
|
curl \
|
|
ca-certificates
|
|
|
|
# Determine PostgreSQL version to install
|
|
PG_VERSION="${1:-16}"
|
|
echo "Setting up PostgreSQL $PG_VERSION..."
|
|
|
|
# Add PostgreSQL repository
|
|
if ! $PKG_MGR repolist | grep -q pgdg; then
|
|
echo "Adding PostgreSQL repository..."
|
|
$SUDO $PKG_MGR install -y \
|
|
"https://download.postgresql.org/pub/repos/yum/reporpms/EL-${VERSION%%.*}-x86_64/pgdg-redhat-repo-latest.noarch.rpm"
|
|
fi
|
|
|
|
# Disable built-in PostgreSQL module (for RHEL 8+)
|
|
if [[ "$VERSION" =~ ^8 || "$VERSION" =~ ^9 ]]; then
|
|
$SUDO dnf -qy module disable postgresql 2>/dev/null || true
|
|
fi
|
|
|
|
# Install PostgreSQL
|
|
echo "Installing PostgreSQL $PG_VERSION..."
|
|
$SUDO $PKG_MGR install -y \
|
|
"postgresql${PG_VERSION}-server" \
|
|
"postgresql${PG_VERSION}-devel"
|
|
|
|
# Initialize PostgreSQL if needed
|
|
if [ ! -f "/var/lib/pgsql/${PG_VERSION}/data/postgresql.conf" ]; then
|
|
echo "Initializing PostgreSQL database..."
|
|
$SUDO "/usr/pgsql-${PG_VERSION}/bin/postgresql-${PG_VERSION}-setup" initdb
|
|
fi
|
|
|
|
# Start PostgreSQL
|
|
echo "Starting PostgreSQL..."
|
|
$SUDO systemctl enable "postgresql-${PG_VERSION}"
|
|
$SUDO systemctl start "postgresql-${PG_VERSION}"
|
|
|
|
# Install Rust if not present
|
|
if ! command -v rustc &> /dev/null; then
|
|
echo "Installing Rust..."
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
source "$HOME/.cargo/env"
|
|
fi
|
|
|
|
# Install cargo-pgrx
|
|
echo "Installing cargo-pgrx..."
|
|
cargo install cargo-pgrx --version "0.12.9" --locked
|
|
|
|
# Initialize pgrx
|
|
echo "Initializing pgrx for PostgreSQL $PG_VERSION..."
|
|
cargo pgrx init --pg$PG_VERSION "/usr/pgsql-${PG_VERSION}/bin/pg_config"
|
|
|
|
echo ""
|
|
echo "================================================="
|
|
echo "Setup complete!"
|
|
echo ""
|
|
echo "You can now build RuVector with:"
|
|
echo " cd /path/to/ruvector"
|
|
echo " ./install/install.sh --build-from-source --pg-version $PG_VERSION"
|
|
echo ""
|