packages feed

ats-pkg 3.1.0.12 → 3.2.1.2

raw patch · 12 files changed

+70/−121 lines, 12 filesdep −hashabledep ~dhalldep ~directorydep ~shake-atsPVP ok

version bump matches the API change (PVP)

Dependencies removed: hashable

Dependency ranges changed: dhall, directory, shake-ats

API changes (from Hackage documentation)

- Quaalude: ($>) :: Functor f => f a -> b -> f b
- Quaalude: (%>) :: FilePattern -> FilePath -> Action () -> Rules ()
- Quaalude: (%~) :: () => ASetter s t a b -> a -> b -> s -> t
- Quaalude: (&&&) :: Arrow a => a b c -> a b c' -> a b (c, c')
- Quaalude: (&) :: () => a -> a -> b -> b
- Quaalude: (***) :: Arrow a => a b c -> a b' c' -> a (b, b') (c, c')
- Quaalude: (-<.>) :: FilePath -> String -> FilePath
- Quaalude: (.*) :: () => c -> d -> a -> b -> c -> a -> b -> d
- Quaalude: (.**) :: () => d -> e -> a -> b -> c -> d -> a -> b -> c -> e
- Quaalude: (<#>) :: Doc -> Doc -> Doc
- Quaalude: (<+>) :: Doc -> Doc -> Doc
- Quaalude: (</>) :: FilePath -> FilePath -> FilePath
- Quaalude: (<=<) :: Monad m => b -> m c -> a -> m b -> a -> m c
- Quaalude: (<>) :: Semigroup a => a -> a -> a
- Quaalude: (~>) :: String -> Action () -> Rules ()
- Quaalude: ChangeDigest :: Change
- Quaalude: ChangeModtime :: Change
- Quaalude: ChangeModtimeAndDigest :: Change
- Quaalude: ChangeModtimeAndDigestInput :: Change
- Quaalude: ChangeModtimeOrDigest :: Change
- Quaalude: Chatty :: Verbosity
- Quaalude: Diagnostic :: Verbosity
- Quaalude: ExitSuccess :: ExitCode
- Quaalude: LintBasic :: Lint
- Quaalude: LintFSATrace :: Lint
- Quaalude: Loud :: Verbosity
- Quaalude: Normal :: Verbosity
- Quaalude: Quiet :: Verbosity
- Quaalude: RebuildLater :: Rebuild
- Quaalude: RebuildNormal :: Rebuild
- Quaalude: RebuildNow :: Rebuild
- Quaalude: ShakeOptions :: FilePath -> Int -> String -> Verbosity -> Bool -> [FilePath] -> Maybe Lint -> [FilePath] -> [FilePattern] -> [CmdOption] -> Maybe Double -> [(Rebuild, FilePattern)] -> [(String, String)] -> Bool -> Bool -> Bool -> Bool -> Change -> Bool -> [FilePath] -> Bool -> Bool -> IO Progress -> IO () -> Verbosity -> String -> IO () -> HashMap TypeRep Dynamic -> ShakeOptions
- Quaalude: Silent :: Verbosity
- Quaalude: [shakeAbbreviations] :: ShakeOptions -> [(String, String)]
- Quaalude: [shakeChange] :: ShakeOptions -> Change
- Quaalude: [shakeColor] :: ShakeOptions -> Bool
- Quaalude: [shakeCommandOptions] :: ShakeOptions -> [CmdOption]
- Quaalude: [shakeCreationCheck] :: ShakeOptions -> Bool
- Quaalude: [shakeExtra] :: ShakeOptions -> HashMap TypeRep Dynamic
- Quaalude: [shakeFiles] :: ShakeOptions -> FilePath
- Quaalude: [shakeFlush] :: ShakeOptions -> Maybe Double
- Quaalude: [shakeLineBuffering] :: ShakeOptions -> Bool
- Quaalude: [shakeLintIgnore] :: ShakeOptions -> [FilePattern]
- Quaalude: [shakeLintInside] :: ShakeOptions -> [FilePath]
- Quaalude: [shakeLint] :: ShakeOptions -> Maybe Lint
- Quaalude: [shakeLiveFiles] :: ShakeOptions -> [FilePath]
- Quaalude: [shakeOutput] :: ShakeOptions -> Verbosity -> String -> IO ()
- Quaalude: [shakeProgress] :: ShakeOptions -> IO Progress -> IO ()
- Quaalude: [shakeRebuild] :: ShakeOptions -> [(Rebuild, FilePattern)]
- Quaalude: [shakeReport] :: ShakeOptions -> [FilePath]
- Quaalude: [shakeRunCommands] :: ShakeOptions -> Bool
- Quaalude: [shakeStaunch] :: ShakeOptions -> Bool
- Quaalude: [shakeStorageLog] :: ShakeOptions -> Bool
- Quaalude: [shakeThreads] :: ShakeOptions -> Int
- Quaalude: [shakeTimings] :: ShakeOptions -> Bool
- Quaalude: [shakeVerbosity] :: ShakeOptions -> Verbosity
- Quaalude: [shakeVersionIgnore] :: ShakeOptions -> Bool
- Quaalude: [shakeVersion] :: ShakeOptions -> String
- Quaalude: _1 :: Field1 s t a b => Lens s t a b
- Quaalude: _2 :: Field2 s t a b => Lens s t a b
- Quaalude: _4 :: Field4 s t a b => Lens s t a b
- Quaalude: _Just :: Applicative f => a -> f a' -> Maybe a -> f Maybe a'
- Quaalude: auto :: Interpret a => Type a
- Quaalude: biaxe :: (Traversable t, Applicative f) => t a -> b -> f () -> a -> b -> f ()
- Quaalude: bisequence' :: (Traversable t, Applicative f) => t a -> b -> f c -> a -> b -> t f c
- Quaalude: bool :: () => a -> a -> Bool -> a
- Quaalude: both :: () => a -> b -> (a, a) -> (b, b)
- Quaalude: class Binary t
- Quaalude: class Generic a
- Quaalude: class Inject a
- Quaalude: class Interpret a
- Quaalude: class Monad m => MonadIO (m :: * -> *)
- Quaalude: class Pretty a
- Quaalude: cmd :: CmdArguments args => args :-> Action r
- Quaalude: cmd_ :: (CmdArguments args, Unit args) => args :-> Action ()
- Quaalude: command :: CmdResult r => [CmdOption] -> String -> [String] -> Action r
- Quaalude: command_ :: [CmdOption] -> String -> [String] -> Action ()
- Quaalude: copyFile' :: FilePath -> FilePath -> Action ()
- Quaalude: data Action a
- Quaalude: data ByteString
- Quaalude: data Change
- Quaalude: data ExitCode
- Quaalude: data Lint
- Quaalude: data Rebuild
- Quaalude: data Request
- Quaalude: data Response body
- Quaalude: data Rules a
- Quaalude: data ShakeOptions
- Quaalude: data Text
- Quaalude: data Verbosity
- Quaalude: decode :: Binary a => ByteString -> a
- Quaalude: detailed :: () => IO a -> IO a
- Quaalude: dullred :: Doc -> Doc
- Quaalude: dullyellow :: Doc -> Doc
- Quaalude: each :: Each s t a b => Traversal s t a b
- Quaalude: encode :: Binary a => a -> ByteString
- Quaalude: exitWith :: () => ExitCode -> IO a
- Quaalude: filterM :: Applicative m => a -> m Bool -> [a] -> m [a]
- Quaalude: first :: Arrow a => a b c -> a (b, d) (c, d)
- Quaalude: fold :: (Foldable t, Monoid m) => t m -> m
- Quaalude: fromMaybe :: () => a -> Maybe a -> a
- Quaalude: getEnv :: String -> IO String
- Quaalude: hang :: Int -> Doc -> Doc
- Quaalude: hardline :: Doc
- Quaalude: hex :: Int -> String
- Quaalude: httpLbs :: Request -> Manager -> IO Response ByteString
- Quaalude: indent :: Int -> Doc -> Doc
- Quaalude: infix 1 ~>
- Quaalude: infixl 0 `on`
- Quaalude: infixl 1 &
- Quaalude: infixl 4 $>
- Quaalude: infixr 1 <=<
- Quaalude: infixr 3 &&&
- Quaalude: infixr 4 %~
- Quaalude: infixr 5 <#>
- Quaalude: infixr 6 <+>
- Quaalude: infixr 7 -<.>
- Quaalude: infixr 8 .**
- Quaalude: input :: () => Type a -> Text -> IO a
- Quaalude: instance (GHC.Base.Semigroup a, GHC.Base.Monoid a) => GHC.Base.Monoid (Development.Shake.Internal.Core.Types.Action a)
- Quaalude: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Development.Shake.Internal.Core.Types.Action a)
- Quaalude: intersperse :: () => a -> [a] -> [a]
- Quaalude: isNothing :: () => Maybe a -> Bool
- Quaalude: isPrefixOf :: Eq a => [a] -> [a] -> Bool
- Quaalude: isSuffixOf :: Eq a => [a] -> [a] -> Bool
- Quaalude: join :: Monad m => m m a -> m a
- Quaalude: liftIO :: MonadIO m => IO a -> m a
- Quaalude: linebreak :: Doc
- Quaalude: makeExe :: String
- Quaalude: makeExecutable :: FilePath -> IO ()
- Quaalude: need :: [FilePath] -> Action ()
- Quaalude: newManager :: ManagerSettings -> IO Manager
- Quaalude: nubSpecial :: (Eq a) => [[a]] -> [[a]]
- Quaalude: on :: () => b -> b -> c -> a -> b -> a -> a -> c
- Quaalude: over :: () => ASetter s t a b -> a -> b -> s -> t
- Quaalude: pack :: String -> Text
- Quaalude: parseRequest :: MonadThrow m => String -> m Request
- Quaalude: pathSeparator :: Char
- Quaalude: pretty :: Pretty a => a -> Doc
- Quaalude: punctuate :: Doc -> [Doc] -> [Doc]
- Quaalude: putDoc :: Doc -> IO ()
- Quaalude: removeFilesAfter :: FilePath -> [FilePattern] -> Action ()
- Quaalude: second :: Arrow a => a b c -> a (d, b) (d, c)
- Quaalude: shake :: ShakeOptions -> Rules () -> IO ()
- Quaalude: shakeOptions :: ShakeOptions
- Quaalude: shouldWrite :: (MonadIO m, Binary a) => a -> FilePath -> m Bool
- Quaalude: showVersion :: Version -> String
- Quaalude: silentCreateProcess :: Verbosity -> CreateProcess -> IO ()
- Quaalude: sortBy :: () => a -> a -> Ordering -> [a] -> [a]
- Quaalude: takeBaseName :: FilePath -> String
- Quaalude: takeDirectory :: FilePath -> FilePath
- Quaalude: takeFileName :: FilePath -> FilePath
- Quaalude: text :: String -> Doc
- Quaalude: thread :: () => [a -> a] -> a -> a
- Quaalude: tlsManagerSettings :: ManagerSettings
- Quaalude: transpose :: () => [[a]] -> [[a]]
- Quaalude: traverse_ :: (Foldable t, Applicative f) => a -> f b -> t a -> f ()
- Quaalude: type Lens' s a = Lens s s a a
- Quaalude: unless :: Applicative f => Bool -> f () -> f ()
- Quaalude: unpack :: Text -> String
- Quaalude: view :: () => Getting a s a -> s -> a
- Quaalude: void :: Functor f => f a -> f ()
- Quaalude: want :: [FilePath] -> Rules ()
- Quaalude: when :: Applicative f => Bool -> f () -> f ()
- Quaalude: zipWithM :: Applicative m => a -> b -> m c -> [a] -> [b] -> m [c]
- Quaalude: zipWithM_ :: Applicative m => a -> b -> m c -> [a] -> [b] -> m ()
+ Distribution.ATS: atsPolyglotBuild :: IO ()
+ Distribution.ATS: cabalHooks :: UserHooks
+ Language.ATS.Package: ATSConstraint :: Maybe Version -> Maybe Version -> ATSConstraint
+ Language.ATS.Package: ATSDependency :: Text -> Text -> Text -> Maybe Text -> Version -> [LibDep] -> [LibDep] -> [LibDep] -> [Text] -> ATSDependency
+ Language.ATS.Package: ATSPackageSet :: [ATSDependency] -> ATSPackageSet
+ Language.ATS.Package: Bin :: Text -> Text -> [Text] -> [ForeignCabal] -> [TargetPair] -> Bool -> [Text] -> Bin
+ Language.ATS.Package: DepErr :: ResolveError -> PackageError
+ Language.ATS.Package: ForeignCabal :: Maybe Text -> Text -> Text -> ForeignCabal
+ Language.ATS.Package: Lib :: Text -> [Text] -> Text -> [Text] -> [Text] -> [ForeignCabal] -> [(Text, Text)] -> [TargetPair] -> [Text] -> Bool -> Lib
+ Language.ATS.Package: Pkg :: [Bin] -> [Bin] -> [Lib] -> Maybe Text -> Maybe Text -> Version -> Version -> [LibDep] -> [LibDep] -> [LibDep] -> Text -> [Text] -> [Text] -> [Src] -> Bool -> Solver -> Maybe Debian -> Bool -> Pkg
+ Language.ATS.Package: Src :: Text -> Text -> [TargetPair] -> [Text] -> Src
+ Language.ATS.Package: TargetPair :: Text -> Text -> Bool -> TargetPair
+ Language.ATS.Package: Unrecognized :: String -> PackageError
+ Language.ATS.Package: Version :: [Natural] -> Version
+ Language.ATS.Package: [$sel:ats:TargetPair] :: TargetPair -> Text
+ Language.ATS.Package: [$sel:atsFlags:Pkg] :: Pkg -> [Text]
+ Language.ATS.Package: [$sel:atsGen:Src] :: Src -> [TargetPair]
+ Language.ATS.Package: [$sel:atsLib:Pkg] :: Pkg -> Bool
+ Language.ATS.Package: [$sel:atsSource:Pkg] :: Pkg -> [Src]
+ Language.ATS.Package: [$sel:atsSrc:Src] :: Src -> Text
+ Language.ATS.Package: [$sel:bin:Pkg] :: Pkg -> [Bin]
+ Language.ATS.Package: [$sel:buildDeps:Pkg] :: Pkg -> [LibDep]
+ Language.ATS.Package: [$sel:cTarget:Src] :: Src -> Text
+ Language.ATS.Package: [$sel:ccompiler:Pkg] :: Pkg -> Text
+ Language.ATS.Package: [$sel:cflags:Pkg] :: Pkg -> [Text]
+ Language.ATS.Package: [$sel:clib:Pkg] :: Pkg -> [LibDep]
+ Language.ATS.Package: [$sel:compiler:Pkg] :: Pkg -> Version
+ Language.ATS.Package: [$sel:completions:Pkg] :: Pkg -> Maybe Text
+ Language.ATS.Package: [$sel:cpphs:TargetPair] :: TargetPair -> Bool
+ Language.ATS.Package: [$sel:debPkg:Pkg] :: Pkg -> Maybe Debian
+ Language.ATS.Package: [$sel:dependencies:Pkg] :: Pkg -> [LibDep]
+ Language.ATS.Package: [$sel:description:ATSDependency] :: ATSDependency -> Maybe Text
+ Language.ATS.Package: [$sel:dir:ATSDependency] :: ATSDependency -> Text
+ Language.ATS.Package: [$sel:dynLink:Pkg] :: Pkg -> Bool
+ Language.ATS.Package: [$sel:extSolve:Pkg] :: Pkg -> Solver
+ Language.ATS.Package: [$sel:extras:Bin] :: Bin -> [Text]
+ Language.ATS.Package: [$sel:extras:Lib] :: Lib -> [Text]
+ Language.ATS.Package: [$sel:extras:Src] :: Src -> [Text]
+ Language.ATS.Package: [$sel:gcBin:Bin] :: Bin -> Bool
+ Language.ATS.Package: [$sel:hs2ats:Bin] :: Bin -> [TargetPair]
+ Language.ATS.Package: [$sel:hs2ats:Lib] :: Lib -> [TargetPair]
+ Language.ATS.Package: [$sel:hs:TargetPair] :: TargetPair -> Text
+ Language.ATS.Package: [$sel:hsDeps:Bin] :: Bin -> [ForeignCabal]
+ Language.ATS.Package: [$sel:hsDeps:Lib] :: Lib -> [ForeignCabal]
+ Language.ATS.Package: [$sel:includes:Lib] :: Lib -> [Text]
+ Language.ATS.Package: [$sel:libBldDeps:ATSDependency] :: ATSDependency -> [LibDep]
+ Language.ATS.Package: [$sel:libCDeps:ATSDependency] :: ATSDependency -> [LibDep]
+ Language.ATS.Package: [$sel:libDeps:ATSDependency] :: ATSDependency -> [LibDep]
+ Language.ATS.Package: [$sel:libName:ATSDependency] :: ATSDependency -> Text
+ Language.ATS.Package: [$sel:libTarget:Lib] :: Lib -> Text
+ Language.ATS.Package: [$sel:libVersion:ATSDependency] :: ATSDependency -> Version
+ Language.ATS.Package: [$sel:libraries:Pkg] :: Pkg -> [Lib]
+ Language.ATS.Package: [$sel:libs:Bin] :: Bin -> [Text]
+ Language.ATS.Package: [$sel:libs:Lib] :: Lib -> [Text]
+ Language.ATS.Package: [$sel:links:Lib] :: Lib -> [(Text, Text)]
+ Language.ATS.Package: [$sel:lower:ATSConstraint] :: ATSConstraint -> Maybe Version
+ Language.ATS.Package: [$sel:man:Pkg] :: Pkg -> Maybe Text
+ Language.ATS.Package: [$sel:name:Lib] :: Lib -> Text
+ Language.ATS.Package: [$sel:script:ATSDependency] :: ATSDependency -> [Text]
+ Language.ATS.Package: [$sel:src:Bin] :: Bin -> Text
+ Language.ATS.Package: [$sel:src:Lib] :: Lib -> [Text]
+ Language.ATS.Package: [$sel:static:Lib] :: Lib -> Bool
+ Language.ATS.Package: [$sel:target:Bin] :: Bin -> Text
+ Language.ATS.Package: [$sel:test:Pkg] :: Pkg -> [Bin]
+ Language.ATS.Package: [$sel:upper:ATSConstraint] :: ATSConstraint -> Maybe Version
+ Language.ATS.Package: [$sel:url:ATSDependency] :: ATSDependency -> Text
+ Language.ATS.Package: [$sel:version:Pkg] :: Pkg -> Version
+ Language.ATS.Package: [_atsPkgSet] :: ATSPackageSet -> [ATSDependency]
+ Language.ATS.Package: [cabalFile] :: ForeignCabal -> Text
+ Language.ATS.Package: [objectFile] :: ForeignCabal -> Text
+ Language.ATS.Package: [projectFile] :: ForeignCabal -> Maybe Text
+ Language.ATS.Package: atspkgVersion :: Version
+ Language.ATS.Package: buildAll :: Int -> Maybe String -> Maybe String -> Maybe FilePath -> IO ()
+ Language.ATS.Package: buildHelper :: Bool -> ATSDependency -> IO ()
+ Language.ATS.Package: check :: Maybe String -> Maybe FilePath -> IO Bool
+ Language.ATS.Package: cleanAll :: IO ()
+ Language.ATS.Package: data ATSConstraint
+ Language.ATS.Package: data ATSDependency
+ Language.ATS.Package: data Bin
+ Language.ATS.Package: data ForeignCabal
+ Language.ATS.Package: data Lib
+ Language.ATS.Package: data PackageError
+ Language.ATS.Package: data Pkg
+ Language.ATS.Package: data Src
+ Language.ATS.Package: data TargetPair
+ Language.ATS.Package: dirLens :: Lens' ATSDependency Text
+ Language.ATS.Package: displayList :: String -> IO ()
+ Language.ATS.Package: mkPkg :: Maybe String -> Bool -> Bool -> Bool -> [IO ()] -> [String] -> Maybe String -> Int -> IO ()
+ Language.ATS.Package: newtype ATSPackageSet
+ Language.ATS.Package: newtype Version
+ Language.ATS.Package: packageCompiler :: FilePath -> IO ()
+ Language.ATS.Package: type DepSelector = ATSDependency -> [LibDep]
+ Language.ATS.Package: type LibDep = (Text, ATSConstraint)

