{ "info": { "author": "pcorbel", "author_email": "pierrot.corbel@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Build Tools", "Topic :: Utilities" ], "description": "# kross\n\nA simple CLI to \"multi-arch all the things\"\n\n[![](https://badge.fury.io/py/kross.svg)](https://badge.fury.io/py/kross)\n[![](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![](https://img.shields.io/pypi/pyversions/kross.svg)](https://pypi.org/project/kross/)\n[![](https://img.shields.io/requires/github/pcorbel/kross.svg)](https://requires.io/github/pcorbel/kross/requirements/)\n[![](https://img.shields.io/badge/status-stable-green.svg)]()\n[![](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\n\n# What is kross ?\n\nkross is a tool to automate the build of Docker images for multiple architectures without any changes required on your code\n\n# Quick start\n\n* Install via pip\n\n`pip install kross`\n\n* Initialize it (once)\n\n`kross init`\n\n* Update your docker build commands\n\n> Before\n\n```\ndocker build -t me/myapp:vX.X.X ...args... path/to/docker/context\ndocker push me/myapp:vX.X.X\n```\n\n> After\n\n```\nkross build -t me/myapp:vX.X.X ...args... path/to/docker/context\nkross push me/myapp:vX.X.X\n```\n\n# Why kross ?\n\nKross is born from a Raspberry Pi passionnate developer.\nBecause Raspberry Pi are arm-based and 90% of images on Dockerhub are amd64-based, developers have to duplicate/tweak all Dockerfiles so the image will work on it and avoid the too much popular `cannot execute binary file: Exec format error`.\n\n![](docs/1@2x.png)\n\nTo know more, read the [full article](https://medium.com/@pierrot.corbel/kross-arch-all-the-things-2dcdee09da71).\n\n# How kross is working ?\n\nkross is based upon the [qemu library](https://www.qemu.org/) to build multiple architectures images on a amd64-based host machine.\nAfter all images are built and pushed to a docker registry, a [manifest list](https://docs.docker.com/engine/reference/commandline/manifest/#create-and-push-a-manifest-list) is pushed too so that users can pull images based on their architectures in a seamless way.\n\n![](docs/2@2x.png)\n\n# Supported architectures\n\nkross will try to build images for the following architectures:\n\n* amd64\n* arm32v6\n* arm32v7\n* arm64v8\n* ppc64le\n* s390x\n* i386\n\n# Run the example\n\n* Install kross\n`pip install kross`\n\n* Check your machine configuration\n`kross init`\n\n* Run the kross build\n`kross build -t kross-world:v0.1.0 https://raw.githubusercontent.com/pcorbel/kross/master/docs/example/Dockerfile`\n\n* Run the kross push\n`kross push kross-world:v0.1.0`\n\n* Check images availability on your [Dockerhub account](https://hub.docker.com/)\n\n* Run your image anywhere\n\n`docker run --rm kross-world:v0.1.0`\n\nExample image available [here](https://cloud.docker.com/u/pcorbel/repository/docker/pcorbel/kross-world)\n\n# Tips and tricks\n\nTo know exactly what is happening while kross is working\n`export KROSS_VERBOSE=true`\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/pcorbel/kross/archive/v1.0.4.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pcorbel/kross", "keywords": "", "license": "apache-2.0", "maintainer": "", "maintainer_email": "", "name": "kross", "package_url": "https://pypi.org/project/kross/", "platform": "", "project_url": "https://pypi.org/project/kross/", "project_urls": { "Download": "https://github.com/pcorbel/kross/archive/v1.0.4.tar.gz", "Homepage": "https://github.com/pcorbel/kross" }, "release_url": "https://pypi.org/project/kross/1.0.4/", "requires_dist": [ "click (==7.0)", "attrs (==19.1.0)", "PyYAML (==5.1.1)", "subprocess32 (==3.5.4)" ], "requires_python": "", "summary": "A simple CLI to \"multi-arch all the things\"", "version": "1.0.4" }, "last_serial": 5560666, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "8cbc2de5d9ce639687f3c8330ffb85b0", "sha256": "5c1fe06773bd679f287c6ca951bf672a387add30180f2dcbaf0d909f2f30094c" }, "downloads": -1, "filename": "kross-1.0.1.tar.gz", "has_sig": false, "md5_digest": "8cbc2de5d9ce639687f3c8330ffb85b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6528, "upload_time": "2019-07-12T06:17:18", "url": "https://files.pythonhosted.org/packages/e3/67/1cf6ead37353bbe3ea22282bc5de9094f234ea8a3fa4894f448f250b9e9d/kross-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "3b2f5855102b383aea925d19d31059ed", "sha256": "c1c71951770a35fb23395c64a545d3730e8e1bb7de6bb22b18577b884e6a9347" }, "downloads": -1, "filename": "kross-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "3b2f5855102b383aea925d19d31059ed", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9279306, "upload_time": "2019-07-12T18:21:24", "url": "https://files.pythonhosted.org/packages/75/c7/afdc5ec53b0a832401a10047ebc1da6bb26f7f5b004c3fc86802ed3579bc/kross-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d4ebf1cd284ab43b3753aadf4bd0a40", "sha256": "a66df095b588b61c298d4b531384f9d0ac02dded22886c38def4f9ac2782c5eb" }, "downloads": -1, "filename": "kross-1.0.2.tar.gz", "has_sig": false, "md5_digest": "1d4ebf1cd284ab43b3753aadf4bd0a40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9273218, "upload_time": "2019-07-12T18:21:52", "url": "https://files.pythonhosted.org/packages/93/6c/a9e41adb8556bfe3078604291b20a1e936ed8a8eabbf35961709076a767e/kross-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "16258070407a0cfe6e82eaf6303a629f", "sha256": "390d2e552b9eec5983cd8225f7793f286b966d98f8925299ac07757d8cef514b" }, "downloads": -1, "filename": "kross-1.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "16258070407a0cfe6e82eaf6303a629f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9279765, "upload_time": "2019-07-16T18:01:48", "url": "https://files.pythonhosted.org/packages/fb/fd/d69b97f8db77fc7dfaacc624c0e864e3424ac9d9fcd538bf3c067ffe32a0/kross-1.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8b47967c6c7fb5a79969fba9f904c8b", "sha256": "5abff748b29ae306f03ef3c8a4404d21027b4bd6e051cfb9f2d4949216c350a5" }, "downloads": -1, "filename": "kross-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "a8b47967c6c7fb5a79969fba9f904c8b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9279765, "upload_time": "2019-07-16T18:02:06", "url": "https://files.pythonhosted.org/packages/a9/74/04c63a87d4c981e36aba4557bd7ae8febaf3bd51e957a6c7bc765ac73271/kross-1.0.3-py3-none-any.whl" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "3046cbed3e496b897db7803c23fae0a0", "sha256": "1059e3ee9049dd2aa0f765e1850f82539f58f7f2cd618dddb35c4c8cae156688" }, "downloads": -1, "filename": "kross-1.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "3046cbed3e496b897db7803c23fae0a0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9280161, "upload_time": "2019-07-20T13:54:37", "url": "https://files.pythonhosted.org/packages/8b/9b/f7b62fa35f51a3824224381b7c81591abe6316beda2d7b084b1ad1ac5c85/kross-1.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63b22e0861ec5411e192167c82e7d439", "sha256": "4780996de2b83d1cd2343e99a32cc44b3dda8a4fcc7b9999ac60a1bcea66eed7" }, "downloads": -1, "filename": "kross-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "63b22e0861ec5411e192167c82e7d439", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9280162, "upload_time": "2019-07-20T13:54:59", "url": "https://files.pythonhosted.org/packages/61/4d/6a592789a34e424206e282af314f608acc07107087d72a8bdc46b0e180db/kross-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b33e6650cf5017889942c6844fdfc2b5", "sha256": "3dab8e1f034a1aca2a9dc7041e655c10ea376d7497deba8b1a37c3fb8a37918b" }, "downloads": -1, "filename": "kross-1.0.4.tar.gz", "has_sig": false, "md5_digest": "b33e6650cf5017889942c6844fdfc2b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9275875, "upload_time": "2019-07-20T13:55:24", "url": "https://files.pythonhosted.org/packages/22/dc/06af97c6165174b07650fa22d6514eedd6c0f4c7e6c54ebcc0c7702d5f81/kross-1.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3046cbed3e496b897db7803c23fae0a0", "sha256": "1059e3ee9049dd2aa0f765e1850f82539f58f7f2cd618dddb35c4c8cae156688" }, "downloads": -1, "filename": "kross-1.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "3046cbed3e496b897db7803c23fae0a0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9280161, "upload_time": "2019-07-20T13:54:37", "url": "https://files.pythonhosted.org/packages/8b/9b/f7b62fa35f51a3824224381b7c81591abe6316beda2d7b084b1ad1ac5c85/kross-1.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63b22e0861ec5411e192167c82e7d439", "sha256": "4780996de2b83d1cd2343e99a32cc44b3dda8a4fcc7b9999ac60a1bcea66eed7" }, "downloads": -1, "filename": "kross-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "63b22e0861ec5411e192167c82e7d439", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9280162, "upload_time": "2019-07-20T13:54:59", "url": "https://files.pythonhosted.org/packages/61/4d/6a592789a34e424206e282af314f608acc07107087d72a8bdc46b0e180db/kross-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b33e6650cf5017889942c6844fdfc2b5", "sha256": "3dab8e1f034a1aca2a9dc7041e655c10ea376d7497deba8b1a37c3fb8a37918b" }, "downloads": -1, "filename": "kross-1.0.4.tar.gz", "has_sig": false, "md5_digest": "b33e6650cf5017889942c6844fdfc2b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9275875, "upload_time": "2019-07-20T13:55:24", "url": "https://files.pythonhosted.org/packages/22/dc/06af97c6165174b07650fa22d6514eedd6c0f4c7e6c54ebcc0c7702d5f81/kross-1.0.4.tar.gz" } ] }