Commit graph

82 commits

Author SHA1 Message Date
Domen Kožar
f031f3105a
GHC 8.0.2: use -split-sections
-split-sections replaced -split-objs with following upsides:

1) -split-objs adds considerable overhead to compile time

2) combined with stripping, it causes issues when cross-compiling

For upstream see https://ghc.haskell.org/trac/ghc/ticket/8405

This is supported only for Linux/Windows using ld linker.

GHC master also turns on -split-sections by default.

Example using stack:

Without splitting

  $ du /nix/store/5paayhibayr73zqfaj458g4k4mv108jn-stack-1.3.2
  4       /nix/store/5paayhibayr73zqfaj458g4k4mv108jn-stack-1.3.2/share/bash-completion/completions
  4       /nix/store/5paayhibayr73zqfaj458g4k4mv108jn-stack-1.3.2/share/bash-completion
  4       /nix/store/5paayhibayr73zqfaj458g4k4mv108jn-stack-1.3.2/share
  23416   /nix/store/5paayhibayr73zqfaj458g4k4mv108jn-stack-1.3.2/bin
  23420   /nix/store/5paayhibayr73zqfaj458g4k4mv108jn-stack-1.3.2

With -split-objs

  $ du /nix/store/fypymm529adpx71gdzm0851xz42wdbz0-stack-1.3.2
  20632   /nix/store/fypymm529adpx71gdzm0851xz42wdbz0-stack-1.3.2/bin
  4 /nix/store/fypymm529adpx71gdzm0851xz42wdbz0-stack-1.3.2/share/bash-completion/completions
  4 /nix/store/fypymm529adpx71gdzm0851xz42wdbz0-stack-1.3.2/share/bash-completion
  4       /nix/store/fypymm529adpx71gdzm0851xz42wdbz0-stack-1.3.2/share
  20636   /nix/store/fypymm529adpx71gdzm0851xz42wdbz0-stack-1.3.2

With -split-sections

  $ du /nix/store/40l6krinx1zx41lr87c4m12hxj4ldf3x-stack-1.3.2
  4       /nix/store/40l6krinx1zx41lr87c4m12hxj4ldf3x-stack-1.3.2/share/bash-completion/completions
  4       /nix/store/40l6krinx1zx41lr87c4m12hxj4ldf3x-stack-1.3.2/share/bash-completion
  4       /nix/store/40l6krinx1zx41lr87c4m12hxj4ldf3x-stack-1.3.2/share
  20672   /nix/store/40l6krinx1zx41lr87c4m12hxj4ldf3x-stack-1.3.2/bin
  20676   /nix/store/40l6krinx1zx41lr87c4m12hxj4ldf3x-stack-1.3.2

Note: you currently need following overrides to build stack on 802:

   vector-algorithms = dontCheck super.vector-algorithms;
   path-io = doJailbreak super.path-io;
   stack = doJailbreak super.stack;

Note: Should also work on GHC 8.0.1, but I'm being careful here.
      We could backport later on.
2017-02-07 14:21:54 +01:00
Shea Levy
2154108270 haskell-modules/generic-builder: Fix copy-paste error 2017-01-23 11:35:59 -05:00
Shea Levy
0ff6b6fc0f (haskellPackages.callPackage foo).env: Set the right env vars when cross-compiling 2017-01-22 17:05:19 -05:00
Shea Levy
60918113af haskellPackages.mkDerivation: Use native hsc2hs when cross-compiling 2017-01-11 13:26:08 -05:00
Domen Kožar
663048f378 Revert "haskell: workaround for bug with dynamic libraries on darwin"
This reverts commit 19e2e7290a.

See the correct fix in aa64994b48a29ea8d12323942f1743fa4133527a

General purpose solution will be once we implement
https://github.com/NixOS/nixpkgs/issues/21624
2017-01-03 23:10:24 +01:00
Peter Simons
711c235777 haskell: clean-up for the generic builder
Clean up the implementation from d0250ad884.
2017-01-03 10:52:50 +01:00
Daiderd Jordan
19e2e7290a haskell: workaround for bug with dynamic libraries on darwin 2016-12-24 16:15:35 +01:00
Domen Kožar
d0250ad884 Haskell generic builder: enable parallel builds for GHC 8.0.2
This reverts https://github.com/NixOS/nixpkgs/pull/4554
2016-12-16 22:25:40 +01:00
Joe Hermaszewski
757638acae ghcWithPackages: fix env NIX_GHC_LIBDIR value
Ideally the duplication between the environment shellHook and the ghc
wrapper would be removed.

