about summary refs log tree commit diff
path: root/lib/systems
AgeCommit message (Collapse)AuthorFilesLines
2022-09-29lib/systems/default.nix: add efiArch suffixesIvan Nikolaenko1-0/+8
Move already implemented functionality to the upper level so it could be used in a more generic way. Signed-off-by: Ivan Nikolaenko <ivan.nikolaenko@unikie.com>
2022-09-13Merge pull request #189314 from Artturin/addemulatoravailableArtturi1-30/+39
2022-09-11lib/systems: add emulatorAvailableArtturin1-30/+39
``` nix-repl> pkgsCross.arm-embedded.stdenv.hostPlatform.emulatorAvailable pkgsCross.arm-embedded.buildPackages false nix-repl> pkgsCross.aarch64-multiplatform.stdenv.hostPlatform.emulatorAvailable pkgsCross.aarch64-multiplatform.buildPackages true ``` will be useful for stuff like handling https://github.com/NixOS/nixpkgs/issues/187109
2022-09-06lib/systems: uname.processor is "uname -m", not "uname -p" (#189958)Adam Joseph1-1/+1
The comment in lib/systems/default.nix for uname.processor indicates that it should match `uname -p`. I tried that command and found that it reports `unknown` on all of these machines: - `x86_64-linux` - `aarch64-linux` - `mips64el-linux` - `powerpc64le-linux` The command `uname -m` reports the expected value on all of the above. I think the comment is wrong. So I fixed it.
2022-08-28lib/systems/doubles: add ELFvx GNU ABIsMinijackson1-1/+3
2022-08-28lib/systems: add convenience isAbiElfv2 functionMinijackson1-0/+7
2022-08-28lib/systems/examples: use provided ABIs in PPC64 tripleMinijackson1-3/+2
2022-08-28lib/systems/parse: use ELFv2 by default for PPC64 BEMinijackson1-0/+2
2022-08-28lib/systems: add elfv1 / elfv2 ABIsMinijackson2-1/+9
2022-08-25lib/systems: add MicroBlaze architecturesMinijackson4-6/+14
2022-08-16lib/systems: Add staticLibrary and libraryDaniel Olsen1-1/+7
staticLibrary includes common extensions for static libraries library is a new common attribute that includes both shared and static extensions
2022-08-02lib/system: resolve TODOSandro1-3/+0
2022-07-29lib/systems/inspect.nix: add isAarchSandro1-0/+1
2022-07-27Merge #170736: lib/systems/platforms.nix: fix mips32 ABIVladimír Čunát1-2/+2
2022-07-18Merge pull request #160554 from Cloudef/android-prebuiltRick van Schijndel2-5/+6
Fix android prebuilt toolchains
2022-07-03lib.systems.examples: canonicalize MIPS triplesAlyssa Ross1-14/+12
In Nixpkgs, we assume that the "config" field is a canonicalized GNU triple. I noticed that non-canonical values were being used here, because the pkgsCross.mips64el-linux-gnu triples did not contain the vendor field, but the pkgsCross.mips64el-linux-gnu.pkgsStatic did. Here, I've run all the MIPS triples in lib.systems.examples through config.sub to canonicalize them. I think this will avoid nasty surprises in future. Tested by building Nix and the bootstrap files for pkgsCross.mips64el-linux-gnu.
2022-06-29canExecute: check for androidJari Vetoniemi1-0/+1
2022-06-29update android targets to recommended onesJari Vetoniemi1-5/+5
2022-06-08lib.systems.amd64-netbsd: removeAlyssa Ross1-2/+0
This has been deprecated for a long time, and it's doubtful it had any users to start with. And having an undisablable warning when enumarating platforms is not good.
2022-05-27Merge pull request #174917 from alyssais/scaleway-c1sternenseemann2-9/+0
lib.systems: drop scaleway-c1
2022-05-27lib.systems: drop scaleway-c1Alyssa Ross2-9/+0
These servers apparently no longer exist, since September 2, 2021[1]. If somebody needs this for non-Scaleway machines, they should suggest its reintroduction with a different name. [1]: https://news.ycombinator.com/item?id=27192757
2022-05-25lib/systems/inspect.nix: remove isPowerPCAdam Joseph1-1/+0
Very confusingly, the `isPowerPC` predicate in `lib/systems/inspect.nix` does *not* match `powerpc64le`! This is because `isPowerPC` is defined as isPowerPC = { cpu = cpuTypes.powerpc; }; Where `cpuTypes.powerpc` is: { bits = 32; significantByte = bigEndian; family = "power"; }; This means that the `isPowerPC` predicate actually only matches the subset of machines marketed under this name which happen to be 32-bit and running in big-endian mode which is equivalent to: with stdenv.hostPlatform; isPower && isBigEndian && is32bit This seems like a sharp edge that people could easily cut themselves on. In fact, that has already happened: in `linux/kernel/common-config.nix` there is a test which will always fail: (stdenv.hostPlatform.isPowerPC && stdenv.hostPlatform.is64bit) A more subtle case of the strict isPowerPC being used instead of the moreg general isPower accidentally are the GHC expressions: Update pkgs/development/compilers/ghc/8.10.7.nix Update pkgs/development/compilers/ghc/8.8.4.nix Update pkgs/development/compilers/ghc/9.2.2.nix Update pkgs/development/compilers/ghc/9.0.2.nix Update pkgs/development/compilers/ghc/head.nix Since the remaining legitimate use sites of isPowerPC are so few, remove the isPowerPC predicate completely. The alternative expression above is noted in the release notes as an alternative. Co-authored-by: sternenseemann <sternenseemann@systemli.org>
2022-05-24stdenv: fix evaluation of platform emulatorNick Cao1-1/+1
2022-05-23lib.systems: inform isCompatible users about removalsternenseemann1-0/+1
2022-05-23lib.systems.elaborate: expose canExecute predicate over isCompatiblesternenseemann1-2/+4
canExecute is like isCompatible, but also checks that the Kernels are _equal_, i.e. that both platforms use the same syscall interface. This is crucial in order to actually be able to execute binaries for the other platform. isCompatible is dropped, since it has changed semantically and there's no use case left in nixpkgs.
2022-05-23lib/systems/parse: don't consider mode switching CPUs compatiblesternenseemann1-13/+6
Since we (exclusively) use isCompatible to gauge whether platform a can execute binaries built for platform b, mode switching CPUs are not to be considered compatible for our purposes: Switching the mode of a CPU usually requires a reset. At the very least we can't execute a mix of executables for the two modes which would usually be the case in nixpkgs where we may want to execute buildInputs for the hostPlatform in addition to nativeBuildInputs for the buildPlatform.
2022-05-23lib.systems: remove supported, replace with flakeExposedsternenseemann3-27/+39
Since the list only gates the platforms the nixpkgs flake exposes packages to build on, the `hydra` label made little sense. It was also only used for this purpose, so the `tier*` attributes were largely unnecessary. To reflect the intention more accurately, we expose `lib.systems.flakeExposed` and use it to gate flake.nix's system list.
2022-05-22systems: support cross-compiling for Renesas RX microcontrollers (#173858)yvt4-1/+9
2022-05-04Merge pull request #161156 from ↵Rick van Schijndel1-2/+2
a-m-joseph/abort-on-failed-platform-detection-instead-of-silently-assuming-pc platforms.nix: use {} on failed detection instead of silently assuming pc
2022-05-03platforms.nix: use {} on failed detection instead of silently assuming pcAdam Joseph1-2/+2
This patch causes the autodetection code in lib/systems/platforms.nix to return {} if it cannot detect the platform and one of the platform.nix-detection-provided attributes (linux-kernel, gcc, and rustc) are accessed, rather than silently assuming the "pc" platform as was previously done. It is definitely safe to assume that code using these attributes is prepared to deal with `gcc` and `rustc` not being defined, because many of the working entries in this file don't define it. Regarding `linux-kernel` the situation is less certain, but some code (`lib/systems/default.nix` for example) is already designed to deal with that attribute being missing. At worst it would result in an "attribute not found" error. While adding mips64el bootstrap support to nixpkgs, the silent assumption that mips64el routers are actually Intel PCs caused significant frustration. This commit removes that assumption in order to save people who port nixpkgs to new platforms in the future from this frustration.
2022-04-28lib.systems: add riscv{32,64} sets and filtersAlyssa Ross2-0/+4
For other platforms like Intel and ARM, we can do e.g. lib.platforms.aarch64 to get only the 64-bit ARM platorms, but until now there were no equivalents for RISC-V.
2022-04-27lib/systems/platforms.nix: use "32" instead of "o32" for mips32 ABIAdam Joseph1-2/+2
There is only one ABI for 32-bit MIPS chips. Before mips64, it didn't really have a name. The 64-bit MIPS ABI comes in two flavors, "n64" and "n32". It is commonplace to refer to the old 32-bit ABI as "o32" (MIPS and SGI documents do this). However, when configuring gcc, one must use --with-abi=32, not --with-abi=o32. Let's keep GCC happy with this commit.
2022-04-25Merge pull request #168111 from a-m-joseph/lib-systems-inspect-powerpcSandro1-0/+1
lib/systems/inspect.nix: add isPower64
2022-04-15lib/systems/platforms: correctly import examples.nixArtturin1-1/+1
before: :p lib.systems failed with error: getting status of '...examples': no such file or directory
2022-04-10lib/systems/inspect.nix: add isPower64Adam Joseph1-0/+1
This commit adds an `isPower64` predicate to the two existing predicates for this architecture (`isPower` and `isPowerPC`). Note that `isPowerPC` matches only 32-bit machines, whereas `isPower` matches both 64-bit and 32-bit machines. Prior to this commit there was no single `isXXX` predicate for `powerpc64le`.
2022-03-10Ericson2314's suggestion here: ↵Adam Joseph2-22/+26
https://github.com/NixOS/nixpkgs/pull/161158#discussion_r822295406
2022-03-10This commit adds only comments to platforms.nix.Adam Joseph1-0/+10
2022-03-10comment: explain why gnuabi64 has a rustc.config but gnuabin32 does not.Adam Joseph1-1/+1
2022-03-10remove float = "hard" from mips entriesAdam Joseph1-12/+12
2022-03-10https://github.com/NixOS/nixpkgs/pull/161158#pullrequestreview-903824553Adam Joseph1-12/+12
2022-03-10lib/systems: add mips64el definitionsAdam Joseph6-4/+73
MIPS has a large space of {architecture,abi,endianness}; this commit adds all of them to lib/systems/platforms.nix so we can be done with it. Currently lib/systems/inspect.nix has a single "isMips" predicate, which is a bit ambiguous now that we will have both mips32 and mips64 support, with the latter having two ABIs. Let's add four new predicates (isMips32, isMips64, isMips64n32, and isMips64n64) and treat the now-ambiguous isMips as deprecated in favor of the more-specific predicates. These predicates are used mainly for enabling/disabling target-specific workarounds, and it is extremely rare that a platform-specific workaround is needed, and both mips32 and mips64 need exactly the same workaround. The separate predicates (isMips64n32 and isMips64n64) for ABI distinctions are, unfortunately, useful. Boost's user-scheduled threading (used by nix) does does not currently supports mips64n32, which is a very desirable ABI on routers since they rarely have more than 2**32 bytes of DRAM.
2022-03-07lib/systems: Fix uclibc float-abi being flippedLevi Wright1-2/+2
uclibceabihf and uclibceabi's float hardness was flipped, which causes many headaches
2021-12-16lib.systems.supported: remove aarch64-darwin from Tier 3 liststernenseemann1-2/+3
While it is a fact of life that aarch64-darwin is built on Hydra, it has never formally been elevated from the Tier 7 state it was originally assigned in RFC 0046. Since platform Tier status is not only descriptive, but also normative, a consensus to commit to supporting aarch64-darwin would need to be reached.
2021-12-09Merge pull request #149924 from Mic92/aarch64be-embeddedJörg Thalheim1-2/+2
pkgsCross.aarch64be-embedded: fix eval
2021-12-09pkgsCross.x86_64-netbsd-llvm: mark as brokenJörg Thalheim1-0/+1
2021-12-09pkgsCross.ppcle-embedded: fix evalJörg Thalheim1-1/+1
2021-12-09pkgsCross.aarch64be-embedded: fix evalJörg Thalheim1-1/+1
2021-11-10lib/systems: add x86_64-darwin hostPlatformJonathan Ringer1-0/+6
2021-10-28Merge pull request #139284 from r-burns/powernv-kernel-configRyan Burns1-3/+5
lib/systems: update powernv kernel config
2021-10-06lib.systems.supported.tier3: add aarch64-darwinzimbatm1-0/+1
aarch64-darwin is getting built by hydra