nip/docs/build_system.md

2.1 KiB

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

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:

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