{"id":13983963,"url":"https://github.com/solus-project/solbuild","last_synced_at":"2025-04-24T03:29:52.791Z","repository":{"id":62300648,"uuid":"75125231","full_name":"solus-project/solbuild","owner":"solus-project","description":"The Solus package build system","archived":false,"fork":false,"pushed_at":"2018-10-18T17:48:39.000Z","size":3702,"stargazers_count":82,"open_issues_count":6,"forks_count":12,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-18T12:18:05.707Z","etag":null,"topics":["build-system","golang","solus"],"latest_commit_sha":null,"homepage":"https://solus-project.com/","language":"Go","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/solus-project.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2016-11-29T21:49:16.000Z","updated_at":"2025-02-27T07:38:36.000Z","dependencies_parsed_at":"2022-10-30T09:00:21.905Z","dependency_job_id":null,"html_url":"https://github.com/solus-project/solbuild","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solus-project%2Fsolbuild","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solus-project%2Fsolbuild/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solus-project%2Fsolbuild/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solus-project%2Fsolbuild/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solus-project","download_url":"https://codeload.github.com/solus-project/solbuild/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250555776,"owners_count":21449864,"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":["build-system","golang","solus"],"created_at":"2024-08-09T05:02:05.867Z","updated_at":"2025-04-24T03:29:52.773Z","avatar_url":"https://github.com/solus-project.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"solbuild\n--------\n\n[![Report](https://goreportcard.com/badge/github.com/solus-project/solbuild)](https://goreportcard.com/report/github.com/solus-project/solbuild) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n`solbuild` is a `chroot` based package build system, used to safely and efficiently build Solus packages from source, in a highly controlled and isolated environment. This tool succeeds the `evobuild` tool, originally in Evolve OS, which is now known as Solus. The very core concept of the layered builder has always remained the same, this is the next .. evolution.. of the tool.\n\n![tty](https://raw.githubusercontent.com/solus-project/solbuild/master/.github/building.gif)\n\n`solbuild` makes use of `OverlayFS` to provide a simple caching system, whereby a base image (provided by the Solus project) is used as the bottom-most, read-only layer, and changes are made in temporary upper layers. Currently the project provides two base images for the default profiles shipped with `solbuild`:\n\n - **main-x86_64**: Built using the stable Solus repositories, suitable for production deployments for `shannon` users.\n - **unstable-x86_64**: Built using the unstable Solus repositories, ideal for developers, and the Solus build machinery for the repo waterfall prior to `shannon` inclusion.\n\nWhen building `package.yml` files ([ypkg](https://github.com/solus-project/ypkg)), the tool will also disable all networking within the environment, apart from the loopback device. This is intended to prevent uncontrolled build environments in which a package may be fetching external, unverified sources, during the build.\n\n`solbuild` also allows developers to control the repositories used by configuring the profiles:\n\n - Remove any base image repo\n - Add any given repo, remote or local. Local repos are bind mounted and can be automatically indexed by `solbuild`.\n\n`solbuild` performs heavy caching throughout, with source archives being stored in unique hash based directories globally, and the `ccache` being retained after each build through bind mounts. A single package cache is retained to speed up subsequent builds, and users may speed this up further by updating their base images.\n\nAs a last speed booster, `solbuild` allows you to perform builds in memory via the `--tmpfs` option.\n\n**Note**: `solbuild` is designed in such a way that you *do not need to be running Solus*. You can build packages for Solus from any compatible host.\n\n\nsolbuild is a [Solus project](https://solus-project.com/).\n\n![logo](https://build.solus-project.com/logo.png)\n\n\nGetting started\n----------------\n\n**Solus Users**\n\n    sudo eopkg up\n    sudo eopkg it solbuild\n\n    # If you only ever want to use the unstable repo by default\n    sudo eopkg it solbuild-config-unstable\n\n**Everyone else**\n\n    git clone https://github.com/solus-project/solbuild.git\n    cd solbuild\n    make ensure_modules\n    make\n    sudo make install\n\nYou may wish to use the provided tarballs, which include vendored dependencies.\nDistributions are free to nuke the src/vendor directory from the distributed\ntarball and use their own golang dependencies if appropriate.\n\n**Initialising the root**\n\nRun the following command to fetch and install the base image. If you wish\nto change the profile, use the `-p` flag (`unstable-x86_64` or `main-x86_64`)\nThe `-u` flag will automatically update the image.\n\n    sudo solbuild init -u\n\n**Updating the image**\n\n    # Update the default profile\n    sudo solbuild update\n\n    # Update a specific profile\n    sudo solbuild update unstable-x86_64\n\n**Building packages**\n\n    # Build the first package found in the current directory\n    sudo solbuild build\n\n    # Build a specific path\n    sudo solbuild build ../mypackages/package.yml\n\n    # Build for unstable profile\n    sudo solbuild -p unstable-x86_64 build\n\nSee the `solbuild help` command for more details, or `solbuild(1)` manpage.\n\nRequirements\n------------\n\n - golang (tested with 1.7.4)\n - `libgit2` (Also require `git` at runtime for submodules)\n - `curl` command\n\nYour kernel must support the `overlayfs` filesystem.\nGit is required as `solbuild` supports the `git|` source type of ypkg files. Additionally, `solbuild` will try to generate a package changelog from the git history where the YPKG file is found. This is used within Solus to create a changelog dynamically from the git tags, and automatically marking security updates, etc.\n\nLicense\n-------\n\nCopyright © 2016-2017 Solus Project\n\n`solbuild` is available under the terms of the Apache-2.0 license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolus-project%2Fsolbuild","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolus-project%2Fsolbuild","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolus-project%2Fsolbuild/lists"}