--- HDBC-mysql-0.6.6.1-orig/Setup.lhs	2012-08-30 13:40:03.000000000 +1000
+++ HDBC-mysql-0.6.6.1/Setup.lhs	2014-07-03 22:31:21.162259637 +1000
@@ -1,6 +1,7 @@
 #!/usr/bin/env runhaskell
 
 \begin{code}
+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
 import Distribution.Simple
 import Distribution.PackageDescription
 import Distribution.Version
@@ -26,8 +27,21 @@
     }
 }
 
+-- 'ConstOrId' is a @Cabal-1.16@ vs @Cabal-1.18@ compatibility hack,
+-- 'programFindLocation' 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
+
 mysqlConfigProgram = (simpleProgram "mysql_config") {
-    programFindLocation = \verbosity -> do
+    programFindLocation = \verbosity -> constOrId $ do
       mysql_config  <- findProgramOnPath "mysql_config"  verbosity
       mysql_config5 <- findProgramOnPath "mysql_config5" verbosity
       return (mysql_config `mplus` mysql_config5)
