Commit Graph
100 Commits
Author SHA1 Message Date
John Ericson c66440c104 doc: Document config.allowUnsupportedSystem and its env var 2018-04-17 16:34:28 -04:00
John Ericson cb212cf549 meta: Add NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM for consistency 2018-04-17 16:02:50 -04:00
John Ericson 1a72330ab0 cc-wrapper: Utilize patched cctools ld for more robust macOS Sierra hack
Also fix numberous bugs, such as:

 - Not getting confused on more flags taking file arguments.

 - Ensuring children reexport their children, but the original
   binary/library doesn't.

 - Not spawning children when it turns out we just dynamically link
   under the threshold but our total number of inputs exceeeds it.

 - Children were always named `libunnamed-*`, when that name was
   supposed to be the last resort only.

ld-wrapper's own RPATH check hardcodes `.so`, but darwin uses `.dylib`
*and* (in practice due to lousy build systems) `.so`. We don't care
however because we never inject `--rpath` like that in practice on
Darwin. Hopefully someday we won't on linux either.
2018-04-13 13:17:03 -04:00
John Ericson 1001311280 cctools: Add alternative source for sierra hack
Source master rebase of my [PR #34].

Eventually, we might consider doing something for GNU binutils too, in
order that we switch (the normal) ld-wrapper to always use this to
leverage ld to resolve libraries, rather than faking it in bash.

[PR #34]: https://github.com/tpoechtrager/cctools-port/pull/34
2018-04-12 19:16:51 -04:00
John Ericson 01e1722e8f cctools: Make assert meta.broken instead
This more politely expresses the same thing
2018-04-12 19:15:47 -04:00
John Ericson ac4d74b6d9 hardening: Reindent 2018-04-10 16:33:47 -04:00
John Ericson 21818ae592 hardening: Tiny reindent 2018-04-10 16:33:47 -04:00
John Ericson 2364c22ec9 hardening: line order, spacing, and pointless quoting for consistency 2018-04-10 16:33:47 -04:00
John Ericson 4c76d87871 hardenning: Rejigger ifs and explicit declare and unset -v 2018-04-10 16:33:47 -04:00
John Ericson adaa110a72 binutils: No more darwin conditionals
Since at least d7bddc27b2, we've had a
situation where one should depend on:

 - `stdenv.cc.bintools`: for executables at build time
 - `libbfd` or `libiberty`: for those libraries
 - `targetPackages.cc.bintools`: for exectuables at *run* time
 - `binutils`: only for specifically GNU Binutils's executables,
   regardless of the host platform, at run time.

and that commit cleaned up this usage to reflect that. This PR flips the
switch so that:

 - `binutils` is indeed unconditionally GNU Binutils
 - `binutils-raw`, which previously served that role, is gone.

so that the correct usage will be enforced going forward and everything
is simple.

N.B. In a few cases `binutils-unwrapped` (which before and now was
unconditionally actual GNU binutils), rather than `binutils` was used to
replace old `binutils-raw` as it is friendly towards some cross
compilation usage by avoiding a reference to the next bootstrapping
change.
2018-04-03 13:34:52 -04:00
John Ericson 52f4be2c1f unixtools: Utilize meta.platforms 2018-03-27 20:26:10 -04:00
John Ericson f8ed783f4f meta: Simplify platform check logic
Code golf or readability, you decide
2018-03-27 11:59:59 -04:00
John Ericson 045de0af81 libiconv: Make setup hook work for cross 2018-03-23 13:32:55 -04:00
John Ericson 1482c3c8d8 gettext: Make setup hook work for cross 2018-03-23 12:07:11 -04:00
John Ericson 568b37384a Merge remote-tracking branch 'upstream/master' into staging 2018-03-22 16:08:22 -04:00
John Ericson 45e253cacb cross stdenv: Make depsBuildBuild overrideable by config too. 2018-03-20 15:58:09 -04:00
John Ericson 65e24f22e6 haskell-generic-builder: Default to window + unix platforms,
Since GHC is a cross compiler, it's perfectly possible to make haskell
binaries on platforms without GHCs. `windows ++ unix` seems good enough
for now.

Also don't default `hydraPlatforms` to `platforms`. The former must be a
list of systems (strings), but the latter is a list of systems or
patterns.
2018-03-20 13:02:53 -04:00
John Ericson e49c14c35b libatomic_ops: Allow Building on Windows too 2018-03-20 13:01:27 -04:00
John Ericson d9a1800239 lib: Add lib.platforms.windows 2018-03-20 12:47:45 -04:00
John Ericson 3c8ae01a45 lib: Make platforms.all actually match all platforms
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.
2018-03-20 12:46:19 -04:00
John Ericson 2ce3df3f5d Merge commit '543210751f46a4787fd0a5ef4c3bfa9a4b789e3c' into greppable 2018-03-20 12:37:11 -04:00
John Ericson 175d4ab1db lib: Make platform predicates greppable
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 88c04a8b6b)
2018-03-20 12:35:20 -04:00
John Ericson ec2aff0be6 lib: Messed up or operator precedence
Github broke oddly on my previous PR, so I tested and merged by hand.
Otherwise ofborg would have caught this.
2018-03-19 22:25:49 -04:00
John Ericson 88c04a8b6b lib: Make platform predicates greppable 2018-03-19 22:20:48 -04:00
John Ericson 5bb50fb9f6 Merge pull request #37397 from obsidiansystems/nixpkgs 2018-03-19 21:53:48 -04:00
John Ericson b9a720c524 Merge remote-tracking branch 'upstream/master' into fix-cross-jobs 2018-03-19 21:47:56 -04:00
John Ericson 192f4144b2 release-lib: Filter supportedSystems with meta.platforms-style patterns
Instead of intersecting system strings, we filter with the sort of
patterns used in `meta.platforms`.

Indicating this change `forTheseSystems` has been renamed to
`forMatchingSystems`, since the given list is now patterns to match, and
not the systems themselves. [Just as with `meta.platforms`, systems
strings are also supported for backwards compatibility.]

This is more flexible, and makes the `forMatchingSystems` and
packagePlatforms` cases more analogous.
2018-03-19 21:32:28 -04:00
John Ericson e547bd0dc4 lib: Factor in tiny bit of meta.platform checking
I need it in stdenv and release-lib, so that seems motivation enough.
2018-03-19 19:29:16 -04:00
John Ericson bbfa2f9701 lib: Split Darwin into macOS and iOS
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.
2018-03-19 12:02:49 -04:00
John Ericson eae19f3c28 release-lib: Adapt to work with new meta.platforms
`packagePlatforms` now filters `supportedSystems` with the new-style
`meta.platforms`, rather than just plopping it in as is.
2018-03-15 00:44:38 -04:00
John Ericson c26252af3e lib, stdenv: Check meta.platforms against host platform and be open world
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
2018-03-15 00:44:34 -04:00
John Ericson 4c52e34ca6 stdenv: Clean up check meta args 2018-03-14 18:58:07 -04:00
John Ericson f79f80dbf2 treewide: get rid of platforms.allBut
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.
2018-03-14 18:44:42 -04:00
John Ericson 2d1d83d836 pond: Simplify platform logic 2018-03-12 18:55:42 -04:00
John Ericson b152dcf852 pharo: Tighten source and simplify meta.platforms 2018-03-12 18:55:41 -04:00
John Ericson c208ca6387 robo3t: Simplify meta.platforms and don't refer to glibc directly 2018-03-12 18:55:41 -04:00
John Ericson 94cbd14120 nethack: Fix platform logic 2018-03-12 18:55:41 -04:00
John Ericson 59c656a421 dvdisaster: Fix sse2 logic for cross and improved meta.platforms 2018-03-12 18:55:41 -04:00
John Ericson 79d8353b5e treewide: Make shouldUsePackages copypasta use meta.available
The old way depended on old list-of-strings `meta.platforms`, and was
not good for cross.
2018-03-12 18:55:41 -04:00
John Ericson eeb8419c6a ceph: Fix --with-file-aio logic for new meta.platforms and cross 2018-03-12 18:55:41 -04:00
John Ericson dde80d705e qtbase: Fix x86_64-conditional logic
Now works with cross and old and new meta checks alike.
2018-03-12 18:55:41 -04:00
John Ericson 8d58008039 stdenv cross adapter: Get rid if selfNativeBuildInput
It is finally no longer used anywhere

Fixes #30587
2018-03-06 20:05:13 -05:00
John Ericson 76bc1d3fae guile: Fix cross more, including 1.8 2018-03-06 18:39:39 -05:00
John Ericson 3a672cb7d2 libiconv, ncurses: Add optional flags for minimal android variant 2018-02-27 17:56:31 -05:00
John Ericson 933e8663ad openjdk: Clean up platform conditionals 2018-02-26 21:17:32 -05:00
John Ericson 9a5171bd22 Merge remote-tracking branch 'upstream/master' into staging 2018-02-24 02:39:51 -05:00
John Ericson 7748972763 androidenv: Better platform conditionals 2018-02-24 01:43:10 -05:00
John Ericson fe5ae8b550 androidenv: Clean up whitespace 2018-02-24 01:43:10 -05:00
John Ericson 1c00a8afd7 libiberty, libbfd: Make hash less fickle
These shouldn't respond to targetPlatform, but previously did. The
reason is somewhat complex: they would rely on the sources of gcc and
binutils, respectively, which *do* depend on the target platform.
Obviously the source is the same in all cases, but when those packages
are no longer preserved from bootstrapping stages their `src` attributes
use a different fetchurl resulting in a changed hash.
2018-02-24 01:43:09 -05:00
John Ericson a26b46bd52 offrss: Fix for cross 2018-02-13 12:13:07 -05:00
John Ericson b8e8265db0 moreutils: Fix eval
Was broken in 561b9ca8ac.
2018-01-31 17:20:09 -05:00
John Ericson afb87a66b3 lib: Avoid double import 2018-01-31 00:13:11 -05:00
John Ericson ad78ba1efa lib: Better use the module type system in platform parsing
I need some module system types here so I can next fix meta-checks for
derivations. I'd like to use a "proper" record type here, but submodule
types seem overkill so holding off with ad-hoc stuff for now. In
practice, all I need for the next step are the `.check` functions so
this is good, especially as the submodule check function is shallow,
saving full inductive type-checking for a later step.
2018-01-30 22:03:06 -05:00
John Ericson 82ebace595 glibc: Fix Darwin build
Fix the failure caused in #34198 by a suggested change of mine. @vcunat
reported in [1].

[1]: https://github.com/NixOS/nixpkgs/pull/34198#issuecomment-361075911
2018-01-29 00:47:02 -05:00
John Ericson 57b01b1bcf lib, openssl: Get rid of openssl.system
We compute it on the fly, careful to avoid any mass rebuilds for now.
2018-01-26 21:22:00 -05:00
John Ericson 16a50f5a07 lib: Remove examples platforms' bigEndian attr
They still have `parsed.cpu.significantByte` which has the same info.
2018-01-26 21:22:00 -05:00
John Ericson 7d0d12e3e0 glibc: Remove two tiny old cross hacks
- Name is already suffixed

 - Env vars are already exported
2018-01-26 21:01:33 -05:00
John Ericson 71f814a889 lib, glibc: Get rid of withTLS
glibc removed the underlying flag in 2011 in
83cd14204559abbb52635006832eaf4d2f42514a [1].

This gets us one step closer to fixing #34274: the cross stdenv for
aarch64-unknown-linux-gnu at least evals now.

Thanks to @Dezgeg for doing all the research for this.

[1]: https://sourceware.org/git/?p=glibc.git;a=commit;h=83cd14204559abbb52635006832eaf4d2f42514a
2018-01-26 23:29:06 +02:00
John Ericson d1478c91c3 lib: Allow parsing platform configs with arch of {riscv,wasm}{32,64}
Also add `isRiscv` and `isWasm` predicates.
2018-01-26 12:44:05 -05:00
John Ericson 94a2af91eb doc: Cross chapter: Add note on why use example platforms 2018-01-26 12:38:34 -05:00
John Ericson e316ba1fc4 doc: chap cross: Make example command stick out more
It should be in a <programlisting>, not <command>, tag.
2018-01-26 12:33:14 -05:00
John Ericson a3bff14dbe Merge remote-tracking branch 'upstream/master' into staging 2018-01-22 16:20:24 -05:00
John Ericson 13739e6b9e release-cross: Try building on Windows too 2018-01-22 11:29:15 -05:00
John Ericson b612597c3d release-cross: Add a test for Haskell on Raspberry Pi and "Android"
Hello World with ghcHEAD. ghc822 to come after some patches.

Android will be turned into real Android...later.
2018-01-21 23:31:04 -05:00
John Ericson 81553124cf haskell infra: nativeGhc != ghc.bootPkgs.ghc
There's no reason to wait for non-binary native to *build* cross ghc,
but we want a nix-built GHC for Setup.hs or things won't work.
2018-01-21 23:31:04 -05:00
John Ericson 8560c025bc ghc 8.4.1: Reformat to move rev into src 2018-01-21 23:31:04 -05:00
John Ericson a2516efb26 ghcHEAD: Bump version ghc-8.5.20180118 2018-01-21 23:31:04 -05:00
John Ericson 23c29ebc90 ghc 8.2.2: Add bgamari's STRIP detection fix 2018-01-21 23:31:04 -05:00
John Ericson e760de8108 ghc: Predicate libiconv on not using glibc instead of Darwin 2018-01-21 23:31:03 -05:00
John Ericson 0eb3acaf38 ghc: echo -n mk/build.mk to avoid extra line 2018-01-21 23:27:38 -05:00
John Ericson 5a6b6b4ac5 ghc: Normalize derivations a bit before cross
These changes will affect the final derivation
2018-01-21 23:27:38 -05:00
John Ericson a18053bdfe Merge remote-tracking branch 'upstream/master' into staging 2018-01-18 14:17:58 -05:00
John Ericson 9bd437d4b4 fetchpatch: Add support for an arbitrary extra prefix
We still ensure the old and new ones start, respectfully, with `a/` and
`b/`. Use with `stripLen` to ensure tha the old `a/` and `/b` are gone
if a new prefix is added.
2018-01-18 12:19:49 -05:00
John Ericson 5a754e75b4 Merge branch 'ericson2314-cross-master' into staging 2018-01-16 13:05:39 -05:00
John Ericson 888404f11b treewide: Fix deps in a few other fixed output derivations 2018-01-10 11:18:44 -05:00
John Ericson 940c4fa3f5 treewide: Fetchers should use stdenvNoCC. 2018-01-10 11:18:44 -05:00
John Ericson 7a3a8b8529 fetchurl: Should use buildPackages.curl for build-time dep 2018-01-10 11:18:44 -05:00
John Ericson 3d59b4d285 treewide: Fixed output fetch* derivations should use nativeBuildInputs 2018-01-09 20:14:46 -05:00
John Ericson c98e6b6771 gcc, binutils: Narrow down ARM hack so only native builds are affected 2018-01-09 17:25:49 -05:00
John Ericson 0170512531 Merge branch 'ericson2314-cross-master' 2018-01-09 17:24:29 -05:00
John Ericson c3052295fa Merge commit '3ed545ab31146e607c57649936c75869d6aa9ba2' into ericson2314-cross-master 2018-01-09 17:19:27 -05:00
John Ericson 567feb3a54 stdenv: Fix doCheck and doInstallCheck logic
It's host != build, not host != target
2018-01-09 16:22:58 -05:00
John Ericson 133b4658df treewide: Simplify some doCheck calls
In anticipation of what I outline in #33599, I only simplify exactly those
`doCheck`s which are equal to `hostPlatform != buildPlatform`. I also stick a
comment next to them so I can grep for them later.
2018-01-09 12:37:38 -05:00
John Ericson 4e907dbca1 stdenv: Force doCheck and doInstallCheck to be false when we are cross compiling
I hope this will be a temporary measure. If there is consensus around
issue #33599, then we can follow an explicit `dontCheck`, but default to
not checking during cross builds when none is given.
2018-01-09 12:37:12 -05:00
John Ericson 9676635faf Merge branch 'ericson2314-cross-master' 2018-01-08 02:58:03 -05:00
John Ericson bb414f4851 Merge commit '0e3be42' into ericson2314-cross-master 2018-01-08 02:36:34 -05:00
John Ericson ec2f121bed ghcWithPackages: Fix comment URL 2018-01-04 14:49:52 -05:00
John Ericson dea9fceb0b ghcWithPackages: Get rid of unused passthrough
If you want the whole packages set...don't use ghcWithPackages.
2018-01-04 14:49:50 -05:00
John Ericson 7b781bce59 Merge branch 'ericson2314-cross-base' 2018-01-04 14:30:18 -05:00
John Ericson 6bdf9a7f6d ghcWithPackages: Don't bother with ignoreCollisions cause we don't use buildEnv
SymlinkJoin doesn't know or care about this.
2018-01-04 11:45:36 -05:00
John Ericson 0e23478a7e Merge commit '9361b7eb85045c7e7dd20d2ddd716a9d10bf4bd4' into ericson2314-cross-base 2018-01-03 17:20:40 -05:00
John Ericson 3fb5fd0060 ghc: Normalize derivations in hash-preserving ways 2018-01-03 17:04:19 -05:00
John Ericson 0df29e1259 ghc: Noramlized source URLs 2018-01-03 17:04:19 -05:00
John Ericson 5e31e828f8 ghcWithPackages: Fix cross, and avoid needless C compiler 2018-01-03 01:24:57 -05:00
John Ericson faa4b45a1e ghc 8.2.2, head: Inline common* bindings
Cross case purposely changed as it will be rewritten anyways. But no
native hashes should be changed.
2018-01-02 21:00:23 -05:00
John Ericson a224dfc253 haskell infra: Fix cross as much as possible without changing hashes 2018-01-02 21:00:13 -05:00
John Ericson a5cc983c45 ghc: Clean up, and add passthru.targetPrefix, in preparation for cross
No hashes should be changed.
2018-01-02 19:50:38 -05:00
John Ericson e3993464d9 Merge commit 'db475df127f8c82853181c46501c142ff020c3d8' into ericson2314-cross-base 2018-01-02 19:50:28 -05:00
John Ericson cb8349f59f Merge branch 'pharo' into ericson2314-cross-base 2018-01-02 18:59:21 -05:00
John Ericson 2b4502c78e Merge @LnL7's pharo-vm darwin eval fix from staging
Not a mass-rebuild
2018-01-02 18:54:35 -05:00