
Hello, In order to build (cabal install HDBC-mysql) the HDBC-mysql package, I am having to make the following changes: (1) I had to change the mysql (5.1.45 community distrib msi) to use a wrapper exe on the mysql_config.pl and put this in c:\program files\mysql\bin since although the c:\program files\mysql\scripts\, where mysql_config.pl resides, was in the path, even the commandline call to it was not finding or using it...very strange. This of course doesn't directly have to do with the HDBC-mysql package. --The quick wrapper was: import System.Environment(getArgs) import System.Process(readProcessWithExitCode) import System.Exit(exitWith,ExitCode(ExitSuccess)) main = do args <- getArgs (ecode,out,err) <- readProcessWithExitCode "c:\\Perl64\\bin\\perl.exe" ("C:\\Program Files\\MySQL\\scripts\\mysql_config.pl" : args) "" if ecode == ExitSuccess then mapM_ putStrLn (lines out) else mapM_ putStrLn (lines err) exitWith ecode -- so now the output is: "C:\Program Files\MySQL\lib\mysqlclient.lib" "wsock32.lib" "advapi32.lib" "user3 2.lib" (2) Once that was done, the "cabal install HDBC-mysql" call was able to find the mysql_config. However, it was splitting the values returned by mysql_config on space, and thus failed to find mysql.h, as the resulting command was: C:\Program Files (x86)\Haskell Platform\2009.2.0.2\gcc.exe -c -BC:\ Program Files (x86)\Haskell Platform\2009.2.0.2\gcc-lib -IC:\Program Files (x86) \Haskell Platform\2009.2.0.2\include\mingw -D__GLASGOW_HASKELL__=610 -IIC:\Program -Iles\MySQL\include\mysql" ... -- then I tried taking the -I out of the mysql_config.pl script and got the following from the "cabal install HDBC-mysql" command was: C:\Program Files (x86)\Haskell Platform\2009.2.0.2\gcc.exe -c -BC:\ Program Files (x86)\Haskell Platform\2009.2.0.2\gcc-lib -IC:\Program Files (x86) \Haskell Platform\2009.2.0.2\include\mingw -D__GLASGOW_HASKELL__=610 -I:\Program -Iles\MySQL\include\mysql" ... blah blah blah cabal: Error: some packages failed to install: HDBC-mysql-0.6.1 failed during the building phase. The exception was: exit: ExitFailure 1 ... so finally I am downloading your package to see if I can figure out a fix for windows boxes. Just thought I would give you a heads up on this windows-related bug. Thanks, Roderick

Roderick, thanks for passing this along. To be honest, I haven't tried to build this on Windows yet. I have an old PC that I keep meaning to get things going on. If you're able to get things working, I'd be more than happy to integrate any changes that you want to send along... patches are very much appreciated! :) thanks! chris On Mar 18, 2010, at 1:46 PM, Roderick Ford wrote:
Hello, In order to build (cabal install HDBC-mysql) the HDBC-mysql package, I am having to make the following changes:
(1) I had to change the mysql (5.1.45 community distrib msi) to use a wrapper exe on the mysql_config.pl and put this in c:\program files\mysql\bin since although the c:\program files\mysql\scripts\, where mysql_config.pl resides, was in the path, even the commandline call to it was not finding or using it...very strange. This of course doesn't directly have to do with the HDBC-mysql package. --The quick wrapper was: import System.Environment(getArgs) import System.Process(readProcessWithExitCode) import System.Exit(exitWith,ExitCode(ExitSuccess)) main = do args <- getArgs (ecode,out,err) <- readProcessWithExitCode "c:\\Perl64\\bin\\perl.exe" ("C:\\Program Files\\MySQL\\scripts\\mysql_config.pl" : args) "" if ecode == ExitSuccess then mapM_ putStrLn (lines out) else mapM_ putStrLn (lines err) exitWith ecode
-- so now the output is: "C:\Program Files\MySQL\lib\mysqlclient.lib" "wsock32.lib" "advapi32.lib" "user3 2.lib"
(2) Once that was done, the "cabal install HDBC-mysql" call was able to find the mysql_config. However, it was splitting the values returned by mysql_config on space, and thus failed to find mysql.h, as the resulting command was:
C:\Program Files (x86)\Haskell Platform\2009.2.0.2\gcc.exe -c -BC:\ Program Files (x86)\Haskell Platform\2009.2.0.2\gcc-lib -IC:\Program Files (x86) \Haskell Platform\2009.2.0.2\include\mingw -D__GLASGOW_HASKELL__=610 -IIC:\Program -Iles\MySQL\include\mysql" ...
-- then I tried taking the -I out of the mysql_config.pl script and got the following from the "cabal install HDBC-mysql" command was: C:\Program Files (x86)\Haskell Platform\2009.2.0.2\gcc.exe -c -BC:\ Program Files (x86)\Haskell Platform\2009.2.0.2\gcc-lib -IC:\Program Files (x86) \Haskell Platform\2009.2.0.2\include\mingw -D__GLASGOW_HASKELL__=610 -I:\Program -Iles\MySQL\include\mysql" ... blah blah blah cabal: Error: some packages failed to install: HDBC-mysql-0.6.1 failed during the building phase. The exception was: exit: ExitFailure 1
... so finally I am downloading your package to see if I can figure out a fix for windows boxes. Just thought I would give you a heads up on this windows-related bug.
Thanks, Roderick

