ats-pkg 1.1.0.0 → 1.1.0.1
raw patch · 5 files changed
+28/−48 lines, 5 filesdep +lensPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: lens
API changes (from Hackage documentation)
- Language.ATS.Package.Contents: PackageContents :: [FilePath] -> [FilePath] -> [(FilePath, FilePath)] -> [(FilePath, FilePath)] -> PackageContents
- Language.ATS.Package.Contents: [_binTargets] :: PackageContents -> [(FilePath, FilePath)]
- Language.ATS.Package.Contents: [_files] :: PackageContents -> [FilePath]
- Language.ATS.Package.Contents: [_libTargets] :: PackageContents -> [(FilePath, FilePath)]
- Language.ATS.Package.Contents: [_srcDirs] :: PackageContents -> [FilePath]
- Language.ATS.Package.Contents: data PackageContents
- Language.ATS.Package.Contents: instance GHC.Classes.Eq Language.ATS.Package.Contents.PackageContents
- Language.ATS.Package.Contents: instance GHC.Show.Show Language.ATS.Package.Contents.PackageContents
- Language.ATS.Package.Contents: parsePackageContents :: IO PackageContents
- Language.ATS.Package.Dependency: [_dir] :: Dependency -> FilePath
- Language.ATS.Package.Dependency: [_libName] :: Dependency -> String
- Language.ATS.Package.Dependency: [_url] :: Dependency -> String
- Language.ATS.Package.Dependency: atsGMP :: Dependency
- Language.ATS.Package.Dependency: atsIntinf :: Dependency
- Language.ATS.Package.Dependency: atsPrelude :: Dependency
+ Language.ATS.Package.Dependency: [dir] :: Dependency -> Text
+ Language.ATS.Package.Dependency: [libName] :: Dependency -> Text
+ Language.ATS.Package.Dependency: [url] :: Dependency -> Text
+ Language.ATS.Package.Dependency: instance Dhall.Interpret Language.ATS.Package.Dependency.Dependency
+ Language.ATS.Package.Type: [dependencies] :: Pkg -> [Dependency]
- Language.ATS.Package.Dependency: Dependency :: String -> FilePath -> String -> Dependency
+ Language.ATS.Package.Dependency: Dependency :: Text -> Text -> Text -> Dependency
- Language.ATS.Package.Type: Pkg :: [Bin] -> [Bin] -> Maybe Text -> [Integer] -> Pkg
+ Language.ATS.Package.Type: Pkg :: [Bin] -> [Bin] -> Maybe Text -> [Integer] -> [Dependency] -> Pkg
Files
- ats-pkg.cabal +2/−2
- src/Language/ATS/Package.hs +4/−5
- src/Language/ATS/Package/Contents.hs +0/−12
- src/Language/ATS/Package/Dependency.hs +15/−21
- src/Language/ATS/Package/Type.hs +7/−8
ats-pkg.cabal view
@@ -1,5 +1,5 @@ name: ats-pkg-version: 1.1.0.0+version: 1.1.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@@ -26,7 +26,6 @@ hs-source-dirs: src exposed-modules: Language.ATS.Package , Language.ATS.Package.Exec- , Language.ATS.Package.Contents , Language.ATS.Package.Type , Language.ATS.Package.Dependency build-depends: base >= 4.7 && < 5@@ -42,6 +41,7 @@ , process , parallel-io , unix+ , lens , dhall , shake-ext >= 1.1.0.0 , composition-prelude >= 1.1.0.1
src/Language/ATS/Package.hs view
@@ -44,9 +44,7 @@ BS.writeFile (directory ++ ".tar.gz") (compress bytes) pkgUrl :: Version -> String-pkgUrl v = "https://github.com/vmchale/fastcat/releases/download/0.1.5/ATS2-Postiats-" ++ show v ++ ".tar.gz"---- "https://downloads.sourceforge.net/project/ats2-lang/ats2-lang/ats2-postiats-" ++ show v ++ "/ATS2-Postiats-" ++ show v ++ ".tgz"+pkgUrl v = "https://github.com/vmchale/atspkg/raw/master/pkgs/ATS2-Postiats-" ++ show v ++ ".tar.gz" fetchCompiler :: Version -> IO () fetchCompiler v = do@@ -67,7 +65,7 @@ setupCompiler :: Version -> IO () setupCompiler v = do - putStrLn "configuring compiler..."+ putStrLn "Configuring compiler..." cd <- compilerDir v let configurePath = cd ++ "/configure" setFileMode configurePath ownerModes@@ -75,6 +73,7 @@ void $ readCreateProcess ((proc (cd ++ "/autogen.sh") []) { cwd = Just cd }) "" void $ readCreateProcess ((proc configurePath ["--prefix", cd]) { cwd = Just cd }) "" - putStrLn "building compiler..."+ putStrLn "Building compiler..." void $ readCreateProcess ((proc "make" []) { cwd = Just cd, std_err = CreatePipe }) ""+ putStrLn "Installing compiler..." void $ readCreateProcess ((proc "make" ["install"]) { cwd = Just cd, std_err = CreatePipe }) ""
− src/Language/ATS/Package/Contents.hs
@@ -1,12 +0,0 @@-module Language.ATS.Package.Contents ( parsePackageContents- , PackageContents (..)- ) where--data PackageContents = PackageContents { _srcDirs :: [FilePath]- , _files :: [FilePath]- , _binTargets :: [(FilePath, FilePath)]- , _libTargets :: [(FilePath, FilePath)] -- for foreign libraries (builds a c dependency)- } deriving (Show, Eq)--parsePackageContents :: IO PackageContents-parsePackageContents = pure $ PackageContents mempty mempty mempty mempty
src/Language/ATS/Package/Dependency.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} @@ -5,36 +6,27 @@ fetchDeps -- * Types , Dependency (..)- -- * Dependency constants- , atsPrelude- , atsIntinf- , atsGMP ) where import qualified Codec.Archive.Tar as Tar import Codec.Compression.GZip (decompress) import Control.Concurrent.ParallelIO.Global+import Control.Lens import Control.Monad+import qualified Data.Text.Lazy as TL import Dhall import Network.HTTP.Client hiding (decompress) import Network.HTTP.Client.TLS (tlsManagerSettings) import System.Directory -- | Type for a dependency-data Dependency = Dependency { _libName :: String -- ^ Library name, e.g.- , _dir :: FilePath -- ^ Directory we should unpack to- , _url :: String -- ^ Url pointing to tarball+data Dependency = Dependency { libName :: Text -- ^ Library name, e.g.+ , dir :: Text -- ^ Directory we should unpack to+ , url :: Text -- ^ Url pointing to tarball }- deriving (Eq, Show, Generic)--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"+ deriving (Eq, Show, Generic, Interpret) -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"+-- https://github.com/vmchale/polyglot/archive/0.3.27.tar.gz fetchDeps :: [Dependency] -> IO () fetchDeps deps = do@@ -46,21 +38,23 @@ parallel_ libs >> stopGlobalPool buildHelper :: Dependency -> IO ()-buildHelper (Dependency libName dirName url) = do+buildHelper (Dependency lib' dirName' url'') = do + let (lib, dirName, url') = (lib', dirName', url'') & each %~ TL.unpack+ needsSetup <- not <$> doesDirectoryExist dirName when needsSetup $ do - putStrLn ("Fetching library " ++ libName ++ "...")+ putStrLn ("Fetching library " ++ lib ++ "...") manager <- newManager tlsManagerSettings- initialRequest <- parseRequest url+ initialRequest <- parseRequest url' response <- responseBody <$> httpLbs (initialRequest { method = "GET" }) manager - putStrLn ("Unpacking library " ++ libName ++ "...")+ putStrLn ("Unpacking library " ++ lib ++ "...") Tar.unpack dirName . Tar.read . decompress $ response - putStrLn ("Setting up library " ++ libName ++ "...")+ putStrLn ("Setting up library " ++ lib ++ "...") needsMove <- doesDirectoryExist (dirName ++ "/package") when needsMove $ do renameDirectory (dirName ++ "/package") "tempdir"
src/Language/ATS/Package/Type.hs view
@@ -11,15 +11,16 @@ ) where import Control.Composition-import Control.Monad.IO.Class (MonadIO)-import Data.Maybe (fromMaybe)-import Data.Semigroup (Semigroup (..))-import qualified Data.Text.Lazy as TL+import Control.Monad.IO.Class (MonadIO)+import Data.Maybe (fromMaybe)+import Data.Semigroup (Semigroup (..))+import qualified Data.Text.Lazy as TL import Development.Shake import Development.Shake.ATS import Development.Shake.FilePath import Development.Shake.Man import Dhall+import Language.ATS.Package.Dependency options :: ShakeOptions options = shakeOptions { shakeFiles = ".atspkg"@@ -81,7 +82,7 @@ mapM_ cmd_ tests pkgToAction :: Pkg -> Rules ()-pkgToAction (Pkg bs ts mt v) = do+pkgToAction (Pkg bs ts mt v _) = do action (need ["atspkg.dhall"]) mapM_ g (bs ++ ts) let bins = TL.unpack . target <$> bs@@ -91,12 +92,10 @@ where g (Bin s t ls gc') = atsBin (Version v) gc' (TL.unpack <$> ls) (TL.unpack s) (TL.unpack t) --- TODO configuration for a library?- 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, version :: [Integer] }+data Pkg = Pkg { bin :: [Bin], test :: [Bin], man :: Maybe Text, version :: [Integer], dependencies :: [Dependency] } deriving (Show, Eq, Generic, Interpret) printConfig :: IO ()