summary refs log tree commit diff
path: root/lib/systems
Commit message (Collapse)AuthorAge
* lib: Fix `nix-env -qaP -f . --xml --meta`John Ericson2018-05-29
| | | | A merge undid my fix in d437f2c365a12fb3894eb87f52decf53c745f475.
* Merge branch 'master' into stagingJan Malakhovski2018-05-26
|\ | | | | | | | | | | Fixed conflicts: - lib/systems/for-meta.nix: in favor of staging - pkgs/os-specific/darwin/xcode/default.nix: in favor of master
| * lib: Fix `nix-env -qaP -f . --xml --meta`John Ericson2018-05-24
| | | | | | | | | | The function value cannot be serialized so nix-env was mad. Turns out we can just remove it like we do in `lib/systems/inspect.nix`.
* | Merge remote-tracking branch 'upstream/master' into stagingTuomas Tynkkynen2018-05-18
|\| | | | | | | | | Conflicts: pkgs/top-level/all-packages.nix
| * androidndk: Fix usage as crossSystemBastian Köcher2018-05-17
| |
* | Merge commit '92b7a814f26ee1d37e989431c18518c67285a332' into stagingJohn Ericson2018-05-13
|\|
| * Merge branch 'fix-gcc-with-float'John Ericson2018-05-12
| |\
| | * lib: Fix float handling for Aarch32John Ericson2018-05-12
| | | | | | | | | | | | Forgot to adjust default so abi with explicit float attr would be used.
| | * prebuilt android cc: Edit wrapper to pass the right -m flags for armv7aJohn Ericson2018-05-12
| | | | | | | | | | | | (cherry picked from commit 827ef0914089e1a2bba140b49e1311eff28cc156)
| * | lib/system: Remove float from androideabiJohn Ericson2018-05-11
| | | | | | | | | | | | | | | | | | | | | | | | There are two different official variations which differ in their float support, so such a blanket statement is invalid. `lib.systems.platforms.*android` already handles each case correctly. Correcting an error in 827ef0914089e1a2bba140b49e1311eff28cc156.
| * | prebuilt android cc: Edit wrapper to pass the right -m flags for armv7aJohn Ericson2018-05-11
| | |
| * | lib/systems: Add assertion to "android" ABIJohn Ericson2018-05-11
| | | | | | | | | | | | This is analogous to the GNU assertion.
| * | lib/systems/inspect: Fix after assertionsJohn Ericson2018-05-11
| | | | | | | | | | | | | | | Function are never equal in Nix, so we need to filter out this attribute in ABIs.
| * | Merge pull request #40385 from obsidiansystems/lib-android-platformsJohn Ericson2018-05-11
| |\| | | | | | | lib: Add 32-bit Android platforms
| | * lib: Add 32-bit Android platformsJohn Ericson2018-05-11
| | |
* | | Merge remote-tracking branch 'upstream/master' into stagingJohn Ericson2018-05-11
|\| |
| * | Merge pull request #40378 from obsidiansystems/lib-platform-sortJohn Ericson2018-05-11
| |\| | | | | | | lib/systems: Sort platforms, and space CPUs
| | * lib/systems: Sort platforms, and space CPUsJohn Ericson2018-05-11
| | |
* | | Merge remote-tracking branch 'upstream/master' into stagingJohn Ericson2018-05-11
|\| |
| * | Merge remote-tracking branch 'upstream/master' into lib-floatJohn Ericson2018-05-10
| |\ \ | | |/ | |/|
| * | lib: Clean up float/fpu optionsJohn Ericson2018-05-10
| | | | | | | | | | | | | | | | | | ARM ABIs now have a float field. This is used as a fallback to lessen our use of `platform.gcc.float`. I didn't know what the MIPs convention is so I kept using `platform.gcc.float` in that case.
* | | Merge remote-tracking branch 'upstream/master' into stagingJohn Ericson2018-05-10
|\ \ \ | | |/ | |/|
| * | lib/systems: Prohibit "gnu" ABI (*-gnu) with 32-bit ARMJohn Ericson2018-05-10
| | | | | | | | | | | | It is ambiguous, and therefore banned within GCC.
* | | Merge commit 'feb648ce59ffbed94c58133eb7aa2761992a35e1' into stagingJohn Ericson2018-05-10
|\| |
| * | Merge commit '70963b382f3f820ba6d3bc3b3aaf50a2957ec1ff' into ↵John Ericson2018-05-10
| |\ \ | | |/ | |/| | | | lib-platform-simplify
| * | treewide: Get rid of `*Platform.arch`John Ericson2018-05-10
| | | | | | | | | | | | Use `parsed.cpu.name` or `platform.gcc.arch` instead.
| * | xbursttools: Cleanup slightlyJohn Ericson2018-05-09
| | |
| * | lib/systems: Add uClibc just like MUSLJohn Ericson2018-05-09
| | |
| * | lib/systems: Parse more arm cpu typesJohn Ericson2018-05-09
| | |
* | | lib.systems.gnu: Accept gnueabi as a gnu platformBen Gamari2018-05-03
| |/ |/|
* | lib/systems: Fix eval for iphone32* examplesJohn Ericson2018-05-01
| | | | | | | | Whoops messed up 9a845de873dfcc31f360a08f1b1f786c6f649c7d slightly.
* | lib/systems: Update iOS examplesJohn Ericson2018-05-01
| | | | | | | | | | | | The commented-out configs are @shlevy's old known-good ones. I changed them as needed to play nice with lib.systems.parse but did not test so leaving them as comments for now.
* | Merge remote-tracking branch 'upstream/master' into aarch32John Ericson2018-04-30
|\ \ | |/ |/|
| * treewide: isArm -> isAarch32John Ericson2018-04-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Following legacy packing conventions, `isArm` was defined just for 32-bit ARM instruction set. This is confusing to non packagers though, because Aarch64 is an ARM instruction set. The official ARM overview for ARMv8[1] is surprisingly not confusing, given the overall state of affairs for ARM naming conventions, and offers us a solution. It divides the nomenclature into three levels: ``` ISA: ARMv8 {-A, -R, -M} / \ Mode: Aarch32 Aarch64 | / \ Encoding: A64 A32 T32 ``` At the top is the overall v8 instruction set archicture. Second are the two modes, defined by bitwidth but differing in other semantics too, and buttom are the encodings, (hopefully?) isomorphic if they encode the same mode. The 32 bit encodings are mostly backwards compatible with previous non-Thumb and Thumb encodings, and if so we can pun the mode names to instead mean "sets of compatable or isomorphic encodings", and then voilà we have nice names for 32-bit and 64-bit arm instruction sets which do not use the word ARM so as to not confused either laymen or experienced ARM packages. [1]: https://developer.arm.com/products/architecture/a-profile
| * Merge pull request #39172 from obsidiansystems/ios-crossJohn Ericson2018-04-19
| |\ | | | | | | ios-sdk-pkgs: Init from iOS SDK from XCode
| | * ios-sdk-pkgs: Init from iOS SDK from XCodeKen Micklas2018-04-19
| | |
| * | Merge pull request #38485 from obsidiansystems/nixos-nixpkgs-optionsJohn Ericson2018-04-19
| |\ \ | | |/ | |/| nixpkgs module: Clean up platform options
| | * nixpkgs module: Clean up platform optionsJohn Ericson2018-04-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - `localSystem` is added, it strictly supercedes system - `crossSystem`'s description mentions `localSystem` (and vice versa). - No more weird special casing I don't even understand TEMP
| * | Fix a typo: types.openSignifiantByte -> types.openSignificantByteJohn Wiegley2018-04-13
| |/
| * libseccomp: Disable only on RISC-V if Linux.Shea Levy2018-03-27
| | | | | | | | | | | | The isSeccomputable flag treated Linux without seccomp as just a normal variant, when it really should be treated as a special case incurring complexity debt to support.
| * kexectools: Disable only on RISC-V if Linux.Shea Levy2018-03-27
| | | | | | | | | | | | The isKexecable flag treated Linux without kexec as just a normal variant, when it really should be treated as a special case incurring complexity debt to support.
| * riscv-pk: Set platforms properlyShea Levy2018-03-24
| |
| * lib: Add `lib.platforms.windows`John Ericson2018-03-20
| |
| * lib: Make `platforms.all` actually match all platformsJohn Ericson2018-03-20
| | | | | | | | | | | | Otherwise obscure cross-compilations are hampered. `all` breaks all but the initial derivation (which we can't even write yet) in an open world setting however, so we really shouldn't have it.
| * lib: Make platform predicates greppableJohn Ericson2018-03-19
| |
| * lib: Split Darwin into macOS and iOSJohn Ericson2018-03-19
| | | | | | | | | | | | | | | | | | | | | | | | I noticed LLVM accepts `ios` as its own OS in platform triples; a recent change as far as I know. I see it also accepts `macos*` for macOS (formerly OS X). If it's now customary to distinguish iOS like so (rather than guessing from the aarch, lets add both so our OSes are still disjoint, and make Darwin a family instead. But changing the config everywhere would probably be a mass rebuild, and I'm not sure how well other software supports OSes besides "darwin", so I'm keeping that the default name for macOS for now.
* | treewide: isArm -> isAarch32John Ericson2018-04-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Following legacy packing conventions, `isArm` was defined just for 32-bit ARM instruction set. This is confusing to non packagers though, because Aarch64 is an ARM instruction set. The official ARM overview for ARMv8[1] is surprisingly not confusing, given the overall state of affairs for ARM naming conventions, and offers us a solution. It divides the nomenclature into three levels: ``` ISA: ARMv8 {-A, -R, -M} / \ Mode: Aarch32 Aarch64 | / \ Encoding: A64 A32 T32 ``` At the top is the overall v8 instruction set archicture. Second are the two modes, defined by bitwidth but differing in other semantics too, and buttom are the encodings, (hopefully?) isomorphic if they encode the same mode. The 32 bit encodings are mostly backwards compatible with previous non-Thumb and Thumb encodings, and if so we can pun the mode names to instead mean "sets of compatable or isomorphic encodings", and then voilà we have nice names for 32-bit and 64-bit arm instruction sets which do not use the word ARM so as to not confused either laymen or experienced ARM packages. [1]: https://developer.arm.com/products/architecture/a-profile (cherry picked from commit ba52ae50488de85a9cf60a3a04f1c9ca7122ec74)
* | lib: Make platform predicates greppableJohn Ericson2018-03-20
|/ | | | | | | Should have commited on here and on merged master to begin with, but I didn't, so instead I cherry-pick. (cherry picked from commit 88c04a8b6b6714a61c8a28ec8bbd5ecf580ed2c7)
* lib, stdenv: Check `meta.platforms` against host platform and be open worldJohn Ericson2018-03-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | First, we need check against the host platform, not the build platform. That's simple enough. Second, we move away from exahustive finite case analysis (i.e. exhaustively listing all platforms the package builds on). That only work in a closed-world setting, where we know all platforms we might build one. But with cross compilation, we may be building for arbitrary platforms, So we need fancier filters. This is the closed world to open world change. The solution is instead of having a list of systems (strings in the form "foo-bar"), we have a list of of systems or "patterns", i.e. attributes that partially match the output of the parsers in `lib.systems.parse`. The "check meta" logic treats the systems strings as an exact whitelist just as before, but treats the patterns as a fuzzy whitelist, intersecting the actual `hostPlatform` with the pattern and then checking for equality. (This is done using `matchAttrs`). The default convenience lists for `meta.platforms` are now changed to be lists of patterns (usually a single pattern) in `lib/systems/for-meta.nix` for maximum flexibility under this new system. Fixes #30902
* treewide: get rid of platforms.allButJohn Ericson2018-03-14
| | | | | | | Negative reasoning like `allBut` is a bad idea with an open world of platforms. Concretely, if we add a new, quite different sort of platform, existing packages with `allBut` will claim they work on it even though they probably won't.