2018-05-11 04:08:26 +03:00
|
|
|
{ pkgs, callPackage }:
|
|
|
|
|
|
|
|
with pkgs;
|
|
|
|
|
|
|
|
{
|
|
|
|
cc-wrapper = callPackage ./cc-wrapper { };
|
|
|
|
cc-wrapper-gcc = callPackage ./cc-wrapper { stdenv = gccStdenv; };
|
|
|
|
cc-wrapper-gcc7 = callPackage ./cc-wrapper { stdenv = gcc7Stdenv; };
|
|
|
|
cc-wrapper-gcc8 = callPackage ./cc-wrapper { stdenv = gcc8Stdenv; };
|
2019-05-08 01:20:58 +03:00
|
|
|
cc-wrapper-gcc9 = callPackage ./cc-wrapper { stdenv = gcc9Stdenv; };
|
2018-05-11 04:08:26 +03:00
|
|
|
cc-wrapper-clang = callPackage ./cc-wrapper { stdenv = llvmPackages.stdenv; };
|
|
|
|
cc-wrapper-libcxx = callPackage ./cc-wrapper { stdenv = llvmPackages.libcxxStdenv; };
|
|
|
|
cc-wrapper-clang-5 = callPackage ./cc-wrapper { stdenv = llvmPackages_5.stdenv; };
|
|
|
|
cc-wrapper-libcxx-5 = callPackage ./cc-wrapper { stdenv = llvmPackages_5.libcxxStdenv; };
|
|
|
|
cc-wrapper-clang-6 = callPackage ./cc-wrapper { stdenv = llvmPackages_6.stdenv; };
|
|
|
|
cc-wrapper-libcxx-6 = callPackage ./cc-wrapper { stdenv = llvmPackages_6.libcxxStdenv; };
|
2018-09-18 23:33:32 +03:00
|
|
|
cc-wrapper-clang-7 = callPackage ./cc-wrapper { stdenv = llvmPackages_7.stdenv; };
|
|
|
|
cc-wrapper-libcxx-7 = callPackage ./cc-wrapper { stdenv = llvmPackages_7.libcxxStdenv; };
|
2019-09-19 23:03:09 +03:00
|
|
|
cc-wrapper-clang-8 = callPackage ./cc-wrapper { stdenv = llvmPackages_8.stdenv; };
|
|
|
|
cc-wrapper-libcxx-8 = callPackage ./cc-wrapper { stdenv = llvmPackages_8.libcxxStdenv; };
|
|
|
|
cc-wrapper-clang-9 = callPackage ./cc-wrapper { stdenv = llvmPackages_9.stdenv; };
|
|
|
|
cc-wrapper-libcxx-9 = callPackage ./cc-wrapper { stdenv = llvmPackages_9.libcxxStdenv; };
|
2018-05-11 04:08:26 +03:00
|
|
|
stdenv-inputs = callPackage ./stdenv-inputs { };
|
|
|
|
|
2021-05-01 14:24:25 +03:00
|
|
|
haskell = callPackage ./haskell { };
|
shellFor: Refactor for consistency and cross
This makes it work like work-on-multi from Reflex Platform. In
particular, rather than making `.env` from `shellFor`, we make `.env`
the primitive, and `shellFor` works by combining together the arguments
of all the packages to `generic-builder` and taking the `.env` of the
resulting mashup-package.
There are 2 benefits of this:
1. The dependency logic is deduplicated. generic builder just concatted
lists, whereas all the envs until now would sieve apart haskell and
system build inputs. Now, they both decide haskell vs system the same
way: according to the argument list and without reflection.
Consistency is good, especially because it mean that if the build
works, the shell is more likely to work.
2. Cross is handled better. For native builds, because the
`ghcWithPackages` calls would shadow, we through both the regular
component (lib, exe, test, bench) haskell deps and Setup.hs haskell
deps in the same `ghcWithPackages` call. But for cross builds we use
`buildPackages.ghcWithPackages` to get the setup deps. This ensures
everything works correctly.
2019-12-23 23:33:18 +03:00
|
|
|
|
2018-05-11 04:08:26 +03:00
|
|
|
cc-multilib-gcc = callPackage ./cc-wrapper/multilib.nix { stdenv = gccMultiStdenv; };
|
|
|
|
cc-multilib-clang = callPackage ./cc-wrapper/multilib.nix { stdenv = clangMultiStdenv; };
|
|
|
|
|
2020-10-26 00:17:24 +03:00
|
|
|
install-shell-files = callPackage ./install-shell-files {};
|
|
|
|
|
2018-10-03 12:54:42 +03:00
|
|
|
kernel-config = callPackage ./kernel.nix {};
|
|
|
|
|
2018-08-01 12:58:07 +03:00
|
|
|
ld-library-path = callPackage ./ld-library-path {};
|
|
|
|
|
2018-05-11 04:08:26 +03:00
|
|
|
macOSSierraShared = callPackage ./macos-sierra-shared {};
|
2018-07-21 05:43:55 +03:00
|
|
|
|
|
|
|
cross = callPackage ./cross {};
|
2018-09-16 20:53:45 +03:00
|
|
|
|
2020-10-17 10:43:33 +03:00
|
|
|
rustCustomSysroot = callPackage ./rust-sysroot {};
|
2020-11-29 19:23:00 +03:00
|
|
|
buildRustCrate = callPackage ../build-support/rust/build-rust-crate/test { };
|
2021-05-08 12:33:29 +03:00
|
|
|
importCargoLock = callPackage ../build-support/rust/test/import-cargo-lock { };
|
2020-10-17 10:43:33 +03:00
|
|
|
|
2021-04-21 13:55:05 +03:00
|
|
|
vim = callPackage ./vim {};
|
|
|
|
|
2018-10-02 22:49:54 +03:00
|
|
|
nixos-functions = callPackage ./nixos-functions {};
|
|
|
|
|
2018-09-16 20:53:45 +03:00
|
|
|
patch-shebangs = callPackage ./patch-shebangs {};
|
2018-11-27 05:58:17 +03:00
|
|
|
|
2020-04-11 02:47:44 +03:00
|
|
|
texlive = callPackage ./texlive {};
|
|
|
|
|
2021-03-09 21:04:03 +03:00
|
|
|
cuda = callPackage ./cuda { };
|
|
|
|
|
2021-05-14 18:27:25 +03:00
|
|
|
trivial = callPackage ../build-support/trivial-builders/test.nix {};
|
trivial-builders: refactor writeTextFile to be overridable
This fixes #126344, specifically with the goal of enabling overriding the
checkPhase argument. See `design notes` at the end for details.
This allows among other things, enabling bash extension for the `checkPhase`.
Previously using such bash extensions was prohibited by the `writeShellScript`
code because there was no way to enable the extension in the checker.
As an example:
```nix
(writeShellScript "foo" ''
shopt -s extglob
echo @(foo|bar)
'').overrideAttrs (old: {
checkPhase = ''
# use subshell to preserve outer environment
(
export BASHOPTS
shopt -s extglob
${old.checkPhase}
)
'';
})
```
This commit also adds tests for this feature to `pkgs/tests/default.nix`,
under `trivial-overriding`. The test code is located at
`pkgs/build-support/trivial-builders/test-overriding.nix`.
Design notes:
-------------
Per discussion with @sternenseemann, the original approach of just wrapping
`writeTextFile` in `makeOverridable` had the issue that combined with `callPackage`
in the following form, would shadow the `.override` attribute of the `writeTextFile`:
```nix
with import <nixpkgs>;
callPackage ({writeShellScript}: writeShellScript "foo" "echo foo")
```
A better approach can be seen in this commit, where `checkPhase` is moved
from an argument of `writeTextFile`, which is substituted into `buildCommand`,
into an `mkDerivation` argument, which is substituted from the environment
and `eval`-ed. (see the source)
This way we can simple use `.overideAttrs` as usual, and this also makes
`checkPhase` a bit more conformant to `mkDerivation` naming, with respect to
phases generally being overridable attrs.
Co-authored-by: sterni <sternenseemann@systemli.org>
Co-authored-by: Naïm Favier <n@monade.li>
2021-06-14 16:06:23 +03:00
|
|
|
trivial-overriding = callPackage ../build-support/trivial-builders/test-overriding.nix {};
|
2021-05-14 18:27:25 +03:00
|
|
|
|
2018-11-27 05:58:17 +03:00
|
|
|
writers = callPackage ../build-support/writers/test.nix {};
|
2018-05-11 04:08:26 +03:00
|
|
|
}
|