diff --git a/README.md b/README.md index 5ab86a7..035f750 100644 --- a/README.md +++ b/README.md @@ -57,17 +57,16 @@ sudo apt-get install python3-pip python3-gi python3-dbus python3-cairo bluez **Arch Linux:** ```bash -sudo pacman -S base-devel python-pip python-gobject python-dbus python-cairo bluez bluez-utils +sudo pacman -S base-devel python-pip python-dbus python-cairo bluez bluez-utils ``` **Why these packages?** -- `base-devel`: Build tools (gcc, make, etc.) required for compiling PyGObject from pip -- `python-gobject`: Python bindings for GObject (system package, but pip may still compile PyGObject) +- `base-devel`: Build tools (gcc, make, meson) required for compiling PyGObject from pip - `python-dbus`: D-Bus Python bindings for BlueZ communication -- `python-cairo`: Cairo graphics library (PyGObject dependency) +- `python-cairo`: Cairo graphics library - `bluez` / `bluez-utils`: Bluetooth stack and utilities for Linux -**Note for Arch users:** Unlike Debian/Ubuntu where all dependencies use pre-compiled system packages, Arch requires some compilation due to pip/system package integration differences. The bluezero pip package may compile PyGObject from source even when python-gobject is installed. +**Note for Arch users:** PyGObject is intentionally NOT installed as a system package on Arch due to version incompatibility (Arch has 3.54.5, but bluezero requires <3.52.0). Instead, pip will compile the compatible PyGObject version (3.50.2) during installation. This adds ~2 minutes to installation time but ensures compatibility. #### 2. Install Python Dependencies diff --git a/install.sh b/install.sh index 2cb71e2..f6e2349 100755 --- a/install.sh +++ b/install.sh @@ -226,18 +226,19 @@ if command -v apt-get &> /dev/null; then elif command -v pacman &> /dev/null; then # Arch Linux print_info "Detected Arch Linux" - echo "Installing: base-devel python-pip python-gobject python-dbus python-cairo bluez bluez-utils" - print_warning "Note: base-devel required for compiling bluezero dependencies (PyGObject from pip)" + echo "Installing: base-devel python-pip python-dbus python-cairo bluez bluez-utils" + print_warning "Note: PyGObject will be compiled from pip due to version requirements (bluezero needs <3.52.0, Arch has 3.54.5)" # Use sudo only if not running as root if [ "$EUID" -eq 0 ]; then # Sync package database first (may have been synced in basic prereqs, but ensure it's current) pacman -Sy --noconfirm - pacman -S --needed --noconfirm base-devel python-pip python-gobject python-dbus python-cairo bluez bluez-utils + # Skip python-gobject to avoid version conflict - pip will compile PyGObject + pacman -S --needed --noconfirm base-devel python-pip python-dbus python-cairo bluez bluez-utils else sudo pacman -Sy --noconfirm - sudo pacman -S --needed --noconfirm base-devel python-pip python-gobject python-dbus python-cairo bluez bluez-utils + sudo pacman -S --needed --noconfirm base-devel python-pip python-dbus python-cairo bluez bluez-utils fi - print_success "System dependencies installed (using pre-compiled system packages where available)" + print_success "System dependencies installed (PyGObject will be compiled from pip)" else print_warning "Could not detect package manager" print_info "Please manually install: BlueZ 5.x, python3-dbus" diff --git a/tests/test_installer.sh b/tests/test_installer.sh index 43fa6bb..577e801 100755 --- a/tests/test_installer.sh +++ b/tests/test_installer.sh @@ -74,8 +74,8 @@ if [ "$OS_TYPE" = "debian" ]; then check_package bluez echo " ✓ bluez installed" elif [ "$OS_TYPE" = "arch" ]; then - check_package python-gobject - echo " ✓ python-gobject installed" + # Note: python-gobject NOT installed on Arch to avoid version conflict + # PyGObject compiled from pip instead check_package python-dbus echo " ✓ python-dbus installed" check_package python-cairo @@ -163,10 +163,11 @@ if [ "$OS_TYPE" = "debian" ]; then echo " • System packages: python3, python3-pip, git, python3-gi, python3-dbus, python3-cairo, bluez" echo " • Pip packages: rns, bleak, bluezero" echo " • Install method: System packages (no compilation)" + echo " • Installation time: < 1 minute" elif [ "$OS_TYPE" = "arch" ]; then - echo " • System packages: python, python-pip, git, python-gobject, python-dbus, python-cairo, bluez, bluez-utils, base-devel" - echo " • Pip packages: rns, bleak, bluezero (PyGObject compiled during bluezero install)" - echo " • Install method: System packages + compilation (base-devel provides build tools)" + echo " • System packages: python, python-pip, git, python-dbus, python-cairo, bluez, bluez-utils, base-devel" + echo " • Pip packages: rns, bleak, bluezero, PyGObject (compiled)" + echo " • Install method: System packages + PyGObject compilation (version compatibility)" + echo " • Installation time: ~2-3 minutes (PyGObject compilation)" fi -echo " • Installation time: Fast (< 2 minutes on Debian/Ubuntu, ~3 minutes on Arch)" echo ""