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 +12/−0
- app/Main.hs +1/−1
- ats-pkg.cabal +6/−8
- man/atspkg.1 +1/−1
- src/Language/ATS/Package.hs +0/−9
- src/Language/ATS/Package/Build.hs +23/−21
- src/Language/ATS/Package/Build/C.hs +4/−2
- src/Language/ATS/Package/Compiler.hs +2/−3
- src/Language/ATS/Package/Config.hs +13/−14
- src/Language/ATS/Package/Debian.hs +1/−3
- src/Language/ATS/Package/Generic.hs +0/−50
- src/Language/ATS/Package/Type.hs +7/−9
+ 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)