{"id":27332088,"url":"https://github.com/timelessos/bootstrap","last_synced_at":"2025-04-12T13:47:07.787Z","repository":{"id":286066558,"uuid":"959609777","full_name":"TimelessOS/Bootstrap","owner":"TimelessOS","description":"Bootstrap Junction for TimelessOS","archived":false,"fork":false,"pushed_at":"2025-04-04T05:50:49.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-04T06:29:11.876Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"BibTeX Style","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TimelessOS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-03T04:15:04.000Z","updated_at":"2025-04-04T05:50:52.000Z","dependencies_parsed_at":"2025-04-04T06:39:22.662Z","dependency_job_id":null,"html_url":"https://github.com/TimelessOS/Bootstrap","commit_stats":null,"previous_names":["timelessos/bootstrap"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimelessOS%2FBootstrap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimelessOS%2FBootstrap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimelessOS%2FBootstrap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimelessOS%2FBootstrap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TimelessOS","download_url":"https://codeload.github.com/TimelessOS/Bootstrap/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248575000,"owners_count":21127103,"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":"2025-04-12T13:47:04.674Z","updated_at":"2025-04-12T13:47:07.777Z","avatar_url":"https://github.com/TimelessOS.png","language":"BibTeX Style","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TimelessOS Bootstrap\n\nThis is the bootstrap module used to build TimelessOS. It starts itself off\nwith a few packages from freedesktop-sdk (mostly their autotools stack),\nand then builds a usable system image in such a way that it won't conflict\nwith a \"final\" OS build\n\n## Usage\n\nTo use the bootstrap, simply junction off of it. You can pull `unadjusted.bst`\nthrough the junction to get a bootstrap toolchain that produces functional\nexecutables that link against the bootstrap's libraries (this will be necessary\nto build linux-headers and glibc). Once you build a functional glibc, however,\nyou can pull `adjusted.bst` through the junction. This will give you a bootstrap\ntoolchain that will link binaries against the final system's glibc \u0026 other libraries.\n\nYou'll also need to add `/tools/bin` to the end of `PATH` in your buildstream project\n\n## Bootstrap Process\n\nTimelessOS ultimately bootstraps itself off of the\n[Freedesktop SDK](https://gitlab.com/freedesktop-sdk/freedesktop-sdk). A cross-toolchain\nis built to separate TimelessOS's libraries from freedesktop's, and then the cross-toolchain is\nused to build caronOS's system-bootstrap toolchain. Once the bootstrap is built,\nthe freedesktop SDK is discarded. The bootstrap module is then used to build TimelessOS's\nfinal toolchain, along with some other related packages, and is finally discarded.\n\nThis bootstrap was originally heavily inspired by the instructions in LinuxFromScratch\nv9 Chapter 5, though keep in mind that it is not identical \u0026 no effort will be made to\nkeep up-to-date with the instructions in LFS.\n\nHere's the toolchain build order:\n1. binutils-cross\n2. gcc-cross\n3. linux-api-headers\n4. glibc\n5. libstdcxx, binutils\n6. gcc\n7. Everything else in `pkgs/`\n8. (in final OS, using unadjusted bootstrap) linux-api-headers\n9. (in final OS, using unadjusted bootstrap) glibc\n10. (in final OS, using adjusted bootstrap) everything else\n\n## Project structure\n\n- `elements/`: [BuildStream](https://buildstream.build) elements that define the bootstrap's components\n    - `pkgs/`: Individual packages that make up the bootstrap\n    - `tools/`: Elements that are there to help the build in some way\n    - `all.bst`: List of all the packages that make up the bootstrap toolchain\n    - `freedesktop-sdk.bst`: Junction to fdo sdk\n    - `bst-plugins.bst` and `bst-plugins-experimental.bst`: Buildstream plugin junctions\n    - `unadjusted.bst`: API. Bootstrap toolchain that links against bootstrap libs\n    - `adjusted.bst`: API. Bootstrap toolchain that links against final system libs\n- `plugins/`: Custom BuildStream plugins that are used in `elements/`\n- `project.conf`: The BuildStream project configuration\n- `*.refs`: Used by BuildStream to keep track of the versions of various components\n- `result/`: Standard location that `just checkout` exports BuildStream artifacts to\n\n## Build instructions\n\n#### Auto-building\n\nIf you followed the usage instructions, the bootstrap should be built \u0026 rebuilt as appropriate\nautomatically by Buildstream. I'll leave figuring out artifact caching, CI/CD, etc as an exercise to\nthe reader. However, if you want to build the bootstrap manually for whatever reason, keep reading\n\n#### Dependencies\n\n- buildstream 2.4.0+\n- python3-dulwich\n- [just](https://just.systems) (not needed to use via a junction!)\n\n#### Building\n\nTo build the bootstrap, simply run `just build`. This will build the entire\nbootstrap module. You can then use buildstream's built-in artifact caching \u0026 related\nfeatures to handle the output of this build efficiently\n\n## Acknowledgements\n\nThis is a hard fork of (carbonOS)[https://gitlab.com/carbonOS/system-bootstrap].\nOriginal license available as licenses/carbonOS\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimelessos%2Fbootstrap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimelessos%2Fbootstrap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimelessos%2Fbootstrap/lists"}