@@ -51,6 +51,7 @@ import Experiments.Types (Example, exampleToOptions)
51
51
import qualified Experiments.Types as E
52
52
import GHC.Generics (Generic )
53
53
import Numeric.Natural (Natural )
54
+ import Development.Shake.Classes
54
55
55
56
56
57
config :: FilePath
@@ -70,7 +71,7 @@ main = shakeArgs shakeOptions {shakeChange = ChangeModtimeAndDigest} $ do
70
71
configStatic <- liftIO $ readConfigIO config
71
72
let build = outputFolder configStatic
72
73
buildRules build ghcideBuildRules
73
- benchRules build resource (MkBenchRules (benchGhcide $ samples configStatic) " ghcide" )
74
+ benchRules build resource (MkBenchRules (askOracle $ GetSamples () ) benchGhcide " ghcide" )
74
75
csvRules build
75
76
svgRules build
76
77
action $ allTargets build
@@ -98,14 +99,18 @@ createBuildSystem userRules = do
98
99
99
100
_ <- addOracle $ \ GetExperiments {} -> experiments <$> readConfig config
100
101
_ <- addOracle $ \ GetVersions {} -> versions <$> readConfig config
101
- _ <- addOracle $ \ GetExamples {} -> examples <$> readConfig config
102
- _ <- addOracle $ \ (GetExample name) -> find (\ e -> getExampleName e == name) . examples <$> readConfig config
102
+ _ <- versioned 1 $ addOracle $ \ GetExamples {} -> examples <$> readConfig config
103
+ _ <- versioned 1 $ addOracle $ \ (GetExample name) -> find (\ e -> getExampleName e == name) . examples <$> readConfig config
103
104
_ <- addOracle $ \ GetBuildSystem {} -> buildTool <$> readConfig config
105
+ _ <- addOracle $ \ GetSamples {} -> samples <$> readConfig config
104
106
105
107
benchResource <- newResource " ghcide-bench" 1
106
108
107
109
userRules benchResource
108
110
111
+ newtype GetSamples = GetSamples () deriving newtype (Binary , Eq , Hashable , NFData , Show )
112
+ type instance RuleResult GetSamples = Natural
113
+
109
114
--------------------------------------------------------------------------------
110
115
111
116
buildGhcide :: BuildSystem -> [CmdOption ] -> FilePath -> Action ()
@@ -130,9 +135,10 @@ buildGhcide Stack args out =
130
135
131
136
benchGhcide
132
137
:: Natural -> BuildSystem -> [CmdOption ] -> BenchProject Example -> Action ()
133
- benchGhcide samples buildSystem args BenchProject {.. } =
138
+ benchGhcide samples buildSystem args BenchProject {.. } = do
134
139
command_ args " ghcide-bench" $
135
140
[ " --timeout=3000" ,
141
+ " --no-clean" ,
136
142
" -v" ,
137
143
" --samples=" <> show samples,
138
144
" --csv=" <> outcsv,
0 commit comments