Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ghc-typed-process for openSUSE:Factory checked in at 2023-10-16 22:33:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ghc-typed-process (Old) and /work/SRC/openSUSE:Factory/.ghc-typed-process.new.20540 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-typed-process" Mon Oct 16 22:33:16 2023 rev:21 rq:1117908 version:0.2.11.1 Changes: -------- --- /work/SRC/openSUSE:Factory/ghc-typed-process/ghc-typed-process.changes 2023-04-04 21:24:29.082577897 +0200 +++ /work/SRC/openSUSE:Factory/.ghc-typed-process.new.20540/ghc-typed-process.changes 2023-10-16 22:33:30.612959637 +0200 @@ -1,0 +2,9 @@ +Sun Oct 8 09:01:29 UTC 2023 - Peter Simons <psim...@suse.com> + +- Update typed-process to version 0.2.11.1. + Upstream has edited the change log file since the last release in + a non-trivial way, i.e. they did more than just add a new entry + at the top. You can review the file at: + http://hackage.haskell.org/package/typed-process-0.2.11.1/src/ChangeLog.md + +------------------------------------------------------------------- Old: ---- typed-process-0.2.11.0.tar.gz New: ---- typed-process-0.2.11.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ghc-typed-process.spec ++++++ --- /var/tmp/diff_new_pack.7YPKNL/_old 2023-10-16 22:33:31.244982434 +0200 +++ /var/tmp/diff_new_pack.7YPKNL/_new 2023-10-16 22:33:31.244982434 +0200 @@ -20,7 +20,7 @@ %global pkgver %{pkg_name}-%{version} %bcond_with tests Name: ghc-%{pkg_name} -Version: 0.2.11.0 +Version: 0.2.11.1 Release: 0 Summary: Run external processes, with strong typing of streams License: MIT ++++++ typed-process-0.2.11.0.tar.gz -> typed-process-0.2.11.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-process-0.2.11.0/ChangeLog.md new/typed-process-0.2.11.1/ChangeLog.md --- old/typed-process-0.2.11.0/ChangeLog.md 2001-09-09 03:46:40.000000000 +0200 +++ new/typed-process-0.2.11.1/ChangeLog.md 2001-09-09 03:46:40.000000000 +0200 @@ -1,8 +1,12 @@ # ChangeLog for typed-process +## 0.2.11.1 + +* No user-visible changes + ## 0.2.11.0 -* Expose `System.Process.Typed.Internal` +* Expose more from `System.Process.Typed.Internal` ## 0.2.10.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-process-0.2.11.0/src/System/Process/Typed/Internal.hs new/typed-process-0.2.11.1/src/System/Process/Typed/Internal.hs --- old/typed-process-0.2.11.0/src/System/Process/Typed/Internal.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/typed-process-0.2.11.1/src/System/Process/Typed/Internal.hs 2001-09-09 03:46:40.000000000 +0200 @@ -1,5 +1,6 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE TypeOperators #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE DataKinds #-} @@ -223,9 +224,9 @@ -- -- @since 0.1.0.0 setStdin :: StreamSpec 'STInput stdin - -- ^ + -- ^ -> ProcessConfig stdin0 stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setStdin spec pc = pc { pcStdin = spec } @@ -235,9 +236,9 @@ -- -- @since 0.1.0.0 setStdout :: StreamSpec 'STOutput stdout - -- ^ + -- ^ -> ProcessConfig stdin stdout0 stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setStdout spec pc = pc { pcStdout = spec } @@ -247,9 +248,9 @@ -- -- @since 0.1.0.0 setStderr :: StreamSpec 'STOutput stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr0 - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setStderr spec pc = pc { pcStderr = spec } @@ -259,9 +260,9 @@ -- -- @since 0.1.0.0 setWorkingDir :: FilePath - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setWorkingDir dir pc = pc { pcWorkingDir = Just dir } @@ -270,7 +271,7 @@ -- @since 0.2.2.0 setWorkingDirInherit :: ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setWorkingDirInherit pc = pc { pcWorkingDir = Nothing } @@ -280,9 +281,9 @@ -- -- @since 0.1.0.0 setEnv :: [(String, String)] - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setEnv env pc = pc { pcEnv = Just env } @@ -291,7 +292,7 @@ -- @since 0.2.2.0 setEnvInherit :: ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setEnvInherit pc = pc { pcEnv = Nothing } @@ -303,9 +304,9 @@ -- @since 0.1.0.0 setCloseFds :: Bool - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setCloseFds x pc = pc { pcCloseFds = x } @@ -316,9 +317,9 @@ -- @since 0.1.0.0 setCreateGroup :: Bool - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setCreateGroup x pc = pc { pcCreateGroup = x } @@ -330,9 +331,9 @@ -- @since 0.1.0.0 setDelegateCtlc :: Bool - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setDelegateCtlc x pc = pc { pcDelegateCtlc = x } @@ -345,9 +346,9 @@ -- @since 0.1.0.0 setDetachConsole :: Bool - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setDetachConsole x pc = pc { pcDetachConsole = x } @@ -358,9 +359,9 @@ -- @since 0.1.0.0 setCreateNewConsole :: Bool - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setCreateNewConsole x pc = pc { pcCreateNewConsole = x } @@ -372,9 +373,9 @@ -- @since 0.1.0.0 setNewSession :: Bool - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setNewSession x pc = pc { pcNewSession = x } #endif @@ -388,9 +389,9 @@ -- @since 0.1.0.0 setChildGroup :: GroupID - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setChildGroup x pc = pc { pcChildGroup = Just x } @@ -399,7 +400,7 @@ -- @since 0.2.2.0 setChildGroupInherit :: ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setChildGroupInherit pc = pc { pcChildGroup = Nothing } @@ -411,9 +412,9 @@ -- @since 0.1.0.0 setChildUser :: UserID - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setChildUser x pc = pc { pcChildUser = Just x } @@ -422,7 +423,7 @@ -- @since 0.2.2.0 setChildUserInherit :: ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> ProcessConfig stdin stdout stderr setChildUserInherit pc = pc { pcChildUser = Nothing } #endif @@ -443,9 +444,9 @@ -- -- @since 0.1.0.0 mkStreamSpec :: P.StdStream - -- ^ + -- ^ -> (ProcessConfig () () () -> Maybe Handle -> IO (a, IO ())) - -- ^ + -- ^ -> StreamSpec streamType a mkStreamSpec ss f = mkManagedStreamSpec ($ ss) f @@ -460,9 +461,9 @@ -- -- @since 0.2.10.0 mkPipeStreamSpec :: (ProcessConfig () () () -> Handle -> IO (a, IO ())) - -- ^ + -- ^ -> StreamSpec streamType a - -- ^ + -- ^ mkPipeStreamSpec f = mkStreamSpec P.CreatePipe $ \pc mh -> case mh of Just h -> f pc h @@ -472,9 +473,9 @@ -- 'P.StdStream' and a helper function. This function is the same as -- the helper in 'mkStreamSpec' mkManagedStreamSpec :: (forall b. (P.StdStream -> IO b) -> IO b) - -- ^ + -- ^ -> (ProcessConfig () () () -> Maybe Handle -> IO (a, IO ())) - -- ^ + -- ^ -> StreamSpec streamType a mkManagedStreamSpec ss f = StreamSpec ss (\pc mh -> Cleanup (f pc mh)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-process-0.2.11.0/src/System/Process/Typed.hs new/typed-process-0.2.11.1/src/System/Process/Typed.hs --- old/typed-process-0.2.11.0/src/System/Process/Typed.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/typed-process-0.2.11.1/src/System/Process/Typed.hs 2001-09-09 03:46:40.000000000 +0200 @@ -178,7 +178,7 @@ -- @since 0.1.0.0 startProcess :: MonadIO m => ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> m (Process stdin stdout stderr) startProcess pConfig'@ProcessConfig {..} = liftIO $ do ssStream pcStdin $ \realStdin -> @@ -256,25 +256,8 @@ -- Process didn't exit yet, let's terminate it and -- then call waitForProcess ourselves Left _ -> do - eres <- try $ P.terminateProcess pHandle - ec <- - case eres of - Left e - -- On Windows, with the single-threaded runtime, it - -- seems that if a process has already exited, the - -- call to terminateProcess will fail with a - -- permission denied error. To work around this, we - -- catch this exception and then immediately - -- waitForProcess. There's a chance that there may be - -- other reasons for this permission error to appear, - -- in which case this code may allow us to wait too - -- long for a child process instead of erroring out. - -- Recommendation: always use the multi-threaded - -- runtime! - | isPermissionError e && not multiThreadedRuntime && isWindows -> - P.waitForProcess pHandle - | otherwise -> throwIO e - Right () -> P.waitForProcess pHandle + terminateProcess pHandle + ec <- P.waitForProcess pHandle success <- atomically $ tryPutTMVar pExitCode ec evaluate $ assert success () @@ -282,6 +265,26 @@ where pConfig = clearStreams pConfig' + terminateProcess pHandle = do + eres <- try $ P.terminateProcess pHandle + case eres of + Left e + -- On Windows, with the single-threaded runtime, it + -- seems that if a process has already exited, the + -- call to terminateProcess will fail with a + -- permission denied error. To work around this, we + -- catch this exception and then immediately + -- waitForProcess. There's a chance that there may be + -- other reasons for this permission error to appear, + -- in which case this code may allow us to wait too + -- long for a child process instead of erroring out. + -- Recommendation: always use the multi-threaded + -- runtime! + | isPermissionError e && not multiThreadedRuntime && isWindows -> + pure () + | otherwise -> throwIO e + Right () -> pure () + foreign import ccall unsafe "rtsSupportsBoundThreads" multiThreadedRuntime :: Bool @@ -314,9 +317,9 @@ -- @since 0.2.5.0 withProcessTerm :: (MonadUnliftIO m) => ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> (Process stdin stdout stderr -> m a) - -- ^ + -- ^ -> m a withProcessTerm config = bracket (startProcess config) stopProcess @@ -331,9 +334,9 @@ -- @since 0.2.5.0 withProcessWait :: (MonadUnliftIO m) => ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> (Process stdin stdout stderr -> m a) - -- ^ + -- ^ -> m a withProcessWait config f = bracket @@ -349,7 +352,7 @@ -> (Process stdin stdout stderr -> m a) -> m a withProcess = withProcessTerm -{-# DEPRECATED withProcess "Please consider using withProcessWait, or instead use withProcessTerm" #-} +{-# DEPRECATED withProcess "Please consider using `withProcessWait`, or instead use `withProcessTerm`" #-} -- | Same as 'withProcessTerm', but also calls 'checkExitCode' -- @@ -359,9 +362,9 @@ -- @since 0.2.5.0 withProcessTerm_ :: (MonadUnliftIO m) => ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> (Process stdin stdout stderr -> m a) - -- ^ + -- ^ -> m a withProcessTerm_ config = bracket (startProcess config) @@ -372,9 +375,9 @@ -- @since 0.2.5.0 withProcessWait_ :: (MonadUnliftIO m) => ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> (Process stdin stdout stderr -> m a) - -- ^ + -- ^ -> m a withProcessWait_ config f = bracket (startProcess config) @@ -389,7 +392,7 @@ -> (Process stdin stdout stderr -> m a) -> m a withProcess_ = withProcessTerm_ -{-# DEPRECATED withProcess_ "Please consider using withProcessWait_, or instead use withProcessTerm_" #-} +{-# DEPRECATED withProcess_ "Please consider using `withProcessWait_`, or instead use `withProcessTerm_`" #-} -- | Run a process, capture its standard output and error as a -- 'L.ByteString', wait for it to complete, and then return its exit @@ -401,7 +404,7 @@ -- @since 0.1.0.0 readProcess :: MonadIO m => ProcessConfig stdin stdoutIgnored stderrIgnored - -- ^ + -- ^ -> m (ExitCode, L.ByteString, L.ByteString) readProcess pc = liftIO $ withProcess pc' $ \p -> atomically $ (,,) @@ -420,7 +423,7 @@ -- @since 0.1.0.0 readProcess_ :: MonadIO m => ProcessConfig stdin stdoutIgnored stderrIgnored - -- ^ + -- ^ -> m (L.ByteString, L.ByteString) readProcess_ pc = liftIO $ withProcess pc' $ \p -> atomically $ do @@ -441,7 +444,7 @@ readProcessStdout :: MonadIO m => ProcessConfig stdin stdoutIgnored stderr - -- ^ + -- ^ -> m (ExitCode, L.ByteString) readProcessStdout pc = liftIO $ withProcess pc' $ \p -> atomically $ (,) @@ -459,7 +462,7 @@ readProcessStdout_ :: MonadIO m => ProcessConfig stdin stdoutIgnored stderr - -- ^ + -- ^ -> m L.ByteString readProcessStdout_ pc = liftIO $ withProcess pc' $ \p -> atomically $ do @@ -478,7 +481,7 @@ readProcessStderr :: MonadIO m => ProcessConfig stdin stdout stderrIgnored - -- ^ + -- ^ -> m (ExitCode, L.ByteString) readProcessStderr pc = liftIO $ withProcess pc' $ \p -> atomically $ (,) @@ -496,7 +499,7 @@ readProcessStderr_ :: MonadIO m => ProcessConfig stdin stdout stderrIgnored - -- ^ + -- ^ -> m L.ByteString readProcessStderr_ pc = liftIO $ withProcess pc' $ \p -> atomically $ do @@ -510,9 +513,9 @@ withProcessInterleave :: (MonadUnliftIO m) => ProcessConfig stdin stdoutIgnored stderrIgnored - -- ^ + -- ^ -> (Process stdin (STM L.ByteString) () -> m a) - -- ^ + -- ^ -> m a withProcessInterleave pc inner = -- Create a pipe to be shared for both stdout and stderr @@ -538,7 +541,7 @@ readProcessInterleaved :: MonadIO m => ProcessConfig stdin stdoutIgnored stderrIgnored - -- ^ + -- ^ -> m (ExitCode, L.ByteString) readProcessInterleaved pc = liftIO $ @@ -556,9 +559,9 @@ readProcessInterleaved_ :: MonadIO m => ProcessConfig stdin stdoutIgnored stderrIgnored - -- ^ + -- ^ -> m L.ByteString - -- ^ + -- ^ readProcessInterleaved_ pc = liftIO $ withProcessInterleave pc $ \p -> atomically $ do @@ -574,9 +577,9 @@ -- @since 0.1.0.0 runProcess :: MonadIO m => ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> m ExitCode - -- ^ + -- ^ runProcess pc = liftIO $ withProcess pc waitExitCode -- | Same as 'runProcess', but instead of returning the @@ -585,7 +588,7 @@ -- @since 0.1.0.0 runProcess_ :: MonadIO m => ProcessConfig stdin stdout stderr - -- ^ + -- ^ -> m () runProcess_ pc = liftIO $ withProcess pc checkExitCode diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-process-0.2.11.0/typed-process.cabal new/typed-process-0.2.11.1/typed-process.cabal --- old/typed-process-0.2.11.0/typed-process.cabal 2001-09-09 03:46:40.000000000 +0200 +++ new/typed-process-0.2.11.1/typed-process.cabal 2001-09-09 03:46:40.000000000 +0200 @@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: typed-process -version: 0.2.11.0 +version: 0.2.11.1 synopsis: Run external processes, with strong typing of streams description: Please see the tutorial at <https://github.com/fpco/typed-process#readme> category: System @@ -53,12 +53,14 @@ hs-source-dirs: test ghc-options: -threaded -rtsopts -with-rtsopts=-N + build-tool-depends: + hspec-discover:hspec-discover build-depends: async >=2.0 , base >=4.12 && <5 , base64-bytestring , bytestring - , hspec + , hspec ==2.* , process >=1.2 , stm , temporary @@ -75,12 +77,14 @@ Paths_typed_process hs-source-dirs: test + build-tool-depends: + hspec-discover:hspec-discover build-depends: async >=2.0 , base >=4.12 && <5 , base64-bytestring , bytestring - , hspec + , hspec ==2.* , process >=1.2 , stm , temporary