conanex


Nameconanex JSON
Version 2.1.0 PyPI version JSON
download
home_pagehttps://github.com/redradist/conanex
SummaryConan Extended C/C++ package manager
upload_time2024-01-14 11:58:49
maintainer
docs_urlNone
authorredradist
requires_python
licenseMIT
keywords c/c++ package libraries developer manager dependency tool c c++ cpp
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## 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 flatbuffers/22.10.26 flatbuffers_22_10_26/
conan create ctre/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-conan`:
```cmake
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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/redradist/conanex",
    "name": "conanex",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "C/C++,package,libraries,developer,manager,dependency,tool,c,c++,cpp",
    "author": "redradist",
    "author_email": "redradist@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/66/4b/c3ffe5abcbda536208c52776ffb453db7422a9254ce07155a153bbcf32c1/conanex-2.1.0.tar.gz",
    "platform": null,
    "description": "## 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 flatbuffers/22.10.26 flatbuffers_22_10_26/\nconan create ctre/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-conan`:\n```cmake\nif(NOT EXISTS \"${CMAKE_BINARY_DIR}/conan.cmake\")\n    message(STATUS \"Downloading conan.cmake from https://github.com/conan-io/cmake-conan\")\n    file(DOWNLOAD \"https://raw.githubusercontent.com/conan-io/cmake-conan/0.18.1/conan.cmake\"\n         \"${CMAKE_BINARY_DIR}/conan.cmake\"\n         TLS_VERIFY ON)\nendif()\n\ninclude(${CMAKE_BINARY_DIR}/conan.cmake)\n\nset(CONAN_COMMAND conanex)\nconan_cmake_autodetect(settings)\nconan_cmake_install(PATH_OR_REFERENCE ${CMAKE_CURRENT_LIST_DIR}\n                    BUILD missing\n                    REMOTE conancenter\n                    SETTINGS ${settings})\n```\nOnly thing you need is to specify `set(CONAN_COMMAND conanex)` before any conan command\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Conan Extended C/C++ package manager",
    "version": "2.1.0",
    "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": "664bc3ffe5abcbda536208c52776ffb453db7422a9254ce07155a153bbcf32c1",
                "md5": "b594fce6c7e77f7d60c0d53f37e4f77a",
                "sha256": "6bb3eed3c0fe477bee435f05b30800d13f1d0fa125e1a1ac8651fba6e5a8f54d"
            },
            "downloads": -1,
            "filename": "conanex-2.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b594fce6c7e77f7d60c0d53f37e4f77a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 14121,
            "upload_time": "2024-01-14T11:58:49",
            "upload_time_iso_8601": "2024-01-14T11:58:49.725424Z",
            "url": "https://files.pythonhosted.org/packages/66/4b/c3ffe5abcbda536208c52776ffb453db7422a9254ce07155a153bbcf32c1/conanex-2.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-14 11:58:49",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "redradist",
    "github_project": "conanex",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "conanex"
}
        
Elapsed time: 0.22040s