fix: build paru from source when paru-bin has libalpm.so version mismatch
This commit is contained in:
74
lib/utils.sh
74
lib/utils.sh
@@ -260,6 +260,21 @@ install_aur_package() {
|
|||||||
return $rc
|
return $rc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_install_paru_bin() {
|
||||||
|
local build_dir="$1"
|
||||||
|
git clone https://aur.archlinux.org/paru-bin.git "$build_dir/paru-bin" 2>/dev/null || return 1
|
||||||
|
(cd "$build_dir/paru-bin" && makepkg -si --needed --noconfirm) 2>/dev/null || return 1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
_install_paru_source() {
|
||||||
|
local build_dir="$1"
|
||||||
|
sudo_run pacman -S --needed --noconfirm go
|
||||||
|
git clone https://aur.archlinux.org/paru.git "$build_dir/paru" 2>/dev/null || return 1
|
||||||
|
(cd "$build_dir/paru" && makepkg -si --needed --noconfirm) 2>/dev/null || return 1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
install_aur_helper() {
|
install_aur_helper() {
|
||||||
if have paru || have yay; then
|
if have paru || have yay; then
|
||||||
return 0
|
return 0
|
||||||
@@ -279,48 +294,39 @@ install_aur_helper() {
|
|||||||
local build_dir
|
local build_dir
|
||||||
build_dir="$(mktemp -d)"
|
build_dir="$(mktemp -d)"
|
||||||
|
|
||||||
tui_info "Downloading paru-bin from AUR..."
|
tui_info "Installing paru-bin (binary AUR helper)..."
|
||||||
if ! git clone https://aur.archlinux.org/paru-bin.git "$build_dir/paru-bin"; then
|
if _install_paru_bin "$build_dir" && paru --version >/dev/null 2>&1; then
|
||||||
tui_error "Failed to download paru-bin. Check network connectivity."
|
tui_success "paru works"
|
||||||
rm -rf "$build_dir"
|
rm -rf "$build_dir"
|
||||||
return 1
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
tui_info "Building paru-bin with makepkg..."
|
tui_warn "paru-bin failed or has library mismatch. Building paru from source..."
|
||||||
if (cd "$build_dir/paru-bin" && makepkg -si --needed --noconfirm); then
|
rm -rf "$build_dir"/*
|
||||||
tui_success "paru installed successfully"
|
mkdir -p "$build_dir"
|
||||||
rm -rf "$build_dir"
|
|
||||||
else
|
|
||||||
local rc=$?
|
|
||||||
tui_warn "makepkg failed (exit $rc). Trying yay-bin..."
|
|
||||||
rm -rf "$build_dir/paru-bin"
|
|
||||||
|
|
||||||
if git clone https://aur.archlinux.org/yay-bin.git "$build_dir/yay-bin"; then
|
if _install_paru_source "$build_dir"; then
|
||||||
if (cd "$build_dir/yay-bin" && makepkg -si --needed --noconfirm); then
|
tui_success "paru built and installed from source"
|
||||||
|
rm -rf "$build_dir"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
tui_warn "paru source build failed. Trying yay as fallback..."
|
||||||
|
rm -rf "$build_dir"/*
|
||||||
|
|
||||||
|
if git clone https://aur.archlinux.org/yay-bin.git "$build_dir/yay-bin" 2>/dev/null; then
|
||||||
|
if (cd "$build_dir/yay-bin" && makepkg -si --needed --noconfirm) 2>/dev/null; then
|
||||||
tui_success "yay installed successfully"
|
tui_success "yay installed successfully"
|
||||||
rm -rf "$build_dir"
|
rm -rf "$build_dir"
|
||||||
else
|
return 0
|
||||||
tui_warn "Could not install AUR helper. Install manually:"
|
fi
|
||||||
tui_info " cd /tmp && git clone https://aur.archlinux.org/paru-bin.git"
|
fi
|
||||||
tui_info " cd paru-bin && makepkg -si"
|
|
||||||
|
tui_warn "Could not install any AUR helper. Install manually:"
|
||||||
|
tui_info " sudo pacman -S go && git clone https://aur.archlinux.org/paru.git"
|
||||||
|
tui_info " cd paru && makepkg -si"
|
||||||
rm -rf "$build_dir"
|
rm -rf "$build_dir"
|
||||||
return 1
|
return 1
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if have paru; then
|
|
||||||
tui_info "Verifying paru..."
|
|
||||||
if paru --version >/dev/null 2>&1; then
|
|
||||||
tui_success "paru works"
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
tui_warn "paru binary installed but fails to run. Falling back to direct AUR installs."
|
|
||||||
tui_info "Will install AUR packages via git clone + makepkg instead."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
install_aur() {
|
install_aur() {
|
||||||
|
|||||||
Reference in New Issue
Block a user