<a href="https://www.buymeacoffee.com/redradist" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>
## ConanEx - Conan Extended, conan that more decentralize
### Overview
What does it for ?
ConanEx is using [`conan`](https://github.com/conan-io/conan) as underlying tool.
ConanEx is a command line wrapper around `conan` with additional features.
Consider the following workflow:
```console
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 --name=flatbuffers --version=22.10.26 flatbuffers_22_10_26/
conan create --name=ctre --version=3.6 ../../../../compile-time-regular-expressions/
```
Such workflow has a following drawbacks:
1. Not all dependencies are specified in `conanfile.txt`
2. It adds a boilerplate commands to execute each time when environment should be deployed
Lets also describe `conancenter` drawbacks:
1. Centralized repository (do not allow decentralized behaviour)
2. Hard to add `conanfile.py` receipt to [`conan-center-index`](https://github.com/conan-io/conan-center-index). It takes too long to pass review with all unwritten `conan-center-index` rules for `conanfile.py`
Lets also describe a current `conanfile.txt` drawbacks:
1. `conanfile.txt` does not allow specifying dependencies to other package sources like `git`, remote `zip` 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`:
```console
[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:
1) `git` allow to download package using Git and run `conanfile.py` located in root directory
2) `zip` (_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.bz2_
3) `conan` (_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.
4) `path` allow to install package from folder
5) `remote` specify separate remote for this particular package
_url/file_path_ supports the hash calculation with options: `md5`, `sha256` and `sha512`
To install `conanex`:
```console
python3 -m pip install conanex
```
To use `conanex` use it the same way you use `conan`:
```console
conanex install <path_to_conanfile.txt> -pr=<path_to_profile>
```
If you are using `cmake` integration, just copy `cmake/conan_provider.cmake` to your project and add to CMake option `-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=./conan_provider.cmake`.
Then you could use `find_package` to find dependency package and use it:
```cmake
find_package(cpptrace REQUIRED)
...
target_link_libraries(TestProject PUBLIC cpptrace::cpptrace)
```
Raw data
{
"_id": null,
"home_page": "https://github.com/redradist/conanex",
"name": "conanex",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "C/C++, package, libraries, developer, manager, dependency, tool, c, c++, cpp",
"author": "redradist",
"author_email": "redradist@gmail.com",
"download_url": null,
"platform": null,
"description": "<a href=\"https://www.buymeacoffee.com/redradist\" target=\"_blank\"><img src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" ></a>\n\n## ConanEx - Conan Extended, conan that more decentralize\n\n### Overview\nWhat does it for ?\n\nConanEx is using [`conan`](https://github.com/conan-io/conan) as underlying tool.\nConanEx is a command line wrapper around `conan` with additional features.\n\nConsider the following workflow:\n```console\nwget https://github.com/google/flatbuffers/archive/refs/tags/v22.10.26.zip\nunzip v22.10.26.zip -d flatbuffers_22_10_26\nconan create --name=flatbuffers --version=22.10.26 flatbuffers_22_10_26/\nconan create --name=ctre --version=3.6 ../../../../compile-time-regular-expressions/\n```\n\nSuch workflow has a following drawbacks:\n1. Not all dependencies are specified in `conanfile.txt`\n2. It adds a boilerplate commands to execute each time when environment should be deployed\n\nLets also describe `conancenter` drawbacks:\n1. Centralized repository (do not allow decentralized behaviour)\n2. Hard to add `conanfile.py` receipt to [`conan-center-index`](https://github.com/conan-io/conan-center-index). It takes too long to pass review with all unwritten `conan-center-index` rules for `conanfile.py`\n\nLets also describe a current `conanfile.txt` drawbacks:\n1. `conanfile.txt` does not allow specifying dependencies to other package sources like `git`, remote `zip` archive and etc. It makes it less decentralized as claimed\n\nLet's consider what ConanEx brings to `conanfile.txt` syntax.\nConsider the following `conanfile.txt`:\n\n```console\n[requires]\npoco/1.9.4\nflatbuffers/22.10.26 {\n zip = 'https://github.com/google/flatbuffers/archive/refs/tags/v22.10.26.zip',\n sha256 = 'B97C7C017B05F20B17939FEBD413C75201F5B704C8DE49ADB0B35A70D50478CD'\n}\nctre/3.6 { remote = \"conancenter\" }\n# Examples:\n# flatbuffers/2.0.0 {\n# git = https://github.com/google/flatbuffers,\n# tag = v2.0.0\n# }\n# flatbuffers/2.0.0 { zip = \"https://github.com/google/flatbuffers/archive/refs/tags/v2.0.0.tar.gz\" }\n# flatbuffers/2.0.0 { conan = \"https://raw.githubusercontent.com/google/flatbuffers/master/conanfile.py\" }\n# CTRE/3.6 { git = \"https://github.com/hanickadot/compile-time-regular-expressions\" }\n# CTRE/3.6 { path = \"../../../../compile-time-regular-expressions\" }\n\n[options]\nflatbuffers/*:shared=True\npoco/*:shared=True\n```\nAs you can see in this file we have 5 additional ways to install package\n\nLets describe them:\n1) `git` allow to download package using Git and run `conanfile.py` located in root directory\n2) `zip` (_url/file_path_) allow installing package from archive, unpack it and run _conanfile.py_ located in root directory.\n There are the following formats that supported: _zip_, _tar.gz_, _tar.bz2_\n3) `conan` (_url/file_path_) if you receipt is completely independent, then you could specify url/path to it to create package.\n Independent means that receipt could download source files by itself.\n4) `path` allow to install package from folder\n5) `remote` specify separate remote for this particular package\n\n_url/file_path_ supports the hash calculation with options: `md5`, `sha256` and `sha512`\n\nTo install `conanex`:\n```console\npython3 -m pip install conanex\n```\n\nTo use `conanex` use it the same way you use `conan`:\n```console\nconanex install <path_to_conanfile.txt> -pr=<path_to_profile>\n```\n\nIf you are using `cmake` integration, just copy `cmake/conan_provider.cmake` to your project and add to CMake option `-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=./conan_provider.cmake`.\nThen you could use `find_package` to find dependency package and use it:\n```cmake\nfind_package(cpptrace REQUIRED)\n\n...\n\ntarget_link_libraries(TestProject PUBLIC cpptrace::cpptrace)\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Conan Extended C/C++ package manager",
"version": "2.2.5",
"project_urls": {
"Homepage": "https://github.com/redradist/conanex"
},
"split_keywords": [
"c/c++",
" package",
" libraries",
" developer",
" manager",
" dependency",
" tool",
" c",
" c++",
" cpp"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3fcd8c637cc8b1a4ec3dd56105f239fd44f95a448caeff2781d89d69e9d9aca5",
"md5": "f9b2b7600438c51c2b86f8c7b98b92bd",
"sha256": "a0e08dc74de0629630d4fc16cc0580723832e14826c832430dcce29174040bce"
},
"downloads": -1,
"filename": "conanex-2.2.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f9b2b7600438c51c2b86f8c7b98b92bd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 13066,
"upload_time": "2024-12-21T15:26:33",
"upload_time_iso_8601": "2024-12-21T15:26:33.723987Z",
"url": "https://files.pythonhosted.org/packages/3f/cd/8c637cc8b1a4ec3dd56105f239fd44f95a448caeff2781d89d69e9d9aca5/conanex-2.2.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-21 15:26:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "redradist",
"github_project": "conanex",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "conanex"
}