summary refs log tree commit diff
path: root/lib/systems
Commit message (Collapse)AuthorAge
* lib.systems.amd64-netbsd: removeAlyssa Ross2022-06-08
| | | | | | 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.
* Merge pull request #174917 from alyssais/scaleway-c1sternenseemann2022-05-27
|\ | | | | lib.systems: drop scaleway-c1
| * lib.systems: drop scaleway-c1Alyssa Ross2022-05-27
| | | | | | | | | | | | | | | | 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
* | lib/systems/inspect.nix: remove isPowerPCAdam Joseph2022-05-25
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* stdenv: fix evaluation of platform emulatorNick Cao2022-05-24
|
* lib.systems: inform isCompatible users about removalsternenseemann2022-05-23
|
* lib.systems.elaborate: expose canExecute predicate over isCompatiblesternenseemann2022-05-23
| | | | | | | | | | 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.
* lib/systems/parse: don't consider mode switching CPUs compatiblesternenseemann2022-05-23
| | | | | | | | | | 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.
* lib.systems: remove supported, replace with flakeExposedsternenseemann2022-05-23
| | | | | | | | | | 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.
* systems: support cross-compiling for Renesas RX microcontrollers (#173858)yvt2022-05-22
|
* Merge pull request #161156 from ↵Rick van Schijndel2022-05-04
|\ | | | | | | | | a-m-joseph/abort-on-failed-platform-detection-instead-of-silently-assuming-pc platforms.nix: use {} on failed detection instead of silently assuming pc
| * platforms.nix: use {} on failed detection instead of silently assuming pcAdam Joseph2022-05-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | lib.systems: add riscv{32,64} sets and filtersAlyssa Ross2022-04-28
| | | | | | | | | | | | 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.
* | Merge pull request #168111 from a-m-joseph/lib-systems-inspect-powerpcSandro2022-04-25
|\ \ | | | | | | lib/systems/inspect.nix: add isPower64
| * | lib/systems/inspect.nix: add isPower64Adam Joseph2022-04-10
| |/ | | | | | | | | | | | | | | | | 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`.
* / lib/systems/platforms: correctly import examples.nixArtturin2022-04-15
|/ | | | | before: :p lib.systems failed with error: getting status of '...examples': no such file or directory
* Ericson2314's suggestion here: ↵Adam Joseph2022-03-10
| | | | https://github.com/NixOS/nixpkgs/pull/161158#discussion_r822295406
* This commit adds only comments to platforms.nix.Adam Joseph2022-03-10
|
* comment: explain why gnuabi64 has a rustc.config but gnuabin32 does not.Adam Joseph2022-03-10
|
* remove float = "hard" from mips entriesAdam Joseph2022-03-10
|
* https://github.com/NixOS/nixpkgs/pull/161158#pullrequestreview-903824553Adam Joseph2022-03-10
|
* lib/systems: add mips64el definitionsAdam Joseph2022-03-10
| | | | | | | | | | | | | | | | | | | | | | 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.
* lib/systems: Fix uclibc float-abi being flippedLevi Wright2022-03-07
| | | uclibceabihf and uclibceabi's float hardness was flipped, which causes many headaches
* lib.systems.supported: remove aarch64-darwin from Tier 3 liststernenseemann2021-12-16
| | | | | | | | 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.
* Merge pull request #149924 from Mic92/aarch64be-embeddedJörg Thalheim2021-12-09
|\ | | | | pkgsCross.aarch64be-embedded: fix eval
| * pkgsCross.ppcle-embedded: fix evalJörg Thalheim2021-12-09
| |
| * pkgsCross.aarch64be-embedded: fix evalJörg Thalheim2021-12-09
| |
* | pkgsCross.x86_64-netbsd-llvm: mark as brokenJörg Thalheim2021-12-09
|/
* lib/systems: add x86_64-darwin hostPlatformJonathan Ringer2021-11-10
|
* Merge pull request #139284 from r-burns/powernv-kernel-configRyan Burns2021-10-28
|\ | | | | lib/systems: update powernv kernel config
| * lib/systems: update powernv kernel configRyan Burns2021-09-28
| | | | | | | | | | | | | | | | PowerNV was looking for a nonexisting zImage file. Remove unnecessary .file / .installTarget. Also add config options needed for default minimal NixOS config and QEMU VirtIO/VirtFS devices.
* | lib.systems.supported.tier3: add aarch64-darwinzimbatm2021-10-06
| | | | | | | | aarch64-darwin is getting built by hydra
* | lib: add list of supported systems (#140428)Jonas Chevalier2021-10-05
|/ | | Adds the first 3 tiers of RFC0046 that are being used in flake.nix.
* lib/systems: add minimal s390x-linux cross-compile supportSergei Trofimovich2021-09-09
| | | | | | | | | | | Tested basic functionality as: $ nix-build --arg crossSystem '{ config = "s390x-unknown-linux-gnu"; }' -A re2c $ file ./result/bin/re2c $ ./result/bin/re2c: ELF 64-bit MSB executable, IBM S/390, version 1 (SYSV), dynamically linked, interpreter ...-gnu-2.33-50/lib/ld64.so.1, for GNU/Linux 2.6.32, not stripped $ qemu-s390x ./result/bin/re2c --version re2c 2.2
* Merge pull request #134763 from r-burns/fix-scalewayLuke Granger-Brown2021-08-21
|\ | | | | lib/systems: fix scaleway-c1 platform
| * lib/systems: fix scaleway-c1 platformRyan Burns2021-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This regressed in 9c213398b312e0f0bb9cdf05090fd20223a82ad0 The recursiveUpdate gave the platform both gcc.cpu and gcc.arch attrs instead of only gcc.cpu. This is invalid; gcc configuration fails with: ``` Switch "--with-arch" may not be used with switch "--with-cpu" ``` So we revert to using `//` to retain only gcc.cpu (which is more specific than the processor arch).
* | lib.systems.inspect.patterns.isGnu: initAlyssa Ross2021-08-19
|/ | | | | | | | | This allows checking e.g. stdenv.hostPlatform.isGnu, just like isMusl or isUClibc. It was already possible to check for glibc with stdenv.hostPlatform.libc == "glibc", but when that doesn't line up with how every other platform check works, this is apparently sufficiently non-obvious that we've ended up with stuff like adding glibc.static if !isMusl, which is obviously wrong.
* lib.systems: add m68k-netbsd supportAlyssa Ross2021-08-01
| | | | | | | m68k was recently added for Linux and none, but NetBSD also supports m68k. Nothing will build yet, but I want to make sure we at least encode the existence of NetBSD support for every applicable architecture we support for other operating systems.
* lib.systems.doubles: re-sortAlyssa Ross2021-08-01
| | | | These were alphabetically sorted until m68k and s390 were added.
* lib/systems/platforms: armv7l-hf-multiplatform: fix kernel buildBen Wolsieffer2021-07-30
| | | | | autoModules triggers a build system bug where ks8851_mll needs to be built-in if ks8851 is also built-in.
* Initial implementation of s390 cross-compileBen Siraphob2021-07-25
|
* Initial implementation of m68k cross-compileBen Siraphob2021-07-24
|
* mesaPlatforms: Welcome riscv64-linux to the familyZhaofeng Li2021-06-12
|
* lib.systems.parsed: add "elf" for some NetBSD archsAlyssa Ross2021-06-06
| | | | | | | In Autoconf, some old NetBSD targets like "i686-unknown-netbsd" are interpreted as a.out, not elf, and virtually nothing supports it. We need to specify e.g. "i686-unknown-netbsdelf" to get the right behaviour.
* lib.systems.parse.kernels: fix typo in commentAlyssa Ross2021-06-06
|
* platforms: Enable ftrace support for RISC-VZhaofeng Li2021-06-01
| | | | Support has landed in mainline for a while.
* platforms: Build flat kernel image for RISC-VZhaofeng Li2021-06-01
| | | | | | | | Newer bootloaders for RISC-V (i.e., OpenSBI + U-Boot) support flat and compressed kernel images but not vmlinux. Therefore, let's build "Image" like what we do with aarch64. Also copy DTBs while we are at it.
* darwin: use "11.0" as sdk and minimum version on aarch64-darwinAndrew Childs2021-05-17
|
* lib/systems/platforms: add Apple M1Andrew Childs2021-05-17
|
* Add crossPkgs.aarch64-darwinMoritz Angermann2021-05-17
|