Commit Graph

460 Commits

Author SHA1 Message Date
John Ericson
bf17d6dacf top-level: Introduce buildPackages for resolving build-time deps
[N.B., this package also applies to the commits that follow it in the same
PR.]

In most cases, buildPackages = pkgs so things work just as before. For
cross compiling, however, buildPackages is resolved as the previous
bootstrapping stage. This allows us to avoid the mkDerivation hacks cross
compiling currently uses today.

To avoid a massive refactor, callPackage will splice together both package
sets. Again to avoid churn, it uses the old `nativeDrv` vs `crossDrv` to do
so. So now, whether cross compiling or not, packages with get a `nativeDrv`
and `crossDrv`---in the non-cross-compiling case they are simply the same
derivation. This is good because it reduces the divergence between the
cross and non-cross dataflow. See `pkgs/top-level/splice.nix` for a comment
along the lines of the preceding paragraph, and the code that does this
splicing.

Also, `forceNativeDrv` is replaced with `forceNativePackages`. The latter
resolves `pkgs` unless the host platform is different from the build
platform, in which case it resolves to `buildPackages`. Note that the
target platform is not important here---it will not prevent
`forcedNativePackages` from resolving to `pkgs`.

--------

Temporarily, we make preserve some dubious decisions in the name of preserving
hashes:

Most importantly, we don't distinguish between "host" and "target" in the
autoconf sense. This leads to the proliferation of *Cross derivations
currently used. What we ought to is resolve native deps of the cross "build
packages" (build = host != target) package set against the "vanilla
packages" (build = host = target) package set. Instead, "build packages"
uses itself, with (informally) target != build in all cases.

This is wrong because it violates the "sliding window" principle of
bootstrapping stages that shifting the platform triple of one stage to the
left coincides with the next stage's platform triple. Only because we don't
explicitly distinguish between "host" and "target" does it appear that the
"sliding window" principle is preserved--indeed it is over the reductionary
"platform double" of just "build" and "host/target".

Additionally, we build libc, libgcc, etc in the same stage as the compilers
themselves, which is wrong because they are used at runtime, not build
time. Fixing this is somewhat subtle, and the solution and problem will be
better explained in the commit that does fix it.

Commits after this will solve both these issues, at the expense of breaking
cross hashes. Native hashes won't be broken, thankfully.

--------

Did the temporary ugliness pan out? Of the packages that currently build in
`release-cross.nix`, the only ones that have their hash changed are
`*.gcc.crossDrv` and `bootstrapTools.*.coreutilsMinimal`. In both cases I
think it doesn't matter.

 1. GCC when doing a `build = host = target = foreign` build (maximally
    cross), still defines environment variables like `CPATH`[1] with
    packages.  This seems assuredly wrong because whether gcc dynamically
    links those, or the programs built by gcc dynamically link those---I
    have no idea which case is reality---they should be foreign. Therefore,
    in all likelihood, I just made the gcc less broken.

 2. Coreutils (ab)used the old cross-compiling infrastructure to depend on
    a native version of itself. When coreutils was overwritten to be built
    with fewer features, the native version it used would also be
    overwritten because the binding was tight. Now it uses the much looser
    `BuildPackages.coreutils` which is just fine as a richer build dep
    doesn't cause any problems and avoids a rebuild.

So, in conclusion I'd say the conservatism payed off. Onward to actually
raking the muck in the next PR!

[1]: https://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html
2017-01-24 11:37:56 -05:00
Nicolas B. Pierron
da8cf2662a Fix missing overlays argument in stdenv/linux/default.nix 2017-01-16 01:17:33 +01:00
Nicolas B. Pierron
f5dfe78a1e Add overlays mechanism to Nixpkgs.
This patch add a new argument to Nixpkgs default expression named "overlays".

By default, the value of the argument is either taken from the environment variable `NIXPKGS_OVERLAYS`,
or from the directory `~/.nixpkgs/overlays/`.  If the environment variable does not name a valid directory
then this mechanism would fallback on the home directory.  If the home directory does not exists it will
fallback on an empty list of overlays.

The overlays directory should contain the list of extra Nixpkgs stages which would be used to extend the
content of Nixpkgs, with additional set of packages.  The overlays, i-e directory, files, symbolic links
are used in alphabetical order.

The simplest overlay which extends Nixpkgs with nothing looks like:

```nix
self: super: {
}
```

More refined overlays can use `super` as the basis for building new packages, and `self` as a way to query
the final result of the fix-point.

An example of overlay which extends Nixpkgs with a small set of packages can be found at:
  https://github.com/nbp/nixpkgs-mozilla/blob/nixpkgs-overlay/moz-overlay.nix

To use this file, checkout the repository and add a symbolic link to
the `moz-overlay.nix` file in `~/.nixpkgs/overlays` directory.
2017-01-16 01:17:33 +01:00
John Ericson
ff35560460 linux stdenv: Inline stage funs to conform to new convention
Code is just moved around
2017-01-13 13:23:26 -05:00
John Ericson
b10f415c21 linux stdenv: Remove stray use of stage0 to bootstrap more elegantly 2017-01-13 13:23:26 -05:00
John Ericson
6a45e911c4 linux stdenv: Utilize overrides and prevStage better
`gcc-unwrapped` basically replaces `gccPlain`. It may seem like an ugly
polution to stick it in all-packages, but a future PR will enshrine this
`*-unwrapped` pattern. In any event, the long term goal is stdenvs might
need to tweak how compilers are booted and wrapped, but the code to build
the unwrapped compilers themselves should be generic.
2017-01-13 13:23:25 -05:00
John Ericson
3e197f7d81 top-level: Normalize stdenv booting
Introduce new abstraction, `stdenv/booter.nix` for composing bootstraping
stages, and use it everywhere for consistency. See that file for more doc.