For those interested, the patch for parsing the paths that contain spaces (windows installs of mysql), I passed along the changes for Setup.lhs so that the split skips spaces inside quotes: mysqlBuildInfo :: LocalBuildInfo -> IO BuildInfo mysqlBuildInfo lbi = do let mysqlConfig = rawSystemProgramStdoutConf verbosity mysqlConfigProgram (withPrograms lbi) includeDirs <- return . map (dropWhile (\x -> elem x "-I") ) . split =<< mysqlConfig ["--include"] ldOptions <- return . split =<< mysqlConfig ["--libs"] return emptyBuildInfo { ldOptions = ldOptions, includeDirs = includeDirs } where verbosity = normal -- honestly, this is a hack split :: [Char] -> [[Char]] split xs@(l:lx) = if (elem '\"' xs) then let x = dropWhile (== '"') xs y = takeWhile (/= '"') x in y : split ( dropWhile (\n -> elem n "\" \r\n\t") (drop (length y) x)) else let x = takeWhile (\n -> not (elem n " \r\n\t") ) xs in x : split ( dropWhile (\n -> elem n " \r\n\t") (drop (length x) xs)) split [] = [] This hasn't fixed everything, such that I have a complete install of HDBC-mysql on Windows, but it is a step. Roderick Subject: Re: hdbc-mysql on windows From: waterson@maubi.net Date: Fri, 19 Mar 2010 11:18:20 -0700 CC: haskell-cafe@haskell.org To: developer@live.com Roderick, thanks for passing this along. To be honest, I haven't tried to build this on Windows yet. I have an old PC that I keep meaning to get things going on. If you're able to get things working, I'd be more than happy to integrate any changes that you want to send along... patches are very much appreciated! :) thanks! chris On Mar 18, 2010, at 1:46 PM, Roderick Ford wrote: Hello, In order to build (cabal install HDBC-mysql) the HDBC-mysql package, I am having to make the following changes: (1) I had to change the mysql (5.1.45 community distrib msi) to use a wrapper exe on the mysql_config.pl and put this in c:\program files\mysql\bin since although the c:\program files\mysql\scripts\, where mysql_config.pl resides, was in the path, even the commandline call to it was not finding or using it...very strange. This of course doesn't directly have to do with the HDBC-mysql package. --The quick wrapper was: import System.Environment(getArgs) import System.Process(readProcessWithExitCode) import System.Exit(exitWith,ExitCode(ExitSuccess)) main = do args <- getArgs (ecode,out,err) <- readProcessWithExitCode "c:\\Perl64\\bin\\perl.exe" ("C:\\Program Files\\MySQL\\scripts\\mysql_config.pl" : args) "" if ecode == ExitSuccess then mapM_ putStrLn (lines out) else mapM_ putStrLn (lines err) exitWith ecode -- so now the output is: "C:\Program Files\MySQL\lib\mysqlclient.lib" "wsock32.lib" "advapi32.lib" "user3 2.lib" (2) Once that was done, the "cabal install HDBC-mysql" call was able to find the mysql_config. However, it was splitting the values returned by mysql_config on space, and thus failed to find mysql.h, as the resulting command was: C:\Program Files (x86)\Haskell Platform\2009.2.0.2\gcc.exe -c -BC:\ Program Files (x86)\Haskell Platform\2009.2.0.2\gcc-lib -IC:\Program Files (x86) \Haskell Platform\2009.2.0.2\include\mingw -D__GLASGOW_HASKELL__=610 -IIC:\Program -Iles\MySQL\include\mysql" ... -- then I tried taking the -I out of the mysql_config.pl script and got the following from the "cabal install HDBC-mysql" command was: C:\Program Files (x86)\Haskell Platform\2009.2.0.2\gcc.exe -c -BC:\ Program Files (x86)\Haskell Platform\2009.2.0.2\gcc-lib -IC:\Program Files (x86) \Haskell Platform\2009.2.0.2\include\mingw -D__GLASGOW_HASKELL__=610 -I:\Program -Iles\MySQL\include\mysql" ... blah blah blah cabal: Error: some packages failed to install: HDBC-mysql-0.6.1 failed during the building phase. The exception was: exit: ExitFailure 1 ... so finally I am downloading your package to see if I can figure out a fix for windows boxes. Just thought I would give you a heads up on this windows-related bug. Thanks, Roderick
participants (2)
-
Chris Waterson
-
Roderick Ford