Commit Graph

131038 Commits

Author SHA1 Message Date
John Ericson
58ce59dd96 haskell infra: Allow overriding haskellSrc2nix 2018-05-31 16:29:02 -04:00
John Ericson
d7160f39bd Merge branch 'linux-pam-cross' into HEAD 2018-05-14 22:56:48 -04:00
John Ericson
29b62e07d6 pam: Remove crossAttrs
It turns out none of this stuff is needed. The docs aren't evenly built
properly anyways so the build trivially succeeds either way, due to what
looks like upstream misunderstanding automake. If I try to build the
docs manually in a cross shell (before and after this change), there's a
make rule error such that some HTML files aren't even attempted to be
built and then a copy fails.

Even if this was all fixed, these been a good number of cross fixes
upstream getting them to use CC_FOR_BUILD and other good stuff, so I
doubt such hacks would be needed.

Progress towards #40531 and #33302.
2018-05-14 22:28:37 -04:00
John Ericson
84868b8b06 misc hurd stuff: Get rid of crossConfig
This stuff is horribly bit-rotted anyways, but I'm getting rid of
crossConfig so it must be changed.
2018-05-14 20:47:08 -04:00
John Ericson
9be118223b misc mingw: Get rid of crossConfig and clean up
Style of dual implementation and headers derivations is take from
bb7067f882.
2018-05-14 20:32:42 -04:00
John Ericson
de169a5950 Merge commit '3a9654bfe29ebd987b7426faa25f00af1fab02c5' into HEAD 2018-05-14 14:20:40 -04:00
John Ericson
3a9654bfe2 gcc: Simplify this old Hurd condition
Steps towards getting rid of crossConfig.
2018-05-14 13:13:11 -04:00
John Ericson
f472dd7652 Revert "Revert "gcc, binutils: Get rid of 32-bit ARM configure flag exception""
And there's more reverts too. The previous commmit
d838afbc9376bdadb8c690eb00b425f3eeccdf2d to gnu-config finally solves
it!

This reverts commit 3ed545ab31.
2018-05-14 10:55:32 -04:00
John Ericson
29db817003 gnu-config: Update to support ARM and 4 quardruples
I recently upstreamed

 - https://git.savannah.gnu.org/cgit/config.git/commit/?id=50a0413a5ba9684aa9247444c60a5cea47c4435d
 - https://git.savannah.gnu.org/cgit/config.git/commit/?id=09df750b994963a47f7c450f74b7e3f8567a6355
2018-05-14 10:55:32 -04:00
John Ericson
eebd455dc0 linux stdenv: Update gnu-config on all non-x86
Not just Aarch64. Other non-x86 platforms might be old enough, but I am
about to update gnu-config to handle things better across the board.
2018-05-14 10:55:32 -04:00
John Ericson
29ef982af4 Merge commit '130a0cbde6feae6b51f35a007c78cc8a25a6c3c9' into strict-deps-base 2018-05-13 16:17:26 -04:00
Tuomas Tynkkynen
ba172467cc U-Boot: Disable parallel build
https://hydra.nixos.org/build/71880710
(cherry picked from commit 50dc85ed62)
(cherry picked from commit 91b09422cf6f8e44d3d06274761053d9e21d6fa2)
2018-05-13 16:12:11 -04:00
Tuomas Tynkkynen
d884ece1da U-Boot: Make ubootJetsonTK1 install even more files
(cherry picked from commit 4fe75d11b2)
(cherry picked from commit a68e60f450b5be76d40627066b2c34a0e2360fab)
2018-05-13 16:12:11 -04:00
Tuomas Tynkkynen
f2ea9e0ebf U-Boot: Add Pine64 build
(cherry picked from commit 4b77663edf)
(cherry picked from commit 1896fcff609d7b99b4be1781a5c9523193c33e4f)
2018-05-13 16:12:11 -04:00
Samuel Dionne-Riel
566d3feb4e U-Boot: Add SOPINE Baseboard build
This build is compatible with PINE A64-LTS.