Stdenvs besides Linux and Darwin are completely refactored to utilize this.
Those two, due to their size and complexity, are minimally edited for
easier reviewing.

No hashes should be changed.
2017-01-13 13:23:23 -05:00
John Ericson
0ef8b69d12 top-level: Modernize stdenv.overrides giving it self and super
Document breaking change in 17.03 release notes
2017-01-13 10:36:11 -05:00
Tuomas Tynkkynen
bde8632106 coreutils: Build with libattr to support xattrs
Fixes #21649
2017-01-05 00:55:35 +02:00
John Ericson
7960a1b1b8 linux stdenv: Avoid assert false
On one hand, don't want to pass garbage that affects hash, on the other
hand footguns are bad.

Now, factored out the derivation so only need to pass in what is used.
2016-12-15 17:09:29 -05:00
John Ericson
670256dc39 linux stdenv: Rename the bootstrap directory to bootstrap-files 2016-12-15 17:05:39 -05:00
John Ericson
a94af71da7 linux stdenv: Fix assert that broke tests...and hydra 2016-12-15 16:45:08 -05:00
John Ericson
5c6234a7d3 top-level: Allow manually specifying a stdenv, and fix stdenv tests
- The darwin test can now force the use of the freshly-booted darwin stdenv
 - The linux test now passes enough dummy arguments

This may make debugging harder, if so, check out #20889
2016-12-03 17:21:07 -08:00
John Ericson
4751d9e5ad top-level: turn the screw
- Non-cross stdenvs are honest and assert that `crossSystem` is null

 - `crossSystem` is a mandatory argument to top-level/stage.nix, just like
   `system` and `platform`

 - Broken default arguments on stdenvs for testing are gone.

 - All stdenvs (but little-used stdenvNix) take the same arguments for easy
   testing.
2016-12-01 11:24:33 -05:00
John Ericson
39753f5360 top-level: Close over fewer arguments for stdenv stages
This makes the flow of data easier to understand. There's little downside
because the args in question are already inspected by the stdenvs.

cross-compiling in particular is simpler because we don't need to worry
about overriding the config closed over by `allPackages`.
2016-11-30 19:11:03 -05:00
John Ericson
d240a0da1a top-level: Remove cycles: stdenv calls in top-level but not vice versa
This commit changes the dependencies of stdenv, and clean-up the stdenv
story by removing the `defaultStdenv` attribute as well as the `bootStdenv`
parameter.

Before, the final bootstrapping stage's stdenv was provided by
all-packages, which was iterating multiple times over the
top-level/default.nix expression, and non-final bootstrapping stages'
stdenvs were explicitly specified with the `bootStdenv` parameter.

Now, all stages' stdenvs are specified with the `stdenv` parameter.
For non-final bootstrapping stages, this is a small change---basically just
rename the parameter.
For the final stage, top-level/default.nix takes the chosen stdenv and
makes the final stage with it.

`allPackages` is used to make all bootstrapping stages, final and
non-final alike. It's basically the expression of `stage.nix` (along with a
few partially-applied default arguments)

Note, the make-bootstrap-tools scripts are temporarily broken
2016-11-30 19:10:59 -05:00
Tuomas Tynkkynen
1409bc003b make-bootstrap-tools-cross.nix: Fix gcc build-time options for armv5tel
I broke this in the cleanups I did in 171c7f0, the gcc inside the bootstrap
tarball is not getting built with the correct --with-fpu, --with-float
etc. options.
2016-08-28 00:30:48 +03:00
Tuomas Tynkkynen
61faa4415e stdenv: ARM bootstrap: Update bootstrap tarballs to hydra-built ones
Picked from the following cross-trunk evaluation:
http://hydra.nixos.org/eval/1283982#tabs-inputs based on nixpkgs
commit 33a1d8080b.

armv5tel job: http://hydra.nixos.org/build/37908177
armv6l job: http://hydra.nixos.org/build/37908176
armv7l job: http://hydra.nixos.org/build/37908175
2016-07-20 18:51:09 +03:00
Tuomas Tynkkynen
3d50989651 make-bootstrap-tools{,-cross}.nix: Create deterministic tars 2016-07-20 02:38:10 +03:00
Tuomas Tynkkynen
53c039b96a make-bootstrap-tools-cross.nix: Support 'dist' target 2016-07-20 02:38:10 +03:00
Tuomas Tynkkynen
5cbb6ac151 make-bootstrap-tools-cross.nix: More syncs from the non-cross version 2016-07-20 02:38:10 +03:00
Tuomas Tynkkynen
954e54f563 make-bootstrap-tools-cross.nix: Reference correct outputs 2016-07-20 02:38:10 +03:00
Tuomas Tynkkynen
0968641eda make-bootstrap-tools-cross.nix: Use busybox with musl
Do this because I cannot figure out how to refer to `glibc.static`
inside busybox when cross building in a manner that works.
2016-07-20 02:38:10 +03:00
Tuomas Tynkkynen
171c7f0e63 make-bootstrap-tools-cross.nix: Have more consistency with platforms.nix
E.g. we had `arch = "arm"` in the former and `arch = "armv6"` in the
latter. Try to have some more consistency.
2016-07-20 02:38:10 +03:00
Tuomas Tynkkynen
9f0dc294da make-bootstrap-tools-cross.nix: Add/fix some .so dependencies
- cloog, ppl, cloogppl aren't used by recent GCCs. Kill references to them.
- Use correct versions of isl, as the current GCC depends
  on non-default versions of them.
