Skip to content

Cabal library: allow setting the logging handle #11077

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Cabal-QuickCheck/src/Test/QuickCheck/Instances/Cabal.hs
Original file line number Diff line number Diff line change
Expand Up @@ -265,9 +265,9 @@ instance Arbitrary FlagAssignment where
-- Verbosity
-------------------------------------------------------------------------------

instance Arbitrary Verbosity where
instance Arbitrary VerbosityFlags where
arbitrary = do
v <- elements [minBound..maxBound]
v <- mkVerbosityFlags <$> elements [minBound..maxBound]
-- verbose markoutput is left out on purpose
flags <- listOf $ elements
[ verboseCallSite
Expand Down
4 changes: 2 additions & 2 deletions Cabal-described/src/Distribution/Described.hs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ import Distribution.Types.TestType (TestType)
import Distribution.Types.UnitId (UnitId)
import Distribution.Types.UnqualComponentName (UnqualComponentName)
import Distribution.Utils.Path (SymbolicPath, RelativePath)
import Distribution.Verbosity (Verbosity)
import Distribution.Verbosity (VerbosityFlags)
import Distribution.Version (Version, VersionRange)
import Language.Haskell.Extension (Extension, Language, knownLanguages)

Expand Down Expand Up @@ -493,7 +493,7 @@ instance Described RepoType where
instance Described TestType where
describe _ = REUnion ["exitcode-stdio-1.0", "detailed-0.9"]

instance Described Verbosity where
instance Described VerbosityFlags where
describe _ = REUnion
[ REUnion ["0", "1", "2", "3"]
, REUnion ["silent", "normal", "verbose", "debug", "deafening"]
Expand Down
2 changes: 1 addition & 1 deletion Cabal-tests/tests/UnitTests.hs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ main = do
(mtimeChange, mtimeChange') <- calibrateMtimeChangeDelay
let toMillis :: Int -> Double
toMillis x = fromIntegral x / 1000.0
notice normal $ "File modification time resolution calibration completed, "
notice (mkVerbosity defaultVerbosityHandles normal) $ "File modification time resolution calibration completed, "
++ "maximum delay observed: "
++ (show . toMillis $ mtimeChange ) ++ " ms. "
++ "Will be using delay of " ++ (show . toMillis $ mtimeChange')
Expand Down
5 changes: 2 additions & 3 deletions Cabal-tests/tests/UnitTests/Distribution/Compat/Time.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import Control.Concurrent (threadDelay)
import System.FilePath

import Distribution.Simple.Utils (withTempDirectory)
import Distribution.Verbosity

import Distribution.Compat.Time

Expand All @@ -19,7 +18,7 @@ tests mtimeChange =

getModTimeTest :: Int -> Assertion
getModTimeTest mtimeChange =
withTempDirectory silent "." "getmodtime-" $ \dir -> do
withTempDirectory "." "getmodtime-" $ \dir -> do
let fileName = dir </> "foo"
writeFile fileName "bar"
t0 <- getModTime fileName
Expand All @@ -31,7 +30,7 @@ getModTimeTest mtimeChange =

getCurTimeTest :: Int -> Assertion
getCurTimeTest mtimeChange =
withTempDirectory silent "." "getmodtime-" $ \dir -> do
withTempDirectory "." "getmodtime-" $ \dir -> do
let fileName = dir </> "foo"
writeFile fileName "bar"
t0 <- getModTime fileName
Expand Down
4 changes: 2 additions & 2 deletions Cabal-tests/tests/UnitTests/Distribution/Described.hs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import Distribution.Types.PackageName (PackageName)
import Distribution.Types.PackageVersionConstraint (PackageVersionConstraint)
import Distribution.Types.Version (Version)
import Distribution.Types.VersionRange (VersionRange)
import Distribution.Verbosity (Verbosity)
import Distribution.Verbosity (VerbosityFlags)

-- instances
import Test.QuickCheck.Instances.Cabal ()
Expand All @@ -45,5 +45,5 @@ tests = testGroup "Described"
, testDescribed (Proxy :: Proxy ModuleRenaming)
, testDescribed (Proxy :: Proxy IncludeRenaming)
, testDescribed (Proxy :: Proxy Mixin)
, testDescribed (Proxy :: Proxy Verbosity)
, testDescribed (Proxy :: Proxy VerbosityFlags)
]
4 changes: 3 additions & 1 deletion Cabal-tests/tests/UnitTests/Distribution/Simple/Glob.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import System.FilePath ((</>), splitFileName, normalise)
import System.IO.Temp (withSystemTempDirectory)
import Test.Tasty
import Test.Tasty.HUnit
import Distribution.Verbosity

sampleFileNames :: [FilePath]
sampleFileNames =
Expand Down Expand Up @@ -100,6 +101,7 @@ testMatchesVersion version pat expected = do
checkPure globPat
checkIO globPat
where
verbosity = mkVerbosity defaultVerbosityHandles Verbosity.normal
isEqual = (==) `on` (sort . fmap (fmap normalise))
checkPure globPat = do
let actual = mapMaybe (\p -> (p <$) <$> fileGlobMatches version globPat p) sampleFileNames
Expand All @@ -111,7 +113,7 @@ testMatchesVersion version pat expected = do
checkIO globPat =
withSystemTempDirectory "globstar-sample" $ \tmpdir -> do
makeSampleFiles tmpdir
actual <- runDirFileGlob Verbosity.normal (Just version) tmpdir globPat
actual <- runDirFileGlob verbosity (Just version) tmpdir globPat
unless (isEqual actual expected) $
assertFailure $ "Unexpected result (impure matcher): " ++ show actual ++ "\nExpected: " ++ show expected

Expand Down
8 changes: 4 additions & 4 deletions Cabal-tests/tests/UnitTests/Distribution/Simple/Utils.hs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ withTempDirTest :: Assertion
withTempDirTest = do
dirName <- newIORef ""
tempDir <- getTemporaryDirectory
withTempDirectory normal tempDir "foo" $ \dirName' -> do
withTempDirectory tempDir "foo" $ \dirName' -> do
writeIORef dirName dirName'
dirExists <- readIORef dirName >>= doesDirectoryExist
assertBool "Temporary directory not deleted by 'withTempDirectory'!"
Expand All @@ -47,7 +47,7 @@ withTempDirTest = do
withTempDirRemovedTest :: Assertion
withTempDirRemovedTest = do
tempDir <- getTemporaryDirectory
withTempDirectory normal tempDir "foo" $ \dirPath -> do
withTempDirectory tempDir "foo" $ \dirPath -> do
removeDirectoryRecursive dirPath

rawSystemStdInOutTextDecodingTest :: FilePath -> Assertion
Expand All @@ -67,15 +67,15 @@ rawSystemStdInOutTextDecodingTest ghcPath
hClose handleExe

-- Compile
(resOutput, resErrors, resExitCode) <- rawSystemStdInOut normal
(resOutput, resErrors, resExitCode) <- rawSystemStdInOut (mkVerbosity defaultVerbosityHandles normal)
ghcPath ["-o", filenameExe, filenameHs]
Nothing Nothing Nothing
IODataModeText
print (resOutput, resErrors, resExitCode)

-- Execute
Exception.try $ do
rawSystemStdInOut normal
rawSystemStdInOut (mkVerbosity defaultVerbosityHandles normal)
filenameExe []
Nothing Nothing Nothing
IODataModeText -- not binary mode output, ie utf8 text mode so try to decode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ md5CheckGenericPackageDescription proxy = md5Check proxy

md5CheckLocalBuildInfo :: Proxy LocalBuildInfo -> Assertion
md5CheckLocalBuildInfo proxy = md5Check proxy
0xea86b170fa32ac289cbd1fb6174b5cbf
0xaa3a1e323dbdc3a8a881f84f5a0468fa
7 changes: 6 additions & 1 deletion Cabal-tests/tests/custom-setup/CabalDoctestSetup.hs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
-- This is Distribution.Extra.Doctest module from cabal-doctest-1.0.4
-- This isn't technically a Custom-Setup script, but it /was/.

{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleInstances #-}

{-
Expand Down Expand Up @@ -335,7 +336,11 @@ generateBuildModule
-> BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()
{- FOURMOLU_DISABLE -}
generateBuildModule testSuiteName flags pkg lbi = do
let verbosity = fromFlag (buildVerbosity flags)
let verbosity =
#if MIN_VERSION_Cabal(3,17,0)
mkVerbosity defaultVerbosityHandles $
#endif
fromFlag (buildVerbosity flags)
let distPref = fromFlag (buildDistPref flags)

-- Package DBs & environments
Expand Down
27 changes: 21 additions & 6 deletions Cabal-tests/tests/custom-setup/IdrisSetup.hs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ import Distribution.Simple.InstallDirs as I
import Distribution.Simple.LocalBuildInfo as L
import qualified Distribution.Simple.Setup as S
import qualified Distribution.Simple.Program as P
import qualified Distribution.Verbosity as V
import Distribution.Simple.Utils (createDirectoryIfMissingVerbose, notice, installOrdinaryFiles)
import Distribution.Simple.Utils (rewriteFileEx)
import Distribution.Compiler
Expand Down Expand Up @@ -156,12 +157,26 @@ mkFlagName :: String -> FlagName
mkFlagName = FlagName
#endif

mkVerbosity
::
#if MIN_VERSION_Cabal(3,17,0)
S.Flag V.VerbosityFlags
#else
S.Flag V.Verbosity
#endif
-> V.Verbosity
mkVerbosity v =
#if MIN_VERSION_Cabal(3,17,0)
V.mkVerbosity V.defaultVerbosityHandles $
#endif
S.fromFlag v

-- -----------------------------------------------------------------------------
-- Clean

idrisClean _ flags _ _ = cleanStdLib
where
verbosity = S.fromFlag $ S.cleanVerbosity flags
verbosity = mkVerbosity $ S.cleanVerbosity flags

cleanStdLib = makeClean "libs"

Expand Down Expand Up @@ -247,7 +262,7 @@ idrisConfigure _ flags pkgdesc local = do
else
generateToolchainModule verbosity libAutogenDir Nothing
where
verbosity = S.fromFlag $ S.configVerbosity flags
verbosity = mkVerbosity $ S.configVerbosity flags
version = pkgVersion . package $ localPkgDescr local

-- This is a hack. I don't know how to tell cabal that a data file needs
Expand Down Expand Up @@ -307,7 +322,7 @@ idrisPreBuild args flags = do
windres verbosity ["icons/idris_icon.rc","-o", dir++"/idris_icon.o"]
return (Nothing, [(fromString "idris", emptyBuildInfo { ldOptions = [dir ++ "/idris_icon.o"] })])
where
verbosity = S.fromFlag $ S.buildVerbosity flags
verbosity = mkVerbosity $ S.buildVerbosity flags

dir =
#if MIN_VERSION_Cabal(3,11,0)
Expand All @@ -325,7 +340,7 @@ idrisBuild _ flags _ local
else do buildStdLib
buildRTS
where
verbosity = S.fromFlag $ S.buildVerbosity flags
verbosity = mkVerbosity $ S.buildVerbosity flags

buildStdLib = do
putStrLn "Building libraries..."
Expand Down Expand Up @@ -396,10 +411,10 @@ main = defaultMainWithHooks $ simpleUserHooks
, preBuild = idrisPreBuild
, postBuild = idrisBuild
, postCopy = \_ flags pkg local ->
idrisInstall (S.fromFlag $ S.copyVerbosity flags)
idrisInstall (mkVerbosity $ S.copyVerbosity flags)
(S.fromFlag $ S.copyDest flags) pkg local
, postInst = \_ flags pkg local ->
idrisInstall (S.fromFlag $ S.installVerbosity flags)
idrisInstall (mkVerbosity $ S.installVerbosity flags)
NoCopyDest pkg local
#if !MIN_VERSION_Cabal(3,0,0)
, preSDist = idrisPreSDist
Expand Down
2 changes: 1 addition & 1 deletion Cabal-tree-diff/src/Data/TreeDiff/Instances/Cabal.hs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ instance ToExpr TestSuiteInterface
instance ToExpr TestType
instance ToExpr UnitId
instance ToExpr UnqualComponentName
instance ToExpr Verbosity
instance ToExpr VerbosityFlags
instance ToExpr VerbosityFlag
instance ToExpr VerbosityLevel

Expand Down
5 changes: 2 additions & 3 deletions Cabal/src/Distribution/Compat/Time.hs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import System.Directory (getModificationTime)

import Distribution.Simple.Utils (withTempDirectoryCwd)
import Distribution.Utils.Path (getSymbolicPath, sameDirectory)
import Distribution.Verbosity (silent)

import System.FilePath

Expand Down Expand Up @@ -167,8 +166,8 @@ getCurTime = posixTimeToModTime `fmap` getPOSIXTime -- Uses 'gettimeofday'.
-- The returned delay is never smaller
-- than 10 ms, but never larger than 1 second.
calibrateMtimeChangeDelay :: IO (Int, Int)
calibrateMtimeChangeDelay =
withTempDirectoryCwd silent Nothing sameDirectory "calibration-" $ \dir -> do
calibrateMtimeChangeDelay = do
withTempDirectoryCwd Nothing sameDirectory "calibration-" $ \dir -> do
let fileName = getSymbolicPath dir </> "probe"
mtimes <- for [1 .. 25] $ \(i :: Int) -> time $ do
writeFile fileName $ show i
Expand Down
19 changes: 10 additions & 9 deletions Cabal/src/Distribution/Make.hs
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ import Distribution.Simple.Command
import Distribution.Simple.Program
import Distribution.Simple.Setup
import Distribution.Simple.Utils
import Distribution.Verbosity
import Distribution.Version

import System.Environment (getArgs, getProgName)
Expand Down Expand Up @@ -128,7 +129,7 @@ defaultMainHelper args = do
configureAction :: ConfigFlags -> [String] -> IO ()
configureAction flags args = do
noExtraFlags args
let verbosity = fromFlag $ configVerbosity flags
let verbosity = mkVerbosity defaultVerbosityHandles $ fromFlag $ configVerbosity flags
mbWorkDir = flagToMaybe $ configWorkingDir flags
rawSystemExit verbosity mbWorkDir "sh" $
"configure"
Expand All @@ -139,7 +140,7 @@ configureAction flags args = do
copyAction :: CopyFlags -> [String] -> IO ()
copyAction flags args = do
noExtraFlags args
let verbosity = fromFlag $ copyVerbosity flags
let verbosity = mkVerbosity defaultVerbosityHandles $ fromFlag $ copyVerbosity flags
mbWorkDir = flagToMaybe $ copyWorkingDir flags
destArgs = case fromFlag $ copyDest flags of
NoCopyDest -> ["install"]
Expand All @@ -151,15 +152,15 @@ copyAction flags args = do
installAction :: InstallFlags -> [String] -> IO ()
installAction flags args = do
noExtraFlags args
let verbosity = fromFlag $ installVerbosity flags
let verbosity = mkVerbosity defaultVerbosityHandles $ fromFlag $ installVerbosity flags
mbWorkDir = flagToMaybe $ installWorkingDir flags
rawSystemExit verbosity mbWorkDir "make" ["install"]
rawSystemExit verbosity mbWorkDir "make" ["register"]

haddockAction :: HaddockFlags -> [String] -> IO ()
haddockAction flags args = do
noExtraFlags args
let verbosity = fromFlag $ haddockVerbosity flags
let verbosity = mkVerbosity defaultVerbosityHandles $ fromFlag $ haddockVerbosity flags
mbWorkDir = flagToMaybe $ haddockWorkingDir flags
rawSystemExit verbosity mbWorkDir "make" ["docs"]
`catchIO` \_ ->
Expand All @@ -168,34 +169,34 @@ haddockAction flags args = do
buildAction :: BuildFlags -> [String] -> IO ()
buildAction flags args = do
noExtraFlags args
let verbosity = fromFlag $ buildVerbosity flags
let verbosity = mkVerbosity defaultVerbosityHandles $ fromFlag $ buildVerbosity flags
mbWorkDir = flagToMaybe $ buildWorkingDir flags
rawSystemExit verbosity mbWorkDir "make" []

cleanAction :: CleanFlags -> [String] -> IO ()
cleanAction flags args = do
noExtraFlags args
let verbosity = fromFlag $ cleanVerbosity flags
let verbosity = mkVerbosity defaultVerbosityHandles $ fromFlag $ cleanVerbosity flags
mbWorkDir = flagToMaybe $ cleanWorkingDir flags
rawSystemExit verbosity mbWorkDir "make" ["clean"]

sdistAction :: SDistFlags -> [String] -> IO ()
sdistAction flags args = do
noExtraFlags args
let verbosity = fromFlag $ sDistVerbosity flags
let verbosity = mkVerbosity defaultVerbosityHandles $ fromFlag $ sDistVerbosity flags
mbWorkDir = flagToMaybe $ sDistWorkingDir flags
rawSystemExit verbosity mbWorkDir "make" ["dist"]

registerAction :: RegisterFlags -> [String] -> IO ()
registerAction flags args = do
noExtraFlags args
let verbosity = fromFlag $ registerVerbosity flags
let verbosity = mkVerbosity defaultVerbosityHandles $ fromFlag $ registerVerbosity flags
mbWorkDir = flagToMaybe $ registerWorkingDir flags
rawSystemExit verbosity mbWorkDir "make" ["register"]

unregisterAction :: RegisterFlags -> [String] -> IO ()
unregisterAction flags args = do
noExtraFlags args
let verbosity = fromFlag $ registerVerbosity flags
let verbosity = mkVerbosity defaultVerbosityHandles $ fromFlag $ registerVerbosity flags
mbWorkDir = flagToMaybe $ registerWorkingDir flags
rawSystemExit verbosity mbWorkDir "make" ["unregister"]
Loading
Loading