This repository helps .NET SDK and .NET Runtime package maintainers comply with common Linux distribution guidelines.
To build the full .NET SDK from source, pick a specific Git tag with your desired version, or use a release branch to build the latest servicing release of that version. Refer to the tag/branch's README for build instructions:
The current branch is a work in progress that produces several .NET SDK components for Arcade-powered source-build. Once Arcade-powered source-build is complete, it will allow building a .NET SDK from source directly from the dotnet/installer repository.
The scripts are written for Bash and supported on macOS and Linux.
The source-build repository doesn't currently support Windows. See source-build#1190.
Optionally, run ./check-submodules.sh
to ensure the submodules are set up and synchronized. Then, run the build command:
./build.sh
Once the build is successful, the outputs are placed in artifacts/packages/Debug/
.
The key goal of source-build is to satisfy the official packaging rules of commonly used Linux distributions, such as Fedora and Debian. Many Linux distributions have similar rules. These rules tend to have two main principles: consistent reproducibility, and source code for everything.
A secondary goal of source-build is to allow .NET Core contributors to build a .NET Core SDK with coordinated changes in multiple repositories. However, the developer experience is significantly better in individual repositories and, if possible, contributors should make and test changes in the target repo, not source-build.
Source-build solves common challenges that most developers encounter when trying to build the whole .NET Core SDK from source.
- .NET Core is composed of many repositories that need to be built at a specific combination of commits.
- Each repository's build output needs to flow into the next repository's build.
- By default, most .NET Core repositories download prebuilt binary dependencies from online sources. These are forbidden by typical Linux distribution rules, and interfere with build output flow.
- Nearly all .NET Core repositories require the .NET Core SDK to build. This is a circular dependency, which presents a bootstrapping problem.
The source-build repository contains scripts and build logic to help Linux distribution maintainers address these challenges.
This repo is licensed under the MIT license.