implementacion de script

This commit is contained in:
Marco Gallegos
2025-11-14 12:36:33 -06:00
parent 35606accff
commit 204852d5b4
4 changed files with 158 additions and 57 deletions

View File

@@ -6,6 +6,29 @@
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPT_DIR}/common.sh"
# Función para mostrar una barra de progreso
# Uso: show_progress TOTAL_ITEMS CURRENT_ITEM "Mensaje"
show_progress() {
local total=$1
local current=$2
local msg=$3
local percent=$((current * 100 / total))
local completed_len=$((percent / 2))
local bar=""
for ((i=0; i<completed_len; i++)); do bar+="="; done
local empty_len=$((50 - completed_len))
for ((i=0; i<empty_len; i++)); do bar+=" "; done
# Asegurarse de que el cursor esté al principio de la línea y la limpie
echo -ne "\r\033[K"
# Imprimir la barra de progreso
echo -ne " ${GREEN}[${bar}]${NC} ${percent}% - ${msg} (${current}/${total})"
if [[ $current -eq $total ]]; then
echo "" # Nueva línea al final
fi
}
install_davinci_resolve() {
log_step "Instalación de DaVinci Resolve (Intel Edition)"
@@ -23,12 +46,13 @@ install_davinci_resolve() {
log_info "Usando ZIP: ${RESOLVE_ZIP}"
start_spinner "Instalando dependencias básicas..."
# Instalación de paquetes básicos
log_info "Instalando paquetes básicos..."
sudo pacman -S --needed --noconfirm \
unzip patchelf libarchive xdg-user-dirs desktop-file-utils \
file gtk-update-icon-cache rsync clinfo qt5-base qt5-svg qt5-x11extras \
libpng libtiff libcurl || true
libpng libtiff libcurl &> /dev/null
stop_spinner $? "Dependencias básicas instaladas."
# Configurar OpenCL / Intel GPU
log_info "Configurando runtime OpenCL de Intel y drivers de video..."
@@ -39,15 +63,18 @@ install_davinci_resolve() {
sudo pacman -Rns --noconfirm nvidia nvidia-utils nvidia-settings opencl-nvidia || true
fi
start_spinner "Instalando headers del kernel (si es necesario)..."
# Instalar headers del kernel si son necesarios
KVER="$(uname -r)"
if [[ ! -d "/usr/lib/modules/${KVER}/build" ]]; then
log_info "Instalando headers de kernel..."
sudo pacman -S --needed --noconfirm linux-headers linux-zen-headers || true
sudo pacman -S --needed --noconfirm linux-headers linux-zen-headers &> /dev/null
fi
stop_spinner $? "Headers del kernel verificados."
# Instalar runtime OpenCL (compute runtime), desde AUR si es necesario
if ! pacman -Qi intel-compute-runtime &>/dev/null; then
start_spinner "Instalando intel-compute-runtime desde AUR..."
log_info "Instalando intel-compute-runtime (puede venir del AUR)..."
AUR_HELPER=$(ensure_aur_helper)
if [ "$AUR_HELPER" = "yay" ]; then
@@ -67,10 +94,11 @@ install_davinci_resolve() {
return 1
fi
fi
stop_spinner $? "intel-compute-runtime instalado."
fi
start_spinner "Instalando paquetes de video y OpenCL..."
# Instalar otros paquetes Intel / VA-API / OpenCL
log_info "Instalando paquetes Intel / VA-API / OpenCL..."
sudo pacman -S --needed --noconfirm \
intel-media-driver \
ocl-icd \
@@ -79,7 +107,8 @@ install_davinci_resolve() {
glu \
gtk2 \
fuse2 \
libva-utils libvdpau-va-gl || true
libva-utils libvdpau-va-gl &> /dev/null
stop_spinner $? "Paquetes de video instalados."
# Asegurar el archivo ICD para OpenCL de Intel
if [[ ! -f /etc/OpenCL/vendors/intel.icd ]]; then
@@ -104,8 +133,7 @@ install_davinci_resolve() {
log_info "Verificando soporte de decodificación VA-API para H264 / HEVC..."
vainfo | grep -E "H264|HEVC" || true
# Extraer DaVinci Resolve
log_info "Extrayendo DaVinci Resolve del ZIP..."
start_spinner "Extrayendo DaVinci Resolve del ZIP (puede tardar)..."
NEEDED_GB=10
FREE_KB=$(df --output=avail -k "${ZIP_DIR}" | tail -n1)
FREE_GB=$((FREE_KB / 1024 / 1024))
@@ -116,7 +144,8 @@ install_davinci_resolve() {
WORKDIR="$(mktemp -d -p "${ZIP_DIR}" .resolve-extract-XXXXXXXX)"
trap 'rm -rf "${WORKDIR}"' EXIT
unzip -q "${RESOLVE_ZIP}" -d "${WORKDIR}"
unzip -q "${RESOLVE_ZIP}" -d "${WORKDIR}"
stop_spinner $? "ZIP extraído."
RUN_FILE="$(find "${WORKDIR}" -maxdepth 2 -type f -name 'DaVinci_Resolve_*_Linux.run' | head -n1 || true)"
if [[ -z "${RUN_FILE}" ]]; then
@@ -125,8 +154,10 @@ install_davinci_resolve() {
fi
chmod +x "${RUN_FILE}"
start_spinner "Extrayendo AppImage..."
EX_DIR="$(dirname "${RUN_FILE}")"
( cd "${EX_DIR}" && "./$(basename "${RUN_FILE}")" --appimage-extract >/dev/null )
stop_spinner $? "AppImage extraído."
APPDIR="${EX_DIR}/squashfs-root"
if [[ ! -d "${APPDIR}" ]]; then
@@ -149,8 +180,7 @@ install_davinci_resolve() {
ln -sf /usr/lib/libgmodule-2.0.so.0 libs/libgmodule-2.0.so.0
popd >/dev/null
# Aplicar RPATH
log_info "Aplicando RPATH con patchelf..."
log_info "Aplicando RPATH con patchelf (esto puede tardar)..."
RPATH_DIRS=(
"libs"
"libs/plugins/sqldrivers"
@@ -167,17 +197,27 @@ install_davinci_resolve() {
done
RPATH_ABS+="\$ORIGIN"
# Usar barra de progreso para patchelf
if command -v patchelf &>/dev/null; then
find "${APPDIR}" -type f -exec bash -c '
file -b "$1" | grep -q ELF && sudo patchelf --set-rpath "'"${RPATH_ABS}"'" "$1"
' _ {} \; || true
local files_to_patch
files_to_patch=$(find "${APPDIR}" -type f -exec file {} + | grep "ELF" | cut -d: -f1)
local total_files=$(echo "$files_to_patch" | wc -l)
local current_file=0
echo "$files_to_patch" | while read -r file; do
current_file=$((current_file + 1))
show_progress "$total_files" "$current_file" "Aplicando RPATH..."
sudo patchelf --set-rpath "${RPATH_ABS}" "$file" &>/dev/null
done
log_success "RPATH aplicado a $total_files archivos."
fi
# Instalar en /opt/resolve
log_info "Instalando DaVinci Resolve en /opt/resolve..."
start_spinner "Copiando archivos a /opt/resolve..."
sudo rm -rf /opt/resolve
sudo mkdir -p /opt/resolve
sudo rsync -a --delete "${APPDIR}/" /opt/resolve/
stop_spinner $? "Archivos copiados a /opt/resolve."
sudo mkdir -p /opt/resolve/.license
# Enlazar libcrypt legado si es necesario
@@ -230,4 +270,3 @@ EOF
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
install_davinci_resolve "$@"
fi

View File

@@ -47,12 +47,14 @@ install_zsh() {
# Instalar Zsh y plugins
log_info "Instalando Zsh y complementos..."
# El spinner se inicia desde el script principal, aquí solo ejecutamos el comando
sudo pacman -S --noconfirm --needed \
zsh zsh-completions zsh-syntax-highlighting zsh-autosuggestions || {
log_error "Error al instalar Zsh"
return 1
}
# No es necesario un spinner aquí, es muy rápido
# Descargar configuración personalizada
log_info "Descargando configuración de Zsh desde GitHub..."
if curl -fsSL "${REPO_BASE}/.zshrc" -o ~/.zshrc; then