Skip to main content

vcpkg-compatible package manager with C++ project scaffolding

Project description

kmpkg

A Python reimplementation of the vcpkg package manager, with built-in C++ project scaffolding via kmcmake templates.

Installation

pip install kmpkg

Requires Python >= 3.8 and cmake on PATH.

Quick Start

# Create a C++ project from kmcmake template
kmpkg new --project --name myapp -o ./myapp

# Install a port
kmpkg install fmt

# Search available ports
kmpkg search fmt

# List installed ports
kmpkg list

Configuration

kmpkg reads kmpkg-configuration.json from the current directory or kmpkg root:

{
  "default-registry": {
    "kind": "git",
    "baseline": "d5c94a00e9d3d27a88399368d789971bc7e4fca8",
    "repository": "https://github.com/kumose/kmpkgcore.git"
  }
}

The root directory defaults to $KMPKG_ROOT or /home/jeff/kmpkgcore.

Commands

Project Creation

Command Description
kmpkg new --project --name X -o path Create C++ project from kmcmake template
kmpkg new --name X --version Y Create a new kmpkg.json manifest
kmpkg add fmt Add dependency to manifest

Package Management

Command Description
kmpkg install fmt Build and install a port
kmpkg install Install all dependencies from kmpkg.json
kmpkg remove fmt Uninstall a port
kmpkg update List upgradable packages
kmpkg upgrade Rebuild outdated packages

Build

Command Description
kmpkg build fmt Build a single port
kmpkg build fmt --overrides fmt=10.0.0 Build with version overrides
kmpkg ci --all CI build all ports
kmpkg test-features fmt Test all feature combinations
kmpkg check-support fmt Check if port is supported

Information

Command Description
kmpkg list List all available ports
kmpkg search fmt Search ports by pattern
kmpkg find fmt Alias for search
kmpkg package-info fmt Show port details
kmpkg depend-info fmt Show dependency tree
kmpkg owns file.h Find which package owns a file
kmpkg license-report Show licenses of installed packages

Registry Management

Command Description
kmpkg clone -i <src> -o <dst> -p fmt Clone ports with recursive deps
kmpkg publish fmt Publish port changes
kmpkg update-registry Fetch latest from git registry
kmpkg regenerate Regenerate version DB from ports/
kmpkg x-add-version fmt Update version database
kmpkg x-update-baseline --add fmt=1.0 Add baseline entry
kmpkg gitlog Show registry git log
kmpkg gitlog -p fmt Show port change history

Integration

Command Description
kmpkg integrate install Set up CMake integration
kmpkg integrate remove Remove CMake integration
kmpkg autocomplete bash Install shell completion
kmpkg autocomplete bash --remove Remove shell completion
kmpkg env --bin Create build environment

Export & Config

Command Description
kmpkg export fmt Export installed packages
kmpkg config show Show configuration
kmpkg config default-triplet x64-linux Set default triplet
kmpkg version Show version

Architecture

kmpkg/
  cli/              -- Click-based CLI (54 commands)
  core/             -- Core modules
    builder.py      -- PortBuilder (cmake -P portfile.cmake)
    dependency_resolver.py  -- Transitive dependency resolution
    statusdb.py     -- Installed package tracking
    binary_cache.py -- ABI-hash based binary cache
    download_manager.py     -- Download with SHA512 verification
    kmpkgpaths.py   -- Path discovery + registry configuration
  registry/
    builtin.py      -- Local files registry
    git.py          -- Git registry (remote clone/fetch)
    registry_set.py -- Registry routing
    port_provider.py -- Port file provider
  tests/            -- 74 pytest tests

Development

git clone https://github.com/kumose/kmpkg
cd kmpkg
pip install -e .
pytest

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kmpkg-0.3.0.tar.gz (54.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kmpkg-0.3.0-py3-none-any.whl (95.3 kB view details)

Uploaded Python 3

File details

Details for the file kmpkg-0.3.0.tar.gz.

File metadata

  • Download URL: kmpkg-0.3.0.tar.gz
  • Upload date:
  • Size: 54.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for kmpkg-0.3.0.tar.gz
Algorithm Hash digest
SHA256 c99bca168aeeabfb022817de0dba1d101670f58dd672a8cae14a544cc0b6aff0
MD5 1731e940f1a166b812f1902a383432b5
BLAKE2b-256 ca7e87eaa5d1e7bcfeb372b16ac6bf6656d9d48c6c58581b32e38b33ef69d2ce

See more details on using hashes here.

File details

Details for the file kmpkg-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: kmpkg-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 95.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for kmpkg-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ee65a7bf37e2be3c177f9806c3a62b2ad4458f3d26969a3c4c15245f0bedb5f4
MD5 d73391a00d1cb73b045a37c8aa49fdfc
BLAKE2b-256 b24e920d0b631b65b1a9bb68ca993a5acc37213a57dfa1e7d8ade2411bb6bb12

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page