hunk ./build-deps.patch 1 ---- haskell-utils/update-haskell-control.lhs.in 2008-03-03 08:58:42.000000000 -0800 -+++ haskell-utils/update-haskell-control.lhs.in 2008-05-06 12:25:44.000000000 -0700 +--- haskell-utils-1.11/update-debian-haskell-files.lhs.in~ 2007-11-21 10:43:05.000000000 -0800 ++++ haskell-utils-1.11/update-debian-haskell-files.lhs.in 2009-01-21 11:15:55.000000000 -0800 +@@ -12,6 +12,8 @@ + import Data.List + import Distribution.Package + import Distribution.PackageDescription ++import Distribution.PackageDescription.Configuration ++import Distribution.PackageDescription.Parse + import Distribution.Simple.Utils hiding (die) + import Distribution.Verbosity + import Prelude hiding (catch) +@@ -46,17 +48,15 @@ + parseArgs _ ("-h":_) = HelpFlag + parseArgs _ ("--version":_) = VersionFlag + parseArgs _ ("-V":_) = VersionFlag +-parseArgs fs ("-v":as) = let v = flagToVerbosity Nothing +- in parseArgs (fs { fl_verbosity = v }) as +-parseArgs fs ("-q":as) = let v = flagToVerbosity (Just "0") +- in parseArgs (fs { fl_verbosity = v }) as ++parseArgs fs ("-v":as) = parseArgs (fs { fl_verbosity = moreVerbose (fl_verbosity fs) }) as ++parseArgs fs ("-q":as) = parseArgs (fs { fl_verbosity = lessVerbose (fl_verbosity fs) }) as + parseArgs fs ("-s":d:as) + = parseArgs (fs { fl_script_path = d }) as + parseArgs _ ["-s"] = ErrorFlag "Missing argument to -s" + parseArgs _ (a:_) = ErrorFlag ("Unknown argument: " ++ a) + + main :: IO () +-main = main' `catch` \e -> die [show e] ++main = main' `catch` \ (e :: IOException) -> die [show e] + + main' :: IO () + main' = do args <- getArgs +@@ -66,13 +66,16 @@ + VersionFlag -> show_version + Flags v scriptPath -> doit v scriptPath + ++unPackageName :: PackageName -> String ++unPackageName (PackageName x) = x ++ + doit :: Verbosity -> FilePath -> IO () + doit v scriptPath + = do cabalFile <- defaultPackageDesc v + gpd <- readPackageDescription v cabalFile + let -- XXX Just flattening it means we might get too many deps + pd = flattenPackageDescription gpd +- cpkg = map toLower $ pkgName $ package pd ++ cpkg = map toLower $ unPackageName . pkgName $ package pd + copyAFile f = do let src = scriptPath ++ "/" ++ f + dest = "debian/" ++ replace "PACKAGE" cpkg f + msg = "Installing " ++ src ++ " as " ++ dest +--- haskell-utils-1.11/update-haskell-control.lhs.in 2008-03-03 08:58:42.000000000 -0800 ++++ haskell-utils-1.11/update-haskell-control.lhs.in 2009-01-21 11:14:42.000000000 -0800 +@@ -13,9 +13,10 @@ + import Data.Maybe + import Distribution.Package + import Distribution.PackageDescription ++import Distribution.PackageDescription.Configuration ++import Distribution.PackageDescription.Parse + import Distribution.Simple.Utils hiding (die) + import Distribution.Verbosity +-import Distribution.Version + import Prelude hiding (catch) + import System.Cmd + import System.Directory +@@ -83,10 +84,8 @@ + parseArgs _ ("-V":_) = VersionFlag + parseArgs fs ("--update":as) = parseArgs (fs { action = Update }) as + parseArgs fs ("--check":as) = parseArgs (fs { action = Check }) as +-parseArgs fs ("-v":as) = let v = flagToVerbosity Nothing +- in parseArgs (fs { verbosity = v }) as +-parseArgs fs ("-q":as) = let v = flagToVerbosity (Just "0") +- in parseArgs (fs { verbosity = v }) as ++parseArgs fs ("-v":as) = parseArgs (fs { verbosity = moreVerbose (verbosity fs) }) as ++parseArgs fs ("-q":as) = parseArgs (fs { verbosity = lessVerbose (verbosity fs) }) as + parseArgs fs ("-I":d:as) + = parseArgs (fs { include_paths = d:include_paths fs }) as + parseArgs _ ["-I"] = ErrorFlag "Missing argument to -I" +@@ -103,7 +102,7 @@ + parseArgs _ (a:_) = ErrorFlag ("Unknown argument: " ++ a) + + main :: IO () +-main = main' `catch` \e -> die [show e] ++main = main' `catch` \ (e :: IOException) -> die [show e] + + main' :: IO () + main' = do args <- getArgs +@@ -184,29 +183,38 @@ + Nothing -> + die ["Can't find version number for ghc6"] + ++unPackageName :: PackageName -> String ++unPackageName (PackageName x) = x ++ + getCabalVarMappings :: Verbosity -> IO Mapping + getCabalVarMappings v + = do cabalFile <- defaultPackageDesc v + gpd <- readPackageDescription v cabalFile + let -- XXX Just flattening it means we might get too many deps + pd = flattenPackageDescription gpd +- cpkg = map toLower $ pkgName $ package pd ++ cpkg = map toLower $ unPackageName . pkgName $ package pd + deps = buildDepends pd + -- The nub is really a bit of a hack, due to us ignoring version + -- ranges in fromCabalDep. +- mkDeps depType = do xs <- mapM (fromCabalDep depType) deps +- return $ concat $ intersperse ", " +- $ nub $ catMaybes xs +- devDeps <- mkDeps "dev" +- profDeps <- mkDeps "prof" +- docDeps <- mkDeps "doc" ++ mkDeps addVersion depType = do xs <- mapM (fromCabalDep addVersion depType) deps ++ return $ concat $ intersperse ", " ++ $ nub $ catMaybes xs ++ devDeps <- mkDeps True "dev" ++ profDeps <- mkDeps True "prof" ++ docDeps <- mkDeps True "doc" ++ devBDeps <- mkDeps False "dev" ++ profBDeps <- mkDeps False "prof" ++ docBDeps <- mkDeps False "doc" + return [("this:source", "haskell-" ++ cpkg), + ("this:ghc6:dev", "libghc6-" ++ cpkg ++ "-dev"), + ("this:ghc6:prof", "libghc6-" ++ cpkg ++ "-prof"), + ("this:ghc6:doc", "libghc6-" ++ cpkg ++ "-doc"), + ("cabal:deps:ghc6:dev", devDeps), + ("cabal:deps:ghc6:prof", profDeps), +- ("cabal:deps:ghc6:doc", docDeps)] ++ ("cabal:deps:ghc6:doc", docDeps), ++ ("cabal:deps:ghc6:dev", devBDeps), ++ ("cabal:deps:ghc6:prof", profBDeps), ++ ("cabal:deps:ghc6:doc", docBDeps)] + + cabalToDebianPackageName :: String -- type of Debian package: dev/prof/doc + -> String -- Cabal package name +@@ -286,13 +294,13 @@ + ghc6DocProvides <- getPackageProvides "ghc6-doc" + return (ghc6Provides ++ ghc6ProfProvides ++ ghc6DocProvides) + +-fromCabalDep :: String -> Dependency -> IO (Maybe String) ++fromCabalDep :: Bool -> String -> Dependency -> IO (Maybe String) + -- XXX Filtering out Win32 is a hack, due to us not using flags and thus + -- getting all the possible deps. If we used flags then we wouldn't get + -- the deps from the Win32 route. We could then drop the Maybe from the + -- type. +-fromCabalDep _ (Dependency "Win32" _) = return Nothing +-fromCabalDep depType (Dependency cabalPackageName _) ++fromCabalDep _ _ (Dependency (PackageName "Win32") _) = return Nothing ++fromCabalDep addVersion depType (Dependency (PackageName cabalPackageName) _) + = do let debianPackageName = cabalToDebianPackageName depType cabalPackageName + mpv <- getPackageVersion debianPackageName + provided <- ghc6StarProvides +@@ -304,7 +312,7 @@ + -- We are happy. Add a dep, with a tight version number so + -- we don't trip over cross-module inlining problems. + (Just pv, False) -> +- return $ Just (debianPackageName ++ " (= " ++ pv ++ ")") ++ return $ Just (debianPackageName ++ if addVersion then (" (= " ++ pv ++ ")") else "") + (Just _, True) -> + die [debianPackageName ++ + " exists, but is also provided by ghc6*"] +@@ -325,7 +333,7 @@ + + getDirectoryVarMappings :: Verbosity -> FilePath -> IO Mapping + getDirectoryVarMappings v dir +- = do fs <- getDirectoryContents dir `catch` \_ -> return [] ++ = do fs <- getDirectoryContents dir `catch` \ (_ :: IOException) -> return [] + let fs' = map ((dir ++ "/") ++) $ filter (not . dotFile) fs + fs'' <- filterM (verboseDoesFileExist v) fs' + mss <- mapM (getFileVarMappings v) fs''