Commit graph

828 commits

Author SHA1 Message Date
Eelco Dolstra 5cc92eb0d8 Remove obsolete useDietLibC stdenv adapter 2014-10-29 13:43:00 +01:00
Eelco Dolstra 54e727133a Remove tabs/whitespace 2014-10-29 13:42:59 +01:00
Eelco Dolstra 3a0db27b90 Fix indent 2014-10-26 01:59:05 +02:00
Eelco Dolstra 9a979af1d3 stdenv-darwin: Revert to clang 3.3
In 3.3, a C++ class defined in a header will get a typeinfo symbol
like this (e.g. in Nix's src/libutil/util.o):

  (__DATA,__datacoal_nt) weak external typeinfo for nix::BaseError

But in 3.4, this has changed to:

  (__DATA,__datacoal_nt) weak external automatically hidden typeinfo for nix::BaseError

This causes the linker to change the symbol to:

  (__DATA,__data) non-external (was signed char private external) typeinfo for nix::BaseError

i.e. losing its weak linkage. But without weak linkage, dynamic_cast
and other RTTI-based mechanisms (such as catching an exception of a
certain type) don't work across shared libraries / executables.

The clang compiler in the SDK doesn't have this behaviour, but it's
not clear exactly which version it is (it just says "based on LLVM
3.4svn").
2014-10-15 01:15:31 +02:00
Eelco Dolstra 7aacca25df stdenv-darwin: Pass through libcxx/libcxxabi 2014-10-14 16:36:44 +02:00
Eelco Dolstra 79d0d7b437 Unify gcc-wrapper and clang-wrapper 2014-10-11 22:26:39 +02:00
Eelco Dolstra ffbdcbfe29 gcc-wrapper: Wrap ld.gold
This ensures that gcc's ‘-fuse-ld=gold’ flag works.
2014-10-10 14:55:17 +02:00
Nikolay Amiantov 66d89ef2a4 stdenv: Use "pipefail" in setup.sh 2014-10-10 14:02:15 +04:00
Nikolay Amiantov ca3ecb56ae stdenv: change 'echo -n' to 'printf "%s"'
[Bjørn: rationale is portability, "echo -n" isn't in POSIX]
2014-10-09 22:15:07 +02:00
Nikolay Amiantov 2ec4704961 stdenv: Fix handling spaces in 'substitute' 2014-10-09 22:15:07 +02:00
Nikolay Amiantov d59327b938 stdenv: added escaping for patches 2014-10-09 22:15:05 +02:00
Nikolay Amiantov d15e52f25f stdenv: fail if the patch does not exist 2014-10-09 22:14:38 +02:00
Eelco Dolstra 811de3bfaa Merge remote-tracking branch 'origin/staging' into darwin-clang-stdenv
Conflicts:
	pkgs/tools/security/gnupg/default.nix
2014-10-09 10:57:57 +02:00
Eelco Dolstra 51f1b4ec48 Automatically move stuff in lib64 to lib 2014-10-07 15:04:13 +02:00
Eelco Dolstra ab04b7d0bb Automatically move programs in sbin to bin
This should fix the OpenJDK build, which was failing because paxctl is
in sbin and therefore not automatically added to $PATH.

http://hydra.nixos.org/build/15658346
2014-10-07 14:43:56 +02:00
Eelco Dolstra a85dcf4a00 Merge remote-tracking branch 'origin/master' into staging
Conflicts:
	pkgs/development/libraries/libav/default.nix
	pkgs/shells/bash/bash-4.2-patches.nix
	pkgs/stdenv/generic/default.nix
2014-10-07 00:09:37 +02: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 c34932ef86 Merge remote-tracking branch 'origin/staging' into darwin-clang-stdenv 2014-10-06 20:14:26 +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 ce61353a9f Eliminate some optionals/optionalAttrs calls on the hot path 2014-10-05 01:59:24 +02:00
Eelco Dolstra 8c3ddec416 Merge remote-tracking branch 'origin/staging' into darwin-clang-stdenv 2014-10-03 15:49:20 +02:00
Eelco Dolstra a1bb914f71 Fix gcc.override (required by stdenv adapters like useGoldLinker) 2014-10-03 15:21:00 +02:00
Eelco Dolstra 250c7682e1 Remove broken libunwindNative package
Copying /usr/lib/system/libunwind.dylib at evaluation time doesn't
work (e.g. on Hydra). And copying binary system libraries is a bad
idea anyway for license reasons.
2014-09-29 19:58:09 +02:00
Eelco Dolstra 1e6dfdf29c clang-wrapper: Remove explicit dependency on libc++
Now libc++ is just another build input propagated from clang-wrapper.
2014-09-24 17:55:05 +02:00
Eelco Dolstra 84a586fa9e stdenvDarwin: Do not wrap clang twice 2014-09-24 16:54:43 +02:00
Eelco Dolstra 66dedaa6ee gcc-wrapper: Remove NIX_GCC_NEEDS_GREP
This is not needed on any currently supported platform.
2014-09-23 19:43:38 +02:00
Eelco Dolstra cd71f7a2e6 Merge branch 'darwin-stdenv' of github.com:joelteon/nixpkgs into staging
Conflicts:
	pkgs/development/interpreters/ruby/ruby-19.nix
	pkgs/development/libraries/libc++/default.nix
	pkgs/development/libraries/libc++abi/default.nix
	pkgs/tools/text/sgml/opensp/default.nix
2014-09-23 11:27:53 +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
Joel Taylor afa1db198b fix even more clang builds 2014-09-09 13:54:57 -07:00
Joel Taylor fa9b1f9cda build nix head successfully 2014-09-09 13:54:57 -07:00
Joel Taylor 2e26f7bef1 livcxx build 2014-09-09 13:54:25 -07:00
Joel Taylor 7da056233f wip libc++ 2014-09-09 13:54:25 -07:00
Joel Taylor 3e8344d334 suitable clang stdenv 2014-09-09 13:54:24 -07: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 1e389c976c merge 'staging' into modular-stdenv
In 2c62a36b77 the messages in pkgs/stdenv/generic/default.nix
were not merged correctly.

Conflicts:
	pkgs/stdenv/generic/default.nix
2014-09-08 18:16:54 +02:00
Eelco Dolstra 3360fa1afb Revert "stdenv/setup.sh: unbreak *.lz sources on darwin"
This reverts commit fcafdd2761. We're
trying to modularise stdenv, not add more ad-hoc compression support.
2014-08-30 22:41:56 +02:00
Vladimír Čunát fcafdd2761 stdenv/setup.sh: unbreak *.lz sources on darwin 2014-08-30 13:28:44 +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
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
Luca Bruno b83aceaecb Merge branch 'master' into staging 2014-08-14 23:09:59 +02:00
Vladimír Čunát d1ed0f44cd Merge #2823: better cygwin support, also add x86_64
Conflicts (easy):
	pkgs/development/interpreters/perl/5.16/default.nix
2014-08-14 20:38:09 +02:00
Vladimír Čunát e80f41f35e Merge pull request #2455 from bjornfor/helpful-messages-when-refusing-eval
More helpful message when refusing to evaluate "broken" package
2014-08-12 20:18:10 +02:00
Eelco Dolstra 9e31c66d1b stdenv: Put moving docs to $out/share in a separate setup hook 2014-08-09 12:47:05 +02:00
Eelco Dolstra 2db867eec9 fixupPhase: Fix making the outputs writable 2014-08-09 12:47:05 +02:00
Eelco Dolstra 11dc9036d0 Allow passing arguments to hooks
This allows envHooks and crossEnvHooks to be handled using the regular
hook mechanism.
2014-08-09 12:47:05 +02:00
Eelco Dolstra 2def8e7499 Remove addHook
Just use bash arrays directly. I.e.

  addHook preConfigure myPreConfigure

is now

  preConfigureHooks+=(myPreConfigure)
2014-08-09 12:45:53 +02:00
Eelco Dolstra e3875297fa stdenv: Don't use sed to build the setup script 2014-08-09 12:45:52 +02:00
Eelco Dolstra be3fc3ae2f Prevent an unnecessary evaluation of lib 2014-08-09 12:45:18 +02:00
Eelco Dolstra cd948c093f stdenv: Reindent 2014-08-09 12:44:50 +02:00
Eelco Dolstra 15103e5e5f stdenv: Remove the special handling of gcc
Now gcc is just another build input, making it possible in the future
to have a stdenv that doesn't depend on a C compiler. This is very
useful on NixOS, since it would allow trivial builders like
writeTextFile to work without pulling in the C compiler.
2014-08-09 12:44:50 +02:00
Eelco Dolstra 9f822e5477 stdenv: Move paxmark function to paxctl's setup hook 2014-08-09 12:44:50 +02:00
Eelco Dolstra d7b356f73b stdenv: Move unzip support to unzip's setup hook 2014-08-09 12:44:50 +02:00
Eelco Dolstra 3e33c975fb stdenv: Make unpackFile extensible via the hook mechanism
unpackCmd is now a regular hook, so there can be multiple functions
hooking into it.
2014-08-09 12:44:49 +02:00
Eelco Dolstra 1a44dbbbb9 unpackFile: Always copy directories
If $src refers to a directory, then always copy it. Previously, we
checked the extension first, so if the directory had an extension like
.tar, unpackPhase would fail.
2014-08-09 12:44:49 +02:00
Eelco Dolstra daa66b8b1c Factor out fixup phase stuff into separate setup hooks 2014-08-09 12:44:49 +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 b23dbb1a5d Allow buildInputs to be regular files
If a build input is a regular file, use it as a setup hook. This makes
setup hooks more efficient to create: you don't need a derivation that
copies them to $out/nix-support/setup-hook, instead you can use the
file as is.
2014-08-09 12:44:49 +02:00
Eelco Dolstra 0a8605ded1 Formatting 2014-08-09 12:44:48 +02:00
Eelco Dolstra 37889e2b5e Provide a hook for per-output fixup 2014-08-09 12:44:48 +02:00
Eelco Dolstra b0f2d3419c Allow multiple hooks with the same name
You can now register multiple values per named hook, e.g.

  addHook preConfigure "echo foo"
  addHook preConfigure "echo bar"

will cause ‘runHook preConfigure’ to run both ‘echo foo’ and ‘echo
bar’ (in that order). It will also call the shell function
preConfigure() or eval the shell variable $preConfigure, if
defined. Thus, if you don't call addHook, it works like the old hook
mechanism.

Allowing multiple hooks makes stdenv more modular and extensible. For
instance, multiple setup hooks can define a preFixup hook, and all of
these will be executed.
2014-08-09 12:44:48 +02:00
Michael Raskin 0769fc5b77 Set CONFIG_SHELL to stdenv.shell in the default builder, just like SHELL 2014-07-30 16:44:28 +02:00
Eelco Dolstra 3e4a382d67 Doh 2014-07-28 09:37:23 +02:00
Eelco Dolstra fb4e2e112f Export SDKROOT 2014-07-28 09:14:13 +02:00
Eelco Dolstra ac8775dd96 $xcodePath -> $SDKROOT
SDKROOT is standard. In particular, this fixes the cmake build on
Mac OS X 10.9.
2014-07-24 21:53:46 +02:00
Eelco Dolstra bf0d518c67 stdenv-darwin: Shut up some warnings from SDK headers
The Carbon headers spew out zillions of multichar / deprecations warnings,
which isn't very helpful. So turn them off.
2014-07-23 11:47:46 +02:00
Eelco Dolstra fd1a5d8531 Set MACOSX_DEPLOYMENT_TARGET
This variable sets the minimal Mac OS X version required for
running binaries produced by the Darwin toolchain. Since it
defaults to the version of the user's SDK, setting it explicitly
should make our builds more deterministic. It's now set to 10.6
because that's what hydra.nixos.org runs.
2014-07-02 19:52:25 +02:00
Eelco Dolstra 0da7fadce3 stdenv: Fix __ignoreNulls
Commit 262c21ed46 purported to enable
ignoreNulls, but it was bogus because it set the flag on the wrong
derivation (i.e. stdenv rather than the result of mkDerivation).
2014-07-01 16:56:36 +02:00
Eelco Dolstra 0d8014f6fc Darwin: Search for libraries in $sdk/usr/lib
This required adding a new environment variable NIX_LDFLAGS_AFTER
that ensures that the -L.../usr/lib flag happens last.
2014-07-01 15:56:09 +02:00
Eelco Dolstra 89f8af55f1 Darwin: Use xcrun to get the path to the SDK
Recent versions of Xcode don't install headers in /usr/include but
in a directory like

  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include

So use that instead, falling back to /usr/include in case of an older
version of Xcode.
2014-07-01 11:01:36 +02:00
Eelco Dolstra b3b9c51b34 Add a deprecation warning to ensureDir 2014-06-30 14:57:12 +02:00
Eelco Dolstra 40f7b0f9df Another attempt to eradicate ensureDir
See c556a6ea46.
2014-06-30 14:56:10 +02:00
Eelco Dolstra 47075812ce Remove the unmaintained (and AFAIK unused) stdenv for mingw 2014-06-30 13:31:08 +02:00
Bjørn Forsman ff999c31aa Factor out allowUnfree,allowBroken help message
DRY.
2014-06-21 15:05:48 +02:00
Bjørn Forsman abfaf42333 More helpful message when refusing to evaluate "broken" package
A "broken" package is one where either "meta.broken = true" or build
platform != meta.platforms.
2014-06-21 15:04:39 +02:00
Eelco Dolstra e5d63646a0 Don't suggest using --arg config '{ allowUnfree = true; }'
This doesn't work when using the Nixpkgs/NixOS channel.

Issue #2998.
2014-06-17 15:00:24 -05:00
Vladimír Čunát 9757785295 Merge recent master 2014-06-15 17:55:35 +02:00
Michael Raskin a076a60735 Allow specifying allowUnfreePredicate instead of allowUnfree. The predicate will have access to the arguments of mkDerivation call. Should be an improvement for #2188 2014-06-14 13:01:12 +04:00
Vladimír Čunát 5a98b9f514 Merge recent master into p/stdenv
Merged just before the pypi update, as it seems to cause problems on Hydra.
2014-06-09 19:07:31 +02:00
Sander van der Burg 9ec52d6323 Fixes to make basic builds on Cygwin work again + additions to support x86_64-cygwin 2014-05-29 14:47:07 +02:00
John Wiegley 27ecc1c9e9 Change stdenv on darwin to not set NIX_ENFORCE_PURITY 2014-05-29 02:43:10 -05:00
Vladimír Čunát 3d3aea09b9 fix paxmark on non-linux (a bug in grsecurity PR #1187) 2014-05-15 13:25:49 +02:00
Ricardo M. Correia 8d5ce245a2 grsecurity: Add paxctl, paxmark and stdenv.needsPax to stdenv 2014-05-15 13:25:46 +02:00
Domen Kožar 73e82b9e07 s/config.allowUnfree = true/allowUnfree = true/ 2014-05-03 15:13:01 +02:00
Eelco Dolstra 5ba24cc8ea Typo/comment 2014-04-22 18:42:44 +02:00
Eelco Dolstra 4e8c2f0ff9 Merge branch 'systemd-update' 2014-04-20 19:31:01 +02:00