- Also clarify isl dynamic libraries are needed in cross
  builds, but not in native builds
- Since aeb3d8c (bzip2: fix cross build on mingw by using autoconf patch),
  it seems that the bzip2 binary depends on libbz2 when cross compiling.
  So copy libbz2 into the bootstrap tarball as well.
- Curl isn't used in the bootstrap tools since e6f61b4cf3.
2016-07-20 02:38:10 +03:00
Tuomas Tynkkynen
8d62f62a78 stdenv: Remove unpack-bootstrap-tools-arm.sh
This file was using the 'double patchelf' hack, which hasn't been needed
for a while, after the original patchelf bug was fixed:

65a4dc6aa9
2016-07-20 02:38:10 +03:00
Vladimír Čunát
f4792cdc0c make-bootstrap-tools*: fixup after #16406
Our coreutils now uses single-binary-build mode where, by default,
simple shebang scripts are used for all the binaries. That doesn't work
e.g. with the Linux unpacker which only handles standard binaries and
symlinks. Let's use the symlinked mode instead for boostrapping.
This does NOT change any stdenv hashes.

I only tested the case most important to me:
$ nix-build pkgs/top-level/release.nix -A stdenvBootstrapTools.x86_64-linux.test
2016-06-28 09:54:22 +02:00
Tuomas Tynkkynen
2d3d105b02 make-bootstrap-tools-cross.nix: Strip extra whitespace 2016-06-10 16:17:30 +03:00
Alexander Ried
c6952ece24 bootstrap-tools-linux: Use tar without acl 2016-04-18 00:02:44 +02:00
Alexander Ried
28780a4dad bootstrap-tools-linux: Qualify all multi-output packages 2016-04-18 00:01:44 +02:00
Vladimír Čunát
d1df28f8e5 Merge 'staging' into closure-size
This is mainly to get the update of bootstrap tools.
Otherwise there were mysterious segfaults:
https://github.com/NixOS/nixpkgs/pull/7701#issuecomment-203389817
2016-04-07 14:40:51 +02:00
Eelco Dolstra
c55cfe0cb3 stdenv-linux: Update bootstrap tools 2016-04-07 13:17:16 +02:00
Vladimír Čunát
ab15a62c68 Merge branch 'master' into closure-size
Beware that stdenv doesn't build. It seems something more will be needed
than just resolution of merge conflicts.
2016-04-01 10:06:01 +02:00
Domen Kožar
b07e7bfc7b Merge remote-tracking branch 'origin/staging' 2016-03-27 13:19:04 +01:00
Nikolay Amiantov
0c6db0ca48 cc-wrapper: add option to skip flags for native optimizations 2016-03-24 20:16:17 +03:00
Tuomas Tynkkynen
cdef1cdd38 ARM stdenv: Update bootstrap tools
For some reason, the current bootstrap tools fail to build gettext:

