packages feed

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 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 }