Bryan O'Sullivan avatar Bryan O'Sullivan committed 11e76c5

Fix compatibility with Cabal 1.18

Comments (0)

Files changed (1)

 #!/usr/bin/env runhaskell
 
 \begin{code}
+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
 {- OPTIONS_GHC -Wall #-}
 
 import Control.Monad (liftM2, mplus)
 import Distribution.Simple.Program
 import Distribution.Verbosity
 
+-- A Cabal 1.16 vs 1.18 compatibility hack, as in 1.18
+-- findProgramLocation has a new (unused in this case) parameter.
+-- ConstOrId adds this parameter when types say it is mandatory.
+class ConstOrId a b where
+    constOrId :: a -> b
+
+instance ConstOrId a a where
+    constOrId = id
+
+instance ConstOrId a (b -> a) where
+    constOrId = const
+
+
 main = defaultMainWithHooks simpleUserHooks {
   hookedPrograms = [mysqlConfigProgram],
 
 }
 
 mysqlConfigProgram = (simpleProgram "mysql_config") {
-    programFindLocation = \verbosity -> liftM2 mplus
+    programFindLocation = \verbosity -> constOrId $ liftM2 mplus
       (findProgramLocation verbosity "mysql_config")
       (findProgramLocation verbosity "mysql_config5")
   }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.