{"id":14156428,"url":"https://github.com/BobBuildTool/basement","last_synced_at":"2025-08-06T02:33:28.538Z","repository":{"id":37587649,"uuid":"50561472","full_name":"BobBuildTool/basement","owner":"BobBuildTool","description":"Base recipes layer for Linux projects with Bob Build Tool","archived":false,"fork":false,"pushed_at":"2024-08-09T11:05:01.000Z","size":802,"stargazers_count":6,"open_issues_count":6,"forks_count":14,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-08-09T22:08:58.780Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","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/BobBuildTool.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2016-01-28T06:33:45.000Z","updated_at":"2024-08-09T11:05:05.000Z","dependencies_parsed_at":"2023-11-17T22:58:23.383Z","dependency_job_id":"a12f72b7-8014-40c0-b62a-74a2e6b7a8b8","html_url":"https://github.com/BobBuildTool/basement","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BobBuildTool%2Fbasement","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BobBuildTool%2Fbasement/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BobBuildTool%2Fbasement/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BobBuildTool%2Fbasement/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BobBuildTool","download_url":"https://codeload.github.com/BobBuildTool/basement/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":215735861,"owners_count":15923388,"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-08-17T08:05:28.026Z","updated_at":"2025-08-06T02:33:28.526Z","avatar_url":"https://github.com/BobBuildTool.png","language":"Python","funding_links":[],"categories":["others"],"sub_categories":[],"readme":"# Basement\n\nThis basement project is a collection of useful recipes that can be included by\nother projects. Most importantly it provides pre-made classes to handle common\nbuild systems and other recurring tasks. Additionally a sandbox and common GCC\ntoolchains are ready-to-use.\n\n# Documentation\n\nThe documentation how to use the basement project can be found on [Read the\nDocs](https://bob-build-tool.readthedocs.io/projects/basement/en/latest/index.html).\n\n# Prerequisites\n\n* A x86\\_64 system with the regular development tools installed\n  * gcc \u003e= 5.x\n  * bash\n  * POSIX awk (GNU awk version \u003e= 3.1.5)\n  * GNU make \u003e= 3.80\n  * perl \u003e= 5.6.1\n  * GNU tar\n  * gzip\n  * bzip2\n  * rsync\n  * xz-utils\n* Bob Build Tool (https://github.com/BobBuildTool/bob)\n\n# How to build\n\nActually there isn't much to build directly in this repository. Head over\nto one of the examples to see how this repository is used:\n\n * [Embedded systems](https://github.com/BobBuildTool/bob-example-embedded)\n * [Linux containers](https://github.com/BobBuildTool/bob-example-containers)\n\nIn `tests/linux` there are a couple of recipes that build small test packages\nwhich use the `basement` layer. They act as smoke tests for this project.\n\n# How to use\n\nFirst you need to add the `basement` layer to your project. To do so, add a\n`layers` entry to `config.yaml`:\n\n    bobMinimumVersion: \"1.0\"\n    layers:\n        - name: basement\n          scm: git\n          url: https://github.com/BobBuildTool/basement.git\n          commit: \u003cgit commit id\u003e # optional but highly recommended\n\nand then fetch the layer:\n\n    $ bob layers update\n\nTo use all facilities of the basement project you just need to inherit the `basement::rootrecipe`\nclass in your root recipe:\n\n    inherit: [ \"basement::rootrecipe\" ]\n\nThis will make your recipe a root recipe and already setup the sandbox with a\nproper host toolchain. See the next chapter what tools and toolchains are readily\navailable.\n\n# Provided tools and C/C++ toolchains\n\nThe following tools can be used by naming them in `{checkout,build,package}Tools`:\n\n* bison\n* cpio\n* flex\n* make\n* pkg-config\n* squashfs-tools\n* e2fsprogs\n* util-linux\n\nThe following cross compiling toolchains are available pre-configured. If you need\nother targets you can depend on `devel::cross-toolchain` directly and configure it\nas you like.\n\n* `devel::cross-toolchain-aarch64-linux-gnu`: ARMv8-A AArch64 Linux with glibc.\n* `devel::cross-toolchain-aarch64-none-elf`: ARMv8-A/R AArch64 bare metal\n  toolchain with newlib libc.\n* `devel::cross-toolchain-arm-linux-gnueabihf`: ARMv7-A Linux with glibc. Hard\n  floating point ABI.\n* `devel::cross-toolchain-arm-none-eabi`: ARMv7 bare metal toolchain with\n  newlib libc.\n* `devel::cross-toolchain-x86_64-linux-gnu`: x86_64 toolchain for Linux with glibc.\n* `devel::cross-toolchain-riscv64-linux-gnu`: RISC-V toolchain targeting the GC\n  profile.\n\nTo use a cross compiling toolchain include it where needed via:\n\n    depends:\n        - name: \u003crecipe name here\u003e\n          use: [tools, environment]\n          forward: True\n\nRegarding the C/C++ toolchains the following tools are defined and used in the\nrecipes:\n\n* `target-toolchain`: This is the main toolchain. Every C/C++ package uses it.\n  It represents the compiler that builds for the target system where the\n  package should run in the end. Usually, but not necessarily, this is a cross\n  compiler even on the same architecture.\n\n  In autotools speak this is the compiler for the `--host=` system.\n* `host-toolchain`: This toolchain represents the native host machine compiler.\n  Even though it builds host executables, it does never\n  [fingerprint](https://bob-build-tool.readthedocs.io/en/latest/manual/configuration.html#host-dependency-fingerprinting)\n  the results. Instead, it is intended to be used in the `buildScript` if the\n  package *also* needs the host compiler during build time where none of the\n  host build object code is part of the result. Points to the host gcc or the\n  gcc of the sandbox. Only selected packages need it when being built in the\n  sandbox.\n\n  In autotools speak this is the compiler of the `--build=` system.\n* `host-compat-toolchain`: A toolchain that builds portable host executables\n  that should be able to run on the oldest supported Ubuntu LTS. Even though it\n  builds for the host architecture, it is a cross compiler with a backwards\n  compatible glibc version. When using the `basement::rootrecipe` class, this\n  is the default `target-toolchain`. It is defined as a dedicated name to be\n  able to compile specifically for the host when needed:\n\n      depends:\n        - ...\n        - name: some::package\n          tools:\n            target-toolchain: host-compat-toolchain\n\n  This will build `some::package` for the host regardless of the currently\n  defined target toolchain.\n* `host-native-toolchain`: This toolchain represents the native host machine\n  compiler. In contrast to `host-toolchain` it *does* fingerprint the system.\n  Used if a package needs to be compiled natively and the object code is part\n  of the package result.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBobBuildTool%2Fbasement","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBobBuildTool%2Fbasement","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBobBuildTool%2Fbasement/lists"}