summary refs log tree commit diff
path: root/pkgs/stdenv/adapters.nix
Commit message (Collapse)AuthorAge
* treewide: Remove usage of isNullDaniel Schaefer2019-04-29
| | | | isNull "is deprecated; just write e == null instead" says the Nix manual
* makeStaticBinaries: add a static glibc when performing a mkDerivationJames Kay2018-12-14
|
* stdenv/adapters.nix: fixup makeStaticBinariesMatthew Bauer2018-12-04
| | | | | | - makeStaticBinaries don’t work on Darwin (no stable ABI!) - Need to make sure NIX_CFLAGS_LINK appends - isStatic is not used anymore
* Merge pull request #37600 from abbradar/impureusenativeYegor Timoshenko2018-10-13
|\ | | | | impureUseNativeOptimizations: add stdenv adapter
| * impureUseNativeOptimizations: add stdenv adapterNikolay Amiantov2018-04-17
| | | | | | | | | | | | | | | | | | This allows one to force a compiler to use native machine optimizations. This goes contrary to all the usual guarantees of Nix and so should be used only by end-user and only in specific cases when they know what are they doing. In my case this is needed to get a noticeable FPS boost in RPCS3 which is very CPU-hungry PlayStation 3 emulator.
* | stdenv adapter: Keep configureFlags a listJohn Ericson2018-08-03
| |
* | makeStdenvCross: RemoveJohn Ericson2018-07-24
| | | | | | | | | | It is inlined into the cross stdenv, which is its last use-case after the previous commit.
* | stdenv cross adapter: Use `extraNativeBuildInputs`John Ericson2018-07-24
| | | | | | | | This means we don't need to hackily avoid overwriting `mkDerivation`.
* | stdenv: Remove crossAttrs, now that it is no longer usedJohn Ericson2018-07-24
| | | | | | | | Fix #33302
* | stdenv cross adapter: Don't define crossConfigJohn Ericson2018-05-14
|/ | | | All its uses have been removed.
* Merge pull request #36401 from obsidiansystems/no-stdenv-cross-adapterJohn Ericson2018-03-06
|\ | | | | stdenv cross adapter: Get rid if `selfNativeBuildInput`
| * stdenv cross adapter: Get rid if `selfNativeBuildInput`John Ericson2018-03-06
| | | | | | | | | | | | It is finally no longer used anywhere Fixes #30587
* | lib, treewide: Add missing MIPS arches, and fix existing usageDaniel Barlow2018-02-23
|/ | | | | | | | | Existing "mips64el" should be "mipsel". This is just the barest minimum so that nixpkgs can recognize them as systems - although required for building individual derivations onto MIPS boards, it is not sufficient if you want to actually build nixos on those targets
* stdenv: automatically update config.sub for muslWill Dietz2018-02-13
|
* stdenv cross adapter: Get rid of extra propagatation of buildInputsJohn Ericson2017-12-29
| | | | Binutils is patched so we don't rely on `--rpath-link`.
* cross stdenv: No more native-fishing hack.John Ericson2017-09-21
| | | | | The comment says it was put there for pkgconfig, but now pkgconfig has been dealt with.
* stdenv cross adapater: Remove old `extraBuildInputs`John Ericson2017-09-21
| | | | | They, unlike their native counterparts, run on the wrong platform and are therefore invalid.
* stdenv cross adaptor: Add optional `overrides` parameterJohn Ericson2017-09-21
| | | | | | By default, all previous overrides are discarded as before, as they would only apply to the old host platform. But sometimes it is useful to add some new ones, and this optional parameter allows that.
* stdenv: Update autotools scripts on all Aarch64, not just LinuxJohn Ericson2017-09-21
| | | | | | | This is needed when cross-compiling for iOS (Aarch64 + Darwin). I also changed the syntax of the Linux stdenv for visual consistency, though that has no effect on semantics as the os is already guaranteed to be Linux.
* stdenv: Move some logic from cross adapter to stdenv properJohn Ericson2017-07-13
| | | | | | | | | | | | Eventually the adapter will be removed. Moved is - Name suffix from hostPlatform - configurePlatforms To not cause more breakage, the default is currently [], but eventually it will be [ "build" "host" ], as the cross adapter makes it today.
* top-level: {build,host,target}Platform are defined in the stdenv insteadJohn Ericson2017-07-07
| | | | See #27069 for a discussion of this
* cross stdenv adaptor: Disable checkPhase by defaultJohn Ericson2017-06-22
| | | | Before gcc-cross-wrapper did this unconditionally
* cross stdenv adaptor: Support --host --build --target across the boardJohn Ericson2017-06-22
| | | | | | | | Packages get --host and --target by default, but can explicitly request any subset to be passed as needed. See docs for more info. rustc: Avoid hash breakage by using the old (ignored) dontSetConfigureCross when not cross building
* cross stdenv adaptor: Remove `ccCross` `binutils` attrs and binutils extra ↵John Ericson2017-06-22
| | | | | | buildDepends It now has the correct wrapped tools and nothing else is needed.
* binutilsCross: Remove and use `binutils` instead alwaysJohn Ericson2017-04-25
| | | | | | | | | | | | | | | See previous commit for what was done to `binutils` to make this possible. There were some uses of `forcedNativePackages` added. The combination of overrides with that attribute is highly spooky: it's often important that if an overridden package comes from it, the replaced arguments for that package come from it. Long term this package set and all the spookiness should be gone and irrelevant: "Move along, nothing to see here!" No hashes should be changed with this commit
* cross-stdenv: Only prune most overrides in the final stageJohn Ericson2017-04-24
| | | | | | | Before all overrides were also pruned in the previous stage, now only gcc and binutils are, because they alone care about about the target platform. The rest of the overrides don't, so it's better to preserve them in order to avoid spurious rebuilds.
* ~/.nixpkgs -> ~/.config/nixpkgsEelco Dolstra2017-02-01
| | | | | | The former is still respected as a fallback for config.nix for backwards compatibility (but not for overlays because they're a new feature).
* stdenv: Add updateAutoconfGnuConfigScriptsHook for aarch64Tuomas Tynkkynen2017-01-25
| | | | | | | | | | | This is required for Aarch64 since a lot of source tarballs ship with outdated configure scripts that don't recognize aarch64. Simply replacing the config.guess and config.sub with new versions from upstream makes them build again. This same approach is used by at least Buildroot and Fedora. In principle this could be enabled for all architectures but conditionalizing this on aarch64 avoids a mass rebuild on x86.
* cross-stdenv: Inline useless bindings and reindentJohn Ericson2017-01-24
| | | | Semantics should be unchanged
* top-level: Lay the groundwork for `{build,host,target}Platform`John Ericson2017-01-24
| | | | | | | | | | | | The long term goal is a big replace: { inherit system platform; } => buildPlatform crossSystem => hostPlatform stdenv.cross => targetPlatform And additionally making sure each is defined even when not cross compiling. This commit refactors the bootstrapping code along that vision, but leaves the old identifiers with their null semantics in place so packages can be modernized incrementally.
* top-level: Introduce `buildPackages` for resolving build-time depsJohn Ericson2017-01-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [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
* Remove more dead code: `stdenvDarwinNaked` no longer existsJohn Ericson2016-06-20
|
* Remove dead code in stdenvCross adaptorJohn Ericson2016-06-20
|
* stdenv on mingw: fix 64-bin DLL detection in some casesVladimír Čunát2016-04-23
| | | | | In particular, this makes 64-bit libpng create DLL now, and thus depending packages won't fail anymore (e.g. freetype).
* useOldCXXAbi: Change into a setup hookEelco Dolstra2016-04-01
| | | | Stdenv adapters considered weird.
* stdenvAdapters.useOldCXXAbi: add new adapterNikolay Amiantov2016-03-31
|
* enableDebugging: use more suitable gcc flagsVladimír Čunát2015-08-10
| | | | | -ggdb is supposed to provide better symbol information when used with gdb -Og is the recommended optimization level for debugging purposes
* useGoldLinker: Fix appending to $NIX_CFLAGS_LINKEelco Dolstra2015-05-04
|
* Fix cross compiling regression due to gcc->cc renaming.Ambroz Bizjak2015-02-05
|
* rename gcc-wrapper to cc-wrapper.Eric Seidel2015-01-14
| | | | also makes cc-wrapper compatible with clang in the darwin fork.
* Restore accidentally-dropped stdenv adapterShea Levy2014-12-26
|
* Change occurrences of gcc to the more general ccJohn Wiegley2014-12-26
| | | | | This is done for the sake of Yosemite, which does not have gcc, and yet this change is also compatible with Linux.
* Merge remote-tracking branch 'origin/glibc-2.20' into stagingEelco Dolstra2014-11-16
|\
| * Remove obsolete useKlibc stdenv adapterEelco Dolstra2014-10-29
| |
| * Remove obsolete useDietLibC stdenv adapterEelco Dolstra2014-10-29
| |
* | useGoldLinker: Don't set dontStripEelco Dolstra2014-11-12
| | | | | | | | Probably caused by a bad cut&paste...
* | gcc-wrapper: Wrap ld.goldEelco Dolstra2014-10-10
| | | | | | | | This ensures that gcc's ‘-fuse-ld=gold’ flag works.
* | Merge remote-tracking branch 'origin/staging' into darwin-clang-stdenvEelco Dolstra2014-10-09
|\| | | | | | | | | Conflicts: pkgs/tools/security/gnupg/default.nix
| * stdenv-linux: Turn allowedRequisites back onEelco Dolstra2014-10-06
| |
* | fix even more clang buildsJoel Taylor2014-09-09
|/