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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
009fa006a9929c2119b6be1d7110ce0dcc58735d7fc0f26912ff571ff5c79d35
|
|
| MD5 |
5180613ef62e67768963dafd73103b49
|
|
| BLAKE2b-256 |
17537e221ab236d5c132954dbbbbad3f6de7e78a73931592fc7e49feb7bf425f
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3642bcd6f82133e885153e77aa62ce36956576e41fdaa53ac8795e63c3f62f0b
|
|
| MD5 |
666f17846e35062d4bc5e0b364661d92
|
|
| BLAKE2b-256 |
5a680fd4249c376e2fd6007e3c86cbfc0ddebb3acc0e1d67fecc582796f194ef
|