{
"info": {
"author": "Tal Liron",
"author_email": "tal.liron@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Topic :: Software Development :: Build Tools"
],
"description": "R\u014dnin\n=====\n\nA straightforward but powerful build system based on\n`Ninja `__ and\n`Python `__, suitable for projects both big and\nsmall.\n\nR\u014dnin comes in `frustration-free\npackaging `__. Let's build all\nthe things!\n\nFeatures\n--------\n\nCurrently supported out-of-the-box: all `gcc `__\nlanguages, `Java `__,\n`Rust `__, `Go `__,\n`Vala `__/`Genie `__,\n`pkg-config `__,\n`Qt tools `__,\n`sdl2-config `__, and\n`binutils `__.\n\nIt's also easy to integrate your favorite `testing\nframework `__.\n\n\"Based on Python\" means that not only is it written in Python, but also\nit uses **Python as the DSL** for build scripts. Many build systems\ninvent their own DSLs, but R\u014dnin intentionally uses a language that\nalready exists. There's no hidden cost to this design choice: build\nscripts are pretty much as concise and coherent as any specialized DSL.\nYou *don't* need to be an expert in Python to use R\u014dnin, but its power\nis at your fingertips if you need it.\n\nR\u014dnin supports **Unicode** throughout: Ninja files are created in UTF-8\nby default and you can include Unicode characters in your build scripts.\n\nPython 3 is recommended, but R\u014dnin can also run on Python 2.7.\n\nDownload\n--------\n\nThe latest release is available on\n`PyPI `__, so you can install with\n``pip``, ``easy_install``, or ``setuptools``. On Debian/Ubuntu:\n\n::\n\n sudo apt install python3-pip\n sudo -H pip3 install ronin\n\nSince Ninja is just one small self-contained executable, it's easy to\nget it by downloading the `latest\nrelease `__. Just make\nsure it's in your execution path, or run your build script with\n``--set ninja.command=`` and give it the full path to ``ninja``. Older\nversions (they work fine) may also be available in your operating\nsystem. On Debian/Ubuntu:\n\n::\n\n sudo apt install ninja-build \n\nDocumentation\n-------------\n\nAn undocumented system is a broken system. We strive for coherent,\ncomprehensive, and up-to-date documentation.\n\nA detailed user manual is available on the\n`wiki `__.\n\nIf you prefer to learn by example, `there are\nmany `__.\n\nRich API docs available on `Read the\nDocs `__.\n\nFeelings\n--------\n\nGuiding lights:\n\n1. **Powerful does not have to mean hard to use**: *optional*\n auto-configuration with sensible, *overridable* defaults.\n2. **Complex does not have to mean complicated**: handle\n cross-compilation and other multi-configuration builds in a single\n script with minimal duplication of effort.\n\nDesign principles:\n\n1. **Don't hide functionality behind complexity**: the architecture\n should be straightforward. For example, if the user wants to\n manipulate a compiler command line, let them do it easily. Too many\n build systems bungle this and make it either impossible or very\n difficult to do something that would be trivial using a shell script.\n2. **Pour some sugar on me**: make common tasks easier with sweet\n utility functions. But make sure that sugar is optional, allowing the\n script to be more verbose when more control is necessary.\n3. **Don't reinvent wheels**: if Python or Ninja do something for us,\n use it. The build script is a plain Python program without any\n unnecessary cleverness. The generated Ninja file looks like something\n you could have created manually.\n\nFAQ\n---\n\n- *Do we really need another build system?* Yes. The other existing\n ones have convoluted architectures, impossible to opt-out-from\n automatic features, or are otherwise hostile to straightforward\n hacking. After so much wasted time fighting build systems to make\n them work for us, the time came to roll out a new one that does it\n right.\n- *Python is too hard. Why not create a simpler DSL?* Others have done\n it, and it seems that the costs outweigh the benefits. Making a new\n language is not trivial. Making a *robust* language could take years\n of effort. Python is here right now, with a huge ecosystem of\n libraries and tools. Yes, it introduces a learning curve, but getting\n familiar with Python is useful for so many practical reasons beyond\n writing build scripts for R\u014dnin. That said, if someone wants to\n contribute a simple DSL as an optional extra, we will consider!\n- *Why require Ninja, a binary, instead of building everything in 100%\n Python?* Because it's silly to reinvent wheels, especially when the\n wheels are so good. Ninja is a one-trick pony that does its job\n extremely well. But it's just too low-level for most users, hence the\n need for a frontend.\n- *Why Ninja? It's already yesterday's news! There are even faster\n builders.* Eh, if you ignore the initial configuration phase, and are\n properly multithreading your build (``-j`` flag in Make), then the\n time you wait for the build to finish ends up depending on your\n compiler, not the build system. Ninja was chosen because of its\n marvelous minimalism, not its speed. Ninja is actually `not\n much `__\n `faster `__\n than Make. For a similarly minimalist build system, see\n `tup `__.\n\nSimilar Projects\n----------------\n\n- `bfg9000 `__: \"bfg9000 is a\n cross-platform build configuration system with an emphasis on making\n it easy to define how to build your software.\"\n- `emk `__: \"A Python-based build\n tool.\"\n- `Craftr `__: \"Craftr is a next generation build\n system based on Ninja and Python that features modular and\n cross-platform build definitions at the flexibility of a Python\n script and provides access to multiple levels of build automation\n abstraction.\"\n- `Meson `__: \"Meson is an open source build\n system meant to be both extremely fast, and, even more importantly,\n as user friendly as possible.\"\n- `pyrate `__: \"pyrate is\n a small python based build file generator targeting ninja(s).\"\n- `Waf `__: \"The meta build system.\"\n\n\n",
"description_content_type": null,
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/tliron/ronin",
"keywords": "",
"license": "Apache License Version 2.0",
"maintainer": "",
"maintainer_email": "",
"name": "ronin",
"package_url": "https://pypi.org/project/ronin/",
"platform": "",
"project_url": "https://pypi.org/project/ronin/",
"project_urls": {
"Homepage": "https://github.com/tliron/ronin"
},
"release_url": "https://pypi.org/project/ronin/1.1.1/",
"requires_dist": [
"blessings (<2.0,>=1.6)",
"colorama (<2.0.0,>=0.3.9)",
"glob2 (<=2.0,>=0.5)"
],
"requires_python": "",
"summary": "R\u014dnin",
"version": "1.1.1"
},
"last_serial": 3463094,
"releases": {
"1.0.0": [
{
"comment_text": "",
"digests": {
"md5": "100352f5cf307acaa278fc33ee08b492",
"sha256": "078988f172c1d83b8a3146ad6a13deb4e38f63e4878dc8916f5dc7e2f3709976"
},
"downloads": -1,
"filename": "ronin-1.0.0.linux-x86_64.tar.gz",
"has_sig": false,
"md5_digest": "100352f5cf307acaa278fc33ee08b492",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 81293,
"upload_time": "2017-01-15T17:18:56",
"url": "https://files.pythonhosted.org/packages/4b/c9/f244c9d18067aa5d238557761deb16330d3575d731d3f20b463e2e1a80cf/ronin-1.0.0.linux-x86_64.tar.gz"
}
],
"1.0.3": [
{
"comment_text": "",
"digests": {
"md5": "b85d5ebf32c45c3026cfb46bec45bad6",
"sha256": "f6494a30d59d29e622be0e35461902b55d9da247de58208c3e8872120f9630a5"
},
"downloads": -1,
"filename": "ronin-1.0.3-py2-none-any.whl",
"has_sig": true,
"md5_digest": "b85d5ebf32c45c3026cfb46bec45bad6",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 60222,
"upload_time": "2017-07-01T18:48:33",
"url": "https://files.pythonhosted.org/packages/cc/a8/a73fb9e6b26142d1426f23e99a063b306ccccc665292b07c1dd08a9da20f/ronin-1.0.3-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1020e1434b95b86ca998e626d4cd9f4c",
"sha256": "98b7d8cfde89877c78d96d4c77e251c0117a1e1b6865e1a4faef393c48433e53"
},
"downloads": -1,
"filename": "ronin-1.0.3.tar.gz",
"has_sig": true,
"md5_digest": "1020e1434b95b86ca998e626d4cd9f4c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17093545,
"upload_time": "2017-07-01T18:48:47",
"url": "https://files.pythonhosted.org/packages/ba/f1/839c473a9cb68dcd68fc590590cf57fc1d28d22114aa39dec6a609ae7d20/ronin-1.0.3.tar.gz"
}
],
"1.1.1": [
{
"comment_text": "",
"digests": {
"md5": "0c8a8c71704dd863b5b7d3ee4c398900",
"sha256": "9e584f1602c020c6415c182ff0c0933f0f476146add87446ddf04dbea1d0312d"
},
"downloads": -1,
"filename": "ronin-1.1.1-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "0c8a8c71704dd863b5b7d3ee4c398900",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 61169,
"upload_time": "2018-01-04T23:14:35",
"url": "https://files.pythonhosted.org/packages/31/c2/2281e67e9b50dc6c91cdd720a0fa4cbc138521b54eabf23799ab3fb28ae0/ronin-1.1.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "f0628313127dc02b45f44afa3fd910ee",
"sha256": "e6067c4b4351e09cca048762ff162d566160f4e6db092913eeccfe38a5a72bf5"
},
"downloads": -1,
"filename": "ronin-1.1.1.tar.gz",
"has_sig": true,
"md5_digest": "f0628313127dc02b45f44afa3fd910ee",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17008283,
"upload_time": "2018-01-04T23:14:39",
"url": "https://files.pythonhosted.org/packages/61/b0/f98b7bb5922da947ab3a81e86a45f4ae7493ff839a39f2fd92d65be1ef89/ronin-1.1.1.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "0c8a8c71704dd863b5b7d3ee4c398900",
"sha256": "9e584f1602c020c6415c182ff0c0933f0f476146add87446ddf04dbea1d0312d"
},
"downloads": -1,
"filename": "ronin-1.1.1-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "0c8a8c71704dd863b5b7d3ee4c398900",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 61169,
"upload_time": "2018-01-04T23:14:35",
"url": "https://files.pythonhosted.org/packages/31/c2/2281e67e9b50dc6c91cdd720a0fa4cbc138521b54eabf23799ab3fb28ae0/ronin-1.1.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "f0628313127dc02b45f44afa3fd910ee",
"sha256": "e6067c4b4351e09cca048762ff162d566160f4e6db092913eeccfe38a5a72bf5"
},
"downloads": -1,
"filename": "ronin-1.1.1.tar.gz",
"has_sig": true,
"md5_digest": "f0628313127dc02b45f44afa3fd910ee",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17008283,
"upload_time": "2018-01-04T23:14:39",
"url": "https://files.pythonhosted.org/packages/61/b0/f98b7bb5922da947ab3a81e86a45f4ae7493ff839a39f2fd92d65be1ef89/ronin-1.1.1.tar.gz"
}
]
}