[dezgeg changed the original device tree patch to v4 of the patch series
"sunxi: sync H3, H5, A64 DTs from mainline Linux" submitted to the
upstream mailing list by Andre Przywara. Also install the
u-boot-sunxi-with-spl.bin binary similar to 32-bit boards
since it's now being built by the upstream build system.]

(cherry picked from commit 2ff31f71ae)
(cherry picked from commit 176d151f4d98d54adf293ee58427da649f28452c)
2018-05-13 16:12:10 -04:00
Tuomas Tynkkynen
7dffe0d38c U-Boot: Add AArch64 QEMU build
See

https://github.com/u-boot/u-boot/blob/master/doc/README.qemu-arm

on how to use it.

(cherry picked from commit 6b069c656a)
(cherry picked from commit eff6d9628c9e0bae2096251f8e97789c0b9afe6f)
2018-05-13 16:12:10 -04:00
Ben Wolsieffer
b63124dfc5 uboot: fix cross-build of ubootTools
(cherry picked from commit 28fd7d9594)
(cherry picked from commit 4c669db598aba04b9a6dd3ecaf0811329d80a072)
2018-05-13 16:12:10 -04:00
Ben Wolsieffer
d50bcaa816 uboot: sheevplug and guruplug: use mainline U-Boot
These derivations have not seen any updates since they were created in 2010,
and some of their sources have disappeared. There are upstream configs for
these boards, so these are now used, and they build correctly. I have no way
of testing them, and I don't if anyone even uses either board with Nix anymore.

(cherry picked from commit 01020b3263)
(cherry picked from commit 48ade50d8ece09d3ff732b07f0facdcd78084ac3)
2018-05-13 16:12:08 -04:00
Ben Wolsieffer
2a450cec19 uboot: add patch to increase maximum path length in extlinux.conf
This fixes problems with cross compiled kernels failing to boot.

(cherry picked from commit 1f4bb8c61d)
(cherry picked from commit 828fdd61b9b5ae0d3c9253309f3d115210348096)
2018-05-13 16:09:00 -04:00
Ben Wolsieffer
d29202bc48 uboot: 2017.11 -> 2018.03, cross fixes
(cherry picked from commit 5804547243)
(cherry picked from commit 7c46833b047710f220971d7d7d3b1dbe6fed805b)
2018-05-13 16:09:00 -04:00
John Ericson
130a0cbde6 guile: Remove old crossAttrs
We fixed the linker issue with propagated dependencies.

(cherry picked from commit 515ca1a7c8)
2018-05-13 11:36:30 -04:00
Michael Alan Dorman
d77dab3ecc guile: Fix and clean up libtool propagation fixes
Fixes #37548

(cherry picked from commit 72984210ab)
2018-05-13 11:36:30 -04:00
Michael Alan Dorman
9a4cc93522 guile-1.8: Fix and clean up libtool propagation fixes
Fixes #37548

(cherry picked from commit 2119041dbf)
2018-05-13 11:36:29 -04:00
John Ericson
8415682658 guile: Fix cross more, including 1.8
(cherry picked from commit 76bc1d3fae)
2018-05-13 11:36:29 -04:00
Shea Levy
0fcad047b9 Guile: Fix cross-compilation
(cherry picked from commit f79fa77941)
2018-05-13 11:36:29 -04:00
John Ericson
f2004e6287 lib: Fix float handling for Aarch32
Forgot to adjust default so abi with explicit float attr would be used.
2018-05-12 15:18:31 -04:00
John Ericson
6f40d18d44 prebuilt android cc: Edit wrapper to pass the right -m flags for armv7a
(cherry picked from commit 827ef09140)
2018-05-12 15:16:16 -04:00
John Ericson
e3f6c6d18d lib: Add 32-bit Android platforms 2018-05-11 18:41:55 -04:00
John Ericson
341794a4b9 lib/systems: Sort platforms, and space CPUs 2018-05-11 15:02:18 -04:00
John Ericson
e98814461d glibc: Remove old-style nullable "cross" variable
Much better to just use {build,host}Platform directly.
2018-05-10 18:05:08 -04:00
John Ericson
1fe81a4bcd lib: Clean up float/fpu options
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.
2018-05-10 18:02:00 -04:00
John Ericson
c9f6a82b61 gcc: Factor out "platform flags" 2018-05-10 18:00:57 -04:00
John Ericson
a02be2bd85 treewide: Get rid of *Platform.arch
Use `parsed.cpu.name` or `platform.gcc.arch` instead.
2018-05-10 01:37:31 -04:00
John Ericson
a31984ecda uclibc: Bump to uclibc-ng 1.0.30 2018-05-10 00:17:44 -04:00
John Ericson
d65fe65616 uclibc: Fix eval 2018-05-10 00:17:43 -04:00
John Ericson
f063a860d6 xbursttools: Cleanup slightly 2018-05-09 23:40:13 -04:00
John Ericson
e42a7a5c0b lib/systems: Add uClibc just like MUSL 2018-05-09 23:39:23 -04:00
John Ericson
3fa0ba9177 lib/systems: Parse more arm cpu types 2018-05-09 18:57:39 -04:00
John Ericson
302c4c5f2d stdenv: Put back isArm, with deprecation notice.
This was always meant to be deprecated rather than removed.
2018-05-07 20:14:52 -04:00
John Ericson
b9acfb4ecf treewide: isArm -> isAarch32
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 ba52ae5048)
2018-04-25 15:50:41 -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
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
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
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