{ "info": { "author": "Kenny Ballou", "author_email": "kennethmgballou@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Operating System :: Microsoft :: Windows :: Windows 7", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Software Development", "Topic :: Software Development :: Build Tools", "Topic :: Utilities" ], "description": ".. # vim: colorcolumn=70:textwidth=69:syntax=rst:\n\n===\nXnt\n===\n\nA wrapper build tool\n\nRelease Notes\n=============\n\n0.6.3:2013-10-21\n----------------\n\n* Add target run tracking\n\n * See issue#27\n\n* Update dependencies\n\n * See issue#26\n\n0.6.2:2013-06-26\n----------------\n\n* Add `nvcc` wrapper to `xnt.build.make`\n\n* `xnt.build.make.*` `target` is now required\n\n* Update Documentation\n\n * Fix autodoc issues\n\n * Add/ Update Better dependencies section\n\n0.6.1:2013-03-23\n----------------\n\n* Add Parameter Passing to `xnt.build.make`\n\n* Suppress Noisy LaTeX Output\n\n* Update Documentation\n\n0.6.0:2013-03-10\n----------------\n\n* pylint ALL THE THINGS\n\n * `properties` is now `PROPERTIES` for build files\n\n* Fix `xntcall` function\n\n* Rewrite Parser/Parsing (again)\n\n * Like last time, this changes the options again (see below or\n documentation)\n\n* Add option for build file specification\n\n* Add LaTeX Build Module\n\n0.5.1:2013-03-02\n----------------\n\n* Promote to Beta Status\n\n* Internal Refactoring\n\n * Versioning\n\n* Minor Documentation Changes\n\n0.5.0:2013-02-21\n----------------\n\n* Rewrite Command Parsing\n\n * This change does incur some interface change. Namely,\n ``--version`` is now ``version``, ``--usage`` is now ``help``\n * All other commands and switches are the same\n * See `Package Documentation`_ for more information\n\n* Rework Return Values\n\n * Silently succeed, loudly fail (quickly)\n\n0.4.1:2013-01-25\n----------------\n\n* Add Multi Target Execution\n\n* Add Optional Flags to (Sub)Build modules (make)\n\n* Add Exit Code Return\n\n0.4.0:2013-01-21\n----------------\n\n* Moved to GitHub!\n\n* Add Parameter Passing to Xnt\n\n* Combined Build Modules ((N)Ant and make all live in\n ``xnt.build.make``)\n\n* Add Compiler Wrappers (gcc/g++ and javac)\n\nTesting\n-------\n\nI don't test everything as well as maybe I would like and, of course,\nsome better integration tests would help. But one area that is\nseriously lacking testing are the Windows builds. I don't have the\nbest access to a Windows box and so I may not notice a potentially\nhuge bug for some time.\n\nMotivation\n==========\n\nWhen writing something such as a build tool, there is always the\nquestion: \"why?\". Why write yet another build tool?\n\nWell, there are several reasons that are the backing motivation:\n\nFirst, developing a variety of software, using one and only one build\ntool for every project is nearly (if not entirely) impossible. There\nis a desire to have a consistent build step and process when testing\nand deploying. Given the environment in which the code is written is\nheterogeneous, having one uniform build tool that wraps itself around\nthe other ones (and has the ability to expand to new ones) is ideal.\n\nSecond, short of dropping into the language the build tool was\nwritten in, expanding some build steps is very difficult (or at least\ncan be). Further there can be complicated build targets that require\nsome interesting and potentially involved (smelly) procedures to be\naccomplished, that may or may not be easy to describe in the build\nfile or in the native language. Therefore, having a wrapping build\nframework/ tool that is written in an easy to read and write\nlanguage, such as Python, these complicated steps can depend less on\nsome funky new build library (further adding to the dependency tree)\nand can become just implementation details (assuming, of course, you\nbuy into Xnt first).\n\nLast, and most certainly the least, I wanted to explore the idea. I\nwanted to write something that made me think about solving some of\nthe problems challenged by such a tool.\n\nWhat Xnt Is NOT\n===============\n\nCalling Xnt simply a build tool is (grossly?) misleading. Xnt is not\nreally a build tool in the traditional sense. Like stated above, it\nis more a wrapper around existing build tools. I didn't want to\nreplace what some of these tools already do really well (e.g. being\nable to describe how to compile an entire large Java program in\nseveral lines of code using Ant).\n\nWhat Xnt IS\n===========\n\nXnt is a wrapping build tool, intended to be used with a multitude of\nsub-build tools, even in the same project. Regardless of the language\nthe project is written in, Xnt should be able to suite your needs. If\nyour language's build tool is unable to do something concisely or\ncleanly, Python should help. [There could be more here... I can't\nthink of it though.]\n\nInstalling and Setting Up Xnt\n=============================\n\nUsing Xnt is fairly simple. All you will need to do is install it,\ncreate a ``build.py`` file for your project, and invoke it just like\nany other build tool you have used before (e.g. ``$ xnt {target}``).\n\nDependencies\n------------\n\nThere are a few required and optional dependencies to install and run\nXnt. Namely, reference the following list:\n\n* ``setuptools``\n* ``Ant`` (Optional)\n* ``CVS`` (Optional)\n* ``Git`` (Optional)\n* ``LaTeX`` (Optional)\n* ``Make`` (Optional)\n* ``Mercurial`` (Optional)\n* ``NAnt`` (Optional)\n\nFor developers, there are a few more dependencies.\n\n* ``sphinx``\n* ``pylint``\n\nSource Install\n--------------\n\nTo install from source, you can download the source tarball or zip\nfile (from either `Downloads`_ or `Xnt`_), unpack it into a\ntemporary directory and then, from a shell or command prompt, run::\n\n $ python[2] setup.py install [--user]\n\nPyPi/ Pip\n---------\n\nTo install from PyPi_, you will need `pip`_. Once you have ``pip``,\nyou may only run::\n\n $ pip[2] install Xnt [--user]\n\nLinux/ Unix\n-----------\n\nIf you install using the ``--user`` option in either source or PyPi\ninstalls you may need to add ``~/.local/bin/`` to your ``PATH``\nenvironment variable.\n\nOtherwise, you shall need do nothing more.\n\nWindows\n-------\n\nIf on Windows, after installing you will need edit your ``PATH``\nenvironment variable to include the ``\\Scripts``\nfolder. After which, you will be all set to use Xnt.\n\nExample ``build.py``\n====================\n\nHere is a simple ``build.py``::\n\n #!/usr/bin/env python\n\n import xnt\n from xnt.build import make\n\n @xnt.target\n def init():\n xnt.mkdir(\"bin\")\n\n @xnt.target\n def build():\n init()\n make.ant(\"build\")\n\n @xnt.target\n def clean():\n xnt.rm(\"bin\")\n\n @xnt.target\n def rebuild():\n clean()\n build()\n\n @xnt.target\n def package():\n rebuild()\n xnt.create_zip(\"bin\", \"packaged.zip\")\n\n @xnt.target\n def default():\n package()\n\nAs you can see, it really just is a Python script. There really isn't\nanything really special happening. We just import some of the Xnt\nmodules, and define some targets. When you call ``xnt``, it will be\nloading this script and call the target specified by ``{target}`` or,\nif you don't specify one, it will call the target named ``default``.\n\nUsage\n=====\n\nCommand Usage:\n\n $ xnt [options] [target]*\n\nWhere ``[options]`` are of the following:\n\n* ``-v`` or ``--verbose``: verbose, turn on logging\n\n* ``-b BUILDFILE`` or ``--build-file BUILDFILE``: Specify build file\n for Xnt to load\n\nAnd where ``[target]*`` are any target(s) method in your ``build.py``\nfile or, if no target is given, Xnt will attempt to call ``default``.\n\nOther Commands\n--------------\n\n* ``-l`` or ``--list-targets``: Xnt will print all targets marked by\n the ``@target`` decorator and possibly their docstrings if they are\n defined\n\n* ``--version``: Print the current version of Xnt and quit\n\n* ``-h`` or ``--help``: Print summary information about Xnt and\n command usage\n\nFor more information about Xnt and the built in functions, see the\n`Package Documentation`_.\n\nIssues\n======\n\nIf you find any issues or would like to request a feature, please\nvisit `Issues`_.\n\n.. _PyPi: http://pypi.python.org/pypi\n.. _Package Documentation: http://pythonhosted.org/Xnt\n.. _pip: http://www.pip-installer.org/en/latest/installing.html\n.. _Downloads: https://github.com/devnulltao/Xnt/archive/master.zip\n.. _Xnt: http://pypi.python.org/pypi/Xnt\n.. _Issues: https://github.com/devnulltao/Xnt/issues", "description_content_type": null, "docs_url": "https://pythonhosted.org/Xnt/", "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/devnulltao/Xnt", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "Xnt", "package_url": "https://pypi.org/project/Xnt/", "platform": "Linux,Windows", "project_url": "https://pypi.org/project/Xnt/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/devnulltao/Xnt" }, "release_url": "https://pypi.org/project/Xnt/0.6.3/", "requires_dist": null, "requires_python": null, "summary": "High-Level build script for doing more complex build tasks", "version": "0.6.3" }, "last_serial": 900216, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "bac6d84d2192c3f56f2f3e1af889e7c3", "sha256": "1705687d470a2aa7bb0cecb95989bd8885b3e3a43fcf0eea9441b0d4f7fd7902" }, "downloads": -1, "filename": "Xnt-0.1.0.tar.gz", "has_sig": false, "md5_digest": "bac6d84d2192c3f56f2f3e1af889e7c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19879, "upload_time": "2012-10-22T20:25:58", "url": "https://files.pythonhosted.org/packages/a6/d3/f2d65b9377d6fcac77da03b3b63680590a62e7d229fa30261b784cacaf3e/Xnt-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "06dec29c87b131e136022d844757b015", "sha256": "01ee199f1984dbaec9ff4cb67526e0e90daaed8b324d0aa35458d0b1f61f57de" }, "downloads": -1, "filename": "Xnt-0.2.0.tar.gz", "has_sig": false, "md5_digest": "06dec29c87b131e136022d844757b015", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20019, "upload_time": "2012-10-22T20:55:04", "url": "https://files.pythonhosted.org/packages/b6/d2/f252592f915ea52d9c8f008e9160e1ca2b2a9bb047fecffeb14b2de281d2/Xnt-0.2.0.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "0957fc5c4fef0234fcda33db7a6b00cf", "sha256": "e0d9386ad5989323d6418936b424424be6d7551e09f6c98614b26ed985632ca4" }, "downloads": -1, "filename": "Xnt-0.2.2.tar.gz", "has_sig": false, "md5_digest": "0957fc5c4fef0234fcda33db7a6b00cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21179, "upload_time": "2012-10-23T23:02:04", "url": "https://files.pythonhosted.org/packages/13/2a/cace79f12a343fd152dfcd23a087ced095be01af9a0496e98f5153ae06ad/Xnt-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "a5c1b0872d31733b33f7ad9f69a7ed6c", "sha256": "7aa1d21bedf0a3f8ce43a6212fd7c969c7c90cc0c645000946a14537e35bc9ba" }, "downloads": -1, "filename": "Xnt-0.2.3.tar.gz", "has_sig": false, "md5_digest": "a5c1b0872d31733b33f7ad9f69a7ed6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22203, "upload_time": "2012-10-25T00:07:35", "url": "https://files.pythonhosted.org/packages/14/29/7b1eb8062701347714e9799db1205d3071bcea245f50e9adeb146c8eff65/Xnt-0.2.3.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "2bb8790b1d298342cedaa3c8942c9b2e", "sha256": "45096bd8a4176ed3aaf2923f52f5f43eeb216e42eeddc30889e96940b9df8f22" }, "downloads": -1, "filename": "Xnt-0.3.0.tar.gz", "has_sig": false, "md5_digest": "2bb8790b1d298342cedaa3c8942c9b2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24940, "upload_time": "2012-10-30T01:37:29", "url": "https://files.pythonhosted.org/packages/e4/ee/f745397592e4edf035cee341a7486b49169edd8a6633fe470e23105b07b0/Xnt-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "d4cf36bbdf3c6a17dc9827b4799146a6", "sha256": "28aa002ee940fee2f3cb750a3033e27220006a80ce809f719e31c57a33fd4955" }, "downloads": -1, "filename": "Xnt-0.3.1.tar.gz", "has_sig": false, "md5_digest": "d4cf36bbdf3c6a17dc9827b4799146a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22914, "upload_time": "2012-10-30T05:28:39", "url": "https://files.pythonhosted.org/packages/0b/ae/121003dd7f45d2541f92a4abdafaf52f2f4e97c273d46424baa17b24e8ee/Xnt-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "dd4ab987ddc3d1a15f3090cd90c9c6cc", "sha256": "8cfe31926aa732d196a07cf6312b48ddb3443c775ca6be5a5fb91f17d22bfca2" }, "downloads": -1, "filename": "Xnt-0.3.2.tar.gz", "has_sig": false, "md5_digest": "dd4ab987ddc3d1a15f3090cd90c9c6cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23074, "upload_time": "2012-11-08T05:53:35", "url": "https://files.pythonhosted.org/packages/5f/07/c8e79bc174675c96eaead558f35bdaacd551b3816a014bea1149a9e2d16b/Xnt-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "a985f30e8f535b791d7a585a3526ed1c", "sha256": "ee8bda3ce5e6fb4f2eb2430894f231bc4f0c0f2b866b5292133290242381d06a" }, "downloads": -1, "filename": "Xnt-0.3.3.tar.gz", "has_sig": false, "md5_digest": "a985f30e8f535b791d7a585a3526ed1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23868, "upload_time": "2013-01-10T18:50:07", "url": "https://files.pythonhosted.org/packages/e9/b8/cf27afedf4802944175ee458cc59cb755b692ec715b292d56014c1628dd0/Xnt-0.3.3.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "0012a06b40bd5aa9ea6346071f596a46", "sha256": "92e61edcab6bdf0cecea2a3683bec5c0bab6d2ad7857bff920112f9d54acd6a2" }, "downloads": -1, "filename": "Xnt-0.4.0.tar.gz", "has_sig": false, "md5_digest": "0012a06b40bd5aa9ea6346071f596a46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25588, "upload_time": "2013-01-22T02:21:40", "url": "https://files.pythonhosted.org/packages/dd/14/f74225cb387482655fd70735c142c4f4e348bec6b5b4c3d6b636027e329c/Xnt-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "3b9ea5efb2943100913b4adbd3850bbd", "sha256": "bd1c593705469e2ac089e20c173595df36a020ea5b0f9f1503fc3c08eae5ab41" }, "downloads": -1, "filename": "Xnt-0.4.1.tar.gz", "has_sig": false, "md5_digest": "3b9ea5efb2943100913b4adbd3850bbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25841, "upload_time": "2013-01-26T02:06:16", "url": "https://files.pythonhosted.org/packages/14/81/efe4235fa791311a909c9df2d64f0f6dd65d1a55b856a10ba9ffd0c7b3e6/Xnt-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "8acabfbbe0d40673569197aca805070a", "sha256": "200dc066445d1aeb5538cb418b1b829ef0820f167cb02327ad0699c24cdd86dd" }, "downloads": -1, "filename": "Xnt-0.5.0.tar.gz", "has_sig": false, "md5_digest": "8acabfbbe0d40673569197aca805070a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26939, "upload_time": "2013-02-22T02:53:37", "url": "https://files.pythonhosted.org/packages/d5/84/eaf49cd84581a1c682aaf57281553eef6603347d2044e6c094f2b742f666/Xnt-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "c3aa6a43e96d8d03a85d39cfce311cfc", "sha256": "4235667d4debff06cfdd0529c0caa2eb35e0063fbb0f74029395d554cf8fa441" }, "downloads": -1, "filename": "Xnt-0.5.1.tar.gz", "has_sig": false, "md5_digest": "c3aa6a43e96d8d03a85d39cfce311cfc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27238, "upload_time": "2013-03-02T04:31:57", "url": "https://files.pythonhosted.org/packages/e0/25/710a96d10c791c628aaae0cf4caf6a0a7151ad8822e887249009d4e5aeb3/Xnt-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "f5d49b477e0d6a878d5ab41cf6a2229e", "sha256": "6abd1d8f7fedaad6a651d6d55f906765ac2685ddda18009ee953a3aa423c4476" }, "downloads": -1, "filename": "Xnt-0.6.0.tar.gz", "has_sig": false, "md5_digest": "f5d49b477e0d6a878d5ab41cf6a2229e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29412, "upload_time": "2013-03-11T04:57:05", "url": "https://files.pythonhosted.org/packages/cb/46/ae45d6d16dc1e309d4bfbe94986ac1dbc57e05d4d1bf4afe51b7109edffc/Xnt-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "03f63dbba164e9233a17531497a76a50", "sha256": "526773ca704fb75913e68a28b9b6181d9053c12bac8190e7d8feeeb74205157d" }, "downloads": -1, "filename": "Xnt-0.6.1.tar.gz", "has_sig": false, "md5_digest": "03f63dbba164e9233a17531497a76a50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29786, "upload_time": "2013-03-23T06:23:21", "url": "https://files.pythonhosted.org/packages/c9/e9/f220c1eed4f8f253e25e98fdcf2ef2f3fd0c3ef79a1b3026b9d279128eb1/Xnt-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "d0cbfb25311db395b034cb10e98af6f7", "sha256": "df36d361e01183006a43cd16c10dad1cbb9c864e1be96dd0c25e81f7f7cacf60" }, "downloads": -1, "filename": "Xnt-0.6.2.tar.gz", "has_sig": false, "md5_digest": "d0cbfb25311db395b034cb10e98af6f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33297, "upload_time": "2013-06-27T07:42:23", "url": "https://files.pythonhosted.org/packages/2d/1e/37d3768475ee218ddff05b78d091286d21369e769110f1c28b453a9374ba/Xnt-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "0ef86f1afdc68c12b122afb4fd9eee9a", "sha256": "f9e037f0ee2caed8b6b3d40dfca4dc616d570bf24295516605ad0a3e32902c1f" }, "downloads": -1, "filename": "Xnt-0.6.3.tar.gz", "has_sig": false, "md5_digest": "0ef86f1afdc68c12b122afb4fd9eee9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33794, "upload_time": "2013-10-21T23:38:25", "url": "https://files.pythonhosted.org/packages/02/c3/182dc324f9ac2c638f55018d4f879fc2f35f549ac48bd7373eb121705306/Xnt-0.6.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0ef86f1afdc68c12b122afb4fd9eee9a", "sha256": "f9e037f0ee2caed8b6b3d40dfca4dc616d570bf24295516605ad0a3e32902c1f" }, "downloads": -1, "filename": "Xnt-0.6.3.tar.gz", "has_sig": false, "md5_digest": "0ef86f1afdc68c12b122afb4fd9eee9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33794, "upload_time": "2013-10-21T23:38:25", "url": "https://files.pythonhosted.org/packages/02/c3/182dc324f9ac2c638f55018d4f879fc2f35f549ac48bd7373eb121705306/Xnt-0.6.3.tar.gz" } ] }