1- { stdenv , lib , haskellLib , srcOnly } :
1+ { stdenv , lib , haskellLib } :
22drv :
33
44let
55 component = drv . config ;
66
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-
157# This derivation can be used to execute test component.
168# The $out of the derivation is a file containing the resulting
179# 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+ } ) // {
1927 name = ( drv . name + "-check" ) ;
2028
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-
2529 passthru = {
2630 inherit ( drv ) identifier config configFiles executableToolDepends cleanSrc env exeName ;
2731 } ;
@@ -30,19 +34,12 @@ in stdenv.mkDerivation ({
3034
3135 inherit ( component ) doCheck doCrossCheck ;
3236
33- phases = [ "unpackPhase" "buildPhase" ] ;
37+ phases = [ "unpackPhase" "patchPhase" " buildPhase"] ;
3438
3539 # If doCheck or doCrossCheck are false we may still build this
3640 # component and we want it to quietly succeed.
3741 buildPhase = ''
3842 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-
4643 runHook preCheck
4744
4845 ${ toString component . testWrapper } ${ drv } /bin/${ drv . exeName } ${ lib . concatStringsSep " " component . testFlags } | tee $out/test-stdout
0 commit comments