Commit Graph

108 Commits

Author SHA1 Message Date
·𐑑𐑴𐑕𐑑𐑩𐑤
5241238f68 lib/systems: add picolibc 2026-07-28 22:33:36 -07:00
Sam Pointon
629b4ee093 systems: rename extant wasi targets to wasip1
Wasi P2 is different enough to Wasi P1 to warrant being treated entirely 
separately, rather than as two minor variants of the same thing. P3 will 
likewise want to be a different target.

I've left aliases in place; maybe eventually, those can be deprecated 
and removed. I've tested this, but it's possible there might be breakage 
somewhere (e.g., the canonical doubles for P1 have changed, though I 
can't imagine why anyone would rely on that).

Fixes https://github.com/NixOS/nixpkgs/issues/435954
2026-07-28 19:50:03 +01:00
Eman Resu
d55c01c37d lib/systems/inspect: partially apply hasPrefix 2026-07-20 10:29:40 -04:00
Eman Resu
38816ea2a3 lib.systems.inspect: save memory when removing attributes 2026-06-20 17:05:35 -04:00
Eman Resu
c5cb2f465c lib.systems: cache attrNames calls for each pattern 2026-06-20 17:05:30 -04:00
Eman Resu
88d7ba7fc7 lib.systems: only run isAttrs on one side when recursing 2026-06-20 17:05:16 -04:00
Eman Resu
d65d6f570f lib.systems: define matchAttrs locally
Skipping the assertion.
2026-06-20 17:05:14 -04:00
Ben Siraphob
0fcb031c25 lib/systems: add SH4 (SuperH) cross-compilation target
Add sh4 CPU type (32-bit, little-endian, family "sh"), isSh4 predicate,
"sh4-linux" system double, cross-compilation example (sh4-unknown-linux-gnu),
linuxArch mapping to "sh", and test entry.
2026-04-20 13:02:20 -07:00
Ben Siraphob
6152e8cbfa lib/systems: add ARC (Synopsys DesignWare ARC) cross-compilation support
Add arc CPU type (32-bit, little-endian, family "arc"), isArc
predicate, arc-linux double, arc cross example with
arc-unknown-linux-gnu triple, and release-cross job.

ARC has glibc support and uses the "arc" Linux kernel arch, which
matches the CPU name so no explicit linuxArch mapping is needed.
2026-04-14 13:51:11 -07:00
Theo Paris
9f605ca95e lib.systems: add uefi support
Signed-off-by: Theo Paris <theo@theoparis.com>
Change-Id: I51ce15449fc83f0ff39277d7cde7b34a6a6a6964

lib.systems: remove i686-uefi
2026-01-25 21:59:21 -08:00
Alessandro Di Federico
90b59828be uclibc-ng: detect CONFIG_ARM_EABI from platform
This commit introduces a `isEabi` predicate for platforms and employs it
to detect whether to configure uclibc with CONFIG_ARM_EABI or not.
2025-12-30 19:05:44 +01:00
David McFarland
3dcf921c7b lib.systems: add isPE 2025-12-05 13:40:49 -04:00
David McFarland
39fd8e4adf cygwin: init as a target toolchain
The old cygwin support used -pc-windows-cygnus as the config.  This is
supported by LLVM, but not by GNU. This will change it to -pc-cygwin,
which is more generally supported.

Because the kernel is now 'cygwin' rather than 'windows', isWindows will
return false. There are lots of different reasons isWindows is used in
nixpkgs, but in my experience they often have to do with posix
compatibility and don't apply to cygwin.

Co-authored-by: Brian McKenna <brian@brianmckenna.org>
2025-09-27 13:29:44 -03:00
Ross Smyth
4af7c6bdee lib.systems: Add examples & helpers for MSVC 2025-07-31 11:41:15 -04:00
Wolfgang Walther
5a0711127c treewide: run nixfmt 1.0.0 2025-07-24 13:55:40 +02:00
OPNA2608
3a51005a85 lib.systems.inspect.patterns: init isAbiElfv1 2025-06-26 09:28:04 +02:00
aleksana
06bb544356 lib.systems.inspect.patterns.isEfi: add loongarch 2025-04-29 22:50:31 +08:00
zowoq
0931f4e861 Revert "pkgs/top-level/stage.nix: add pkgsLLVMLibc"
This reverts commit 41b14024d2.
2025-04-24 14:04:25 +10:00
Silvan Mosberger
374e6bcc40 treewide: Format all Nix files
Format all Nix files using the officially approved formatter,
making the CI check introduced in the previous commit succeed:

  nix-build ci -A fmt.check

This is the next step of the of the [implementation](https://github.com/NixOS/nixfmt/issues/153)
of the accepted [RFC 166](https://github.com/NixOS/rfcs/pull/166).

This commit will lead to merge conflicts for a number of PRs,
up to an estimated ~1100 (~33%) among the PRs with activity in the past 2
months, but that should be lower than what it would be without the previous
[partial treewide format](https://github.com/NixOS/nixpkgs/pull/322537).

Merge conflicts caused by this commit can now automatically be resolved while rebasing using the
[auto-rebase script](8616af08d9/maintainers/scripts/auto-rebase).

If you run into any problems regarding any of this, please reach out to the
[formatting team](https://nixos.org/community/teams/formatting/) by
pinging @NixOS/nix-formatting.
2025-04-01 20:10:43 +02:00
Tristan Ross
41b14024d2 pkgs/top-level/stage.nix: add pkgsLLVMLibc 2025-01-10 20:54:19 -08:00
Philip Taron
c02fcc946a Avoid top-level with ...; in lib/systems/inspect.nix 2024-03-19 16:16:44 -07:00
Philip Taron
af634f14ba lib/systems: inherit from lib.systems.parse in lib/systems/inspect.nix 2024-03-19 16:09:37 -07:00
Philip Taron
123a2f0fcc lib/systems: use lib.systems.parse and lib.systems.inspect.predicates instead of re-importing 2024-03-19 16:09:37 -07:00
Raito Bezarius
b62bc38ac9 lib/systems/inspect: add isSparc64
This is useful to distinguish between SPARC64 and SPARC whatever,
because SPARC64 do support compressed kernels.
2024-02-08 05:07:39 +01:00
Adam Joseph
9b4c306d98 lib.system.inspect: add wasm32 to isILP32
According to the WebAssembly design doc, wasm32 is an ILP32 ABI like
x32, mips64n32, and aarch64_ilp32 (Apple Watch).  This commits adds
it to the predicate.

  1319968ca5/CAndC%2B%2B.md (L16)
2024-01-18 09:09:29 +00:00
Ryan Burns
5cbd74e49a lib/systems: add exec format inspection attrs
Most of the time when we do a patchelf conditional on
hostPlatform.isLinux, what we really mean is hostPlatform.isElf.
Now that we are starting to support BSDs, this is becoming more important.
2024-01-02 14:07:20 -08:00
Adam Joseph
8c0416ef36 lib.systems.inspect: add patternLogicalAnd 2023-11-05 00:55:16 +00:00
Adam Joseph
4cb579b536 lib.systems: add gnuabin32 to isGnu
The `isGnu` predicate was missing `gnuabin32`.  This commit corrects
that by adding it.
2023-06-29 12:26:12 -07:00
Weijia Wang
b2ef7956b6 Merge pull request #227560 from jackyliu16/loongnix-commit
lib.platforms.loongarch64: init
2023-04-28 13:21:42 +03:00
jackyliu16
edcad332d9 lib.platforms.loongarch64: init 2023-04-27 20:04:30 +03:00
Adam Joseph
ed65f784a7 Merge pull request #191995 from amjoseph-nixpkgs/lib/systems/inspect/comment
lib/systems/inspect.nix: explanatory comment
2023-04-24 02:21:36 +00:00
sternenseemann
471b9cab41 haskell.compiler.ghcHEAD: 9.7.20221224 -> 9.7.20230217
- Christmas is over!

- Upstream has changed the name of the target triplet used for the JS
  backend from js-unknown-ghcjs to javascript-unknown-ghcjs, since Cabal
  calls the architecture "javascript":
  6636b67023

  Since the triplet is made up anyways, i.e. autoconf does not support
  it and Rust uses different triplets for its emscripten backends, we'll
  just change it as well.

- Upstream fixed the problem with ar(1) being invoked incorrectly by stage0:
  e987e345c8
2023-03-08 17:12:18 +01:00
github-actions[bot]
dd1ff149da Merge master into staging-next 2023-01-31 00:02:31 +00:00
Florian Klink
31931ffc35 Merge pull request #212939 from amjoseph-nixpkgs/pr/isStatic
meta: replace predicates with pattern over elaborated platform
2023-01-30 21:13:15 +01:00
Alyssa Ross
aa51704ba5 lib.systems.inspect.patterns.isEfi: drop ARMv5
I'm not aware of any ARMv5 EFI implementation.  gnu-efi doesn't
support it, so the build of systemd for armv5tel-linux is broken if
it's isEfi.
2023-01-30 19:54:06 +00:00
Alyssa Ross
4f8a5065d7 lib.systems.inspect.patterns.isEfi: remove "aarch64"
There is no "aarch64" CPU family — it counts as "arm", as can be seen
from the definition of isAarch64 above.

Checked that stdenv.hostPlatform.isEfi is still true on aarch64-linux.
2023-01-29 16:29:47 +00:00
Adam Joseph
9c0a3417c8 Update lib/systems/inspect.nix
Co-authored-by: Naïm Favier <n@monade.li>
2023-01-27 11:56:20 +00:00
Adam Joseph
009a3f1857 Update lib/systems/inspect.nix
Co-authored-by: Naïm Favier <n@monade.li>
2023-01-27 11:16:35 +00:00
Adam Joseph
ea0bcf2505 lib/systems/inspect.nix: add platformPatterns.isStatic 2023-01-27 02:21:23 -08:00
Alyssa Ross
6d165a9474 lib.platforms.s390x: init 2023-01-19 17:43:50 +00:00
Alyssa Ross
48f3fd2d49 lib.platforms.armv7: init 2023-01-19 17:43:41 +00:00
Nick Cao
35bede2be5 Merge pull request #184521 from dramforever/riscv-isefi
lib/systems/inspect.nix: Add riscv to isEfi
2023-01-13 14:28:11 +08:00
Adam Joseph
14f337afb6 lib/systems/inspect.nix: add isILP32 predicate
I've run into a few packages that need an extra flag on platforms
where `int` has more bits than `void*` does.  I know of three such
platforms:

* [aarch64ilp32], used on both Linux and also on the [Apple Watch]
* [x32], the x86 ILP32 ABI
* [mips64n32], used on [Longsoon] and Cavium Octeon routers.

This PR introduces a predicate so the package flags can be added in
a generic way.

[Apple Watch]: https://gist.github.com/woachk/943828f37c14563a607a26116435bf27#watch
[mips64n32]: https://en.wikipedia.org/wiki/MIPS_architecture#Calling_conventions
[Longsoon]: https://en.wikipedia.org/wiki/Loongson
[x32]: https://en.wikipedia.org/wiki/X32_ABI
2023-01-01 17:16:06 -08:00
John Ericson
66aa02f190 lib/systems: Support FreeBSD
A tricky thing about FreeBSD is that there is no stable ABI across
versions. That means that putting in the version as part of the config
string is paramount.

We have a parsed represenation that separates name versus version to
accomplish this. We include FreeBSD versions 12 and 13 to demonstrate
how it works.
2022-11-04 16:49:28 -04:00
Adam Joseph
66810822f9 lib/systems/inspect.nix: explanatory comment 2022-09-19 19:15:35 -07:00
Minijackson
345595a8b8 lib/systems: add convenience isAbiElfv2 function 2022-08-28 21:46:44 +02:00
Minijackson
da2d9a2aca lib/systems: add elfv1 / elfv2 ABIs 2022-08-28 21:46:44 +02:00
Minijackson
4db467f7e9 lib/systems: add MicroBlaze architectures 2022-08-25 16:00:42 +02:00
dramforever
584cfd8caa lib/systems/inspect.nix: Add riscv to isEfi
EFI boot on RISC-V is supported by GRUB and systemd-boot. Add them to
isEfi to reflect this fact.
2022-08-01 16:43:55 +08:00
Sandro
463327086d lib/systems/inspect.nix: add isAarch 2022-07-29 19:16:01 +00:00