Files

+ CHANGELOG.md view
@@ -0,0 +1,12 @@+# ats-pkg++## 3.2.1.2++Bug Fixes:++  * Don't default to 4 processors+  * Use `getAppUserDirectory` for better portability++Breaking Changes:++  * Only build C sources when sensible to do so
app/Main.hs view
@@ -248,7 +248,7 @@  installActions :: IO () installActions = do-    path <- getDataFileName "man/atspkg.1"+    path <- getDataFileName ("man" </> "atspkg.1")     fold         [ writeManpages path "atspkg.1"         , writeTheFuck
ats-pkg.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.0 name: ats-pkg-version: 3.1.0.12+version: 3.2.1.2 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2018 Vanessa McHale@@ -21,6 +21,7 @@     dhall/atspkg-prelude.dhall extra-doc-files: README.md                  docs/manual.tex+                 CHANGELOG.md  source-repository head     type: git@@ -58,7 +59,6 @@         Language.ATS.Package.Config         Language.ATS.Package.Dependency         Language.ATS.Package.Error-        Language.ATS.Package.Generic         Language.ATS.Package.PackageSet         Language.ATS.Package.Type         Language.ATS.Package.Debian@@ -66,10 +66,9 @@     autogen-modules:         Paths_ats_pkg     default-language: Haskell2010-    other-extensions: OverloadedStrings GADTs-                      GeneralizedNewtypeDeriving DeriveAnyClass DeriveGeneric-                      TemplateHaskell RecordWildCards TupleSections StandaloneDeriving-                      DerivingStrategies+    other-extensions: OverloadedStrings GeneralizedNewtypeDeriving+                      DeriveAnyClass DeriveGeneric TemplateHaskell RecordWildCards+                      TupleSections StandaloneDeriving DerivingStrategies     ghc-options: -Wall -Wincomplete-uni-patterns                  -Wincomplete-record-updates     build-depends:@@ -86,7 +85,6 @@         http-client-tls -any,         text -any,         process -any,-        hashable -any,         containers -any,         parallel-io -any,         mtl -any,@@ -117,7 +115,7 @@         http-client -any,         http-client-tls -any,         process -any,-        directory -any,+        directory >=1.2.3.0,         filepath -any,         microlens -any,         dhall -any,
man/atspkg.1 view
@@ -1,4 +1,4 @@-.\" Automatically generated by Pandoc 2.2.2.1+.\" Automatically generated by Pandoc 2.2.3.2 .\" .TH "atspkg (1)" "" "" "" "" .hy
src/Language/ATS/Package.hs view
@@ -8,8 +8,6 @@                             , atspkgVersion                             -- * Functions involving the compiler                             , packageCompiler-                            -- * Functions for generic packaging-                            , atsInstallDirs                             -- * Types                             , Version (..)                             , Pkg (..)@@ -24,12 +22,6 @@                             , LibDep                             , DepSelector                             , PackageError (..)-                            -- * Generic Packaging-                            , Package (..)-                            , InstallDirs (..)-                            , CacheValid-                            -- * Typeclasses-                            , GenericPackage (..)                             -- * Lenses                             , dirLens                             ) where@@ -39,6 +31,5 @@ import           Language.ATS.Package.Compiler import           Language.ATS.Package.Dependency import           Language.ATS.Package.Error-import           Language.ATS.Package.Generic import           Language.ATS.Package.PackageSet import           Language.ATS.Package.Type
src/Language/ATS/Package/Build.hs view
@@ -21,6 +21,7 @@ import           Development.Shake.Clean import           Development.Shake.Man import           Distribution.ATS.Version+import           GHC.Conc import           Language.ATS.Package.Build.C import           Language.ATS.Package.Compiler import           Language.ATS.Package.Config@@ -31,9 +32,8 @@  check :: Maybe String -> Maybe FilePath -> IO Bool check mStr p = do-    home <- getEnv "HOME"     v <- wants mStr p-    doesFileExist (home </> ".atspkg" </> show v </> "bin" </> "patscc")+    doesFileExist =<< getAppUserDataDirectory ("atspkg" </> show v </> "bin" </> "patscc")  wants :: Maybe String -> Maybe FilePath -> IO Version wants mStr p = compiler <$> getConfig mStr p@@ -84,14 +84,15 @@             libDir = maybe mempty (<> [pathSeparator]) tgt         need (bins <> libs')         home <- liftIO $ getEnv "HOME"+        atspkgDir <- liftIO $ getAppUserDataDirectory "atspkg"         let g str = fmap (((home </> str) </>) . takeFileName)             binDest =  g (".local" </> "bin") bins-            libDest = ((home </> ".atspkg" </> libDir </> "lib") </>) . takeFileName <$> libs'-            inclDest = ((home </> ".atspkg" </> "include") </>) . takeFileName <$> incs+            libDest = ((atspkgDir </> libDir </> "lib") </>) . takeFileName <$> libs'+            inclDest = ((atspkgDir </> "include") </>) . takeFileName <$> incs         zipWithM_ copyFile' (bins ++ libs' ++ incs) (binDest ++ libDest ++ inclDest)         pa <- pandoc         case man config of-            Just mt -> if not pa then pure () else do+            Just mt -> when pa $ do                 let mt' = manTarget mt                     manDest = home </> ".local" </> "share" </> "man" </> "man1" </> takeFileName mt'                 need [mt']@@ -99,7 +100,7 @@             Nothing -> pure ()         co <- compleat         case completions config of-            Just com -> if not co then pure () else do+            Just com -> when co $ do                 let com' = unpack com                     comDest = home </> ".compleat" </> takeFileName com'                 need [com'] -- FIXME do this all in one step@@ -168,18 +169,19 @@ options :: Bool -- ^ Whether to rebuild all targets         -> Bool -- ^ Whether to run the linter         -> Bool -- ^ Whether to display profiling information for the build+        -> Int -- ^ Number of CPUs         -> Int -- ^ Verbosity level         -> [String] -- ^ A list of targets         -> ShakeOptions-options rba lint tim v rs = shakeOptions { shakeFiles = ".atspkg"-                                         , shakeThreads = 4-                                         , shakeLint = bool Nothing (Just LintBasic) lint-                                         , shakeVersion = showVersion atspkgVersion-                                         , shakeRebuild = rebuildTargets rba rs-                                         , shakeChange = ChangeModtimeAndDigestInput-                                         , shakeVerbosity = toVerbosity v-                                         , shakeTimings = tim-                                         }+options rba lint tim cpus v rs = shakeOptions { shakeFiles = ".atspkg"+                                              , shakeThreads = cpus+                                              , shakeLint = bool Nothing (Just LintBasic) lint+                                              , shakeVersion = showVersion atspkgVersion+                                              , shakeRebuild = rebuildTargets rba rs+                                              , shakeChange = ChangeModtimeAndDigestInput+                                              , shakeVerbosity = toVerbosity v+                                              , shakeTimings = tim+                                              }  rebuildTargets :: Bool -- ^ Force rebuild of all targets                -> [String] -- ^ Targets@@ -204,7 +206,9 @@       -> IO () mkPkg mStr rba lint tim setup rs tgt v = do     cfg <- cleanConfig mStr rs-    let opt = options rba lint tim v $ pkgToTargets cfg tgt rs+    setNumCapabilities =<< getNumProcessors+    cpus <- getNumCapabilities+    let opt = options rba lint tim cpus v $ pkgToTargets cfg tgt rs     shake opt $         mconcat             [ want (pkgToTargets cfg tgt rs)@@ -241,7 +245,7 @@     bisequence' [ mkRun, mkTest, mkValgrind ] mStr rs  pkgToTargets :: Pkg -> Maybe String -> [FilePath] -> [FilePath]-pkgToTargets ~Pkg{..} tgt [] = (toTgt tgt . target <$> bin) <> (unpack . libTarget <$> libraries)+pkgToTargets ~Pkg{..} tgt [] = (toTgt tgt . target <$> bin) <> (unpack . libTarget <$> libraries) <> (unpack . cTarget <$> atsSource) pkgToTargets _  _ ts         = ts  noConstr :: ATSConstraint@@ -263,7 +267,7 @@  -- | The directory @~/.atspkg@ pkgHome :: MonadIO m => CCompiler -> m String-pkgHome cc' = liftIO $ (</> (".atspkg" </> ccToDir cc')) <$> getEnv "HOME"+pkgHome cc' = liftIO $ getAppUserDataDirectory ("atspkg" </> ccToDir cc')  -- | The directory that will be @PATSHOME@. patsHomeAtsPkg :: MonadIO m => Version -> m String@@ -301,8 +305,6 @@          mkUserConfig -        want (unpack . cTarget <$> as)-         newFlag <- shouldWrite tgt flags          -- this is dumb but w/e@@ -315,7 +317,7 @@          -- TODO depend on tgt somehow?         specialDeps %> \out -> do-            (_, cfgBin') <- cfgBin+            cfgBin' <- cfgBin             need [ cfgBin', flags, cfgFile]             v'' <- getVerbosity             liftIO $ fetchDeps v'' (ccFromString cc') mStr setup (first unpack <$> ds) (first unpack <$> cdps) (first unpack <$> bdeps) cfgBin' atslibSetup False *> writeFile out ""
src/Language/ATS/Package/Build/C.hs view
@@ -5,10 +5,11 @@  import           Development.Shake.ATS import           Development.Shake.C+import           GHC.Conc import           Quaalude  cpkgHome :: CCompiler -> IO FilePath-cpkgHome cc' = (</> (".atspkg" </> ccToDir cc')) <$> getEnv "HOME"+cpkgHome cc' = getAppUserDataDirectory ("atspkg" </> ccToDir cc')  allSubdirs :: FilePath -> IO [FilePath] allSubdirs [] = pure mempty@@ -70,7 +71,8 @@ make v lib' p = do     putStrLn ("building " ++ lib' ++ "...")     p' <- findMakefile p-    silentCreateProcess v ((proc makeExe ["-j4"]) { cwd = Just p' })+    cpus <- getNumCapabilities+    silentCreateProcess v ((proc makeExe ["-j" ++ show cpus]) { cwd = Just p' })  install :: Verbosity -> String -> FilePath -> IO () install v lib' p = do
src/Language/ATS/Package/Compiler.hs view
@@ -21,7 +21,6 @@ import           Network.HTTP.Client     hiding (decompress) import           Network.HTTP.Client.TLS (tlsManagerSettings) import           Quaalude-import           System.Environment      (getEnv) import           System.FilePath.Find    (find)  libatsCfg :: String@@ -29,7 +28,7 @@  compilerDir :: Version -> IO FilePath compilerDir v = makeAbsolute =<< dir-    where dir = (</> (".atspkg" </> show v)) <$> getEnv "HOME"+    where dir = getAppUserDataDirectory ("atspkg" </> show v)  -- | Make a tarball from a directory containing the compiler. packageCompiler :: FilePath -> IO ()@@ -110,7 +109,7 @@  cleanAll :: IO () cleanAll = do-    d <- (</> ".atspkg") <$> getEnv "HOME"+    d <- getAppUserDataDirectory "atspkg"     b <- doesDirectoryExist d     when b $ do         putStrLn "Cleaning everything..."
src/Language/ATS/Package/Config.hs view
@@ -21,44 +21,43 @@ cfgFile :: String cfgFile = $(embedStringFile ("dhall" </> "config.dhall")) -defaultFileConfig :: FilePath -> IO ()-defaultFileConfig p = do-    let dir = p </> ".config" </> "atspkg"+defaultFileConfig :: IO ()+defaultFileConfig = do+    dir <- getXdgDirectory XdgConfig "atspkg"     createDirectoryIfMissing True dir     writeFile (dir </> "config.dhall") cfgFile -cfgBin :: (MonadIO m) => m (FilePath, FilePath)-cfgBin = liftIO io-    where io = (id &&& (</> (".atspkg" </> "config"))) <$> getEnv "HOME"+cfgBin :: (MonadIO m) => m FilePath+cfgBin = liftIO $ getAppUserDataDirectory ("atspkg" </> "config")  mkUserConfig :: Rules () mkUserConfig = do -    (h, cfgBin') <- cfgBin+    cfgBin' <- cfgBin      join (unless         <$> liftIO (doesFileExist cfgBin')-        <*> pure (g h cfgBin'))+        <*> pure (g cfgBin')) -    where g h cfgBin' = do+    where g cfgBin' = do -            let cfg = h </> ".config" </> "atspkg" </> "config.dhall"+            cfg <- liftIO (getXdgDirectory XdgConfig ("atspkg" </> "config.dhall"))              want [cfgBin'] -            readUserConfig h cfg+            readUserConfig cfg              cfgBin' %> \_ -> do                 need [cfg]                 cfgContents <- liftIO $ input auto (T.pack cfg)                 liftIO $ BSL.writeFile cfgBin' (encode (cfgContents :: UserConfig)) -readUserConfig :: FilePath -> FilePath -> Rules ()-readUserConfig h cfg = do+readUserConfig :: FilePath -> Rules ()+readUserConfig cfg = do      want [cfg]      e <- liftIO $ doesFileExist cfg      cfg %> \_ -> unless e $-        liftIO (defaultFileConfig h)+        liftIO defaultFileConfig
src/Language/ATS/Package/Debian.hs view
@@ -11,7 +11,6 @@                                    ) where  import           Data.Dependency            (Version (..))-import           Data.Hashable              (Hashable) import           Data.List                  (intercalate) import           Development.Shake          hiding ((*>)) import           Development.Shake.FilePath@@ -27,10 +26,9 @@                      , binaries    :: [Text]                      , libraries   :: [Text]                      }-                     deriving (Generic, Hashable, Binary, Interpret)+                     deriving (Generic, Binary, Interpret)  deriving newtype instance Interpret Version-deriving newtype instance Hashable Version  control :: Debian -> String control Debian{..} = intercalate "\n"
− src/Language/ATS/Package/Generic.hs
@@ -1,50 +0,0 @@-{-# LANGUAGE GADTs                      #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}---- | Module containing types and functions for generic package installs.-module Language.ATS.Package.Generic ( GenericPackage (..)-                                    , InstallDirs (..)-                                    , Package (..)-                                    , CacheValid-                                    -- * Functions-                                    , atsInstallDirs-                                    ) where--import           Control.Monad.Reader (ReaderT)-import           Data.Hashable        (Hashable (..))-import           Quaalude---- | Compares cached value to new value, returning 'True' if valid.-type CacheValid a = a -> a -> Bool---- | Functions containing installation information about a particular type.-data InstallDirs a = InstallDirs { binDir      :: a -> FilePath-                                 , libDir      :: a -> String -> FilePath-                                 , includeDir  :: a -> String -> FilePath-                                 , includeDeps :: a -> [FilePath]-                                 , libDeps     :: a -> [FilePath]-                                 }---- | The default set of install directories for an ATS package.-atsInstallDirs :: Hashable a => IO (InstallDirs a)-atsInstallDirs = do-    h <- getEnv "HOME"-    let binDir' = h ++ "/.local/bin"-        includeDir' = h ++ "/.atspkg/include"-        libDeps' = ["/.atspkg/lib"]-        includeDeps' = ["/.atspkg/include"]-    pure $ InstallDirs (pure binDir') (\pkg n -> "/.atspkg/lib/" ++ n ++ "/" ++ hex (hash pkg)) (\_ _ -> includeDir') (pure includeDeps') (pure libDeps')---- | The package monad provides information about the package to be installed,--- in particular, the directory for installation and the directories for--- dependencies.-newtype Package a b = Package { unPack :: ReaderT (InstallDirs a) IO b }-    deriving (Functor, Applicative, Monad)---- | Any type implementing 'GenericPackage' can be depended on by other--- packages.-class Hashable a => GenericPackage a where--    binRules :: a -> Package a ()-    libRules :: a -> Package a ()-    includeRules :: a -> Package a ()
src/Language/ATS/Package/Type.hs view
@@ -25,7 +25,6 @@                                  ) where  import           Data.Dependency-import           Data.Hashable               (Hashable) import           Development.Shake.ATS import           Language.ATS.Package.Debian import           Quaalude@@ -33,7 +32,7 @@ data ATSConstraint = ATSConstraint { lower :: Maybe Version                                    , upper :: Maybe Version                                    }-                deriving (Eq, Show, Generic, Binary, Interpret, Hashable)+                deriving (Eq, Show, Generic, Binary, Interpret)  deriving newtype instance Inject Version @@ -54,7 +53,7 @@                                    , libCDeps    :: [LibDep] -- ^ C dependencies to be built                                    , script      :: [Text] -- ^ Optional build script for C library                                    }-                   deriving (Generic, Interpret, Binary, Hashable)+                   deriving (Generic, Interpret, Binary)  dirLens :: Lens' ATSDependency Text dirLens f s = fmap (\x -> s { dir = x }) (f (dir s))@@ -63,11 +62,10 @@ data TargetPair = TargetPair { hs    :: Text                              , ats   :: Text                              , cpphs :: Bool-                             } deriving (Generic, Interpret, Binary, Hashable)+                             } deriving (Generic, Interpret, Binary)  deriving instance Interpret ForeignCabal -deriving instance Hashable Solver deriving instance Interpret Solver  data Src = Src { atsSrc  :: Text@@ -75,7 +73,7 @@                , atsGen  :: [TargetPair]                , extras  :: [Text]                }-         deriving (Generic, Interpret, Binary, Hashable)+         deriving (Generic, Interpret, Binary)  data Bin = Bin { src    :: Text -- ^ Source file (should end with @.dats@)                , target :: Text -- ^ Binary to be built@@ -85,7 +83,7 @@                , gcBin  :: Bool -- ^ Whether to use the garbage collector                , extras :: [Text] -- ^ Extra source files the build depends on                }-         deriving (Generic, Interpret, Binary, Hashable)+         deriving (Generic, Interpret, Binary)  data Lib = Lib { name      :: Text -- ^ Name of library being provided                , src       :: [Text] -- ^ Source files (should end with @.dats@) to be compiled to object files@@ -98,7 +96,7 @@                , extras    :: [Text] -- ^ Other source files the build depends on                , static    :: Bool -- ^ Whether to make a static library                }-         deriving (Generic, Interpret, Binary, Hashable)+         deriving (Generic, Interpret, Binary)  -- | Data type associated with @atspkg.dhall@ file. data Pkg = Pkg { bin          :: [Bin] -- ^ List of binaries to be built@@ -120,4 +118,4 @@                , debPkg       :: Maybe Debian -- ^ Optional specificiation as a debian package.                , atsLib       :: Bool -- ^ Whether to link/build @atslib@.                }-         deriving (Generic, Interpret, Binary, Hashable)+         deriving (Generic, Interpret, Binary)