Fixes #20730
2016-11-26 12:06:56 +00:00
Vladimír Čunát
2aea31b52e
Merge branch 'staging' 2016-11-19 21:55:26 +01:00
Shea Levy
64ec4dd87b Add haskell packages set for cross ghc 2016-11-18 10:44:53 -05:00
Shea Levy
3995655d2c Revert "Merge pull request #17145 from kalhauge/haskell_darwin_dyld"
This fix doesn't actually fix the cabal bug (see #16357), but it does
cause other bugs (see #20476)

Fixes #20476

This reverts commit b89fa5fd5c, reversing
changes made to e4b146b041.
2016-11-17 07:25:42 -05:00
Peter Simons
b59b89d9e3 Revert "Extend Haskell generic builder to use new --ipid flag."
This reverts commit ec8b816154. The change told
the Cabal build system to use the hash-part of $out as the internal identifier
for the library it's building (rather than generating such an ID itself). While
a good idea in theory, this choice had an unfortunate side-effect: When Cabal
links libraries X, Y, and Z into an executable, then the generated binary
contains their respective IDs. Now, Nix finds those strings and treats them as
an indication that there is a *run-time dependency* on the corresponding store
paths. This means that the generated executable will always depend on the store
paths of all the Haskell libraries that went into it, even when linked
statically.
2016-10-08 10:45:48 +02:00
Peter Simons
ec8b816154 Extend Haskell generic builder to use new --ipid flag. 2016-10-05 09:46:53 +02:00
Peter Simons
97fd905823 haskell: add support for 'hardeningDisable' to the generic builder
We also have a new helper function 'disableHardening' to use in
overrides. Fixes https://github.com/NixOS/nixpkgs/issues/14820.
2016-09-15 09:12:03 +02:00
Christian Gram Kalhauge
1a08805358 Make the implementation clean 2016-07-21 14:56:45 +02:00
Christian Gram Kalhauge
9bca29d4ef Change if to optionalString 2016-07-21 14:23:56 +02:00
Christian Gram Kalhauge
de5a2ee034 Reduce computation time for non-darwin users 2016-07-21 11:39:52 +02:00
Christian Gram Kalhauge
475c8bfb7d Fix DLYD problem with haskell libraries on Darwin
This commit fixes a problem that occurs with externally linked haskell
libraries on Darwin. It does this by adding the libraries to the
--extra-lib-dirs flag and the DYLD_LIBRARY_PATH environment variable.
2016-07-20 14:21:53 +02:00
Michael Alan Dorman
b40e1efe00 haskell generic-builder: don't propagate setupHaskellDepends
Without this patch, attempts to install at least some of the packages
that start to use setupHaskellDepends (mostly gtk-related packages)
results in collisions:

    building path(s) ‘/nix/store/63k5smns43f5r2ad8wcc242x0gwd70m3-ghc-8.0.1’
    collision between `/nix/store/k18i1nm5hgnb82y9w2g9hmlwhk3szjld-ghc-8.0.1/lib/ghc-8.0.1/Cabal-1.24.0.0/Distribution/Compat/Binary.dyn_hi' and `/nix/store/0rwhbwsg9kmywgbrib2bs29p2hmi80za-Cabal-1.24.0.0/lib/ghc-8.0.1/Cabal-1.24.0.0/Distribution/Compat/Binary.dyn_hi'
    builder for ‘/nix/store/vrjkfpm8sb96m9i5k74h8vn0rwddgy4v-ghc-8.0.1.drv’ failed with exit code 25

This would appear to me to be a consequence of setupHaskellDepends
entries being added to propagateBuildInputs.  It is sufficient in the
cases I'm familiar with (taffyBar), and I think correct, to simply add
it to the otherBuildInputs.
2016-06-13 09:51:35 +02:00
Peter Simons
8ffcd238c3 haskell-generic-builder: add support for setupHaskellDepends 2016-06-12 08:37:01 +02:00
Jude Taylor
4686bc54a6 add socket.io to interactive ghcjs environments 2016-03-01 16:06:29 -08:00
John Ericson
f13eede7e5 haskell: Tiny refactor in generic-builder. No hashes/interfaces changed. 2016-02-21 10:16:13 -08:00
John Ericson
51b66ed4d9 haskell: Add notion of cross compiler and define nativeGhc with it
Tested to not change hashes
2016-02-21 10:16:13 -08:00
Charles Strahan
97d9071b95 ghcjs: use native ghc to build Setup.hs 2016-02-18 03:15:59 -05:00
Charles Strahan
bbce88302a ghcjs: fix building with cabal-install-1.22.8.0 2016-02-18 03:15:59 -05:00
Charles Strahan
95d892ec26 ghcjs: update and fix ghcjs/reflex libs
Set dontStrip when building ghcjs libs, which fixes the ghcjs-dom lib
and also makes the logs cleaner.
2016-01-24 17:13:45 -05:00
Charles Strahan
4fd985b9ae haskell-packages: properly set postPatch
The existing code overrode the postPatch, instead of combining the
jailbreak commands with the user supplied postPatch.
2016-01-24 13:32:56 -05:00
Peter Simons
9815d92d91 haskell-generic-builder: GHC 8.0.x wants --disable-profiling instead of --disable-executable-profiling 2016-01-17 12:29:03 +01:00
Peter Simons
a3540d9bb7 haskell-generic-builder: drop "haskell-" prefix from interactive environment's names 2015-09-10 19:51:47 +02:00
Allen Nelson
d2457ea991 add shellHook argument so that users can pass in their own 2015-09-09 12:58:28 -05:00
Peter Simons
dc5bf39bfe haskell-generic-builder: improve meta.platforms vs. meta.hydraPlatforms logic
hydraPlatforms now defaults to the value of meta.platforms rather than
defaulting to ghc.meta.hydraPlatforms. This solution is, in fact, still
sub-optimal. See https://github.com/NixOS/nixpkgs/issues/9608 for further
details.
2015-09-02 16:51:35 +02:00
Peter Simons
4a8797d827 haskell-generic-builder: stop pre-pending "haskell-" to package names
A derivation of the Hackage package "foo" is called "haskell-foo" if it is a
library, but only "foo" if it is an executable (without a library). This
distinction used to be fine when Haskell packages where visible to operations
like "nix-env -qa" or "nix-env -i", but after our switch to Haskell NG it has
no more purpose. Consequently, this patch removes the name prefix from all
Haskell packages -- every Haskell package is now called exactly like it's
called on Hackage.

Closes https://github.com/NixOS/nixpkgs/pull/9538.
2015-08-31 16:50:12 +02:00
William A. Kennington III
64cd711f5c Merge branch 'master.upstream' into staging.upstream 2015-08-21 15:17:26 -07:00
Benno Fünfstück
c51f0dbd52 haskell: disable haddock on GHC <7.8 on darwin
Fixes NixOS/nixpkgs#812
2015-08-20 21:51:19 +02:00
William A. Kennington III
a106080623 Merge branch 'master.upstream' into staging.upstream 2015-08-14 13:22:00 -07:00
Peter Simons
167e54b257 haskell-generic-builder: allow users to specify their own install phase 2015-08-14 21:23:42 +02:00
William A. Kennington III
4624985561 Merge branch 'master.upstream' into staging.upstream 2015-08-07 13:40:39 -07:00
Peter Simons
7064e4fb46 haskell-generic-builder: add support for build-tools in the test suite stanza 2015-08-07 15:13:14 +02:00
Peter Simons
6229ec91da Add 'enableExecutableProfiling' argument to the generic Haskell builder.
Closes https://github.com/NixOS/nixpkgs/issues/2734.
2015-08-06 16:13:10 +02:00
Peter Simons
ab77228749 haskell-generic-builder: improve recognition of pkgconfig dependencies 2015-08-05 21:36:20 +02:00
Peter Simons
6cd9a820ad haskell: extend generic builder to support upcoming format change from cabal2nix 2015-07-19 10:31:13 +02:00
Peter Simons
7e04b7319c haskell: disable parallel compilation for libraries to mitigate the effects of GHC's non-deterministic library ID bug
Further details can be found at <https://github.com/peti/ghc-library-id-bug>
and <https://ghc.haskell.org/trac/ghc/ticket/4012>.
2015-06-05 23:55:01 +02:00
Ryan Trinkle
82bd3a5580 Do not use install_name_tool on "executables" built by GHCJS
These executables are really .jsexe directories, and install_name_tool will fail
2015-05-31 03:18:13 -04:00
Charles Strahan
31dde16881 ghcjs: set NIX_GHCJS_* variables in env. 2015-05-08 11:53:28 -04:00
Charles Strahan
929dc4199a ghcjs: properly wrap binaries in environment
This also:

 1  Builds Setup.hs with ghcjs, which (among other things) defines
    __GHCJS__ and ghcjs_HOST_OS during pre-processing.
 2  Fixes ghc-paths to point at ghcjs and use NIX_GHCJS_* env-vars.
 3  Boots ghcjs into $prefix/lib/$compiler.
2015-05-08 11:33:44 -04:00
Nikolay Amiantov
196e34279d haskellng.generic-builder: move jailbreak-cabal to postPatch
Closes https://github.com/NixOS/nixpkgs/pull/7208.
2015-04-18 20:43:22 +02:00
Cray Elliott
880e0950d8 Revert "add patchFlags to haskell-ng's generic-builder"
Oops! Didn't realize that the stripLen option can be passed to fetchpatch.
Seems a cleaner than my method

This reverts commit eb7362a36c.
2015-04-05 01:06:20 -07:00
Cray Elliott
eb7362a36c add patchFlags to haskell-ng's generic-builder
I use this to get yesod-bin working with ghc 7.10.1
2015-04-05 00:48:12 -07:00
Peter Simons
945269a48f haskell-generic-builder: gratuitous cosmetic change to trigger a complete re-build
hydra.nixos.org serves broken binaries because of our favorite non-deterministic
package IDs in GHC bug. :-( Re-building everything from scratch seems like the
easiest way to recover.
2015-04-01 22:54:45 +02:00