-
-
Notifications
You must be signed in to change notification settings - Fork 19.7k
doc: Document Platform Support Tiers #245368
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -12,3 +12,8 @@ stdenv.md | |
| builders.md | ||
| contributing.md | ||
| ``` | ||
|
|
||
| ```{=include=} appendix | ||
| stdenv/platform-support-tiers.chapter.md | ||
| ``` | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,87 @@ | ||||||
| # Platform Support Tiers {#platform-support-tiers} | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
The RFC specifies these as "non-normative" (and also nearly four years out of date at this point). |
||||||
|
|
||||||
| In the context of Nixpkgs, a *platform* can mean a CPU architecture, a | ||||||
| [cross-compilation](#chap-cross) target or a C library option. | ||||||
|
asymmetric marked this conversation as resolved.
Outdated
|
||||||
|
|
||||||
| Nixpkgs defines 7 platform *support tiers*, meaning levels of support for each platform. | ||||||
|
|
||||||
| **TODO**: change build successfully to a definition of "work". | ||||||
|
|
||||||
| ## Tier 1 {#platform-support-tier-1} | ||||||
|
|
||||||
| These platforms receive the highest level of support, meaning that every | ||||||
| platform-compatible package in Nixpkgs must successfully build in the Hydra and OfBorg CIs. | ||||||
| **TODO**: this seems to not be entirely true for Hydra, but true for OfBorg. | ||||||
|
|
||||||
| - `x86_64-linux`, `gcc` + `glibc` | ||||||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should these be tables?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If we start with «copy what needs to be copied», let's keep RFC formatting. Then reformatting different parts of the text can be done at its own pace
asymmetric marked this conversation as resolved.
Outdated
|
||||||
|
|
||||||
| ## Tier 2 {#platform-support-tier-2} | ||||||
|
|
||||||
| Many of the packages are required to build successfully on these platforms in CI, the rest are supported on a best-effort basis by dedicated platform maintainers. | ||||||
| **TODO**: link teams | ||||||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Problem is that the
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||
|
|
||||||
| - `aarch64-linux`, `gcc+glibc` | ||||||
| - `x86_64-darwin`, `clang+Darwin/macOS` | ||||||
|
|
||||||
| ## Tier 3 {#platform-support-tier-3} | ||||||
|
|
||||||
| None of the packages for these platforms are required to build successfully in | ||||||
| CI, but it is expected that most of them will build successfully. | ||||||
|
|
||||||
| - `i686-linux`, `gcc`+`glibc` | ||||||
| - `armv{6,7,8}*-linux`, `gcc`+`glibc` | ||||||
| - `armv{6,7,8}*-linux`, `gcc`+`glibc`, cross-compilation | ||||||
| - `aarch64-linux`, `gcc`+`glibc`, cross-compilation | ||||||
| - `mipsel-linux`, `gcc`+`glibc` | ||||||
| - `x86_64-linux`, `gcc`+`musl` | ||||||
|
asymmetric marked this conversation as resolved.
Outdated
|
||||||
|
|
||||||
| ## Tier 4 {#platform-support-tier-4} | ||||||
|
|
||||||
| Some of the packages for these platforms are expected to work. The | ||||||
| [`exotic-platform-maintainers` | ||||||
| Team](https://github.com/orgs/NixOS/teams/exotic-platform-maintainers) is | ||||||
| responsible for this platform. | ||||||
|
|
||||||
| - `aarch64-none` | ||||||
| - `avr` | ||||||
| - `arm-none` | ||||||
| - `i686-none` | ||||||
| - `x86_64-none` | ||||||
| - `powerpc-none` | ||||||
| - `powerpcle-none` | ||||||
|
asymmetric marked this conversation as resolved.
|
||||||
| - `x86_64-mingw32` | ||||||
| - `i686-mingw32` | ||||||
| - `x86_64-linux`, `gcc`+`musl` — static | ||||||
| - `x86_64-linux`, `clang`+`glibc` | ||||||
| - `x86_64-linux`, `clang`+`glibc` — `llvm` linker | ||||||
|
asymmetric marked this conversation as resolved.
Outdated
|
||||||
| - `x86_64-linux` — Android | ||||||
| - `aarch64-linux` — Android | ||||||
| - `armv{7,8}-linux` — Android | ||||||
|
asymmetric marked this conversation as resolved.
Outdated
|
||||||
|
|
||||||
| ## Tier 5 {#platform-support-tier-5} | ||||||
|
|
||||||
| A small number of packages might build successfully on these platforms. | ||||||
|
|
||||||
| - `x86_64-linux`, `gcc`+`glibc` — static | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not sure this is correct. I don't think static linking is truly possible with
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @7c6f434c what do you say?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We do have something that claims to be static linking with glibc. I am not sure which of the, say, NSS things it ends up doing with dynamic linking, but it does seem to link statically some stuff? As there are packages that depend on |
||||||
| - `x86_64-linux`, `gcc`+`glibc` — `llvm` linker | ||||||
|
asymmetric marked this conversation as resolved.
Outdated
|
||||||
|
|
||||||
| ## Tier 6 {#platform-support-tier-6} | ||||||
|
|
||||||
| These platforms are defined in Nixpkgs, but no packages are expected to build on them. | ||||||
|
|
||||||
| - `wasm-wasi` | ||||||
| - `powerpc64le-linux`, `gcc`+`glibc` | ||||||
|
asymmetric marked this conversation as resolved.
Outdated
|
||||||
|
|
||||||
| ## Tier 7 {#platform-support-tier-7} | ||||||
|
|
||||||
| No current support, but previous support or clear path to add support. | ||||||
|
|
||||||
| - `aarch64-darwin` | ||||||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This seems to be false now, since OfBorg builds for this platform.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, it looks like right now after all the work done, two macOS versions are mostly on par (although capacity issues at ofBorg make it questionable if
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm inclined towards leaving this at the state it was when the RFC was accepted, since I don't have the resources to update the list on my own. The RFC also requires documentation be kept up to date, so that could be the next step (and the task of the respective arch maintainers) once this is merged. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
In that case you should probably close this PR. Adding inaccurate data to the documentation is not helpful.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Well, it's inaccurate until someone fixes it, and seeing how nothing has happened in 3 years, this PR might at least get some things moving.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. But let's see if we gather more up to date info with this PR. Thank you for your contributions to that end. |
||||||
| - `i686-darwin` | ||||||
| - `x86_64-freebsd` | ||||||
| - `i686-solaris` | ||||||
| - `x86_64-illumos` | ||||||
|
|
||||||
| ## Further reading {#platform-support-tiers-further-reading} | ||||||
|
|
||||||
| For a formal definition of platform support tiers, see [RFC046](https://github.com/7c6f434c/rfcs/blob/platform-support-tiers/rfcs/0046-platform-support-tiers.md). | ||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it is better to include the definition in the manual: then small technical cleanups of the description can be made on the basis of technical review + not changing the intent of RFC.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What definition would you add here then?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would stupidly add lines 55 to 275 from the RFC. This definitely covers «definition of support tiers» (and at least a half of it is definitely necessary). If this PR is «copy what RFC calls to copy» and updates (including formatting) are the next step, I think this is a reasonable way to handle definitions. |
||||||
Uh oh!
There was an error while loading. Please reload this page.