From 94bd3e2ec80ed39c4d4726204707fada2d6a7fe2 Mon Sep 17 00:00:00 2001 From: Gonzalo Blasco Date: Sun, 21 Dec 2025 16:46:24 -0300 Subject: [PATCH] feat: Add installation scripts for CIAA environment setup on Arch Linux and Debian/Ubuntu --- scripts/README.md | 104 +++++++++++++ scripts/download-embedded-ide-templates.sh | 24 +++ scripts/epernia-arch-setup.sh | 166 +++++++++++++++++++++ scripts/epernia-debian-setup.sh | 121 +++++++++++++++ 4 files changed, 415 insertions(+) create mode 100644 scripts/README.md create mode 100755 scripts/download-embedded-ide-templates.sh create mode 100755 scripts/epernia-arch-setup.sh create mode 100644 scripts/epernia-debian-setup.sh diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000..ed6a95d --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,104 @@ +# Scripts de Instalación CIAA + +Este directorio contiene scripts de automatización para configurar el entorno de desarrollo CIAA en diferentes distribuciones de Linux. + +## Descripción General + +Los scripts descargan e instalan automáticamente todas las herramientas, dependencias y componentes necesarios para trabajar con CIAA (Computadora Industrial Abierta Argentina). + +Todos los scripts descargan los componentes en: **`/home/usuario/CIAA`** + +--- + +## Scripts Disponibles + +### 1. `epernia-arch-setup.sh` (Arch Linux) + +**Propósito:** Instalación automática completa para Arch Linux y derivados (Manjaro, Endeavour, etc.) + +**Qué instala:** +- Dependencias del sistema necesarias (jq, unzip, openocd) +- CIAA-Launcher v1.1 (compilador y herramientas de desarrollo) +- Firmware_v3 (firmware del proyecto) +- EmbeddedIDE (entorno integrado de desarrollo) +- **Templates de Embedded IDE** (plantillas de proyectos) + +**Uso:** +```bash +chmod +x epernia-arch-setup.sh +sudo ./epernia-arch-setup.sh +``` + +**Ubicación de descarga:** `/home/usuario/CIAA/` + +--- + +### 2. `epernia-debian-setup.sh` (Debian/Ubuntu) + +**Propósito:** Instalación automática completa para Ubuntu, Debian y distribuciones basadas en apt. + +**Qué instala:** +- Dependencias del sistema (jq, unzip, openocd, git, build-essential, gtkterm, cutecom) +- CIAA-Launcher v1.1 (compilador y herramientas de desarrollo) +- Firmware_v3 (firmware del proyecto) +- EmbeddedIDE (entorno integrado de desarrollo) +- **Templates de Embedded IDE** (plantillas de proyectos) + +**Uso:** +```bash +chmod +x epernia-debian-setup.sh +sudo ./epernia-debian-setup.sh +``` + +**Ubicación de descarga:** `/home/usuario/CIAA/` + +--- + +### 3. `download-embedded-ide-templates.sh` (Descarga Individual de Templates) + +**Propósito:** Descargar únicamente los templates de Embedded IDE sin necesidad de ejecutar la instalación completa. **Útil si la instalación completa falla o solo necesitas actualizar los templates.** + +**Qué descarga:** +- Todos los templates (`.template`) disponibles del repositorio oficial +- Los templates son archivos de plantillas para crear nuevos proyectos en Embedded IDE + +**Ubicación de descarga (modificable):** +```bash +DEST="/home/$USER_NAME/CIAA/workspaces/embedded-ide-ws/templates" +``` + +**Cómo usar:** + +1. Abre el script en un editor de texto: + ```bash + nano download-embedded-ide-templates.sh + ``` + +2. Si deseas cambiar la ubicación de descarga, modifica la línea: + ```bash + DEST="/home/$USER_NAME/CIAA/workspaces/embedded-ide-ws/templates" + ``` + + Por ejemplo, para descargar en otra ubicación: + ```bash + DEST="/ruta-personalizada/workspaces/embedded-ide-ws/templates" + ``` + +3. Ejecuta el script: + ```bash + chmod +x download-embedded-ide-templates.sh + ./download-embedded-ide-templates.sh + ``` + + + +--- + +## Notas Importantes + +**Los templates se incluyen automáticamente** en los scripts `epernia-arch-setup.sh` y `epernia-debian-setup.sh` + +**Usa `download-embedded-ide-templates.sh` solo si:** +- La instalación sin los scripts falla y necesitas recuperar los templates +- Deseas actualizar los templates sin reinstalar todo +- Solo tienes conexión para descargar templates \ No newline at end of file diff --git a/scripts/download-embedded-ide-templates.sh b/scripts/download-embedded-ide-templates.sh new file mode 100755 index 0000000..6841701 --- /dev/null +++ b/scripts/download-embedded-ide-templates.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Usuario actual +USER_NAME="$USER" + +# Carpeta destino +DEST="/home/$USER_NAME/CIAA/workspaces/embedded-ide-ws/templates" + +# Repositorio +REPO="ciaa/EmbeddedIDE-templates" + +mkdir -p "$DEST" +cd "$DEST" || exit 1 + +# Descargar todos los .template +curl -s "https://api.github.com/repos/$REPO/contents" | \ + jq -r '.[] | select(.name | endswith(".template")) | .download_url' | \ + while read -r url; do + fname=$(basename "$url") + echo "Descargando $fname..." + curl -s -L -o "$fname" "$url" + done + +echo "Descarga finalizada en $DEST" diff --git a/scripts/epernia-arch-setup.sh b/scripts/epernia-arch-setup.sh new file mode 100755 index 0000000..d153e8e --- /dev/null +++ b/scripts/epernia-arch-setup.sh @@ -0,0 +1,166 @@ +#!/bin/bash +set -e + +# Detectar el home del usuario real +USER_NAME="${SUDO_USER:-$(whoami)}" +USER_HOME="/home/$USER_NAME" + +echo "===================================================" +echo " CIAA-Launcher Automatic Installer for Arch Linux " +echo "===================================================" + + +# 1. Install required dependencies +echo "[1/6] Installing required dependencies..." +if command -v pacman &>/dev/null; then + sudo pacman -Sy --noconfirm jq unzip openocd +elif command -v apt &>/dev/null; then + sudo apt update && sudo apt install -y jq unzip openocd +elif command -v dnf &>/dev/null; then + sudo dnf install -y jq unzip openocd +else + echo "⚠ Could not detect a supported package manager. Please install 'jq' and 'unzip' manually." +fi + +# 2. Download CIAA-Launcher and extract immediately +echo "[2/6] Downloading CIAA-Launcher..." +mkdir -p "$USER_HOME/CIAA" +cd "$USER_HOME/CIAA" + +if [ ! -f CIAA_Software_1.1-linux-x64.tar.xz ]; then + curl -L -o CIAA_Software_1.1-linux-x64.tar.xz \ + https://github.com/epernia/software/releases/download/r1.1.0/CIAA_Software_1.1-linux-x64.tar.xz + + echo "Extracting CIAA-Launcher..." + tar -xf CIAA_Software_1.1-linux-x64.tar.xz -C "$USER_HOME/CIAA" --strip-components=1 + rm -f CIAA_Software_1.1-linux-x64.tar.xz + if [ -d "$USER_HOME/CIAA/CIAA_Software_1.1-linux-x64" ]; then + rm -rf "$USER_HOME/CIAA/CIAA_Software_1.1-linux-x64" + fi +fi + + +# 3. Download and extract firmware_v3 +echo "[2/6] Downloading firmware_v3..." +cd $USER_HOME/CIAA +if [ ! -f r1.3.0.zip ]; then + curl -L -o r1.3.0.zip \ + https://github.com/epernia/firmware_v3/archive/refs/tags/r1.3.0.zip +fi + +echo "Extracting firmware_v3..." +unzip -qo r1.3.0.zip -d $USER_HOME/CIAA +rm -f r1.3.0.zip + + +# 4. Create .desktop entry +echo "[4/6] Creating desktop entry..." +mkdir -p $USER_HOME/.local/share/applications +cat > $USER_HOME/.local/share/applications/CIAA-Launcher.desktop </dev/null 2>&1; then + echo "⚠ 'paru' is not installed. Please install paru first." +else + echo "[*] Installing AUR packages as user $USERNAME..." + for pkg in $AUR_PACKAGES; do + sudo -u "$USERNAME" paru -S --noconfirm "$pkg" + done +fi + +# ---------- Configure serial port permissions ---------- +echo "[*] Configuring permissions for serial ports..." +usermod -aG uucp,lock "$USERNAME" + +bash /home/$USERNAME/CIAA/embedded-ide/usr/bin/ftdi-tools.sh --install + +# ---------- Load FTDI kernel module ---------- +echo "[*] Loading FTDI kernel module..." +if lsmod | grep -q "^ftdi_sio"; then + echo "Module ftdi_sio already loaded." +else + if modinfo ftdi_sio &>/dev/null; then + sudo modprobe ftdi_sio + echo "Module ftdi_sio loaded successfully." + else + echo "Warning: Module ftdi_sio not found on this system." + echo "Make sure you have linux-firmware and kernel modules installed." + fi +fi + + +echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6010", MODE="0666"' | \ +sudo tee /etc/udev/rules.d/99-ftdi.rules + +sudo udevadm control --reload-rules +sudo udevadm trigger + + + +# ---------- OpenOCD fix for Arch Linux ---------- +echo "[*] Applying OpenOCD fix for Arch Linux..." +mv $USER_HOME/CIAA/tools/openocd/bin/librt.so.1 $USER_HOME/CIAA/tools/openocd/bin/librt.so.1.bak + + + + +echo "[*] Installation finished ✅" +echo "Please log out and back in for group changes to take effect." + + + + + + +echo "==============================================================" +echo " Installation completed! " +echo " You can now launch CIAA-Launcher from rofi or your app menu. " +echo " firmware_v3 installed in: $USER_HOME/CIAA/firmware_v3-r1.3.0 " +echo "==============================================================" diff --git a/scripts/epernia-debian-setup.sh b/scripts/epernia-debian-setup.sh new file mode 100644 index 0000000..12653de --- /dev/null +++ b/scripts/epernia-debian-setup.sh @@ -0,0 +1,121 @@ +#!/bin/bash +set -e + +# Detectar el home del usuario real +USER_NAME="${SUDO_USER:-$(whoami)}" +USER_HOME="/home/$USER_NAME" + +echo "===================================================" +echo " CIAA-Launcher Automatic Installer for Ubuntu/Debian " +echo "===================================================" + +# 1. Instalar dependencias necesarias +echo "[1/6] Installing required dependencies..." +if command -v apt &>/dev/null; then + sudo apt update + sudo apt install -y jq unzip openocd git build-essential curl gtkterm cutecom +else + echo "⚠ Could not detect apt. Please install dependencies manually." + exit 1 +fi + +# 2. Descargar CIAA-Launcher +echo "[2/6] Downloading CIAA-Launcher..." +mkdir -p "$USER_HOME/CIAA" +cd "$USER_HOME/CIAA" + +if [ ! -f CIAA_Software_1.1-linux-x64.tar.xz ]; then + curl -L -o CIAA_Software_1.1-linux-x64.tar.xz \ + https://github.com/epernia/software/releases/download/r1.1.0/CIAA_Software_1.1-linux-x64.tar.xz + + echo "Extracting CIAA-Launcher..." + tar -xf CIAA_Software_1.1-linux-x64.tar.xz -C "$USER_HOME/CIAA" --strip-components=1 + rm -f CIAA_Software_1.1-linux-x64.tar.xz + if [ -d "$USER_HOME/CIAA/CIAA_Software_1.1-linux-x64" ]; then + rm -rf "$USER_HOME/CIAA/CIAA_Software_1.1-linux-x64" + fi +fi + +# 3. Descargar firmware_v3 +echo "[3/6] Downloading firmware_v3..." +cd "$USER_HOME/CIAA" +if [ ! -f r1.3.0.zip ]; then + curl -L -o r1.3.0.zip \ + https://github.com/epernia/firmware_v3/archive/refs/tags/r1.3.0.zip +fi + +echo "Extracting firmware_v3..." +unzip -qo r1.3.0.zip -d "$USER_HOME/CIAA" +rm -f r1.3.0.zip + +# 4. Crear acceso en el menú +echo "[4/6] Creating desktop entry..." +mkdir -p "$USER_HOME/.local/share/applications" +cat > "$USER_HOME/.local/share/applications/CIAA-Launcher.desktop" </dev/null; then + sudo modprobe ftdi_sio + echo "Module ftdi_sio loaded successfully." + else + echo "Warning: Module ftdi_sio not found on this system." + fi +fi + +echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6010", MODE="0666"' | \ +sudo tee /etc/udev/rules.d/99-ftdi.rules + +sudo udevadm control --reload-rules +sudo udevadm trigger + +# ---------- Fix OpenOCD en CIAA ---------- +echo "[*] Applying OpenOCD fix..." +if [ -f "$USER_HOME/CIAA/tools/openocd/bin/librt.so.1" ]; then + mv "$USER_HOME/CIAA/tools/openocd/bin/librt.so.1" \ + "$USER_HOME/CIAA/tools/openocd/bin/librt.so.1.bak" +fi + +echo "[*] Installation finished ✅" +echo "Please log out and back in for group changes to take effect." + +echo "==============================================================" +echo " Installation completed! " +echo " You can now launch CIAA-Launcher from rofi or your app menu. " +echo " firmware_v3 installed in: $USER_HOME/CIAA/firmware_v3-r1.3.0 " +echo "=============================================================="