@@ -110,6 +110,7 @@ import Distribution.Simple.BuildPaths
110
110
import Distribution.Simple.LocalBuildInfo
111
111
import Distribution.Simple.PackageIndex
112
112
import Distribution.Simple.Setup
113
+ import Distribution.Simple.Utils (createDirectoryIfMissingVerbose )
113
114
import Distribution.Text
114
115
import Distribution.Utils.Path
115
116
import Distribution.Utils.ShortText
@@ -128,10 +129,17 @@ import Data.Monoid
128
129
import Prelude hiding (readFile , writeFile )
129
130
130
131
import System.Directory
131
- (canonicalizePath , createDirectoryIfMissing , doesDirectoryExist ,
132
- doesFileExist , getCurrentDirectory )
132
+ ( canonicalizePath
133
+ , doesDirectoryExist
134
+ , doesFileExist
135
+ , getCurrentDirectory
136
+ )
133
137
import System.Exit (ExitCode (ExitSuccess ))
138
+ #if MIN_VERSION_Cabal(3,14,0)
139
+ import System.FilePath (isDrive , takeDirectory )
140
+ #else
134
141
import System.FilePath (isDrive , takeDirectory , (</>) )
142
+ #endif
135
143
136
144
-- | Include this function when your setup doesn't contain any
137
145
-- extra functionality.
@@ -162,8 +170,10 @@ mkPkgInfoModules hooks = hooks
162
170
prettyLicense :: I. InstalledPackageInfo -> String
163
171
prettyLicense = either prettyShow prettyShow . I. license
164
172
165
- ft :: ShortText -> String
166
- ft = fromShortText
173
+ #if !MIN_VERSION_Cabal(3,14,0)
174
+ interpretSymbolicPath :: Maybe () -> FilePath -> FilePath
175
+ interpretSymbolicPath _ p = p
176
+ #endif
167
177
168
178
-- -------------------------------------------------------------------------- --
169
179
-- Cabal 2.0
@@ -176,28 +186,31 @@ mkPkgInfoModulesPostConf
176
186
-> LocalBuildInfo
177
187
-> IO ()
178
188
mkPkgInfoModulesPostConf hook args flags pkgDesc bInfo = do
179
- mapM_ (updatePkgInfoModule pkgDesc bInfo) $ Graph. toList $ componentGraph bInfo
189
+ mapM_ (updatePkgInfoModule pkgDesc bInfo flags ) $ Graph. toList $ componentGraph bInfo
180
190
hook args flags pkgDesc bInfo
181
191
182
- updatePkgInfoModule :: PackageDescription -> LocalBuildInfo -> ComponentLocalBuildInfo -> IO ()
183
- updatePkgInfoModule pkgDesc bInfo clbInfo = do
184
- createDirectoryIfMissing True dirName
192
+ updatePkgInfoModule
193
+ :: PackageDescription
194
+ -> LocalBuildInfo
195
+ -> ConfigFlags
196
+ -> ComponentLocalBuildInfo
197
+ -> IO ()
198
+ updatePkgInfoModule pkgDesc bInfo flags clbInfo = do
199
+ createDirectoryIfMissingVerbose verbosity True dirName
185
200
moduleBytes <- pkgInfoModule moduleName cName pkgDesc bInfo
186
201
updateFile fileName moduleBytes
187
202
188
203
-- legacy module
189
204
legacyModuleBytes <- pkgInfoModule legacyModuleName cName pkgDesc bInfo
190
205
updateFile legacyFileName legacyModuleBytes
191
-
192
206
where
193
- dirName = autogenComponentModulesDir bInfo clbInfo
207
+ verbosity = fromFlag $ configVerbosity flags
208
+ dirName = interpretSymbolicPath Nothing $ autogenComponentModulesDir bInfo clbInfo
194
209
cName = unUnqualComponentName <$> componentNameString (componentLocalName clbInfo)
195
-
196
210
moduleName = pkgInfoModuleName
197
- fileName = dirName ++ " /" ++ moduleName ++ " .hs"
198
-
211
+ fileName = dirName </> moduleName <> " .hs"
199
212
legacyModuleName = legacyPkgInfoModuleName cName
200
- legacyFileName = dirName ++ " / " ++ legacyModuleName ++ " .hs"
213
+ legacyFileName = dirName </> legacyModuleName <> " .hs"
201
214
202
215
-- -------------------------------------------------------------------------- --
203
216
-- Generate PkgInfo Module
@@ -217,7 +230,7 @@ updateFile fileName content = do
217
230
218
231
legacyPkgInfoModuleName :: Maybe String -> String
219
232
legacyPkgInfoModuleName Nothing = " PkgInfo"
220
- legacyPkgInfoModuleName (Just cn) = " PkgInfo_" ++ map tr cn
233
+ legacyPkgInfoModuleName (Just cn) = " PkgInfo_" <> map tr cn
221
234
where
222
235
tr ' -' = ' _'
223
236
tr c = c
@@ -239,7 +252,12 @@ getVCS = getCurrentDirectory >>= getVcsOfDir
239
252
then return Nothing
240
253
else getVcsOfDir (takeDirectory canonicDir)
241
254
242
- pkgInfoModule :: String -> Maybe String -> PackageDescription -> LocalBuildInfo -> IO B. ByteString
255
+ pkgInfoModule
256
+ :: String
257
+ -> Maybe String
258
+ -> PackageDescription
259
+ -> LocalBuildInfo
260
+ -> IO B. ByteString
243
261
pkgInfoModule moduleName cName pkgDesc bInfo = do
244
262
(tag, revision, branch) <- getVCS >>= \ case
245
263
Just Mercurial -> hgInfo
@@ -302,10 +320,10 @@ pkgInfoModule moduleName cName pkgDesc bInfo = do
302
320
, " copyright = " <> (pack . show . copyright) pkgDesc
303
321
, " "
304
322
, " author :: IsString a => a"
305
- , " author = \" " <> (pack . ft . author) pkgDesc <> " \" "
323
+ , " author = \" " <> (pack . fromShortText . author) pkgDesc <> " \" "
306
324
, " "
307
325
, " homepage :: IsString a => a"
308
- , " homepage = \" " <> (pack . ft . homepage) pkgDesc <> " \" "
326
+ , " homepage = \" " <> (pack . fromShortText . homepage) pkgDesc <> " \" "
309
327
, " "
310
328
, " package :: IsString a => a"
311
329
, " package = \" " <> (pack . display . package) pkgDesc <> " \" "
@@ -397,4 +415,4 @@ pkgIdWithLicense a = (display . packageId) a
397
415
++ (if cr /= " " then " , " ++ cr else " " )
398
416
++ " ]"
399
417
where
400
- cr = (unwords . words . ft . I. copyright) a
418
+ cr = (unwords . words . fromShortText . I. copyright) a
0 commit comments