syntaxis/docs/howto/bash_commands_used.md
Jesús Pérez 9cef9b8d57 refactor: consolidate configuration directories
Merge _configs/ into config/ for single configuration directory.
Update all path references.

Changes:
- Move _configs/* to config/
- Update .gitignore for new patterns
- No code references to _configs/ found

Impact: -1 root directory (layout_conventions.md compliance)
2025-12-26 18:36:23 +00:00

8.6 KiB

Comandos Bash Usados para Investigar Target Selection

1. DETECTAR INFORMACIÓN DEL SISTEMA

1.1 Detectar el OS

uname -s

Para qué: Identifica el sistema operativo Resultado posible: "Darwin" (macOS) o "Linux"

1.2 Detectar la Arquitectura

uname -m

Para qué: Identifica la arquitectura del procesador Resultado posible: "arm64" (Apple Silicon), "x86_64" (Intel), "aarch64" (Linux ARM)

1.3 Información Completa del Sistema

uname -a

Para qué: Muestra toda la información: kernel, nombre host, procesador, etc. Ejemplo: "Darwin MacBook.local 25.1.0 Darwin Kernel Version 25.1.0"


2. INFORMACIÓN DE RUST Y CARGO

2.1 Versión de Rustc

rustc --version

Para qué: Verificar versión instalada de Rust Resultado: "rustc 1.91.1 (ed61e7d7e 2025-11-07)"

2.2 Información Detallada de Rustc

rustc --version --verbose

Para qué: Ver detalles incluyendo LLVM version Muestra:

  • release
  • commit-hash
  • commit-date
  • host (target del sistema)
  • LLVM version

2.3 El Target Host (LA CLAVE)

rustc --print host-triple

Para qué: Obtener el "triple" del sistema actual Resultado en M1 Mac: "aarch64-apple-darwin" Resultado en Intel Mac: "x86_64-apple-darwin" Resultado en Linux ARM: "aarch64-unknown-linux-gnu"

2.4 Información del Toolchain

rustup toolchain list

Para qué: Ver qué toolchains están instalados Resultado: "stable-aarch64-apple-darwin (default)"

2.5 Ruta del Toolchain

rustup which rustc

Para qué: Saber dónde está instalado rustc Resultado: "/Users/jesusperezlorenzo/.rustup/toolchains/stable-aarch64-apple-darwin/bin/rustc"

2.6 Versión de Cargo

cargo --version

Para qué: Verificar versión de cargo Resultado: "cargo 1.91.1"


3. INFORMACIÓN DE RUST AVANZADA

3.1 Features/Capacidades del CPU

rustc --print cfg

Para qué: Ver qué características del CPU detecta Rust Muestra: target_arch, target_os, target_vendor, etc. Ejemplo:

target_arch="aarch64"
target_os="macos"
target_vendor="apple"
target_pointer_width="64"
target_endian="little"
target_family="unix"

3.2 Todos los Targets Disponibles

rustc --print sysroot | xargs -I {} ls {}/lib/rustlib/

Para qué: Ver qué targets tiene instalados Ejemplo:

aarch64-apple-darwin
aarch64-apple-ios
x86_64-apple-darwin
aarch64-unknown-linux-gnu

3.3 Target Triples Soportados

rustc --print target-list | head -20

Para qué: Ver todos los targets que Rust puede soportar (no solo instalados)


4. INVESTIGACIÓN DEL PROYECTO

4.1 Listar Estructura del Proyecto

ls -la

Para qué: Ver archivos en directorio actual Muestra: Cargo.toml, scripts/, etc.

4.2 Verificar Config de Cargo Personalizada

cat .cargo/config.toml

Para qué: Ver si hay configuración especial de compilación En este proyecto: No existe (usa valores por defecto)

4.3 Ver Configuración de Build en Cargo.toml

grep -A 10 "\[profile.release\]" Cargo.toml

Para qué: Ver las optimizaciones del release build Muestra:

opt-level = 3
lto = true
codegen-units = 1
strip = true

4.4 Verificar Workspace Members

cargo metadata --format-version=1 --no-deps | grep -o '"name":"[^"]*"' | head -15

Para qué: Ver todos los crates en el workspace Muestra 14 crates diferentes


5. BUILD Y COMPILACIÓN

5.1 Hacer un Dry-Run (sin compilar)

cargo build --release --dry-run --workspace

Para qué: Ver qué se compilaría sin hacerlo realmente

5.2 Compilar con Output Detallado

cargo build --release --workspace -v

Para qué: Ver cada comando que cargo ejecuta Muestra: rustc flags, linker commands, etc.

5.3 Compilar Solo Debug

cargo build --workspace

Para qué: Compilación rápida para desarrollo

5.4 Compilar Release

cargo build --release --workspace

Para qué: Compilación optimizada para producción


6. INSPECCIÓN DEL TARGET DIRECTORY

6.1 Ver Tamaño de Builds

du -sh target/debug target/release

Para qué: Comparar tamaño de debug vs release Resultado:

12G     target/debug
2.4G    target/release

6.2 Ver Archivos de Cache de Rustc

cat target/.rustc_info.json

Para qué: Ver información cacheada del host Contiene: target_arch, target_os, CPU features, etc.

6.3 Listar Binarios Compilados

ls -lh target/release | grep -v "^d"

Para qué: Ver qué ejecutables se generaron

6.4 Ver Artifacts en target/release/deps

ls -lh target/release/deps/ | head -20

Para qué: Ver archivos objeto, librerías estáticas y dinámicas


7. CROSS-COMPILATION (EJEMPLO)

7.1 Listar Targets Instalados

rustup target list | grep installed

Para qué: Ver qué targets están disponibles

7.2 Instalar Nuevo Target

rustup target add x86_64-unknown-linux-gnu

Para qué: Agregar capacidad de compilar para Linux desde macOS

7.3 Compilar para Target Específico

cargo build --release --target x86_64-unknown-linux-gnu

Para qué: Cross-compile para otro sistema

7.4 Ver Binarios Para Diferentes Targets

ls -lh target/x86_64-unknown-linux-gnu/release/ | head -10

Para qué: Ver binarios compilados para Linux


8. VERIFICACIÓN Y TESTING

8.1 Verificar Compilación (sin compilar completo)

cargo check --workspace

Para qué: Verificación rápida de errores sin generar binarios

8.2 Ejecutar Tests

cargo test --workspace --release

Para qué: Correr todos los tests del proyecto

8.3 Ejecutar Tests de Librería Solo

cargo test --workspace --lib --release

Para qué: Tests sin incluir integration tests

8.4 Ver Qué se Compilará

cargo build --workspace --dry-run 2>&1 | head -50

Para qué: Preview sin compilar realmente


9. ANÁLISIS DE BINARIOS

9.1 Ver Info de Ejecutable (macOS)

file target/release/workspace

Para qué: Ver arquitectura del binario compilado Resultado:

Mach-O 64-bit executable arm64

9.2 Ver Info de Ejecutable (Linux)

file target/release/workspace

Para qué: En Linux, muestra si es x86_64 o aarch64 Resultado:

ELF 64-bit LSB pie executable, x86-64

9.3 Ver Símbolos en Binario

nm target/release/workspace | head -20

Para qué: Ver funciones y símbolos (vacío si está stripped)

9.4 Ver Tamaño de Binarios

ls -lh target/release/{workspace,syntaxis-tui,syntaxis-dashboard}

Para qué: Comparar tamaños de cada binario


10. SETUP DE TOOLCHAIN

10.1 Ver Versión Default

rustup default

Para qué: Saber qué toolchain se usa por defecto

10.2 Cambiar Versión Default

rustup default stable

Para qué: Usar la versión stable actual

10.3 Actualizar Rust

rustup update

Para qué: Actualizar todo el toolchain a versiones más nuevas

10.4 Ver Sysroot (ubicación de librerías std)

rustc --print sysroot

Para qué: Donde está instalada la librería estándar de Rust


RESUMEN DE COMANDOS MÁS IMPORTANTES

Para investigar target selection, estos fueron los CRÍTICOS:

# 1. Detectar el sistema
uname -s              # OS
uname -m              # Arquitectura

# 2. Saber qué target usa Rust
rustc --print host-triple

# 3. Ver qué se puede compilar
rustc --print cfg    # Features del CPU
rustc --print target-list | grep -i linux

# 4. Verificar el proyecto
cargo metadata --format-version=1 --no-deps

# 5. Ver cómo se compila
cargo build --release -v

# 6. Verificar binarios generados
file target/release/workspace
ls -lh target/release/

FLUJO COMPLETO DE INVESTIGACIÓN

  1. Entender el Sistema Host

    uname -s && uname -m
    
  2. Ver qué Target Usa Rust

    rustc --print host-triple
    
  3. Inspeccionar El Proyecto

    cat Cargo.toml | grep -E "\[package\]|\[workspace\]"
    
  4. Ver Config de Cargo

    ls -la .cargo/
    cat .cargo/config.toml 2>/dev/null || echo "No custom config"
    
  5. Compilar y Verificar

    cargo build --release -v 2>&1 | head -50
    file target/release/workspace
    
  6. Investigar Cache

    cat target/.rustc_info.json | python -m json.tool
    
  7. Ver Cross-Compilation Posible

    rustup target list | grep installed
    rustc --print sysroot | xargs -I {} ls {}/lib/rustlib/