You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{"payload":{"allShortcutsEnabled":false,"path":".devcontainer","repo":{"id":881951083,"defaultBranch":"main","name":"circuitpython","ownerLogin":"eightycc","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2024-11-01T15:03:12.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/8006599?v=4","public":true,"private":false,"isOrgOwned":false},"currentUser":null,"refInfo":{"name":"framebuffer_psram","listCacheKey":"v0:1747504675.0","canEdit":false,"refType":"branch","currentOid":"2b6be467bc37116ccb4de1fb86b6914bb90f4eea"},"tree":{"items":[{"name":"atmel-samd","path":".devcontainer/atmel-samd","contentType":"directory"},{"name":"cxd56","path":".devcontainer/cxd56","contentType":"directory"},{"name":"espressif","path":".devcontainer/espressif","contentType":"directory"},{"name":"mimxrt10xx","path":".devcontainer/mimxrt10xx","contentType":"directory"},{"name":"raspberrypi","path":".devcontainer/raspberrypi","contentType":"directory"},{"name":"silabs","path":".devcontainer/silabs","contentType":"directory"},{"name":"stm","path":".devcontainer/stm","contentType":"directory"},{"name":"Readme.md","path":".devcontainer/Readme.md","contentType":"file"},{"name":"add_kitware_archive.sh","path":".devcontainer/add_kitware_archive.sh","contentType":"file"},{"name":"codespace_options.png","path":".devcontainer/codespace_options.png","contentType":"file"},{"name":"common_tools.sh","path":".devcontainer/common_tools.sh","contentType":"file"},{"name":"cortex-m-toolchain.sh","path":".devcontainer/cortex-m-toolchain.sh","contentType":"file"},{"name":"esp-idf-toolchain.sh","path":".devcontainer/esp-idf-toolchain.sh","contentType":"file"},{"name":"fetch-port-submodules.sh","path":".devcontainer/fetch-port-submodules.sh","contentType":"file"},{"name":"install_build_env.sh","path":".devcontainer/install_build_env.sh","contentType":"file"},{"name":"make-mpy-cross.sh","path":".devcontainer/make-mpy-cross.sh","contentType":"file"},{"name":"post_create.sh","path":".devcontainer/post_create.sh","contentType":"file"}],"templateDirectorySuggestionUrl":null,"readme":{"displayName":"Readme.md","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBuild CircuitPython in a Github-Codespace\u003c/h1\u003e\u003ca id=\"user-content-build-circuitpython-in-a-github-codespace\" class=\"anchor\" aria-label=\"Permalink: Build CircuitPython in a Github-Codespace\" href=\"#build-circuitpython-in-a-github-codespace\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTo build CircuitPython within a Github codespace, you need to perform\nthe following steps.\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003echeckout the code to a codespace\u003c/li\u003e\n\u003c/ol\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eclick on the green \"\u0026lt;\u0026gt; Code\"-button\u003c/li\u003e\n\u003cli\u003eselect the Codespaces-tab\u003c/li\u003e\n\u003cli\u003echoose \"+ new with options...\" from the \"...\"-menu\u003c/li\u003e\n\u003cli\u003ein the following screen select the branch and then\u003c/li\u003e\n\u003cli\u003eselect the port instead of \"Default project configuration\"\n(unsupported: ports not using cortex-m or esp-idf)\u003cbr\u003e\n\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/eightycc/circuitpython/blob/framebuffer_psram/.devcontainer/codespace_options.png\"\u003e\u003cimg src=\"/eightycc/circuitpython/raw/framebuffer_psram/.devcontainer/codespace_options.png\" alt=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate region as necessary\u003c/li\u003e\n\u003cli\u003efinally, click on the green \"Create codespace\" button\u003c/li\u003e\n\u003c/ul\u003e\n\u003col start=\"2\" dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eYour codespace is created. Cloning the image and the repo is quite fast,\nbut preparing it for CircuitPython-development takes about 10 minutes.\nBut this is a one-time task: once created, your codespace exists\nuntil you explicitly delete it or until it times out (default: 30 days).\u003cbr\u003e\n(Technical note: due to a bug in codespace creation, the setup is\ntriggered from \u003ccode\u003e$HOME/.bashrc\u003c/code\u003e and runs in the background).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eDuring creation, you can run the command\n\u003ccode\u003etail -f /workspaces/install_build_env.log.active\u003c/code\u003e\nto see what is going on. Once finished the log file is available\nas \u003ccode\u003e/workspaces/install_build_env.log\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eTo actually build CircuitPython, open a new terminal and run e.g.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"cd ports/raspberrypi\nmake -j $(nproc) BOARD=whatever TRANSLATION=xx_XX\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003ecd ports/raspberrypi\nmake -j $(nproc) BOARD=whatever TRANSLATION=xx_XX\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThis takes about 2m40s. The new terminal is necessary since the\nsetup of the build environment also changes \u003ccode\u003e$HOME/.bashrc\u003c/code\u003e and\nsets important environment variables in that file.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003eAs a normal user, you have 120 CPU-hours and 15GB per month free. Since\nthe smallest machine has two CPUs, you effectively have 60 hours active\ntime available.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eAll scripts are in \u003ccode\u003ecircuitpython/.devcontainer\u003c/code\u003e and can also be executed\nmanually which should usually not be necessary. With small changes, they\nshould also work on a Linux-PC or laptop.\u003c/p\u003e\n\u003c/article\u003e","errorMessage":null,"headerInfo":{"toc":[{"level":1,"text":"Build CircuitPython in a Github-Codespace","anchor":"build-circuitpython-in-a-github-codespace","htmlText":"Build CircuitPython in a Github-Codespace"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Feightycc%2Fcircuitpython%2Ftree%2Fframebuffer_psram%2F.devcontainer"}},"totalCount":17,"showBranchInfobar":true},"fileTree":{"":{"items":[{"name":".codespell","path":".codespell","contentType":"directory"},{"name":".devcontainer","path":".devcontainer","contentType":"directory"},{"name":".github","path":".github","contentType":"directory"},{"name":"LICENSES","path":"LICENSES","contentType":"directory"},{"name":"data","path":"data","contentType":"directory"},{"name":"devices","path":"devices","contentType":"directory"},{"name":"docs","path":"docs","contentType":"directory"},{"name":"examples","path":"examples","contentType":"directory"},{"name":"extmod","path":"extmod","contentType":"directory"},{"name":"frozen","path":"frozen","contentType":"directory"},{"name":"lib","path":"lib","contentType":"directory"},{"name":"locale","path":"locale","contentType":"directory"},{"name":"logo","path":"logo","contentType":"directory"},{"name":"mpy-cross","path":"mpy-cross","contentType":"directory"},{"name":"ports","path":"ports","contentType":"directory"},{"name":"py","path":"py","contentType":"directory"},{"name":"shared-bindings","path":"shared-bindings","contentType":"directory"},{"name":"shared-module","path":"shared-module","contentType":"directory"},{"name":"shared","path":"shared","contentType":"directory"},{"name":"supervisor","path":"supervisor","contentType":"directory"},{"name":"tests","path":"tests","contentType":"directory"},{"name":"tools","path":"tools","contentType":"directory"},{"name":".codespellrc","path":".codespellrc","contentType":"file"},{"name":".git-blame-ignore-revs","path":".git-blame-ignore-revs","contentType":"file"},{"name":".gitattributes","path":".gitattributes","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".gitmodules","path":".gitmodules","contentType":"file"},{"name":".mailmap","path":".mailmap","contentType":"file"},{"name":".pre-commit-config.yaml","path":".pre-commit-config.yaml","contentType":"file"},{"name":".readthedocs.yml","path":".readthedocs.yml","contentType":"file"},{"name":".rosie.yml","path":".rosie.yml","contentType":"file"},{"name":"ACKNOWLEDGEMENTS","path":"ACKNOWLEDGEMENTS","contentType":"file"},{"name":"ACKNOWLEDGEMENTS.license","path":"ACKNOWLEDGEMENTS.license","contentType":"file"},{"name":"BUILDING.md","path":"BUILDING.md","contentType":"file"},{"name":"CODE_OF_CONDUCT.md","path":"CODE_OF_CONDUCT.md","contentType":"file"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"LICENSE_MicroPython","path":"LICENSE_MicroPython","contentType":"file"},{"name":"MANIFEST.in-stubs","path":"MANIFEST.in-stubs","contentType":"file"},{"name":"Makefile","path":"Makefile","contentType":"file"},{"name":"README.rst","path":"README.rst","contentType":"file"},{"name":"README.rst-stubs","path":"README.rst-stubs","contentType":"file"},{"name":"WEBUSB_README.md","path":"WEBUSB_README.md","contentType":"file"},{"name":"conf.py","path":"conf.py","contentType":"file"},{"name":"main.c","path":"main.c","contentType":"file"},{"name":"pyproject.toml","path":"pyproject.toml","contentType":"file"},{"name":"requirements-ci.txt","path":"requirements-ci.txt","contentType":"file"},{"name":"requirements-dev.txt","path":"requirements-dev.txt","contentType":"file"},{"name":"requirements-doc.txt","path":"requirements-doc.txt","contentType":"file"},{"name":"runtime.py","path":"runtime.py","contentType":"file"},{"name":"setup.py-stubs","path":"setup.py-stubs","contentType":"file"}],"totalCount":51}},"fileTreeProcessingTime":11.221101,"foldersToFetch":[],"treeExpanded":true,"symbolsExpanded":false,"csrf_tokens":{"/eightycc/circuitpython/branches":{"post":"i5m2Lx-pCd_TCuew2D9wxtD4gPWDQP2_CxC4U1mK76EgiistCyOcffaYhTWV6Sz3Uxc5g3wL0OuM7NGuldqDig"},"/eightycc/circuitpython/branches/fetch_and_merge/framebuffer_psram":{"post":"rgEb4RuKzi0Ty1hk0moptA_5YoqeQhgAAEv2T-iDkrrwRdzdiDWwOMmOD-k4uHBC9u_PsV8pgsBOv38I1FryOw"},"/eightycc/circuitpython/branches/fetch_and_merge/framebuffer_psram?discard_changes=true":{"post":"Wxumi09w5ZDcflkAoAWzBW6zRwa64v7w0Qu8KsvyWroFX2G33M-bhQY7Do1K1-rzl6XqPXuJZDCf_zVt9ys6Ow"}}},"title":"circuitpython/.devcontainer at framebuffer_psram · eightycc/circuitpython","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-7d7eb7c71814.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-1ae9fa256942.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true,"github_models_repo_integration":false}}}