Update install script and README to use precompiled release binary
Install script now downloads the latest GitHub release binary instead of cloning and building from source. Build dependencies are no longer needed for the quick install path. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
15
README.md
15
README.md
@@ -39,26 +39,17 @@ Ferrosonic requires the following at runtime:
|
|||||||
| **D-Bus** | MPRIS2 desktop media controls | Recommended |
|
| **D-Bus** | MPRIS2 desktop media controls | Recommended |
|
||||||
| **cava** | Audio visualizer | Optional |
|
| **cava** | Audio visualizer | Optional |
|
||||||
|
|
||||||
Build dependencies (needed to compile from source):
|
|
||||||
|
|
||||||
| Dependency | Package (Arch) | Package (Fedora) | Package (Debian/Ubuntu) |
|
|
||||||
|---|---|---|---|
|
|
||||||
| **Rust toolchain** | `rustup` | via rustup.rs | via rustup.rs |
|
|
||||||
| **pkg-config** | `pkgconf` | `pkgconf-pkg-config` | `pkg-config` |
|
|
||||||
| **OpenSSL dev headers** | `openssl` | `openssl-devel` | `libssl-dev` |
|
|
||||||
| **D-Bus dev headers** | `dbus` | `dbus-devel` | `libdbus-1-dev` |
|
|
||||||
|
|
||||||
### Quick Install
|
### Quick Install
|
||||||
|
|
||||||
Supports Arch, Fedora, and Debian/Ubuntu. Installs dependencies, Rust (if needed), builds from source, and installs to `/usr/local/bin/`:
|
Supports Arch, Fedora, and Debian/Ubuntu. Installs runtime dependencies, downloads the latest precompiled binary, and installs to `/usr/local/bin/`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -sSf https://raw.githubusercontent.com/jaidaken/ferrosonic/master/install.sh | sh
|
curl -sSf https://raw.githubusercontent.com/jaidaken/ferrosonic/master/install.sh | sh
|
||||||
```
|
```
|
||||||
|
|
||||||
### Manual Build
|
### Build from Source
|
||||||
|
|
||||||
If you prefer to build manually, install the dependencies listed above, then:
|
If you prefer to build from source, you'll also need: Rust toolchain, pkg-config, OpenSSL dev headers, and D-Bus dev headers. Then:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/jaidaken/ferrosonic.git
|
git clone https://github.com/jaidaken/ferrosonic.git
|
||||||
|
|||||||
50
install.sh
50
install.sh
@@ -1,25 +1,36 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
REPO="https://github.com/jaidaken/ferrosonic.git"
|
REPO="https://github.com/jaidaken/ferrosonic"
|
||||||
INSTALL_DIR="/usr/local/bin"
|
INSTALL_DIR="/usr/local/bin"
|
||||||
|
|
||||||
echo "Ferrosonic installer"
|
echo "Ferrosonic installer"
|
||||||
echo "===================="
|
echo "===================="
|
||||||
|
|
||||||
# Detect package manager and install dependencies
|
# Detect architecture
|
||||||
|
ARCH=$(uname -m)
|
||||||
|
case "$ARCH" in
|
||||||
|
x86_64) ASSET="ferrosonic-linux-x86_64" ;;
|
||||||
|
*)
|
||||||
|
echo "No precompiled binary for $ARCH. Please build from source."
|
||||||
|
echo "See: $REPO#manual-build"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Detect package manager and install runtime dependencies
|
||||||
if command -v pacman >/dev/null 2>&1; then
|
if command -v pacman >/dev/null 2>&1; then
|
||||||
echo "Detected Arch Linux"
|
echo "Detected Arch Linux"
|
||||||
sudo pacman -S --needed --noconfirm mpv pipewire wireplumber base-devel pkgconf dbus
|
sudo pacman -S --needed --noconfirm mpv pipewire wireplumber dbus
|
||||||
elif command -v dnf >/dev/null 2>&1; then
|
elif command -v dnf >/dev/null 2>&1; then
|
||||||
echo "Detected Fedora"
|
echo "Detected Fedora"
|
||||||
sudo dnf install -y mpv pipewire wireplumber gcc pkgconf-pkg-config dbus-devel
|
sudo dnf install -y mpv pipewire wireplumber dbus
|
||||||
elif command -v apt >/dev/null 2>&1; then
|
elif command -v apt >/dev/null 2>&1; then
|
||||||
echo "Detected Debian/Ubuntu"
|
echo "Detected Debian/Ubuntu"
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install -y mpv pipewire wireplumber build-essential pkg-config libdbus-1-dev
|
sudo apt install -y mpv pipewire wireplumber libdbus-1-3
|
||||||
else
|
else
|
||||||
echo "Unknown package manager. Please install manually: mpv, pipewire, wireplumber, pkg-config, dbus dev headers"
|
echo "Unknown package manager. Please install manually: mpv, pipewire, wireplumber, dbus"
|
||||||
echo "Then re-run this script."
|
echo "Then re-run this script."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -47,26 +58,17 @@ else
|
|||||||
echo "Skipping cava. You can install it later and enable it in Settings (F5)."
|
echo "Skipping cava. You can install it later and enable it in Settings (F5)."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Install Rust if not present
|
# Download latest release binary
|
||||||
if ! command -v cargo >/dev/null 2>&1; then
|
echo "Downloading ferrosonic..."
|
||||||
echo "Installing Rust toolchain..."
|
LATEST=$(curl -sI "$REPO/releases/latest" | grep -i '^location:' | sed 's/.*tag\///' | tr -d '\r')
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
DOWNLOAD_URL="$REPO/releases/download/$LATEST/$ASSET"
|
||||||
. "$HOME/.cargo/env"
|
TMPFILE=$(mktemp)
|
||||||
fi
|
curl -sL "$DOWNLOAD_URL" -o "$TMPFILE"
|
||||||
|
chmod +x "$TMPFILE"
|
||||||
# Clone and build
|
|
||||||
TMPDIR=$(mktemp -d)
|
|
||||||
echo "Building ferrosonic..."
|
|
||||||
git clone "$REPO" "$TMPDIR/ferrosonic"
|
|
||||||
cd "$TMPDIR/ferrosonic"
|
|
||||||
cargo build --release
|
|
||||||
|
|
||||||
# Install
|
# Install
|
||||||
sudo cp target/release/ferrosonic "$INSTALL_DIR/ferrosonic"
|
sudo mv "$TMPFILE" "$INSTALL_DIR/ferrosonic"
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
rm -rf "$TMPDIR"
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Ferrosonic installed to $INSTALL_DIR/ferrosonic"
|
echo "Ferrosonic $LATEST installed to $INSTALL_DIR/ferrosonic"
|
||||||
echo "Run 'ferrosonic' to start."
|
echo "Run 'ferrosonic' to start."
|
||||||
|
|||||||
Reference in New Issue
Block a user