Build Guide
Build PiVirt components from source.
Overview
Section titled “Overview”This guide covers building PiVirt components from source code.
Prerequisites
Section titled “Prerequisites”System Requirements
Section titled “System Requirements”- Go 1.24 or later
- Git
- Make
- Protocol Buffers compiler (protoc)
- Node.js 20+ (for docs)
Install Dependencies
Section titled “Install Dependencies”# Install Go# https://go.dev/dl/
# Install protoc# https://grpc.io/docs/protoc-installation/
# Install Node.js# https://nodejs.org/
# Install additional toolsgo install google.golang.org/protobuf/cmd/protoc-gen-go@latestgo install connectrpc.com/connect/cmd/protoc-gen-connect-go@latestClone Repository
Section titled “Clone Repository”git clone https://github.com/pilab-dev/pivirt.gitcd pivirtBuild Components
Section titled “Build Components”Build All Components
Section titled “Build All Components”# Build all binariesmake build
# Or build specific componentsmake build-agentmake build-pvclimake build-iscsimanmake build-osinfodbmake build-cloudhypervisorBuild Individual Components
Section titled “Build Individual Components”# Build agentcd apps/agentgo build -o agent .
# Build pvclicd apps/pvcligo build -o pvcli .
# Build iscsimancd apps/iscsimango build -o iscsiman .
# Build osinfodbcd apps/osinfodbgo build -o osinfodb .
# Build cloudhypervisorcd apps/cloudhypervisorgo build -o cloudhypervisor .Build with Version Info
Section titled “Build with Version Info”Version metadata is embedded via the docs package. Install the external gitinfo tool and run:
# Generate docs/doc.go with git infogitinfo --output docs/doc.go
# Then build normallymake buildGenerate Proto Files
Section titled “Generate Proto Files”# Proto files are defined in virtpb/proto/# See the virtpb repository for proto generation instructionscd ../virtpbbuf generateRun Tests
Section titled “Run Tests”# Run all testsmake test
# Run specific testgo test ./apps/agent/...
# Run with coveragemake test-coverageBuild Docker Images
Section titled “Build Docker Images”# Build all imagesmake docker-build
# Build specific imagemake docker-build-agentmake docker-build-pvcli
# Push imagesmake docker-pushBuild Documentation
Section titled “Build Documentation”# Build docscd pibase-docspnpm installpnpm build
# Serve docs locallypnpm startCross-Compilation
Section titled “Cross-Compilation”# Build for Linux amd64GOOS=linux GOARCH=amd64 go build -o agent-linux-amd64 ./apps/agent
# Build for Linux arm64GOOS=linux GOARCH=arm64 go build -o agent-linux-arm64 ./apps/agent
# Build for macOSGOOS=darwin GOARCH=amd64 go build -o agent-darwin-amd64 ./apps/agentTroubleshooting
Section titled “Troubleshooting”Build Errors
Section titled “Build Errors”# Clean build cachego clean -cache
# Clean module cachego clean -modcache
# Re-download dependenciesgo mod downloadProto Generation Errors
Section titled “Proto Generation Errors”# Check protoc versionprotoc --version
# Reinstall protoc pluginsgo install google.golang.org/protobuf/cmd/protoc-gen-go@latestgo install connectrpc.com/connect/cmd/protoc-gen-connect-go@latest