ats-pkg 0.2.0.0 → 0.2.0.1
raw patch · 3 files changed
+64/−4 lines, 3 filesdep +parallel-iodep ~shake-extPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: parallel-io
Dependency ranges changed: shake-ext
API changes (from Hackage documentation)
+ Language.ATS.Package.Dependency: fetchDeps :: [Dependency] -> IO ()
+ Language.ATS.Package.Dependency: fetchFastArithmeticDeps :: IO ()
+ Language.ATS.Package.Type: [gc] :: Bin -> Bool
- Language.ATS.Package.Type: Bin :: Text -> Text -> [Text] -> Bin
+ Language.ATS.Package.Type: Bin :: Text -> Text -> [Text] -> Bool -> Bin
Files
- ats-pkg.cabal +4/−2
- src/Language/ATS/Package/Dependency.hs +58/−0
- src/Language/ATS/Package/Type.hs +2/−2
ats-pkg.cabal view
@@ -1,5 +1,5 @@ name: ats-pkg-version: 0.2.0.0+version: 0.2.0.1 synopsis: Package manager for ATS description: A collection of scripts to make building ATS projects easy. homepage: https://github.com/vmchale/ats-pkg#readme@@ -28,6 +28,7 @@ , Language.ATS.Package.Exec , Language.ATS.Package.Contents , Language.ATS.Package.Type+ , Language.ATS.Package.Dependency build-depends: base >= 4.7 && < 5 , http-client , filemanip@@ -40,10 +41,11 @@ , directory , optparse-applicative , process+ , parallel-io , unix , dhall , mtl- , shake-ext >= 0.4.1.0+ , shake-ext >= 0.4.2.0 , composition-prelude >= 1.1.0.1 default-language: Haskell2010 if flag(development)
+ src/Language/ATS/Package/Dependency.hs view
@@ -0,0 +1,58 @@+{-# LANGUAGE OverloadedStrings #-}++module Language.ATS.Package.Dependency ( fetchDeps+ , fetchFastArithmeticDeps+ ) where++import qualified Codec.Archive.Tar as Tar+import Codec.Compression.GZip (decompress)+import Control.Concurrent.ParallelIO.Global+import Control.Monad+import Network.HTTP.Client hiding (decompress)+import Network.HTTP.Client.TLS (tlsManagerSettings)+import System.Directory++data Dependency = Dependency String FilePath String++atsPrelude :: Dependency+atsPrelude = Dependency "ats2-postiats-0.3.8-prelude" ".atspkg/prelude" "https://downloads.sourceforge.net/project/ats2-lang/ats2-lang/ats2-postiats-0.3.8/ATS2-Postiats-include-0.3.8.tgz"++atsIntinf :: Dependency+atsIntinf = Dependency "atscntrb-hs-intinf-1.0.6" ".atspkg/contrib/atscntrb-hx-intinf" "https://registry.npmjs.org/atscntrb-hx-intinf/-/atscntrb-hx-intinf-1.0.6.tgz"++atsGMP :: Dependency+atsGMP = Dependency "atscntrb-libgmp-1.0.4" ".atspkg/contrib/atscntrb-libgmp" "https://registry.npmjs.org/atscntrb-libgmp/-/atscntrb-libgmp-1.0.4.tgz"++fetchFastArithmeticDeps :: IO ()+fetchFastArithmeticDeps = fetchDeps [atsPrelude, atsIntinf, atsGMP]++fetchDeps :: [Dependency] -> IO ()+fetchDeps deps = do++ putStrLn "Setting up ATS dependencies..."++ let libs = fmap buildHelper deps++ parallel_ libs >> stopGlobalPool++buildHelper :: Dependency -> IO ()+buildHelper (Dependency libName dirName url) = do++ needsSetup <- not <$> doesDirectoryExist dirName++ when needsSetup $ do++ putStrLn ("Fetching library " ++ libName ++ "...")+ manager <- newManager tlsManagerSettings+ initialRequest <- parseRequest url+ response <- responseBody <$> httpLbs (initialRequest { method = "GET" }) manager++ putStrLn ("Unpacking library " ++ libName ++ "...")+ Tar.unpack dirName . Tar.read . decompress $ response++ putStrLn ("Setting up library " ++ libName ++ "...")+ needsMove <- doesDirectoryExist (dirName ++ "/package")+ when needsMove $ do+ renameDirectory (dirName ++ "/package") "tempdir"+ removeDirectoryRecursive dirName+ renameDirectory "tempdir" dirName
src/Language/ATS/Package/Type.hs view
@@ -88,9 +88,9 @@ (Just m) -> want (asTarget m : bins) Nothing -> want bins - where g (Bin s t ls) = atsBin (TL.unpack <$> ls) (TL.unpack s) (TL.unpack t)+ where g (Bin s t ls gc') = atsBin gc' (TL.unpack <$> ls) (TL.unpack s) (TL.unpack t) -data Bin = Bin { src :: Text, target :: Text, libs :: [Text] }+data Bin = Bin { src :: Text, target :: Text, libs :: [Text], gc :: Bool } deriving (Show, Eq, Generic, Interpret) data Pkg = Pkg { bin :: [Bin], test :: [Bin], man :: Maybe Text }