Conan Extended C/C++ package manager
Project description
ConanEx - Conan Extended, conan that more decentralize
Overview
What does it for ?
ConanEx is using conan
as underlying tool.
ConanEx is a command line wrapper around conan
with additional features.
Consider the following workflow:
wget https://github.com/google/flatbuffers/archive/refs/tags/v22.10.26.zip
unzip v22.10.26.zip -d flatbuffers_22_10_26
conan create flatbuffers/22.10.26 flatbuffers_22_10_26/
conan create ctre/3.6 ../../../../compile-time-regular-expressions
Such workflow has a following drawbacks:
- Not all dependencies are specified in
conanfile.txt
- It adds a boilerplate commands to execute each time when environment should be deployed
Lets also describe conancenter
drawbacks:
- Centralized repository (do not allow decentralized behaviour)
- Hard to add
conanfile.py
receipt toconan-center-index
. It takes too long to pass review with all unwrittenconan-center-index
rules forconanfile.py
Lets also describe a current conanfile.txt
drawbacks:
conanfile.txt
does not allow specifying dependencies to other package sources likegit
, remotezip
archive and etc. It makes it less decentralized as claimed
Let's consider what ConanEx brings to conanfile.txt
syntax.
Consider the following conanfile.txt
:
[requires]
poco/1.9.4
flatbuffers/22.10.26 {
zip = 'https://github.com/google/flatbuffers/archive/refs/tags/v22.10.26.zip',
sha256 = 'B97C7C017B05F20B17939FEBD413C75201F5B704C8DE49ADB0B35A70D50478CD'
}
ctre/3.6 { remote = "conancenter" }
# Examples:
# flatbuffers/2.0.0 {
# git = https://github.com/google/flatbuffers,
# tag = v2.0.0
# }
# flatbuffers/2.0.0 { zip = "https://github.com/google/flatbuffers/archive/refs/tags/v2.0.0.tar.gz" }
# flatbuffers/2.0.0 { conan = "https://raw.githubusercontent.com/google/flatbuffers/master/conanfile.py" }
# CTRE/3.6 { git = "https://github.com/hanickadot/compile-time-regular-expressions" }
# CTRE/3.6 { path = "../../../../compile-time-regular-expressions" }
[options]
flatbuffers/*:shared=True
poco/*:shared=True
As you can see in this file we have 5 additional ways to install package
Lets describe them:
git
allow to download package using Git and runconanfile.py
located in root directoryzip
(url/file_path) allow installing package from archive, unpack it and run conanfile.py located in root directory. There are the following formats that supported: zip, tar.gz, tar.bz2conan
(url/file_path) if you receipt is completely independent, then you could specify url/path to it to create package. Independent means that receipt could download source files by itself.path
allow to install package from folderremote
specify separate remote for this particular package
url/file_path supports the hash calculation with options: md5
, sha256
and sha512
To install conanex
:
python3 -m pip install conanex
To use conanex
use it the same way you use conan
:
conanex install <path_to_conanfile.txt> -pr=<path_to_profile>
If you are using cmake-conan
:
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/0.18.1/conan.cmake"
"${CMAKE_BINARY_DIR}/conan.cmake"
TLS_VERIFY ON)
endif()
include(${CMAKE_BINARY_DIR}/conan.cmake)
set(CONAN_COMMAND conanex)
conan_cmake_autodetect(settings)
conan_cmake_install(PATH_OR_REFERENCE ${CMAKE_CURRENT_LIST_DIR}
BUILD missing
REMOTE conancenter
SETTINGS ${settings})
Only thing you need is to specify set(CONAN_COMMAND conanex)
before any conan command
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
File details
Details for the file conanex-2.1.1.tar.gz
.
File metadata
- Download URL: conanex-2.1.1.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7ba9aaad95d144ca432abd8aa8bbf8050e03faeca47a9fb8d873c1e273d5165 |
|
MD5 | e6ae573087812fb875d13cfff497d818 |
|
BLAKE2b-256 | 0ee65d9d2755a5338d325a0e868740e8c3c5f19ab1bc4489d79f46e7f2e6638f |
File details
Details for the file conanex-2.1.1-py3-none-any.whl
.
File metadata
- Download URL: conanex-2.1.1-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19b93611c0d36aeb2e6e5c4daa709cc8fb73b7b1b4f47a571c0bd9806dbf1bbb |
|
MD5 | bd4527efbb7e3be335dfb952750316c6 |
|
BLAKE2b-256 | 1040684958aaab4057535707380b3c2bd0fae1217de5d98c400e4820e4ddf9fa |