nip/docs/build_system.md

70 lines
2.1 KiB
Markdown

# Nimplate Build System
## Overview
The Nimplate build system provides type-safe, isolated, and cacheable source compilation for NexusOS packages. It supports multiple build systems through a unified template interface.
## Features
- **Type-Safe Templates**: Compile-time validated build configurations
- **Environment Isolation**: Sandboxed builds prevent system contamination
- **Build Caching**: Hash-based incremental compilation
- **Multi-System Support**: CMake, Autotools, Meson, Cargo, Nim, and custom builds
- **Artifact Tracking**: Complete build result and artifact management
## Supported Build Systems
| System | Status | Description |
|-----------|--------|-------------|
| CMake | ✅ Full | Modern C/C++ builds with configure/build/install |
| Autotools | ✅ Full | Traditional configure/make/install workflow |
| Meson | 🔧 Framework | Modern build system (implementation ready) |
| Cargo | 🔧 Framework | Rust package builds (implementation ready) |
| Nim | 🔧 Framework | Native Nim compilation (implementation ready) |
| Custom | 🔧 Framework | User-defined build scripts |
## Usage
```nim
import nimpak/build_system
# Create build template
let buildTmpl = BuildTemplate(
system: CMake,
configureArgs: @["-DCMAKE_BUILD_TYPE=Release"],
buildArgs: @["--parallel"],
installArgs: @["--prefix", "/usr"]
)
# Execute build
let result = buildFromTemplate(buildTmpl, "/path/to/source")
if result.success:
echo "Build completed in ", result.buildTime, "s"
echo "Artifacts: ", result.artifacts.len
else:
echo "Build failed: ", result.buildLog
```
## Architecture
- **NimplateExecutor**: Main execution engine
- **BuildEnvironment**: Isolated build environment management
- **BuildResult**: Comprehensive result tracking
- **Build Caching**: Hash-based incremental compilation
## Testing
Run the build system tests:
```bash
nim c --hints:off nip/tests/test_build_system_simple.nim
./nip/tests/test_build_system_simple
```
## Next Steps
- Task 13.2: Integration with CAS and packaging
- Enhanced build system implementations
- Container-based isolation
- Advanced caching strategies