|
From: Axel S. <si...@co...> - 2010-05-20 06:38:28
|
diffing dir...
Sun May 9 22:08:43 EDT 2010 Hamish Mackenzie <ham...@go...>
* Set extraGHCiLibraries on windows using full DLL names
Ignore-this: 7fee9866cac034c3dcd87c470fe81cf3
{
hunk ./cairo/Gtk2HsSetup.hs 39
-import Distribution.InstalledPackageInfo ( importDirs )
+import Distribution.InstalledPackageInfo ( importDirs,
+ showInstalledPackageInfo,
+ libraryDirs,
+ extraLibraries,
+ extraGHCiLibraries )
hunk ./cairo/Gtk2HsSetup.hs 56
- libModules)
+ libModules, hasLibs)
hunk ./cairo/Gtk2HsSetup.hs 67
- Program(..), ConfiguredProgram(..),
+ Program(..), ConfiguredProgram(..), lhcPkgProgram,
hunk ./cairo/Gtk2HsSetup.hs 69
- c2hsProgram, pkgConfigProgram,
+ c2hsProgram, pkgConfigProgram, requireProgram, ghcPkgProgram,
hunk ./cairo/Gtk2HsSetup.hs 75
- fromFlag, toFlag)
+ fromFlag, toFlag, RegisterFlags(..), flagToMaybe,
+ defaultRegisterFlags)
hunk ./cairo/Gtk2HsSetup.hs 78
+import Distribution.Simple.Install ( install )
+import Distribution.Simple.Register ( generateRegistrationInfo, registerPackage )
hunk ./cairo/Gtk2HsSetup.hs 85
-import Control.Monad (unless)
-import Data.Maybe (fromMaybe)
+import Control.Monad (when, unless, filterM)
+import Data.Maybe ( isJust, fromMaybe, maybeToList )
hunk ./cairo/Gtk2HsSetup.hs 92
+import Control.Applicative ((<$>))
+import System.Directory (getDirectoryContents, doesDirectoryExist)
hunk ./cairo/Gtk2HsSetup.hs 110
- instHook = \pd lbi uh flags -> (instHook simpleUserHooks) pd lbi uh flags >>
- installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest
+ instHook = \pd lbi uh flags -> installHook pd lbi uh flags >>
+ installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest,
+ regHook = registerHook
hunk ./cairo/Gtk2HsSetup.hs 115
+-- Lots of stuff for windows ghci support
+getDlls :: [FilePath] -> IO [FilePath]
+getDlls dirs = filter ((== ".dll") . takeExtension) . concat <$>
+ mapM getDirectoryContents dirs
+
+fixLibs :: [FilePath] -> [String] -> [String]
+fixLibs dlls = concatMap $ \ lib ->
+ case filter (("lib" ++ lib) `isPrefixOf`) dlls of
+ dll:_ -> [dropExtension dll]
+ _ -> if lib == "z" then [] else [lib]
+
+installHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> InstallFlags -> IO ()
+installHook pkg_descr localbuildinfo _ flags = do
+ let copyFlags = defaultCopyFlags {
+ copyDistPref = installDistPref flags,
+ copyDest = toFlag NoCopyDest,
+ copyVerbosity = installVerbosity flags
+ }
+ install pkg_descr localbuildinfo copyFlags
+ let registerFlags = defaultRegisterFlags {
+ regDistPref = installDistPref flags,
+ regInPlace = installInPlace flags,
+ regPackageDB = installPackageDB flags,
+ regVerbosity = installVerbosity flags
+ }
+ when (hasLibs pkg_descr) $ register pkg_descr localbuildinfo registerFlags
+
+registerHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> RegisterFlags -> IO ()
+registerHook pkg_descr localbuildinfo _ flags =
+ if hasLibs pkg_descr
+ then register pkg_descr localbuildinfo flags
+ else setupMessage verbosity
+ "Package contains no library to register:" (packageId pkg_descr)
+ where verbosity = fromFlag (regVerbosity flags)
+
+register :: PackageDescription -> LocalBuildInfo
+ -> RegisterFlags -- ^Install in the user's database?; verbose
+ -> IO ()
+register pkg@PackageDescription { library = Just lib }
+ lbi@LocalBuildInfo { libraryConfig = Just clbi } regFlags
+ = do
+
+ installedPkgInfoRaw <- generateRegistrationInfo
+ verbosity pkg lib lbi clbi inplace distPref
+
+#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
+ dllsInScope <- getSearchPath >>= (filterM doesDirectoryExist) >>= getDlls
+ let libs = fixLibs dllsInScope (extraLibraries installedPkgInfoRaw)
+ installedPkgInfo = installedPkgInfoRaw {
+ extraGHCiLibraries = libs }
+#else
+ let installedPkgInfo = installedPkgInfoRaw
+#endif
+
+ -- Three different modes:
+ case () of
+ _ | modeGenerateRegFile -> die "Generate Reg File not supported"
+ | modeGenerateRegScript -> die "Generate Reg Script not supported"
+ | otherwise -> registerPackage verbosity
+ installedPkgInfo pkg lbi inplace packageDb
+
+ where
+ modeGenerateRegFile = isJust (flagToMaybe (regGenPkgConf regFlags))
+ modeGenerateRegScript = fromFlag (regGenScript regFlags)
+ inplace = fromFlag (regInPlace regFlags)
+ packageDb = case flagToMaybe (regPackageDB regFlags) of
+ Just db -> db
+ Nothing -> registrationPackageDB (withPackageDB lbi)
+ distPref = fromFlag (regDistPref regFlags)
+ verbosity = fromFlag (regVerbosity regFlags)
+
+register _ _ regFlags = notice verbosity "No package to register"
+ where
+ verbosity = fromFlag (regVerbosity regFlags)
+
hunk ./gconf/Gtk2HsSetup.hs 39
-import Distribution.InstalledPackageInfo ( importDirs )
+import Distribution.InstalledPackageInfo ( importDirs,
+ showInstalledPackageInfo,
+ libraryDirs,
+ extraLibraries,
+ extraGHCiLibraries )
hunk ./gconf/Gtk2HsSetup.hs 56
- libModules)
+ libModules, hasLibs)
hunk ./gconf/Gtk2HsSetup.hs 67
- Program(..), ConfiguredProgram(..),
+ Program(..), ConfiguredProgram(..), lhcPkgProgram,
hunk ./gconf/Gtk2HsSetup.hs 69
- c2hsProgram, pkgConfigProgram,
+ c2hsProgram, pkgConfigProgram, requireProgram, ghcPkgProgram,
hunk ./gconf/Gtk2HsSetup.hs 75
- fromFlag, toFlag)
+ fromFlag, toFlag, RegisterFlags(..), flagToMaybe,
+ defaultRegisterFlags)
hunk ./gconf/Gtk2HsSetup.hs 78
+import Distribution.Simple.Install ( install )
+import Distribution.Simple.Register ( generateRegistrationInfo, registerPackage )
hunk ./gconf/Gtk2HsSetup.hs 85
-import Control.Monad (unless)
-import Data.Maybe (fromMaybe)
+import Control.Monad (when, unless, filterM)
+import Data.Maybe ( isJust, fromMaybe, maybeToList )
hunk ./gconf/Gtk2HsSetup.hs 92
+import Control.Applicative ((<$>))
+import System.Directory (getDirectoryContents, doesDirectoryExist)
hunk ./gconf/Gtk2HsSetup.hs 110
- instHook = \pd lbi uh flags -> (instHook simpleUserHooks) pd lbi uh flags >>
- installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest
+ instHook = \pd lbi uh flags -> installHook pd lbi uh flags >>
+ installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest,
+ regHook = registerHook
hunk ./gconf/Gtk2HsSetup.hs 115
+-- Lots of stuff for windows ghci support
+getDlls :: [FilePath] -> IO [FilePath]
+getDlls dirs = filter ((== ".dll") . takeExtension) . concat <$>
+ mapM getDirectoryContents dirs
+
+fixLibs :: [FilePath] -> [String] -> [String]
+fixLibs dlls = concatMap $ \ lib ->
+ case filter (("lib" ++ lib) `isPrefixOf`) dlls of
+ dll:_ -> [dropExtension dll]
+ _ -> if lib == "z" then [] else [lib]
+
+installHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> InstallFlags -> IO ()
+installHook pkg_descr localbuildinfo _ flags = do
+ let copyFlags = defaultCopyFlags {
+ copyDistPref = installDistPref flags,
+ copyDest = toFlag NoCopyDest,
+ copyVerbosity = installVerbosity flags
+ }
+ install pkg_descr localbuildinfo copyFlags
+ let registerFlags = defaultRegisterFlags {
+ regDistPref = installDistPref flags,
+ regInPlace = installInPlace flags,
+ regPackageDB = installPackageDB flags,
+ regVerbosity = installVerbosity flags
+ }
+ when (hasLibs pkg_descr) $ register pkg_descr localbuildinfo registerFlags
+
+registerHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> RegisterFlags -> IO ()
+registerHook pkg_descr localbuildinfo _ flags =
+ if hasLibs pkg_descr
+ then register pkg_descr localbuildinfo flags
+ else setupMessage verbosity
+ "Package contains no library to register:" (packageId pkg_descr)
+ where verbosity = fromFlag (regVerbosity flags)
+
+register :: PackageDescription -> LocalBuildInfo
+ -> RegisterFlags -- ^Install in the user's database?; verbose
+ -> IO ()
+register pkg@PackageDescription { library = Just lib }
+ lbi@LocalBuildInfo { libraryConfig = Just clbi } regFlags
+ = do
+
+ installedPkgInfoRaw <- generateRegistrationInfo
+ verbosity pkg lib lbi clbi inplace distPref
+
+#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
+ dllsInScope <- getSearchPath >>= (filterM doesDirectoryExist) >>= getDlls
+ let libs = fixLibs dllsInScope (extraLibraries installedPkgInfoRaw)
+ installedPkgInfo = installedPkgInfoRaw {
+ extraGHCiLibraries = libs }
+#else
+ let installedPkgInfo = installedPkgInfoRaw
+#endif
+
+ -- Three different modes:
+ case () of
+ _ | modeGenerateRegFile -> die "Generate Reg File not supported"
+ | modeGenerateRegScript -> die "Generate Reg Script not supported"
+ | otherwise -> registerPackage verbosity
+ installedPkgInfo pkg lbi inplace packageDb
+
+ where
+ modeGenerateRegFile = isJust (flagToMaybe (regGenPkgConf regFlags))
+ modeGenerateRegScript = fromFlag (regGenScript regFlags)
+ inplace = fromFlag (regInPlace regFlags)
+ packageDb = case flagToMaybe (regPackageDB regFlags) of
+ Just db -> db
+ Nothing -> registrationPackageDB (withPackageDB lbi)
+ distPref = fromFlag (regDistPref regFlags)
+ verbosity = fromFlag (regVerbosity regFlags)
+
+register _ _ regFlags = notice verbosity "No package to register"
+ where
+ verbosity = fromFlag (regVerbosity regFlags)
+
hunk ./gio/Gtk2HsSetup.hs 39
-import Distribution.InstalledPackageInfo ( importDirs )
+import Distribution.InstalledPackageInfo ( importDirs,
+ showInstalledPackageInfo,
+ libraryDirs,
+ extraLibraries,
+ extraGHCiLibraries )
hunk ./gio/Gtk2HsSetup.hs 56
- libModules)
+ libModules, hasLibs)
hunk ./gio/Gtk2HsSetup.hs 67
- Program(..), ConfiguredProgram(..),
+ Program(..), ConfiguredProgram(..), lhcPkgProgram,
hunk ./gio/Gtk2HsSetup.hs 69
- c2hsProgram, pkgConfigProgram,
+ c2hsProgram, pkgConfigProgram, requireProgram, ghcPkgProgram,
hunk ./gio/Gtk2HsSetup.hs 75
- fromFlag, toFlag)
+ fromFlag, toFlag, RegisterFlags(..), flagToMaybe,
+ defaultRegisterFlags)
hunk ./gio/Gtk2HsSetup.hs 78
+import Distribution.Simple.Install ( install )
+import Distribution.Simple.Register ( generateRegistrationInfo, registerPackage )
hunk ./gio/Gtk2HsSetup.hs 85
-import Control.Monad (unless)
-import Data.Maybe (fromMaybe)
+import Control.Monad (when, unless, filterM)
+import Data.Maybe ( isJust, fromMaybe, maybeToList )
hunk ./gio/Gtk2HsSetup.hs 92
+import Control.Applicative ((<$>))
+import System.Directory (getDirectoryContents, doesDirectoryExist)
hunk ./gio/Gtk2HsSetup.hs 110
- instHook = \pd lbi uh flags -> (instHook simpleUserHooks) pd lbi uh flags >>
- installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest
+ instHook = \pd lbi uh flags -> installHook pd lbi uh flags >>
+ installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest,
+ regHook = registerHook
hunk ./gio/Gtk2HsSetup.hs 115
+-- Lots of stuff for windows ghci support
+getDlls :: [FilePath] -> IO [FilePath]
+getDlls dirs = filter ((== ".dll") . takeExtension) . concat <$>
+ mapM getDirectoryContents dirs
+
+fixLibs :: [FilePath] -> [String] -> [String]
+fixLibs dlls = concatMap $ \ lib ->
+ case filter (("lib" ++ lib) `isPrefixOf`) dlls of
+ dll:_ -> [dropExtension dll]
+ _ -> if lib == "z" then [] else [lib]
+
+installHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> InstallFlags -> IO ()
+installHook pkg_descr localbuildinfo _ flags = do
+ let copyFlags = defaultCopyFlags {
+ copyDistPref = installDistPref flags,
+ copyDest = toFlag NoCopyDest,
+ copyVerbosity = installVerbosity flags
+ }
+ install pkg_descr localbuildinfo copyFlags
+ let registerFlags = defaultRegisterFlags {
+ regDistPref = installDistPref flags,
+ regInPlace = installInPlace flags,
+ regPackageDB = installPackageDB flags,
+ regVerbosity = installVerbosity flags
+ }
+ when (hasLibs pkg_descr) $ register pkg_descr localbuildinfo registerFlags
+
+registerHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> RegisterFlags -> IO ()
+registerHook pkg_descr localbuildinfo _ flags =
+ if hasLibs pkg_descr
+ then register pkg_descr localbuildinfo flags
+ else setupMessage verbosity
+ "Package contains no library to register:" (packageId pkg_descr)
+ where verbosity = fromFlag (regVerbosity flags)
+
+register :: PackageDescription -> LocalBuildInfo
+ -> RegisterFlags -- ^Install in the user's database?; verbose
+ -> IO ()
+register pkg@PackageDescription { library = Just lib }
+ lbi@LocalBuildInfo { libraryConfig = Just clbi } regFlags
+ = do
+
+ installedPkgInfoRaw <- generateRegistrationInfo
+ verbosity pkg lib lbi clbi inplace distPref
+
+#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
+ dllsInScope <- getSearchPath >>= (filterM doesDirectoryExist) >>= getDlls
+ let libs = fixLibs dllsInScope (extraLibraries installedPkgInfoRaw)
+ installedPkgInfo = installedPkgInfoRaw {
+ extraGHCiLibraries = libs }
+#else
+ let installedPkgInfo = installedPkgInfoRaw
+#endif
+
+ -- Three different modes:
+ case () of
+ _ | modeGenerateRegFile -> die "Generate Reg File not supported"
+ | modeGenerateRegScript -> die "Generate Reg Script not supported"
+ | otherwise -> registerPackage verbosity
+ installedPkgInfo pkg lbi inplace packageDb
+
+ where
+ modeGenerateRegFile = isJust (flagToMaybe (regGenPkgConf regFlags))
+ modeGenerateRegScript = fromFlag (regGenScript regFlags)
+ inplace = fromFlag (regInPlace regFlags)
+ packageDb = case flagToMaybe (regPackageDB regFlags) of
+ Just db -> db
+ Nothing -> registrationPackageDB (withPackageDB lbi)
+ distPref = fromFlag (regDistPref regFlags)
+ verbosity = fromFlag (regVerbosity regFlags)
+
+register _ _ regFlags = notice verbosity "No package to register"
+ where
+ verbosity = fromFlag (regVerbosity regFlags)
+
hunk ./glade/Gtk2HsSetup.hs 39
-import Distribution.InstalledPackageInfo ( importDirs )
+import Distribution.InstalledPackageInfo ( importDirs,
+ showInstalledPackageInfo,
+ libraryDirs,
+ extraLibraries,
+ extraGHCiLibraries )
hunk ./glade/Gtk2HsSetup.hs 56
- libModules)
+ libModules, hasLibs)
hunk ./glade/Gtk2HsSetup.hs 67
- Program(..), ConfiguredProgram(..),
+ Program(..), ConfiguredProgram(..), lhcPkgProgram,
hunk ./glade/Gtk2HsSetup.hs 69
- c2hsProgram, pkgConfigProgram,
+ c2hsProgram, pkgConfigProgram, requireProgram, ghcPkgProgram,
hunk ./glade/Gtk2HsSetup.hs 75
- fromFlag, toFlag)
+ fromFlag, toFlag, RegisterFlags(..), flagToMaybe,
+ defaultRegisterFlags)
hunk ./glade/Gtk2HsSetup.hs 78
+import Distribution.Simple.Install ( install )
+import Distribution.Simple.Register ( generateRegistrationInfo, registerPackage )
hunk ./glade/Gtk2HsSetup.hs 85
-import Control.Monad (unless)
-import Data.Maybe (fromMaybe)
+import Control.Monad (when, unless, filterM)
+import Data.Maybe ( isJust, fromMaybe, maybeToList )
hunk ./glade/Gtk2HsSetup.hs 92
+import Control.Applicative ((<$>))
+import System.Directory (getDirectoryContents, doesDirectoryExist)
hunk ./glade/Gtk2HsSetup.hs 110
- instHook = \pd lbi uh flags -> (instHook simpleUserHooks) pd lbi uh flags >>
- installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest
+ instHook = \pd lbi uh flags -> installHook pd lbi uh flags >>
+ installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest,
+ regHook = registerHook
hunk ./glade/Gtk2HsSetup.hs 115
+-- Lots of stuff for windows ghci support
+getDlls :: [FilePath] -> IO [FilePath]
+getDlls dirs = filter ((== ".dll") . takeExtension) . concat <$>
+ mapM getDirectoryContents dirs
+
+fixLibs :: [FilePath] -> [String] -> [String]
+fixLibs dlls = concatMap $ \ lib ->
+ case filter (("lib" ++ lib) `isPrefixOf`) dlls of
+ dll:_ -> [dropExtension dll]
+ _ -> if lib == "z" then [] else [lib]
+
+installHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> InstallFlags -> IO ()
+installHook pkg_descr localbuildinfo _ flags = do
+ let copyFlags = defaultCopyFlags {
+ copyDistPref = installDistPref flags,
+ copyDest = toFlag NoCopyDest,
+ copyVerbosity = installVerbosity flags
+ }
+ install pkg_descr localbuildinfo copyFlags
+ let registerFlags = defaultRegisterFlags {
+ regDistPref = installDistPref flags,
+ regInPlace = installInPlace flags,
+ regPackageDB = installPackageDB flags,
+ regVerbosity = installVerbosity flags
+ }
+ when (hasLibs pkg_descr) $ register pkg_descr localbuildinfo registerFlags
+
+registerHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> RegisterFlags -> IO ()
+registerHook pkg_descr localbuildinfo _ flags =
+ if hasLibs pkg_descr
+ then register pkg_descr localbuildinfo flags
+ else setupMessage verbosity
+ "Package contains no library to register:" (packageId pkg_descr)
+ where verbosity = fromFlag (regVerbosity flags)
+
+register :: PackageDescription -> LocalBuildInfo
+ -> RegisterFlags -- ^Install in the user's database?; verbose
+ -> IO ()
+register pkg@PackageDescription { library = Just lib }
+ lbi@LocalBuildInfo { libraryConfig = Just clbi } regFlags
+ = do
+
+ installedPkgInfoRaw <- generateRegistrationInfo
+ verbosity pkg lib lbi clbi inplace distPref
+
+#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
+ dllsInScope <- getSearchPath >>= (filterM doesDirectoryExist) >>= getDlls
+ let libs = fixLibs dllsInScope (extraLibraries installedPkgInfoRaw)
+ installedPkgInfo = installedPkgInfoRaw {
+ extraGHCiLibraries = libs }
+#else
+ let installedPkgInfo = installedPkgInfoRaw
+#endif
+
+ -- Three different modes:
+ case () of
+ _ | modeGenerateRegFile -> die "Generate Reg File not supported"
+ | modeGenerateRegScript -> die "Generate Reg Script not supported"
+ | otherwise -> registerPackage verbosity
+ installedPkgInfo pkg lbi inplace packageDb
+
+ where
+ modeGenerateRegFile = isJust (flagToMaybe (regGenPkgConf regFlags))
+ modeGenerateRegScript = fromFlag (regGenScript regFlags)
+ inplace = fromFlag (regInPlace regFlags)
+ packageDb = case flagToMaybe (regPackageDB regFlags) of
+ Just db -> db
+ Nothing -> registrationPackageDB (withPackageDB lbi)
+ distPref = fromFlag (regDistPref regFlags)
+ verbosity = fromFlag (regVerbosity regFlags)
+
+register _ _ regFlags = notice verbosity "No package to register"
+ where
+ verbosity = fromFlag (regVerbosity regFlags)
+
hunk ./glib/Gtk2HsSetup.hs 39
-import Distribution.InstalledPackageInfo ( importDirs )
+import Distribution.InstalledPackageInfo ( importDirs,
+ showInstalledPackageInfo,
+ libraryDirs,
+ extraLibraries,
+ extraGHCiLibraries )
hunk ./glib/Gtk2HsSetup.hs 56
- libModules)
+ libModules, hasLibs)
hunk ./glib/Gtk2HsSetup.hs 67
- Program(..), ConfiguredProgram(..),
+ Program(..), ConfiguredProgram(..), lhcPkgProgram,
hunk ./glib/Gtk2HsSetup.hs 69
- c2hsProgram, pkgConfigProgram,
+ c2hsProgram, pkgConfigProgram, requireProgram, ghcPkgProgram,
hunk ./glib/Gtk2HsSetup.hs 75
- fromFlag, toFlag)
+ fromFlag, toFlag, RegisterFlags(..), flagToMaybe,
+ defaultRegisterFlags)
hunk ./glib/Gtk2HsSetup.hs 78
+import Distribution.Simple.Install ( install )
+import Distribution.Simple.Register ( generateRegistrationInfo, registerPackage )
hunk ./glib/Gtk2HsSetup.hs 85
-import Control.Monad (unless)
-import Data.Maybe (fromMaybe)
+import Control.Monad (when, unless, filterM)
+import Data.Maybe ( isJust, fromMaybe, maybeToList )
hunk ./glib/Gtk2HsSetup.hs 92
+import Control.Applicative ((<$>))
+import System.Directory (getDirectoryContents, doesDirectoryExist)
hunk ./glib/Gtk2HsSetup.hs 110
- instHook = \pd lbi uh flags -> (instHook simpleUserHooks) pd lbi uh flags >>
- installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest
+ instHook = \pd lbi uh flags -> installHook pd lbi uh flags >>
+ installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest,
+ regHook = registerHook
hunk ./glib/Gtk2HsSetup.hs 115
+-- Lots of stuff for windows ghci support
+getDlls :: [FilePath] -> IO [FilePath]
+getDlls dirs = filter ((== ".dll") . takeExtension) . concat <$>
+ mapM getDirectoryContents dirs
+
+fixLibs :: [FilePath] -> [String] -> [String]
+fixLibs dlls = concatMap $ \ lib ->
+ case filter (("lib" ++ lib) `isPrefixOf`) dlls of
+ dll:_ -> [dropExtension dll]
+ _ -> if lib == "z" then [] else [lib]
+
+installHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> InstallFlags -> IO ()
+installHook pkg_descr localbuildinfo _ flags = do
+ let copyFlags = defaultCopyFlags {
+ copyDistPref = installDistPref flags,
+ copyDest = toFlag NoCopyDest,
+ copyVerbosity = installVerbosity flags
+ }
+ install pkg_descr localbuildinfo copyFlags
+ let registerFlags = defaultRegisterFlags {
+ regDistPref = installDistPref flags,
+ regInPlace = installInPlace flags,
+ regPackageDB = installPackageDB flags,
+ regVerbosity = installVerbosity flags
+ }
+ when (hasLibs pkg_descr) $ register pkg_descr localbuildinfo registerFlags
+
+registerHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> RegisterFlags -> IO ()
+registerHook pkg_descr localbuildinfo _ flags =
+ if hasLibs pkg_descr
+ then register pkg_descr localbuildinfo flags
+ else setupMessage verbosity
+ "Package contains no library to register:" (packageId pkg_descr)
+ where verbosity = fromFlag (regVerbosity flags)
+
+register :: PackageDescription -> LocalBuildInfo
+ -> RegisterFlags -- ^Install in the user's database?; verbose
+ -> IO ()
+register pkg@PackageDescription { library = Just lib }
+ lbi@LocalBuildInfo { libraryConfig = Just clbi } regFlags
+ = do
+
+ installedPkgInfoRaw <- generateRegistrationInfo
+ verbosity pkg lib lbi clbi inplace distPref
+
+#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
+ dllsInScope <- getSearchPath >>= (filterM doesDirectoryExist) >>= getDlls
+ let libs = fixLibs dllsInScope (extraLibraries installedPkgInfoRaw)
+ installedPkgInfo = installedPkgInfoRaw {
+ extraGHCiLibraries = libs }
+#else
+ let installedPkgInfo = installedPkgInfoRaw
+#endif
+
+ -- Three different modes:
+ case () of
+ _ | modeGenerateRegFile -> die "Generate Reg File not supported"
+ | modeGenerateRegScript -> die "Generate Reg Script not supported"
+ | otherwise -> registerPackage verbosity
+ installedPkgInfo pkg lbi inplace packageDb
+
+ where
+ modeGenerateRegFile = isJust (flagToMaybe (regGenPkgConf regFlags))
+ modeGenerateRegScript = fromFlag (regGenScript regFlags)
+ inplace = fromFlag (regInPlace regFlags)
+ packageDb = case flagToMaybe (regPackageDB regFlags) of
+ Just db -> db
+ Nothing -> registrationPackageDB (withPackageDB lbi)
+ distPref = fromFlag (regDistPref regFlags)
+ verbosity = fromFlag (regVerbosity regFlags)
+
+register _ _ regFlags = notice verbosity "No package to register"
+ where
+ verbosity = fromFlag (regVerbosity regFlags)
+
hunk ./gnomevfs/Gtk2HsSetup.hs 39
-import Distribution.InstalledPackageInfo ( importDirs )
+import Distribution.InstalledPackageInfo ( importDirs,
+ showInstalledPackageInfo,
+ libraryDirs,
+ extraLibraries,
+ extraGHCiLibraries )
hunk ./gnomevfs/Gtk2HsSetup.hs 56
- libModules)
+ libModules, hasLibs)
hunk ./gnomevfs/Gtk2HsSetup.hs 67
- Program(..), ConfiguredProgram(..),
+ Program(..), ConfiguredProgram(..), lhcPkgProgram,
hunk ./gnomevfs/Gtk2HsSetup.hs 69
- c2hsProgram, pkgConfigProgram,
+ c2hsProgram, pkgConfigProgram, requireProgram, ghcPkgProgram,
hunk ./gnomevfs/Gtk2HsSetup.hs 75
- fromFlag, toFlag)
+ fromFlag, toFlag, RegisterFlags(..), flagToMaybe,
+ defaultRegisterFlags)
hunk ./gnomevfs/Gtk2HsSetup.hs 78
+import Distribution.Simple.Install ( install )
+import Distribution.Simple.Register ( generateRegistrationInfo, registerPackage )
hunk ./gnomevfs/Gtk2HsSetup.hs 85
-import Control.Monad (unless)
-import Data.Maybe (fromMaybe)
+import Control.Monad (when, unless, filterM)
+import Data.Maybe ( isJust, fromMaybe, maybeToList )
hunk ./gnomevfs/Gtk2HsSetup.hs 92
+import Control.Applicative ((<$>))
+import System.Directory (getDirectoryContents, doesDirectoryExist)
hunk ./gnomevfs/Gtk2HsSetup.hs 110
- instHook = \pd lbi uh flags -> (instHook simpleUserHooks) pd lbi uh flags >>
- installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest
+ instHook = \pd lbi uh flags -> installHook pd lbi uh flags >>
+ installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest,
+ regHook = registerHook
hunk ./gnomevfs/Gtk2HsSetup.hs 115
+-- Lots of stuff for windows ghci support
+getDlls :: [FilePath] -> IO [FilePath]
+getDlls dirs = filter ((== ".dll") . takeExtension) . concat <$>
+ mapM getDirectoryContents dirs
+
+fixLibs :: [FilePath] -> [String] -> [String]
+fixLibs dlls = concatMap $ \ lib ->
+ case filter (("lib" ++ lib) `isPrefixOf`) dlls of
+ dll:_ -> [dropExtension dll]
+ _ -> if lib == "z" then [] else [lib]
+
+installHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> InstallFlags -> IO ()
+installHook pkg_descr localbuildinfo _ flags = do
+ let copyFlags = defaultCopyFlags {
+ copyDistPref = installDistPref flags,
+ copyDest = toFlag NoCopyDest,
+ copyVerbosity = installVerbosity flags
+ }
+ install pkg_descr localbuildinfo copyFlags
+ let registerFlags = defaultRegisterFlags {
+ regDistPref = installDistPref flags,
+ regInPlace = installInPlace flags,
+ regPackageDB = installPackageDB flags,
+ regVerbosity = installVerbosity flags
+ }
+ when (hasLibs pkg_descr) $ register pkg_descr localbuildinfo registerFlags
+
+registerHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> RegisterFlags -> IO ()
+registerHook pkg_descr localbuildinfo _ flags =
+ if hasLibs pkg_descr
+ then register pkg_descr localbuildinfo flags
+ else setupMessage verbosity
+ "Package contains no library to register:" (packageId pkg_descr)
+ where verbosity = fromFlag (regVerbosity flags)
+
+register :: PackageDescription -> LocalBuildInfo
+ -> RegisterFlags -- ^Install in the user's database?; verbose
+ -> IO ()
+register pkg@PackageDescription { library = Just lib }
+ lbi@LocalBuildInfo { libraryConfig = Just clbi } regFlags
+ = do
+
+ installedPkgInfoRaw <- generateRegistrationInfo
+ verbosity pkg lib lbi clbi inplace distPref
+
+#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
+ dllsInScope <- getSearchPath >>= (filterM doesDirectoryExist) >>= getDlls
+ let libs = fixLibs dllsInScope (extraLibraries installedPkgInfoRaw)
+ installedPkgInfo = installedPkgInfoRaw {
+ extraGHCiLibraries = libs }
+#else
+ let installedPkgInfo = installedPkgInfoRaw
+#endif
+
+ -- Three different modes:
+ case () of
+ _ | modeGenerateRegFile -> die "Generate Reg File not supported"
+ | modeGenerateRegScript -> die "Generate Reg Script not supported"
+ | otherwise -> registerPackage verbosity
+ installedPkgInfo pkg lbi inplace packageDb
+
+ where
+ modeGenerateRegFile = isJust (flagToMaybe (regGenPkgConf regFlags))
+ modeGenerateRegScript = fromFlag (regGenScript regFlags)
+ inplace = fromFlag (regInPlace regFlags)
+ packageDb = case flagToMaybe (regPackageDB regFlags) of
+ Just db -> db
+ Nothing -> registrationPackageDB (withPackageDB lbi)
+ distPref = fromFlag (regDistPref regFlags)
+ verbosity = fromFlag (regVerbosity regFlags)
+
+register _ _ regFlags = notice verbosity "No package to register"
+ where
+ verbosity = fromFlag (regVerbosity regFlags)
+
hunk ./gtk/Gtk2HsSetup.hs 39
-import Distribution.InstalledPackageInfo ( importDirs )
+import Distribution.InstalledPackageInfo ( importDirs,
+ showInstalledPackageInfo,
+ libraryDirs,
+ extraLibraries,
+ extraGHCiLibraries )
hunk ./gtk/Gtk2HsSetup.hs 56
- libModules)
+ libModules, hasLibs)
hunk ./gtk/Gtk2HsSetup.hs 67
- Program(..), ConfiguredProgram(..),
+ Program(..), ConfiguredProgram(..), lhcPkgProgram,
hunk ./gtk/Gtk2HsSetup.hs 69
- c2hsProgram, pkgConfigProgram,
+ c2hsProgram, pkgConfigProgram, requireProgram, ghcPkgProgram,
hunk ./gtk/Gtk2HsSetup.hs 75
- fromFlag, toFlag)
+ fromFlag, toFlag, RegisterFlags(..), flagToMaybe,
+ defaultRegisterFlags)
hunk ./gtk/Gtk2HsSetup.hs 78
+import Distribution.Simple.Install ( install )
+import Distribution.Simple.Register ( generateRegistrationInfo, registerPackage )
hunk ./gtk/Gtk2HsSetup.hs 85
-import Control.Monad (unless)
-import Data.Maybe (fromMaybe)
+import Control.Monad (when, unless, filterM)
+import Data.Maybe ( isJust, fromMaybe, maybeToList )
hunk ./gtk/Gtk2HsSetup.hs 92
+import Control.Applicative ((<$>))
+import System.Directory (getDirectoryContents, doesDirectoryExist)
hunk ./gtk/Gtk2HsSetup.hs 110
- instHook = \pd lbi uh flags -> (instHook simpleUserHooks) pd lbi uh flags >>
- installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest
+ instHook = \pd lbi uh flags -> installHook pd lbi uh flags >>
+ installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest,
+ regHook = registerHook
hunk ./gtk/Gtk2HsSetup.hs 115
+-- Lots of stuff for windows ghci support
+getDlls :: [FilePath] -> IO [FilePath]
+getDlls dirs = filter ((== ".dll") . takeExtension) . concat <$>
+ mapM getDirectoryContents dirs
+
+fixLibs :: [FilePath] -> [String] -> [String]
+fixLibs dlls = concatMap $ \ lib ->
+ case filter (("lib" ++ lib) `isPrefixOf`) dlls of
+ dll:_ -> [dropExtension dll]
+ _ -> if lib == "z" then [] else [lib]
+
+installHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> InstallFlags -> IO ()
+installHook pkg_descr localbuildinfo _ flags = do
+ let copyFlags = defaultCopyFlags {
+ copyDistPref = installDistPref flags,
+ copyDest = toFlag NoCopyDest,
+ copyVerbosity = installVerbosity flags
+ }
+ install pkg_descr localbuildinfo copyFlags
+ let registerFlags = defaultRegisterFlags {
+ regDistPref = installDistPref flags,
+ regInPlace = installInPlace flags,
+ regPackageDB = installPackageDB flags,
+ regVerbosity = installVerbosity flags
+ }
+ when (hasLibs pkg_descr) $ register pkg_descr localbuildinfo registerFlags
+
+registerHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> RegisterFlags -> IO ()
+registerHook pkg_descr localbuildinfo _ flags =
+ if hasLibs pkg_descr
+ then register pkg_descr localbuildinfo flags
+ else setupMessage verbosity
+ "Package contains no library to register:" (packageId pkg_descr)
+ where verbosity = fromFlag (regVerbosity flags)
+
+register :: PackageDescription -> LocalBuildInfo
+ -> RegisterFlags -- ^Install in the user's database?; verbose
+ -> IO ()
+register pkg@PackageDescription { library = Just lib }
+ lbi@LocalBuildInfo { libraryConfig = Just clbi } regFlags
+ = do
+
+ installedPkgInfoRaw <- generateRegistrationInfo
+ verbosity pkg lib lbi clbi inplace distPref
+
+#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
+ dllsInScope <- getSearchPath >>= (filterM doesDirectoryExist) >>= getDlls
+ let libs = fixLibs dllsInScope (extraLibraries installedPkgInfoRaw)
+ installedPkgInfo = installedPkgInfoRaw {
+ extraGHCiLibraries = libs }
+#else
+ let installedPkgInfo = installedPkgInfoRaw
+#endif
+
+ -- Three different modes:
+ case () of
+ _ | modeGenerateRegFile -> die "Generate Reg File not supported"
+ | modeGenerateRegScript -> die "Generate Reg Script not supported"
+ | otherwise -> registerPackage verbosity
+ installedPkgInfo pkg lbi inplace packageDb
+
+ where
+ modeGenerateRegFile = isJust (flagToMaybe (regGenPkgConf regFlags))
+ modeGenerateRegScript = fromFlag (regGenScript regFlags)
+ inplace = fromFlag (regInPlace regFlags)
+ packageDb = case flagToMaybe (regPackageDB regFlags) of
+ Just db -> db
+ Nothing -> registrationPackageDB (withPackageDB lbi)
+ distPref = fromFlag (regDistPref regFlags)
+ verbosity = fromFlag (regVerbosity regFlags)
+
+register _ _ regFlags = notice verbosity "No package to register"
+ where
+ verbosity = fromFlag (regVerbosity regFlags)
+
hunk ./gtkglext/Gtk2HsSetup.hs 39
-import Distribution.InstalledPackageInfo ( importDirs )
+import Distribution.InstalledPackageInfo ( importDirs,
+ showInstalledPackageInfo,
+ libraryDirs,
+ extraLibraries,
+ extraGHCiLibraries )
hunk ./gtkglext/Gtk2HsSetup.hs 56
- libModules)
+ libModules, hasLibs)
hunk ./gtkglext/Gtk2HsSetup.hs 67
- Program(..), ConfiguredProgram(..),
+ Program(..), ConfiguredProgram(..), lhcPkgProgram,
hunk ./gtkglext/Gtk2HsSetup.hs 69
- c2hsProgram, pkgConfigProgram,
+ c2hsProgram, pkgConfigProgram, requireProgram, ghcPkgProgram,
hunk ./gtkglext/Gtk2HsSetup.hs 75
- fromFlag, toFlag)
+ fromFlag, toFlag, RegisterFlags(..), flagToMaybe,
+ defaultRegisterFlags)
hunk ./gtkglext/Gtk2HsSetup.hs 78
+import Distribution.Simple.Install ( install )
+import Distribution.Simple.Register ( generateRegistrationInfo, registerPackage )
hunk ./gtkglext/Gtk2HsSetup.hs 85
-import Control.Monad (unless)
-import Data.Maybe (fromMaybe)
+import Control.Monad (when, unless, filterM)
+import Data.Maybe ( isJust, fromMaybe, maybeToList )
hunk ./gtkglext/Gtk2HsSetup.hs 92
+import Control.Applicative ((<$>))
+import System.Directory (getDirectoryContents, doesDirectoryExist)
hunk ./gtkglext/Gtk2HsSetup.hs 110
- instHook = \pd lbi uh flags -> (instHook simpleUserHooks) pd lbi uh flags >>
- installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest
+ instHook = \pd lbi uh flags -> installHook pd lbi uh flags >>
+ installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest,
+ regHook = registerHook
hunk ./gtkglext/Gtk2HsSetup.hs 115
+-- Lots of stuff for windows ghci support
+getDlls :: [FilePath] -> IO [FilePath]
+getDlls dirs = filter ((== ".dll") . takeExtension) . concat <$>
+ mapM getDirectoryContents dirs
+
+fixLibs :: [FilePath] -> [String] -> [String]
+fixLibs dlls = concatMap $ \ lib ->
+ case filter (("lib" ++ lib) `isPrefixOf`) dlls of
+ dll:_ -> [dropExtension dll]
+ _ -> if lib == "z" then [] else [lib]
+
+installHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> InstallFlags -> IO ()
+installHook pkg_descr localbuildinfo _ flags = do
+ let copyFlags = defaultCopyFlags {
+ copyDistPref = installDistPref flags,
+ copyDest = toFlag NoCopyDest,
+ copyVerbosity = installVerbosity flags
+ }
+ install pkg_descr localbuildinfo copyFlags
+ let registerFlags = defaultRegisterFlags {
+ regDistPref = installDistPref flags,
+ regInPlace = installInPlace flags,
+ regPackageDB = installPackageDB flags,
+ regVerbosity = installVerbosity flags
+ }
+ when (hasLibs pkg_descr) $ register pkg_descr localbuildinfo registerFlags
+
+registerHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> RegisterFlags -> IO ()
+registerHook pkg_descr localbuildinfo _ flags =
+ if hasLibs pkg_descr
+ then register pkg_descr localbuildinfo flags
+ else setupMessage verbosity
+ "Package contains no library to register:" (packageId pkg_descr)
+ where verbosity = fromFlag (regVerbosity flags)
+
+register :: PackageDescription -> LocalBuildInfo
+ -> RegisterFlags -- ^Install in the user's database?; verbose
+ -> IO ()
+register pkg@PackageDescription { library = Just lib }
+ lbi@LocalBuildInfo { libraryConfig = Just clbi } regFlags
+ = do
+
+ installedPkgInfoRaw <- generateRegistrationInfo
+ verbosity pkg lib lbi clbi inplace distPref
+
+#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
+ dllsInScope <- getSearchPath >>= (filterM doesDirectoryExist) >>= getDlls
+ let libs = fixLibs dllsInScope (extraLibraries installedPkgInfoRaw)
+ installedPkgInfo = installedPkgInfoRaw {
+ extraGHCiLibraries = libs }
+#else
+ let installedPkgInfo = installedPkgInfoRaw
+#endif
+
+ -- Three different modes:
+ case () of
+ _ | modeGenerateRegFile -> die "Generate Reg File not supported"
+ | modeGenerateRegScript -> die "Generate Reg Script not supported"
+ | otherwise -> registerPackage verbosity
+ installedPkgInfo pkg lbi inplace packageDb
+
+ where
+ modeGenerateRegFile = isJust (flagToMaybe (regGenPkgConf regFlags))
+ modeGenerateRegScript = fromFlag (regGenScript regFlags)
+ inplace = fromFlag (regInPlace regFlags)
+ packageDb = case flagToMaybe (regPackageDB regFlags) of
+ Just db -> db
+ Nothing -> registrationPackageDB (withPackageDB lbi)
+ distPref = fromFlag (regDistPref regFlags)
+ verbosity = fromFlag (regVerbosity regFlags)
+
+register _ _ regFlags = notice verbosity "No package to register"
+ where
+ verbosity = fromFlag (regVerbosity regFlags)
+
hunk ./gtksourceview2/Gtk2HsSetup.hs 39
-import Distribution.InstalledPackageInfo ( importDirs )
+import Distribution.InstalledPackageInfo ( importDirs,
+ showInstalledPackageInfo,
+ libraryDirs,
+ extraLibraries,
+ extraGHCiLibraries )
hunk ./gtksourceview2/Gtk2HsSetup.hs 56
- libModules)
+ libModules, hasLibs)
hunk ./gtksourceview2/Gtk2HsSetup.hs 67
- Program(..), ConfiguredProgram(..),
+ Program(..), ConfiguredProgram(..), lhcPkgProgram,
hunk ./gtksourceview2/Gtk2HsSetup.hs 69
- c2hsProgram, pkgConfigProgram,
+ c2hsProgram, pkgConfigProgram, requireProgram, ghcPkgProgram,
hunk ./gtksourceview2/Gtk2HsSetup.hs 75
- fromFlag, toFlag)
+ fromFlag, toFlag, RegisterFlags(..), flagToMaybe,
+ defaultRegisterFlags)
hunk ./gtksourceview2/Gtk2HsSetup.hs 78
+import Distribution.Simple.Install ( install )
+import Distribution.Simple.Register ( generateRegistrationInfo, registerPackage )
hunk ./gtksourceview2/Gtk2HsSetup.hs 85
-import Control.Monad (unless)
-import Data.Maybe (fromMaybe)
+import Control.Monad (when, unless, filterM)
+import Data.Maybe ( isJust, fromMaybe, maybeToList )
hunk ./gtksourceview2/Gtk2HsSetup.hs 92
+import Control.Applicative ((<$>))
+import System.Directory (getDirectoryContents, doesDirectoryExist)
hunk ./gtksourceview2/Gtk2HsSetup.hs 110
- instHook = \pd lbi uh flags -> (instHook simpleUserHooks) pd lbi uh flags >>
- installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest
+ instHook = \pd lbi uh flags -> installHook pd lbi uh flags >>
+ installCHI pd lbi (fromFlag (installVerbosity flags)) NoCopyDest,
+ regHook = registerHook
hunk ./gtksourceview2/Gtk2HsSetup.hs 115
+-- Lots of stuff for windows ghci support
+getDlls :: [FilePath] -> IO [FilePath]
+getDlls dirs = filter ((== ".dll") . takeExtension) . concat <$>
+ mapM getDirectoryContents dirs
+
+fixLibs :: [FilePath] -> [String] -> [String]
+fixLibs dlls = concatMap $ \ lib ->
+ case filter (("lib" ++ lib) `isPrefixOf`) dlls of
+ dll:_ -> [dropExtension dll]
+ _ -> if lib == "z" then [] else [lib]
+
+installHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> InstallFlags -> IO ()
+installHook pkg_descr localbuildinfo _ flags = do
+ let copyFlags = defaultCopyFlags {
+ copyDistPref = installDistPref flags,
+ copyDest = toFlag NoCopyDest,
+ copyVerbosity = installVerbosity flags
+ }
+ install pkg_descr localbuildinfo copyFlags
+ let registerFlags = defaultRegisterFlags {
+ regDistPref = installDistPref flags,
+ regInPlace = installInPlace flags,
+ regPackageDB = installPackageDB flags,
+ regVerbosity = installVerbosity flags
+ }
+ when (hasLibs pkg_descr) $ register pkg_descr localbuildinfo registerFlags
+
+registerHook :: PackageDescription -> LocalBuildInfo
+ -> UserHooks -> RegisterFlags -> IO ()
+registerHook pkg_descr localbuildinfo _ flags =
+ if hasLibs pkg_descr
+ then register pkg_descr localbuildinfo flags
+ else setupMessage verbosity
+ "Package contains no library to register:" (packageId pkg_descr)
+ where verbosity = fromFlag (regVerbosity flags)
+
+register :: PackageDescription -> LocalBuildInfo
+ -> RegisterFlags -- ^Install in the user's database?; verbose
+ -> IO ()
+register pkg@PackageDescription { library = Just lib }
+ lbi@LocalBuildInfo { libraryConfig = Just clbi } regFlags
+ = do
+
+ installedPkgInfoRaw <- generateRegistrationInfo
+ verbosity pkg lib lbi clbi inplace distPref
+
+#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
+ dllsInScope <- getSearchPath >>= (filterM doesDirectoryExist) >>= getDlls
+ let libs = fixLibs dllsInScope (extraLibraries installedPkgInfoRaw)
+ installedPkgInfo = installedPkgInfoRaw {
+ extraGHCiLibraries = libs }
+#else
+ let installedPkgInfo = installedPkgInfoRaw
+#endif
+
+ -- Three different modes:
+ case () of
+ _ | modeGenerateRegFile -> die "Generate Reg File not supported"
+ | modeGenerateRegScript -> die "Generate Reg Script not supported"
+ | otherwise -> registerPackage verbosity
+ installedPkgInfo pkg lbi inplace packageDb
+
+ where
+ modeGenerateRegFile = isJust (flagToMaybe (regGenPkgConf regFlags))
+ modeGenerateRegScript = fromFlag (regGenScript regFlags)
+ inplace = fromFlag (regInPlace regFlags)
+ packageDb = case flagToMaybe (regPackageDB regFlags) of
+ Just db -> db
+ Nothing -> registrationPackageDB (withPackageDB lbi)
+ distPref = fromFlag (regDistPref regFlags)
+ verbosity = fromFlag (regVerbosity regFlags)
+
+register _ _ regFlags = notice verbosity "No package to register"
+ where
+ verbosity = fromFlag (regVerbosity regFlags)
+
merger 0.0 (
hunk ./pango/Setup.hs 1
-{-# LANGUAGE CPP #-}
-
-#define CABAL_VERSION_ENCODE(major, minor, micro) ( \
- ((major) * 10000) \
- + ((minor) * 100) \
- + ((micro) * 1))
-
-#define CABAL_VERSION_CHECK(major,minor,micro) \
- (CABAL_VERSION >= CABAL_VERSION_ENCODE(major,minor,micro))
-
--- now, this is bad, but Cabal doesn't seem to actually pass any information about
--- its version to CPP, so guess the version depending on the version of GHC
-#ifdef CABAL_VERSION_MINOR
-#ifndef CABAL_VERSION_MAJOR
-#define CABAL_VERSION_MAJOR 1
-#endif
-#ifndef CABAL_VERSION_MICRO
-#define CABAL_VERSION_MICRO 0
-#endif
-#define CABAL_VERSION CABAL_VERSION_ENCODE( \
- CABAL_VERSION_MAJOR, \
- CABAL_VERSION_MINOR, \
- CABAL_VERSION_MICRO)
-#else
-#warning Setup.hs is guessing the version of Cabal. If compilation of Setup.hs fails use -DCABAL_VERSION_MINOR=x for Cabal version 1.x.0 when building (prefixed by --ghc-option= when using the 'cabal' command)
-#if (__GLASGOW_HASKELL__ >= 612)
-#define CABAL_VERSION CABAL_VERSION_ENCODE(1,8,0)
-#else
-#define CABAL_VERSION CABAL_VERSION_ENCODE(1,6,0)
-#endif
-#endif
-
--- | Build a Gtk2hs package.
---
-import Distribution.Simple
-import Distribution.Simple.PreProcess
-import Distribution.InstalledPackageInfo ( importDirs )
-import Distribution.Simple.PackageIndex (
-#if CABAL_VERSION_CHECK(1,8,0)
- lookupInstalledPackageId
-#else
- lookupPackageId
-#endif
- )
-import Distribution.Package ( PackageId(..) )
-import Distribution.PackageDescription as PD ( PackageDescription(..),
- updatePackageDescription,
- BuildInfo(..),
- emptyBuildInfo, allBuildInfo,
- Library(..),
- libModules)
-import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..),
- InstallDirs(..),
-#if CABAL_VERSION_CHECK(1,8,0)
- componentPackageDeps,
-#else
- packageDeps,
-#endif
- absoluteInstallDirs)
-import Distribution.Simple.Compiler ( Compiler(..) )
-import Distribution.Simple.Program (
- Program(..), ConfiguredProgram(..),
- rawSystemProgramConf, rawSystemProgramStdoutConf,
- c2hsProgram, pkgConfigProgram,
- simpleProgram, lookupProgram, rawSystemProgramStdout, ProgArg)
-import Distribution.ModuleName ( ModuleName, components, toFilePath )
-import Distribution.Simple.Utils
-import Distribution.Simple.Setup (CopyFlags(..), InstallFlags(..), CopyDest(..),
- defaultCopyFlags, ConfigFlags(configVerbosity),
- fromFlag, toFlag)
+-- Setup file for a Gtk2Hs module. Contains only adjustments specific to this module,
+-- all Gtk2Hs-specific boilerplate is stored in Gtk2HsSetup.hs which should be kept
+-- identical across all modules.
+import Distribution.Simple ( defaultMainWithHooks, UserHooks(postConf),
+ PackageIdentifier(..), PackageName(..) )
+import Gtk2HsSetup ( gtk2hsUserHooks, getPkgConfigPackages )
+import Distribution.Simple.Setup ( ConfigFlags(configVerbosity), fromFlag)
+import Distribution.Simple.LocalBuildInfo ( LocalBuildInfo(..) )
hunk ./pango/Setup.hs 37
-import Distribution.InstalledPackageInfo ( importDirs )
+import Distribution.InstalledPackageInfo ( importDirs,
+ showInstalledPackageInfo,
+ libraryDirs,
+ extraLibraries,
+ extraGHCiLibraries )
)
merger 0.0 (
merger 0.0 (
hunk ./pango/Setup.hs 37
-import Distribution.InstalledPackageInfo ( importDirs )
+import Distribution.InstalledPackageInfo ( importDirs,
+ showInstalledPackageInfo,
+ libraryDirs,
+ extraLibraries,
+ extraGHCiLibraries )
hunk ./pango/Setup.hs 1
-{-# LANGUAGE CPP #-}
-
-#define CABAL_VERSION_ENCODE(major, minor, micro) ( \
- ((major) * 10000) \
- + ((minor) * 100) \
- + ((micro) * 1))
-
-#define CABAL_VERSION_CHECK(major,minor,micro) \
- (CABAL_VERSION >= CABAL_VERSION_ENCODE(major,minor,micro))
-
--- now, this is bad, but Cabal doesn't seem to actually pass any information about
--- its version to CPP, so guess the version depending on the version of GHC
-#ifdef CABAL_VERSION_MINOR
-#ifndef CABAL_VERSION_MAJOR
-#define CABAL_VERSION_MAJOR 1
-#endif
-#ifndef CABAL_VERSION_MICRO
-#define CABAL_VERSION_MICRO 0
-#endif
-#define CABAL_VERSION CABAL_VERSION_ENCODE( \
- CABAL_VERSION_MAJOR, \
- CABAL_VERSION_MINOR, \
- CABAL_VERSION_MICRO)
-#else
-#warning Setup.hs is guessing the version of Cabal. If compilation of Setup.hs fails use -DCABAL_VERSION_MINOR=x for Cabal version 1.x.0 when building (prefixed by --ghc-option= when using the 'cabal' command)
-#if (__GLASGOW_HASKELL__ >= 612)
-#define CABAL_VERSION CABAL_VERSION_ENCODE(1,8,0)
-#else
-#define CABAL_VERSION CABAL_VERSION_ENCODE(1,6,0)
-#endif
-#endif
-
--- | Build a Gtk2hs package.
---
-import Distribution.Simple
-import Distribution.Simple.PreProcess
-import Distribution.InstalledPackageInfo ( importDirs )
-import Distribution.Simple.PackageIndex (
-#if CABAL_VERSION_CHECK(1,8,0)
- lookupInstalledPackageId
-#else
- lookupPackageId
-#endif
- )
-import Distribution.Package ( PackageId(..) )
-import Distribution.PackageDescription as PD ( PackageDescription(..),
- updatePackageDescription,
- BuildInfo(..),
- emptyBuildInfo, allBuildInfo,
- Library(..),
- libModules)
-import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..),
- InstallDirs(..),
-#if CABAL_VERSION_CHECK(1,8,0)
- componentPackageDeps,
-#else
- packageDeps,
-#endif
- absoluteInstallDirs)
-import Distribution.Simple.Compiler ( Compiler(..) )
-import Distribution.Simple.Program (
- Program(..), ConfiguredProgram(..),
- rawSystemProgramConf, rawSystemProgramStdoutConf,
- c2hsProgram, pkgConfigProgram,
- simpleProgram, lookupProgram, rawSystemProgramStdout, ProgArg)
-import Distribution.ModuleName ( ModuleName, components, toFilePath )
-import Distribution.Simple.Utils
-import Distribution.Simple.Setup (CopyFlags(..), InstallFlags(..), CopyDest(..),
- defaultCopyFlags, ConfigFlags(configVerbosity),
- fromFlag, toFlag)
+-- Setup file for a Gtk2Hs module. Contains only adjustments specific to this module,
+-- all Gtk2Hs-specific boilerplate is stored in Gtk2HsSetup.hs which should be kept
+-- identical across all modules.
+import Distribution.Simple ( defaultMainWithHooks, UserHooks(postConf),
+ PackageIdentifier(..), P...
[truncated message content] |