{"id":15008227,"url":"https://github.com/python/devinabox","last_synced_at":"2025-10-01T16:31:37.792Z","repository":{"id":65980312,"uuid":"58329029","full_name":"python/devinabox","owner":"python","description":"Documentation and tools to help host a sprint on Python core development","archived":false,"fork":false,"pushed_at":"2016-05-09T19:23:54.000Z","size":54,"stargazers_count":16,"open_issues_count":6,"forks_count":8,"subscribers_count":49,"default_branch":"master","last_synced_at":"2024-10-29T16:04:25.217Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/python.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":"https://www.python.org/psf/donations/python-dev/","github":["python"]}},"created_at":"2016-05-08T20:03:52.000Z","updated_at":"2024-09-23T22:11:48.000Z","dependencies_parsed_at":"2023-02-19T18:15:55.227Z","dependency_job_id":null,"html_url":"https://github.com/python/devinabox","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Fdevinabox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Fdevinabox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Fdevinabox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Fdevinabox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/python","download_url":"https://codeload.github.com/python/devinabox/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234715663,"owners_count":18875901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-24T19:15:38.756Z","updated_at":"2025-10-01T16:31:32.505Z","avatar_url":"https://github.com/python.png","language":"Python","funding_links":["https://www.python.org/psf/donations/python-dev/","https://github.com/sponsors/python"],"categories":[],"sub_categories":[],"readme":"devinabox -- Bootstrapping a core Python sprint\n===============================================\n\nThe **devinabox** project helps an experienced CPython developer produce a\ndirectory which contains everything necessary to enable sprint participants\nto get set up quickly (regardless of OS).\n\nThis README outlines two things:\n\n- what to download to create a devinabox\n- what is provided to help new contributors\n\nThis document provides instructions for sprint leaders; it does not provide\ninstructions for new contributors. If you are\na **new contributor**, ask your sprint leader(s) about how to get started.\n\n\nThings to download to create a devinabox\n========================================\n\nThe following sections outline various files to download and repositories to\nclone into your devinabox including:\n\n- version control tools\n- compiler\n- CPython\n- PEPs\n- Devguide\n- coverage.py\n\nBe careful **NOT** to change the destination directories that\nrepositories are cloned into. These default directory names are assumed by\nthe other files in devinabox.\n\nWhen you are done you should have in the destination directory everything\nsomeone needs to contribute. Simply copy the whole directory to some sort of\nmedia (USB 3 drive and a CD tend to work well) and then pass it around for\npeople to copy somewhere on to their system. They can run ``hg pull -u`` to\nget updates, sparing the probably taxed internet connection at the sprint from\ndoing complete repository cloning.\n\nIf recreating from an old checkout, ``hg purge --all`` in the individual\nclones is a handy way to ensure old build artifacts have been removed.\nYou will need to enable the purge extension in ``~/.hgrc``.\n\nAlso make sure to not simply copy your own repositories to the box! Otherwise\nthe clones will most likely have paths which use SSH and the hg account on\nhg.python.org which only core developers can use. It's easier to make the\nclones from scratch.\n\n\nMercurial\n---------\n\nYou will want to download the latest release of Mercurial\n(http://pypi.python.org/pypi/Mercurial) and TortoiseHg for Windows users\n(http://tortoisehg.bitbucket.org/download/). OS X users can be told that\nMercurial is available through Homebrew if they prefer\n(if they use MacPorts or any other package manager ask them to use the\ndownload of Mercurial you have provided to save time).\n\nProviding Mercurial guarantees there is no issue with new contributors trying to\nupdate repositories or generating patches.\n\n\nA Compiler\n-----------\n\nIf you receive questions about compilers, here are some suggestions.\n\nOS X users should be told to download XCode from the Apple App Store **ahead of\ntime**. It's on the order of a couple GiB in size, so you don't want to have\npeople downloading it at the sprint. After installation they should also make\nsure to install the command-line tools (e.g. in Mavericks,\n``xcode-select --install``).\n\nIf new contributors think they may be doing C development, suggest the use of\nLLVM + clang as this provides better error reporting than gcc.\n\nFor Windows users, ask them to download and install `Visual Studio Community\nedition`_ **ahead of time**.\n\n.. _Visual Studio Community edition: https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx\n\nCPython\n-------\n\nClone the `CPython repository`_ and build it (you will be cleaning up your build\nlater, though as a final step).\n\nAlso make sure to build the documentation. This alleviates the need for\nsprint participants to build it from scratch. To build the documentation, create a venv\nwith sphinx installed and point the Doc Makefile at the Python linked to in the\nvenv.\n\nAll of this can be done by doing::\n\n  # Assuming at the root of the devinabox directory\n  python build_cpython.py\n  ./cpython/python -m venv venv\n  ./venv/bin/pip install sphinx\n  cd cpython/Doc\n  make html PYTHON=../../venv/bin/python\n\n.. _CPython repository: http://hg.python.org/cpython\n\n\nPEPs\n----\n\nClone the `PEP repository`_ and build it (use the venv you created to build the\nCPython docs if necessary). This allows sprinters a local copy to reference\nfor a PEP and it allows using the easier-to-read HTML version.\n\nNo specific guidelines for building the PEPs are provided since there is only\na slim chance sprint participants will be editing a PEP.\n\n.. _PEP repository: http://hg.python.org/peps\n\n\nDevguide\n--------\n\nClone the `devguide repository`_ and build it (again, use the venv created to\nbuild the CPython docs if necessary). This gives sprinters a local copy to\nuse rather than having to use the (often slow) internet connection at the\nsprint.\n\n.. _devguide repository: http://hg.python.org/devguide\n\n\nCoverage.py\n-----------\n\n#. Download coverage_ (need a special file that is not part of the normal\n   distribution of coverage, so can't just use pip)\n#. Build CPython: ``./build_cpython.py``\n#. Create an venv: ``./cpython/python -m venv venv``\n#. Extract coverage: ``tar -x -f coverage-*.tar.gz``\n#. Install coverage in the venv: ``./venv/bin/python coverage-*/setup.py install``\n#. Set PYTHONPATH to ``fullcoverage`` (need to change your directory to the venv):\n   ``export PYTHONPATH=../coverage-N.N/coverage/fullcoverage``\n#. ``unset CPPFLAGS`` in order to avoid using system Python header files\n#. Run coverage from the venv: ``./bin/python -m coverage run --pylib -m test``\n#. Unset PYTHONPATH: ``unset PYTHONPATH``\n#. Generate coverage report: ``./bin/python -m coverage html --directory=../coverage_report -i --include=\"../cpython/Lib/*\" --title=\"CPython test coverage report\"``\n\nDo be aware that this step takes a few **hours**. If you find report generation\nis the bottleneck you can try using PyPy3 or your installed Python 3 interpreter\nto generate the report.\n\n.. _setuptools: https://pypi.python.org/pypi/setuptools\n.. _coverage: https://pypi.python.org/pypi/coverage\n\n\nHelpful files for sprint participants\n=====================================\n\nHelpful files are included in order to make things a little bit easier for\nyou, the sprint leader, as well as sprint participants and new contributors.\n\n\n``index.html``\n--------------\n\nAn HTML file with links to:\n\n- documentation which you built previously\n- the helper scripts\n\n\n``build_cpython.py``\n--------------------\n\nOn UNIX-based OSs this file builds the CPython repository. On all platforms it\nverifies that the expected CPython binary exists.\n\nWhile the devguide includes instructions on how to build under UNIX, this\nscript simplifies the process for sprint participants by having a single\ncommand to configure and build CPython. It also uses reasonable defaults\n(e.g. all cores on the CPU).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpython%2Fdevinabox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpython%2Fdevinabox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpython%2Fdevinabox/lists"}