on master help sign in
Merge branch 'develop' into use-posix-escape
commit31e782a40bbc7c859d0dbf90ac9a64626df84c42 authorElliot Cameron <3noch@users.noreply.github.com> dateWed 13 May 2020, 21:33 (6 years ago) parent5d3d29134548d1
4 files changed+32−15
default.nix+2−1 lib/cliapp/src/Obelisk/CliApp.hs+1 lib/command/src/Obelisk/Command/Run.hs+16−14 lib/route/src/Obelisk/Route.hs+13
default.nix+2−1
@@ -342,8 +342,9 @@ in rec {
342342 in nixpkgs.runCommand "ob-run" {
343343 buildInputs = [ (profiled.ghc.ghcWithPackages (p: [ p.backend p.frontend])) ];
344344 } ''
345+ cp ${exeSource} $PWD/ob-run.hs
345346 mkdir -p $out/bin/
346− ghc -x hs -prof -fno-prof-auto -threaded ${exeSource} -o $out/bin/ob-run
347+ ghc -x hs -prof -fno-prof-auto -threaded ob-run.hs -o $out/bin/ob-run
347348 '';
348349
349350 linuxExeConfigurable = linuxExe;
lib/cliapp/src/Obelisk/CliApp.hs+1
@@ -39,6 +39,7 @@ module Obelisk.CliApp
3939 , callCommand
4040 , callProcess
4141 , callProcessAndLogOutput
42+ , createProcess
4243 , createProcess_
4344 , overCreateProcess
4445 , proc
lib/command/src/Obelisk/Command/Run.hs+16−14
@@ -25,12 +25,14 @@ import Data.Default (def)
2525import Data.Either (partitionEithers)
2626import Data.Foldable (fold, for_, toList)
2727import Data.Functor.Identity (runIdentity)
28+import Data.List (intercalate)
2829import Data.List.NonEmpty (NonEmpty)
2930import qualified Data.List.NonEmpty as NE
3031import Data.Map (Map)
3132import qualified Data.Map as Map
3233import qualified Data.Map.Monoidal as MMap
33−import Data.Maybe
34+import Data.Maybe (catMaybes, fromMaybe, mapMaybe, maybeToList)
35+import Data.Ord (comparing)
3436import Data.Set (Set)
3537import qualified Data.Set as Set
3638import Data.String.Here.Interpolated (i)
@@ -44,17 +46,17 @@ import Distribution.Compiler (CompilerFlavor(..))
4446import Distribution.PackageDescription.Parsec (parseGenericPackageDescription)
4547import Distribution.Parsec.ParseResult (runParseResult)
4648import qualified Distribution.System as Dist
47−import Distribution.Types.BuildInfo
48−import Distribution.Types.CondTree
49−import Distribution.Types.GenericPackageDescription
50−import Distribution.Types.Library
51−import Distribution.Utils.Generic
49+import Distribution.Types.BuildInfo (buildable, defaultExtensions, defaultLanguage, hsSourceDirs, options)
50+import Distribution.Types.CondTree (simplifyCondTree)
51+import Distribution.Types.GenericPackageDescription (ConfVar (Arch, Impl, OS), condLibrary)
52+import Distribution.Types.Library (libBuildInfo)
53+import Distribution.Utils.Generic (toUTF8BS, readUTF8File)
5254import qualified Distribution.Parsec.Common as Dist
5355import qualified Hpack.Config as Hpack
5456import qualified Hpack.Render as Hpack
5557import qualified Hpack.Yaml as Hpack
56−import Language.Haskell.Extension
57−import Network.Socket hiding (Debug)
58+import Language.Haskell.Extension (Extension, Language)
59+import qualified Network.Socket as Socket
5860import System.Directory
5961import System.Environment (getExecutablePath)
6062import System.FilePath
@@ -494,14 +496,14 @@ runGhcid root chdirToRoot ghciArgs (toList -> packages) mcmd =
494496mkGhciScriptArg :: FilePath -> [String]
495497mkGhciScriptArg dotGhci = ["-ghci-script", dotGhci]
496498
497−getFreePort :: MonadIO m => m PortNumber
498−getFreePort = liftIO $ withSocketsDo $ do
499− addr:_ <- getAddrInfo (Just defaultHints) (Just "127.0.0.1") (Just "0")
500− bracket (open addr) close socketPort
499+getFreePort :: MonadIO m => m Socket.PortNumber
500+getFreePort = liftIO $ Socket.withSocketsDo $ do
501+ addr:_ <- Socket.getAddrInfo (Just Socket.defaultHints) (Just "127.0.0.1") (Just "0")
502+ bracket (open addr) Socket.close Socket.socketPort
501503 where
502504 open addr = do
503− sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
504− bind sock (addrAddress addr)
505+ sock <- Socket.socket (Socket.addrFamily addr) (Socket.addrSocketType addr) (Socket.addrProtocol addr)
506+ Socket.bind sock (Socket.addrAddress addr)
505507 return sock
506508
507509
lib/route/src/Obelisk/Route.hs+13
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE ApplicativeDo #-}
23{-# LANGUAGE ConstraintKinds #-}
34{-# LANGUAGE EmptyCase #-}
@@ -224,7 +225,19 @@ hoistR f (x :=> Identity y) = f x :/ y
224225infixr 5 :.
225226type (:.) = (,)
226227
228+#ifdef __GLASGOW_HASKELL__
229+#if __GLASGOW_HASKELL__ >= 810
227230{-# COMPLETE (:.) #-}
231+#else
232+{-# WARNING (:.)
233+ [ "Use of this pattern in GHC < 8.10 will result in spurious non-exhaustive warnings at every use site."
234+ , "We cannot provide a COMPLETE pragma to silence these due to a GHC bug: https://gitlab.haskell.org/ghc/ghc/issues/17729."
235+ , "The bug hides incompleteness warnings for all two tuples when the COMPLETE pattern is in scope."
236+ , "Instead, you should use (,) directly until you can switch to GHC >= 8.10, where the COMPLETE pragma is reinstated."
237+ ]
238+ #-}
239+#endif
240+#endif
228241pattern (:.) :: a -> b -> a :. b
229242pattern a :. b = (a, b)
230243