init2.c:37: MPFR assertion failed: (64 - 0) == ((64 - 0)/8) * 8 && sizeof(mp_limb_t) == ((64 - 0)/8)
libxml/xpath.c: In function 'xmlXPathCompPathExpr':
libxml/xpath.c:10627:1: internal compiler error: Aborted
 xmlXPathCompPathExpr(xmlXPathParserContextPtr ctxt) {
 ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make[5]: *** [libxml/libxml_rpl_la-xpath.lo] Error 1

I didn't investigate why this is the case but rebuilding the bootstrap
tools seems to help.

I used this old-ish WIP branch https://github.com/dezgeg/nixpkgs/commits/arm-bootstrap
since latest master has even more problems with cross-compiling anything.
(I will eventually push this stuff and make the ARM bootstraps build on hydra.)
2016-03-17 15:59:04 +02:00
Tim Cuthbertson
d05a3cd763 stdenv: don't overwrite $NIX_ENFORCE_PURITY setting
Close #13583.
2016-03-13 21:09:41 +01:00
Nicolas B. Pierron
6313a5698a Replace references to all-packages.nix, by references to the top-level of nixpkgs repository. 2016-03-13 18:25:52 +00:00
Eelco Dolstra
dd53c65dcc Merge remote-tracking branch 'origin/gcc-5' into staging
Still some breakage but no blockers:

http://hydra.nixos.org/eval/1242130?filter=x86_64-linux&compare=1237852&full=#tabs-now-fail
2016-03-11 16:02:38 +01:00
Eelco Dolstra
2af1cb3aa6 Merge remote-tracking branch 'origin/binutils-2.26' into staging
This still breaks a few packages, but nothing really major:

  http://hydra.nixos.org/eval/1241850?filter=x86_64-linux&compare=1237919&full=#tabs-now-fail
2016-03-11 11:58:49 +01:00
Vladimír Čunát
09af15654f Merge master into closure-size
The kde-5 stuff still didn't merge well.
I hand-fixed what I saw, but there may be more problems.
2016-03-08 09:58:19 +01:00
Eelco Dolstra
a6d19c28f1 Don't apply patchelf to itself
Since patchelf 0.8 rewrites binaries in place, this causes a bus
error.
2016-03-03 13:57:45 +01:00
Vladimír Čunát
5702bc3b55 make-bootstrap-tools: fix #13629: glibc problems
On x86_64-linux glibc started to use linker scripts more extensively.

(cherry picked from commit aa564c9ed0)
2016-03-03 13:57:45 +01:00
Eelco Dolstra
639d7409f2 Move testBootstrapTools to make-bootstrap-tools.nix 2016-03-03 13:57:45 +01:00
Vladimír Čunát
aa564c9ed0 make-bootstrap-tools: fix #13629: glibc problems
On x86_64-linux glibc started to use linker scripts more extensively.
2016-03-03 12:09:50 +01:00
Eelco Dolstra
c388380bb4 Switch to GCC 5 2016-02-28 17:54:11 +01:00
Eelco Dolstra
559ecc9212 stdenv-linux: Avoid building m4/bison twice 2016-02-28 01:12:58 +01:00
Eelco Dolstra
e6f61b4cf3 fetchurlBoot: Use Nix's builtin fetchurl function
This removes the need for curl in bootstrapTools, and enables https
for bootstrap tarballs.
2016-02-27 20:27:24 +01:00
Eelco Dolstra
2f050b5d13 stdenvLinux: Use bash instead of sh from bootstrapTools
"sh" is also bash, but invoking it as "sh" disables certain features
like process substitution.

Closes #13395.
2016-02-24 11:01:11 +01:00
Vladimír Čunát
ee994dfae6 bootstrap tools: have curl without http2 support
I assume there's not much use for it during bootstrapping.
This fixes them as well, as curl was compiled against libnghttp2 but the
lib wasn't copied to the bootstrap tools.
2016-02-17 10:04:32 +01:00
Vladimír Čunát
54299b60c4 Merge #12779: Mass replace pkg}/bin-style strings
... to refer to correct outputs
2016-02-03 17:25:22 +01:00
Vladimír Čunát
ae74c356d9 Merge recent 'staging' into closure-size
Let's get rid of those merge conflicts.
2016-02-03 16:57:19 +01:00
Tuomas Tynkkynen
5f4a8de754 treewide: Mass replace 'bzip2}/bin' to refer the 'bin' output 2016-02-01 20:45:57 +02:00
Vladimír Čunát
98c7e70a3f linux stdenv bootstrap: avoid building grep twice
It's perfectly enough when we use the bootstrapped grep everywhere
except the one put into the final stdenv and final pkgs.
2016-01-25 09:55:00 +01:00
Tuomas Tynkkynen
ed7dbb46a8 treewide: Mass replace 'zlib}/lib' to refer the 'out' output 2016-01-24 10:03:39 +02:00
Tuomas Tynkkynen
ba87da9fd1 treewide: Mass replace 'pcre}/lib' to refer the 'out' output 2016-01-24 10:03:38 +02:00
Tuomas Tynkkynen
04c5830432 treewide: Mass replace 'mpfr}/lib' to refer the 'out' output 2016-01-24 10:03:38 +02:00
Tuomas Tynkkynen
c2ceed1ad1 treewide: Mass replace 'binutils}/lib' to refer the 'out' output 2016-01-24 10:03:33 +02:00
Anthony Cowley
5986aecc4c Linux stdenv update: pass gnugrep to cc-wrapper 2016-01-24 00:18:32 -05:00
Vladimír Čunát
333d69a5f0 Merge staging into closure-size
The most complex problems were from dealing with switches reverted in
the meantime (gcc5, gmp6, ncurses6).
It's likely that darwin is (still) broken nontrivially.
2015-11-20 14:32:58 +01:00
Eelco Dolstra
45c7dd7d98 Add stdenv bootstrap tools generation to release.nix 2015-10-23 13:05:36 +02:00
Vladimír Čunát
f361938b21 Merge staging into closure-size
This makes gcc5 the default builder, etc.
2015-10-03 15:23:13 +02:00
Vladimír Čunát
5227fb1dd5 Merge commit staging+systemd into closure-size
Many non-conflict problems weren't (fully) resolved in this commit yet.
2015-10-03 13:33:37 +02:00
William A. Kennington III
f4a42ae509 gcc: Make 5.x the default 2015-09-15 12:14:12 -07:00
Eelco Dolstra
d72538be8d Don't include /no-such-path in buildInputs 2015-06-15 19:26:52 +02:00
Tuomas Tynkkynen
99a7bc241d stdenv/linux: Link statically against isl & cloog
Otherwise this fails on ARM:

/nix/store/jipqp9739n7wrjz40igbk85pqk13s0ad-binutils-2.23.1/bin/ld: /nix/store/92pdpqrqkdf8wjciq1cisvsp8kdz8p2i-gmp-5.1.3/lib/libgmp.a(mp_get_fns.o): relocation R_ARM_MOVW_ABS_NC against `__gmp_allocate_func' can not be used when making a shared object; recompile with -fPIC
/nix/store/92pdpqrqkdf8wjciq1cisvsp8kdz8p2i-gmp-5.1.3/lib/libgmp.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [libisl.la] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/tmp/nix-build-isl-0.11.1.drv-3/isl-0.11.1'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/nix-build-isl-0.11.1.drv-3/isl-0.11.1'
make: *** [all] Error 2
builder for ‘/nix/store/a8ghniifd8d8agqx0cqsh41daa08v11c-isl-0.11.1.drv’ failed with exit code 2
2015-06-12 01:38:47 +02:00
Eelco Dolstra
4970574409 Merge remote-tracking branch 'origin/gcc-4.9' into staging
Conflicts:
	pkgs/development/libraries/wayland/default.nix
2015-06-11 00:23:03 +02:00
Eelco Dolstra
cde5053d9a Revert "curl: Modernize build"
This reverts commit 5e3fe3916a.
2015-06-04 14:54:52 +02:00
Eelco Dolstra
553abf71ba Merge remote-tracking branch 'origin/staging' into gcc-4.9
Conflicts:
	pkgs/build-support/cc-wrapper/default.nix
	pkgs/development/libraries/wayland/default.nix
	pkgs/development/tools/build-managers/cmake/default.nix
	pkgs/top-level/all-packages.nix
2015-06-01 20:08:43 +02:00
Eelco Dolstra
24aa3551b0 Fix stdenv build 2015-05-13 18:17:25 +02:00
Eric Seidel
395829686d add is{GNU,Clang} attrs to cc-wrapper.
These will be more pleasant to use than the existing

    (cc.cc.isClang or false)

nonsense we currently do.
2015-05-11 14:39:36 -07:00
viric
1b982918f5 Merge pull request #7740 from dezgeg/arm
ARM changes for the Jetson TK1 (and other multiplatform boards)
2015-05-07 20:53:07 +02:00
William A. Kennington III
074c4a7f78 Merge remote-tracking branch 'upstream/master' into staging 2015-05-07 01:44:49 -07:00
Tuomas Tynkkynen
a7c4aba896 ARM: Assume armv7l-hf-multiplatform instead of beaglebone
Several places in the tree associate the ARMv7 system
with the beaglebone platform. Change them to point to
armv7l-hf-multiplatform as it supports several boards (including the
beaglebone as well)
2015-05-07 06:04:10 +03:00
William A. Kennington III
874fa4d8a3 busybox: 1.22.1 -> 1.23.2
Also use musl as libc since it is just as small as uclibc, usually more
performant, and regularly makes releases.
2015-05-06 00:15:16 -07:00
Vladimír Čunát
3b9ef2c71b fix "libc}/lib" and similar references
Done mostly without any verification.
I didn't bother with libc}/include, as the path is still correct.
2015-05-05 11:52:08 +02:00
William A. Kennington III
5e3fe3916a curl: Modernize build 2015-05-01 15:57:14 -07:00
Vladimír Čunát
bf414c9d4f Merge 'staging' into closure-size
- there were many easy merge conflicts
- cc-wrapper needed nontrivial changes

Many other problems might've been created by interaction of the branches,
but stdenv and a few other packages build fine now.
2015-04-18 11:22:20 +02:00
Eelco Dolstra
692ed0882a Fix eval-release.nix evaluation 2015-03-06 15:09:51 +01:00
Lluís Batlle i Rossell
6790caf713 I add back the arm unpack script
The unified made by ambro doesn't work for me in the sheevaplug.
2015-02-09 22:36:10 +01:00
Lluís Batlle i Rossell
2b7aace1ae Renaming make-bootstrap-tools-crosspi to cross.
It can build more than the raspberrypi bootstrap tools.
2015-02-05 23:32:09 +01:00
Lluís Batlle i Rossell
a761b33d8c Using fixed bootstraptools.
Built natively with latest fixes.
2015-02-05 23:00:08 +01:00
Lluís Batlle i Rossell
389d0f668e Bootstrap tools armv5tel
Conflicts:
	pkgs/stdenv/linux/default.nix
	pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh
2015-02-05 22:42:58 +01:00
Lluís Batlle i Rossell
6944b15d88 Fix busybox stdenv?
(cherry picked from commit db8668c0bb0dc8feb4929867adf1b60f7025a925)
2015-02-05 22:41:07 +01:00
Ambroz Bizjak
ef9c21a0e2 Adding the sheevaplug to make-bootstrap-tools-cross 2015-02-05 21:37:29 +01:00
Ambroz Bizjak
93e018cbe9 Make the bootstrap-tools test use the real unpacking derivation. 2015-02-05 21:29:02 +01:00
Ambroz Bizjak
810b416d89 Consolidate the unpack scripts for the bootstrap tools. 2015-02-05 21:27:12 +01:00
Ambroz Bizjak
8fb7d8bede Fix building and unpacking of the ARM boostrap tools.
NOTE: This is incomplete - the tools need to be built, uploaded and the references fixed.
2015-02-05 21:26:55 +01:00
Vladimír Čunát
a0bf07827b mpc: also rename the attribute to libmpc
Attrnames and package names should be as close as possible to avoid confusion.
I took care not to confuse the two mpc things during the mass-replace,
so hopefully I suceeded (tarball still builds).
2015-01-17 09:55:32 +01:00
Eric Seidel
88eae46455 rename occurrences of gcc.gcc to gcc.cc 2015-01-14 20:47:49 -08:00
Shea Levy
16fe4be790 Add isGNU attribute to gccs 2015-01-14 20:26:57 -08:00
Eric Seidel
48f63c2f2e rename gcc-wrapper to cc-wrapper.
also makes cc-wrapper compatible with clang in the darwin fork.
2015-01-14 20:26:56 -08:00
Shea Levy
77a448e96f restore pkgs.gcc = stdenv.cc 2015-01-03 09:54:02 -05:00
Vladimír Čunát
becf038336 Merge branch 'staging' 2014-12-26 22:41:19 +01:00
John Wiegley
28b6fb61e6 Change occurrences of gcc to the more general cc
This is done for the sake of Yosemite, which does not have gcc, and yet
this change is also compatible with Linux.
2014-12-26 11:06:21 -06:00
Eelco Dolstra
a5aa8f3efa Use updated bootstrap binaries
Fixes #5335.
2014-12-18 15:04:40 +01:00
Jaka Hudoklin
3d7f66e955 boostrap-tools: fix curl not finding libnss* and libresolv 2014-12-15 03:33:28 +01:00
Eelco Dolstra
a0f3faf34e Merge remote-tracking branch 'origin/glibc-2.20' into staging 2014-11-16 22:17:36 +01:00
Eelco Dolstra
cef0bcefc6 linux-headers: Update to 3.12.32
We can do this because bootstrap-tools contains an unxz program now
(via busybox).
2014-11-15 21:49:57 +01:00
Eelco Dolstra
e3ef797901 Fix stdenv allowedRequisites check
It has to include the default build inputs now (like
"compress-man-pages.sh").
2014-11-06 15:33:36 +01:00
Eelco Dolstra
3bd2cfa853 Update bootstrap tools with the fix for GCC bug 61801 2014-11-03 18:51:25 +01:00
Eelco Dolstra
119ce1ab03 Update the stdenv-linux bootstrap tools 2014-10-29 17:26:29 +01:00
Eelco Dolstra
41a479b15f busybox: Optionally use uclibc 2014-10-29 14:44:56 +01:00
Eelco Dolstra
e8992c5084 Update the stdenv bootstrap tools generator
The static curl program is gone, replaced by curl inside of the
bootstrap tools tarball. Also, we generate a .tar.xz archive rather
than .cpio.bz2, making the download smaller. The separate
{sh,cpio,mkdir,ln,bzip2} programs have been replaced by a single
busybox program.
2014-10-29 13:43:01 +01:00
Eelco Dolstra
54e727133a Remove tabs/whitespace 2014-10-29 13:42:59 +01:00
Eelco Dolstra
14d6454b9a stdenv-linux: Turn allowedRequisites back on 2014-10-06 22:11:05 +02:00
Eelco Dolstra
2bb69fcedd pcre: Update to 8.36 2014-10-06 20:49:10 +02:00
Eelco Dolstra
b891f05a6a stdenv-linux: Disable use of allowedRequisites
Sadly, it breaks stdenv adapters like overrideGCC and useGoldLinker.
2014-10-06 20:13:29 +02:00
Eelco Dolstra
a1bb914f71 Fix gcc.override (required by stdenv adapters like useGoldLinker) 2014-10-03 15:21:00 +02:00
Gergely Risko
6fe1ac69f9 Cleanup legacy settings in stdenvLinux
This causes a mass rebuild, because it changes the hashes of
stdenvLinux, as it enable tests for coreutils.
2014-09-14 21:57:00 +02:00
Gergely Risko
c5df246ba9 Cleanup perl logic in stdenvLinux
Make thread disabling explicit.  This changes the semantics of the perl
derivation, so on other platforms it may require setting

  enableThreading = false

This commit doesn't change the derivation or out hash of stdenvLinux.
2014-09-14 21:36:14 +02:00
Gergely Risko
fca5d864b6 pkgs/stdenv/linux: stageFun refactoring
The stage3.extraAttrs.glibc argument was required for this whole build
procedure to correctly work and it was very-very hard to see why (the
comment said something about gcc47, but we're using gcc48 now).

This stage3.extraAttrs.glibc goes into stage3.stdenv.glibc after some
arg passing, and in pkgs/development/compiler/gcc an (stdenv ? glibc)
boolean expression decides to override /usr/include during the GCC
build.

All of our stages are built with glibc, so this refactoring moves this
repeating specification of glibc (once for gcc wrapper and once here for
extraAttrs) to stageFun, by getting rid of wrapGCC, as we were using
that in all of the stages anyways.

Incidentally it turned out, that this stdenv.glibc inconsistency caused
some random other stuff to behave differently:
  - stage1.pkgs.perl has threading disabled,
  - stage4.pkgs.coreutils (the production coreutils) has testing disabled.

Leave this historical accidents as they are in this commit, so the scope
of this commit can stay as a refactoring only, these issues will be
fixed in separate commits.

This commit doesn't change the derivation or the output hash of
stdenvLinux.
2014-09-14 21:35:54 +02:00
Gergely Risko
efcb00d002 Do allowed requisites check in stdenv/linux
Use the new allowedRequisites feature in stdenvLinux.

This way we properly check that the end-result stdenv of the quite
complicated multi-stage stdenvLinux building procedure is sane, and only
depends on the stuff that we know about.

Alternative would be to just disallowRequisites bootstrapTools, which is
the most common offender, but we have had other offenders in the past.

For these checks to actually fire, you currently have to use nixUnstable,
as the necessary feature will be released in Nix 1.8.
2014-09-14 21:14:41 +02:00
Gergely Risko
0a3d811e42 Fix zlib handling in stdenvLinux
Previously stdenv depended on two different zlibs and there was a third
one in the top-level package set for other purposes.  This commit merges
all this zlibs to one.

Actually this have been committed once as 1f2b636, but then got lost
while resolving merge conflicts.  Hopefully it survives this time.
2014-09-14 19:37:51 +02:00
Gergely Risko
4ac4af08f2 Cosmetic renaming: extraPath -> extraBuildInputs 2014-09-14 19:37:32 +02:00
Gergely Risko
034b07e6ff Remove gcc and zlib dependency on bootstrap-tools
The 82797f98f2 merge caused this
issue while trying to merge the staging refactorings with
the modular-stdenv feature branch.
2014-09-14 19:32:58 +02:00
Gergely Risko
18592c78fc Cosmetic fix in pkgs/stdenv/linux/default.nix
Keep the rule that every stage only refers to the previous stage
for clarity.

This commit doesn't change derivation or output hashes.
2014-09-11 00:39:08 +02:00
Gergely Risko
f2c5125e82 Fix testability of pkgs/stdenv/linux/default.nix
The point here is that it's always possible to debug this staging
logic by using `nix-repl pkgs/stdenv/linux'. The modular-stdenv
change introduced the lib dependency, which we now default to
../../../lib.

No derivation or out hashes of stdenvLinux is changed by this commit.
2014-09-11 00:24:03 +02:00
Vladimír Čunát
82797f98f2 Merge branch 'staging' into modular-stdenv
Conflicts:
	pkgs/development/interpreters/perl/5.10/setup-hook.sh
	pkgs/development/interpreters/perl/5.8/setup-hook.sh
	pkgs/stdenv/linux/default.nix
2014-09-08 18:24:58 +02:00
Vladimír Čunát
031baae714 Merge branch 'staging' into v/modular
Conflicts (as in p/modular-stdenv):
	pkgs/stdenv/linux/default.nix
2014-08-30 08:33:10 +02:00
Gergely Risko
1f2b636ff6 Fix zlib handling in stdenvLinux
Previously stdenv depended on two different zlibs and there was a third
one in the top-level package set for other purposes.  This commit merges
all this zlibs to one.
2014-08-26 17:17:13 +02:00
Vladimír Čunát
4dccb224c5 WIP2 2014-08-26 01:10:56 +02:00
Vladimír Čunát
77da5efc78 merge the rest of multiple-outputs
Conflicts:
	pkgs/development/libraries/glibc/2.19/builder.sh (previous merge taken)
	pkgs/development/tools/misc/patchelf/default.nix (easy)
	pkgs/stdenv/generic/setup.sh (previous merge taken)
2014-08-25 10:41:49 +02:00
Eelco Dolstra
f5d648e27d Fix evaluation 2014-08-25 09:35:06 +02:00
Eelco Dolstra
27d3984935 Indentation 2014-08-24 18:08:23 +02:00
Gergely Risko
ea65229f70 Refactor stages to only ever refer to the previous stage
This commit doesn't change the outhash (or drvhash) of the stdenv.
2014-08-24 17:10:55 +02:00
Gergely Risko
49e5837780 Move wrapGCC helper up
This commit doesn't change the outhash (or drvhash) of the stdenv.
2014-08-24 17:10:53 +02:00
Gergely Risko
350022247a Refactor stage handling in stdenvLinux
Make stages explicit and generalize the pattern of having an stdenv and
a pkgs collection for all stages to a common stage generating function
called stageFun.

Rewrite all stage handling with this new function.

This commit doesn't change the outhash (or drvhash) of the stdenv.
2014-08-24 17:10:50 +02:00
Gergely Risko
142970b9eb Refactor wrapGCC in stdenvLinux
Don't use default parameter values, to make the callsites more readable
and for easier debuggability/changability.  Also reordered the
callsites' parameter ordering for consistency.

In the final stdenv don't repeat the name of the shell.

This commit doesn't change the outhash (or drvhash) of the stdenv.
2014-08-24 17:10:37 +02:00
Gergely Risko
8a445f9237 Refactor fetchurl handling in stdenvLinux
All the different stages of stdenv had the fetchurl inherited anyways,
so make this generic in stdenvBootFun.

This commit doesn't change the outhash (or drvhash) of the stdenv.
2014-08-24 17:10:05 +02:00
Vladimír Čunát
96cec2a7bd Merge 'staging' into multiple-outputs
Conflicts:
	pkgs/applications/audio/flac/default.nix
	pkgs/build-support/gcc-wrapper/builder.sh
	pkgs/development/libraries/apr-util/default.nix
	pkgs/development/libraries/apr/default.nix
	pkgs/development/libraries/atk/default.nix
	pkgs/development/libraries/freetype/default.nix
	pkgs/development/libraries/gdk-pixbuf/default.nix
	pkgs/development/libraries/glib/default.nix
	pkgs/development/libraries/glibc/2.17/builder.sh
	pkgs/development/libraries/glibc/2.17/locales.nix
	pkgs/development/libraries/libjpeg/default.nix
	pkgs/development/libraries/libogg/default.nix
	pkgs/development/libraries/libsamplerate/default.nix
	pkgs/development/libraries/libtiff/default.nix
	pkgs/development/libraries/libvorbis/default.nix
	pkgs/development/libraries/mesa/default.nix
	pkgs/development/libraries/pango/default.nix
	pkgs/development/web/nodejs/default.nix
	pkgs/os-specific/linux/pam/default.nix
	pkgs/os-specific/linux/systemd/default.nix
	pkgs/stdenv/generic/setup.sh
	pkgs/stdenv/linux/default.nix
	pkgs/top-level/all-packages.nix
	pkgs/top-level/release-small.nix
2014-08-23 16:04:53 +02:00
Eelco Dolstra
be3fc3ae2f Prevent an unnecessary evaluation of lib 2014-08-09 12:45:18 +02:00
Eelco Dolstra
83a41771ab Move RPATH shrinking from stdenv to a setup hook provided by patchelf 2014-08-09 12:44:49 +02:00
Eelco Dolstra
40f7b0f9df Another attempt to eradicate ensureDir
See c556a6ea46.
2014-06-30 14:56:10 +02:00
Ricardo M. Correia
8d5ce245a2 grsecurity: Add paxctl, paxmark and stdenv.needsPax to stdenv 2014-05-15 13:25:46 +02:00
Eelco Dolstra
b614ea22d4 Move files 2014-04-20 01:27:15 +02:00
Eelco Dolstra
d4f44d6db3 Move stdenv bootstrap binaries out of the tree
Commit 986f361946 started to use
<nix/fetchurl.nix> to "download" the bootstrap binaries from the
Nixpkgs tree, using the file:/// scheme. This has really bad
consequences:

* It makes any derivation depend on the path of the Nixpkgs tree. So
  evaluating a package will produce a different .drv file when run
  from different locations. No wonder Hydra evaluation has been so
  slow lately: for every Nixpkgs evaluation, it had to create tens of
  thousands of .drv files, even if nothing had changed.

* It requires the builder to have file system access to the Nixpkgs
  tree. So if your tree is in your home directory, the stdenv
  bootstrap would probably fail.

So now the binaries are downloaded from tarballs.nixos.org.

Also dropped PowerPC "support".
2014-04-20 01:16:12 +02:00
Eelco Dolstra
c49404547b Use <nix/fetchurl.nix> to download the bootstrap tools 2014-04-20 00:54:09 +02:00
Eelco Dolstra
7703f04b75 Add a stdenv adapter ‘useGoldLinker’ to force use of Gold 2014-02-05 19:18:33 +01:00
Eelco Dolstra
a8a5a59059 stdenv-linux: Fix binutils override
This ensures that pkgs.binutils equals the binutils used in the final
stdenv, as intended.
2014-01-28 15:23:57 +01:00
Vladimír Čunát
a2c316288c Merge master into stdenv-updates
Conflicts:
	pkgs/development/lisp-modules/stumpwm/default.nix (auto-solved)
	pkgs/top-level/all-packages.nix (trivial)
2014-01-12 12:29:24 +01:00
Eelco Dolstra
860c681fb3 stdenv-linux: Prevent dependency on bootstrap-tools in the final binutils
Binutils nowadays contains ld.gold, which depends on libstdc++.  So it
needs to be built with the new GCC rather than the one from
bootstrap-tools.

Issue #1469.
2014-01-07 17:50:12 +01:00
Eelco Dolstra
320209a618 Merge deterministicStdenv into the default stdenv
This means that (on Linux) strip uses
"--enable-deterministic-archives" and ld uses the
BFD_DETERMINISTIC_OUTPUT flag.
2014-01-07 13:57:42 +01:00
Eelco Dolstra
c3d31749fb Remove gcc 4.7
There is really no reason to keep it around, given that it was never
the default in Nixpkgs.
2014-01-07 10:36:15 +01:00
Shea Levy
f4ce59cee0 Remove non-kernel-specific klibc derivation
Signed-off-by: Shea Levy <shea@shealevy.com>
2014-01-05 07:38:58 -05:00
Vladimír Čunát
8ba92b8895 Merge master into stdenv-updates
Conflicts (simple):
	pkgs/development/tools/misc/binutils/default.nix
	pkgs/tools/package-management/disnix/default.nix
	pkgs/top-level/all-packages.nix
2013-07-08 10:48:05 +02:00
Eelco Dolstra
552fd3d599 Merge remote-tracking branch 'origin/master' into multiple-outputs
Conflicts:
	pkgs/development/libraries/atk/default.nix
	pkgs/development/libraries/cairo/default.nix
	pkgs/development/libraries/freetype/default.nix
	pkgs/development/libraries/glib/default.nix
	pkgs/development/libraries/gmime/default.nix
	pkgs/development/libraries/pango/default.nix
	pkgs/servers/x11/xorg/default.nix
	pkgs/top-level/all-packages.nix
2013-06-25 18:42:56 +02:00
Eelco Dolstra
acba9240cd nixos.org/tarballs -> tarballs.nixos.org
It's currently the same machine, but tarballs.nixos.org should become
an S3/CloudFront site eventually.
2013-06-25 14:12:16 +02:00
Eelco Dolstra
dbe432e6f4 gcc: Put runtime libraries in a separate output
GCC provides a number of libraries that are used by programs built by
GCC, in particular libgcc_s.so and libstdc++.so.  This caused programs
that used these libraries to have a runtime dependency on all of GCC
(~77 MiB).  Now they only depend on the "lib" output of GCC (~1.6
MiB).

With this and previous multiple-output improvements, closure sizes are
reduced a lot:

hello:       41 MiB -> 22 MiB
patchelf:   118 MiB -> 23 MiB
pan:        364 MiB -> 90 MiB
2013-06-12 16:11:14 +02:00
Eelco Dolstra
d8231a66eb glibc: Split into multiple outputs
This reduces the size of closures a lot by getting rid of Glibc's
header files, static libraries and utilities.  For instance, the
closure of GNU Hello went from 41 MiB to 22 MiB.

TODO: We may want to merge back in parts of Glibc that we previously
split off (such as the info files).
2013-06-11 18:47:17 +02:00