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.1.2.tar.gz (53.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.1.2-py3-none-any.whl (94.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kmpkg-0.1.2.tar.gz
  • Upload date:
  • Size: 53.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.1.2.tar.gz
Algorithm Hash digest
SHA256 fa861a63a707d4af888ed2abaebb452d2014205bc7f8e8d64261aee23948693d
MD5 ad5a47e61c69db1f8cdacff15e23fb2a
BLAKE2b-256 d467f555690bda4d49089fd746b2f4f195239fd4ddfee08f3bed139f43ce8217

See more details on using hashes here.

File details

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

File metadata

  • Download URL: kmpkg-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 94.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.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a74f4366ecff6b55329ab3e6b6c913eaeb08c4881095807b18e47a7047e2206d
MD5 4279f481835a2d90a8fa07b9a55c2785
BLAKE2b-256 95df970b9e20a4ecb4b02d5411fb95408f240e51b20020a82cf3f798f45990ea

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