nushell-plugins/docs/building.md

1 line
20 KiB
Markdown
Raw Permalink Normal View History

# Building and Cross-Compilation Guide\n\nThis comprehensive guide covers everything you need to know about building nushell plugins, including cross-compilation for multiple platforms.\n\n## Table of Contents\n\n- [Quick Start](#quick-start)\n- [Prerequisites](#prerequisites)\n- [Build Methods](#build-methods)\n- [Cross-Compilation](#cross-compilation)\n- [Docker Builds](#docker-builds)\n- [Platform Support](#platform-support)\n- [Configuration](#configuration)\n- [Workflows](#workflows)\n- [Distribution](#distribution)\n- [Troubleshooting](#troubleshooting)\n- [FAQ](#faq)\n- [Advanced Topics](#advanced-topics)\n\n## Quick Start\n\n### Native Build (Host Platform Only)\n\n```bash\n# Clone repository\ngit clone https://github.com/YOUR_ORG/nushell-plugins.git\ncd nushell-plugins\n\n# Build all plugins for your platform\njust build\n\n# Or using the script directly\n./scripts/run.sh build_all.nu\n```\n\n### Cross-Platform Build\n\n```bash\n# Build for all supported platforms\njust build-cross-all\n\n# Build for specific platform\njust build-cross linux-amd64\n\n# Build and create distribution packages\njust release-cross\n```\n\n## Prerequisites\n\n### Required Tools\n\n1. **Rust Toolchain** (1.70.0+)\n\n ```bash\n curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n ```\n\n2. **Nushell** (0.107.1)\n\n ```bash\n # Install via cargo\n cargo install nu\n\n # Or download from https://github.com/nushell/nushell/releases\n ```\n\n3. **Just** (optional but recommended)\n\n ```bash\n cargo install just\n ```\n\n4. **Git** with submodules\n\n ```bash\n git clone --recursive https://github.com/YOUR_ORG/nushell-plugins.git\n ```\n\n### Optional Tools\n\n- **Docker** - For Docker-based cross-compilation\n- **Cross-compilation toolchains** - For native cross-compilation\n\n## Build Methods\n\n### 1. Native Compilation\n\nBuild plugins for your current platform using the standard Rust toolchain.\n\n```bash\n# Basic build\njust build\n\n# Verbose output\njust build-verbose\n\n# Parallel build (experimental)\njust build-parallel\n\n# Build specific plugins\n./scripts/run.sh build_all.nu --plugins nu_plugin_clipboard,nu_plugin_image\n```\n\n**Pros:**\n\n- Fast compilation\n- Native debugging support\n- Simple setup\n\n**Cons:**\n\n- Only builds for current platform\n- Limited cross-compilation support\n\n### 2. Cross-Compilation\n\nBuild plugins for different platforms using Rust's cross-compilation features.\n\n```bash\n# List available targets\njust build-targets\n\n# Build for specific target\njust build-cross linux-amd64\njust build-cross darwin-arm64\njust build-cross windows-amd64\n\n# Build for all targets\njust build-cross-all\n\n# Parallel cross-compilation\njust build-cross-parallel\n```\n\n**Pros:**\n\n- Multiple platforms from single machine\n- Fast execution\n- No Docker dependency\n\n**Cons:**\n\n- May require target-specific toolchains\n- Some targets may not work on all hosts\n\n### 3. Docker-Based Cross-Compilation\n\nUse Docker containers with pre-configured cross-compilation environments.\n\n```bash\n# Build Docker image\njust build-docker-image\n\n# Build specific target with Docker\njust build-docker linux-arm64\n\n# Force Docker for all builds\n./scripts/run.sh build_cross.nu --all-targets --docker\n```\n\n**Pros:**\n\n- Consistent build environment\n- All toolchains pre-installed\n- Works on any Docker-capable host\n\n**Cons:**\n\n- Slower than native compilation\n- Requires Docker\n- Larger resource usage\n\n## Cross-Compilation\n\n### Supported Platforms\n\n| Platform | Target Triple | Native | Docker | Notes |\n|----------|---------------|--------|---------|-------|\n| **Linux AMD64** | `x86_64-unknown-linux-gnu` | ✅ | ✅ | Most common Linux |\n| **Linux ARM64** | `aarch64-unknown-linux-gnu` | ⚠️ | ✅ | Requires cross toolchain |\n| **macOS Intel** | `x86_64-apple-darwin` | 🍎 | ❌ | macOS host only |\n| **macOS Apple Silicon** | `aarch64-apple-darwin` | 🍎 | ❌ | macOS host only |\n| **Windows AMD64** | `x86_64-pc-windows-msvc` | 🪟 | ✅ | Windows host or