1
- { stdenv , lib , haskellLib , srcOnly } :
1
+ { stdenv , lib , haskellLib } :
2
2
drv :
3
3
4
4
let
5
5
component = drv . config ;
6
6
7
- subdir =
8
- if drv ?source
9
- then
10
- drv . srcSubDir or ""
11
- else
12
- # srcOnly returns just the subdir, so we're already in it.
13
- "" ;
14
-
15
7
# This derivation can be used to execute test component.
16
8
# The $out of the derivation is a file containing the resulting
17
9
# stdout output.
18
- in stdenv . mkDerivation ( {
10
+ in stdenv . mkDerivation ( (
11
+ if drv ? source
12
+ then {
13
+ src = drv . source ;
14
+ patchPhase =
15
+ # This `cd` is normally done in the `prePatch` of the drv
16
+ lib . optionalString ( drv . srcSubDir != "" ) ''
17
+ cd ${ lib . removePrefix "/" drv . srcSubDir }
18
+ '' ;
19
+ }
20
+ else
21
+ # This makes the derivation work a bit like `srcOnly`,
22
+ # using the original derivation, but replacing the `buildPhase`.
23
+ ( drv . drvAttrs or drv ) // {
24
+ outputs = [ "out" ] ;
25
+ separateDebugInfo = false ;
26
+ } ) // {
19
27
name = ( drv . name + "-check" ) ;
20
28
21
- # Using `srcOnly` (rather than getting the `src` via a `drv.passthru`)
22
- # should correctly apply the patches from `drv` (if any).
23
- src = drv . source or ( srcOnly drv ) ;
24
-
25
29
passthru = {
26
30
inherit ( drv ) identifier config configFiles executableToolDepends cleanSrc env exeName ;
27
31
} ;
@@ -30,19 +34,12 @@ in stdenv.mkDerivation ({
30
34
31
35
inherit ( component ) doCheck doCrossCheck ;
32
36
33
- phases = [ "unpackPhase" "buildPhase" ] ;
37
+ phases = [ "unpackPhase" "patchPhase" " buildPhase"] ;
34
38
35
39
# If doCheck or doCrossCheck are false we may still build this
36
40
# component and we want it to quietly succeed.
37
41
buildPhase = ''
38
42
mkdir $out
39
- ${
40
- # Change to the source sub directory if there is one.
41
- lib . optionalString ( subdir != "" ) ''
42
- cd ${ lib . removePrefix "/" subdir }
43
- ''
44
- }
45
-
46
43
runHook preCheck
47
44
48
45
${ toString component . testWrapper } ${ drv } /bin/${ drv . exeName } ${ lib . concatStringsSep " " component . testFlags } | tee $out/test-stdout
0 commit comments