ProKit

The ProteanOS Development Kit for building, packaging, and managing embedded software.

ProKit development workflow diagram

What is ProKit?

ProKit is our build system. Instead of wrestling with cross-compilers, linkers, and packaging tools manually, ProKit wraps it all up in simple commands that handle the messy details for you.

Point it at your source code, tell it what platform you're targeting, and it figures out the rest.

What's Inside

ProKit includes:

  • Build driver: Runs the compiler with the right flags for your target
  • Package tools: Creates and manages packages per the Source Package Format
  • Environment setup: Scripts for switching between different target configs
  • Dependency resolver: Figures out what order to build things in
  • Quality checks: Validates packages against format requirements

Basic Commands

Most common operations:

Building

Build a package
cd ~/packages/example-package
prokit build

# Verbose output
prokit build --verbose

Packaging

Create a package
prokit package

# Custom output directory
prokit package --output ~/packages/output/

Inspecting

Package inspection commands
# Show package metadata
prokit info package-name.opk

# List package contents
prokit list package-name.opk

# Verify package integrity
prokit verify package-name.opk

Typical Workflow

  1. Set up: Source the ProKit environment script
  2. Get source: Clone or create your source + metadata (control file, build rules)
  3. Configure: Pick your target architecture
  4. Build: prokit build
  5. Test: Try it on hardware or an emulator
  6. Package: prokit package
  7. Share: Send patches for review

Configuration

Customize ProKit via:

  • ~/.config/prokit/config — Your personal settings
  • ./prokit.conf — Per-project settings
  • Environment variables: PROKIT_TARGET, PROKIT_SYSROOT, etc.

Getting Started

New to ProKit? Do this:

  1. Follow the install guide
  2. Build the example packages to verify everything works
  3. Read the package format spec
  4. Modify an existing package to learn the build system
  5. Package something new

Contributing

To contribute packages or ProKit improvements:

  • Follow coding standards
  • Test on relevant platforms
  • Send patches to proteanos-dev
  • Respond to feedback

ProKit FAQ

What is the difference between ProKit and a regular compiler toolchain?

ProKit wraps the toolchain with additional functionality for packaging, dependency management, and cross-compilation configuration. It handles the complexity of targeting embedded platforms.

Can I use ProKit for native (non-cross) compilation?

Yes, ProKit can build packages for the host system as well as cross-compile for embedded targets. Specify the target appropriately in your configuration.

How do I add support for a new target architecture?

Adding a new architecture involves configuring toolchain settings and may require porting work. See the porting guide for details on adding platform support.

Where are build artifacts stored?

By default, build outputs are placed in a build/ subdirectory within the package source tree. This can be configured per-project or globally.

How do I debug build failures?

Use the --verbose flag to see detailed build output. Check the build log for specific error messages. Common issues include missing dependencies and incorrect environment setup.