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.3.tar.gz (54.9 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.3-py3-none-any.whl (95.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kmpkg-0.3.3.tar.gz
  • Upload date:
  • Size: 54.9 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.3.tar.gz
Algorithm Hash digest
SHA256 009fa006a9929c2119b6be1d7110ce0dcc58735d7fc0f26912ff571ff5c79d35
MD5 5180613ef62e67768963dafd73103b49
BLAKE2b-256 17537e221ab236d5c132954dbbbbad3f6de7e78a73931592fc7e49feb7bf425f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: kmpkg-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 95.5 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3642bcd6f82133e885153e77aa62ce36956576e41fdaa53ac8795e63c3f62f0b
MD5 666f17846e35062d4bc5e0b364661d92
BLAKE2b-256 5a680fd4249c376e2fd6007e3c86cbfc0ddebb3acc0e1d67fecc582796f194ef

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