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.2.0.tar.gz (54.2 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.2.0-py3-none-any.whl (94.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for kmpkg-0.2.0.tar.gz
Algorithm Hash digest
SHA256 dc0b88ff4627001475b3c8803c5104d8fca19ce9825489a0b605d6b7d5b54688
MD5 88bb79a35369f19aed86dfbb3065f38f
BLAKE2b-256 728338f7f01d54fa58dfaf24096a333df181a05354bd546f86c5f30d3fbcd2e4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: kmpkg-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 94.7 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ba1c56f0d1196a5861d9166492d8c6ba704c5dec6994b44adc44e06486b9cb36
MD5 9da46df10645010f6ed3821fdd1fa9cf
BLAKE2b-256 abd750e68f6e657f4b2c9b71e28c8b37c23d5a52d5a4ede9fa5095c1a7a4b4d8

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