ats-pkg 1.2.0.7 → 1.2.0.8
raw patch · 6 files changed
+43/−18 lines, 6 filesdep +shake-atsdep ~composition-preludedep ~shake-extPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: shake-ats
Dependency ranges changed: composition-prelude, shake-ext
API changes (from Hackage documentation)
- Language.ATS.Package.Dependency: [dir] :: Dependency -> Text
+ Language.ATS.Package.Dependency: [_dir] :: Dependency -> Text
+ Language.ATS.Package.Type: [clib] :: Pkg -> [Dependency]
- Language.ATS.Package.Dependency: fetchDeps :: Bool -> [Dependency] -> IO ()
+ Language.ATS.Package.Dependency: fetchDeps :: Bool -> [Dependency] -> [Dependency] -> IO ()
- Language.ATS.Package.Type: Pkg :: [Bin] -> [Bin] -> Maybe Text -> [Integer] -> [Integer] -> [Dependency] -> Pkg
+ Language.ATS.Package.Type: Pkg :: [Bin] -> [Bin] -> Maybe Text -> [Integer] -> [Integer] -> [Dependency] -> [Dependency] -> Pkg
Files
- ats-pkg.cabal +3/−3
- cabal.project.local +0/−6
- src/Language/ATS/Package/Dependency.hs +33/−4
- src/Language/ATS/Package/Exec.hs +1/−1
- src/Language/ATS/Package/Type.hs +3/−2
- stack.yaml +3/−2
ats-pkg.cabal view
@@ -1,5 +1,5 @@ name: ats-pkg-version: 1.2.0.7+version: 1.2.0.8 synopsis: Package manager for ATS description: A collection of scripts to make building ATS projects easy. homepage: https://github.com/vmchale/ats-pkg#readme@@ -12,7 +12,6 @@ build-type: Simple extra-doc-files: README.md extra-source-files: stack.yaml- , cabal.project.local cabal-version: 1.18 Flag development {@@ -43,7 +42,8 @@ , unix , lens , dhall- , shake-ext >= 1.2.0.3+ , shake-ats+ , shake-ext , composition-prelude >= 1.1.0.2 , optparse-applicative , temporary
− cabal.project.local
@@ -1,6 +0,0 @@-constraints: ats-pkg +development-with-compiler: ghc-8.2.2--- tests: True-documentation: True-haddock-hoogle: True-haddock-internal: True
src/Language/ATS/Package/Dependency.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-} module Language.ATS.Package.Dependency ( -- * Functions fetchDeps@@ -13,25 +14,53 @@ import Control.Concurrent.ParallelIO.Global import Control.Lens import Control.Monad+import Data.Semigroup (Semigroup (..)) import qualified Data.Text.Lazy as TL import Dhall import Network.HTTP.Client hiding (decompress) import Network.HTTP.Client.TLS (tlsManagerSettings) import System.Directory+import System.Environment (getEnv)+import System.Posix.Files+import System.Process -- | Type for a dependency data Dependency = Dependency { libName :: Text -- ^ Library name, e.g.- , dir :: Text -- ^ Directory we should unpack to+ , _dir :: Text -- ^ Directory we should unpack to , url :: Text -- ^ Url pointing to tarball } deriving (Eq, Show, Generic, Interpret) -fetchDeps :: Bool -> [Dependency] -> IO ()-fetchDeps b deps =+makeLenses ''Dependency++fetchDeps :: Bool -- ^ Set to 'False' if unsure.+ -> [Dependency] -- ^ ATS dependencies+ -> [Dependency] -- ^ C Dependencies+ -> IO ()+fetchDeps b deps cdeps = unless (null deps) $ do putStrLn "Checking ATS dependencies..."+ d <- pkgHome let libs = fmap (buildHelper b) deps- parallel_ libs >> stopGlobalPool+ unpacked = fmap (over dir (TL.pack d <>)) cdeps+ clibs = fmap (buildHelper b) unpacked+ parallel_ (libs ++ clibs) >> stopGlobalPool+ mapM_ setup unpacked++pkgHome :: IO FilePath+pkgHome = (++ "/.atspkg/lib/") <$> getEnv "HOME"++clibSetup :: FilePath -> IO ()+clibSetup p = do+ let configurePath = p ++ "/configure"+ setFileMode configurePath ownerModes+ void $ readCreateProcess ((proc p ["--prefix", p]) { cwd = Just p }) ""+ void $ readCreateProcess ((proc "make" []) { cwd = Just p}) ""+ void $ readCreateProcess ((proc "make" ["install"]) { cwd = Just p }) ""++setup :: Dependency -> IO ()+setup (Dependency _ dirName' _) =+ clibSetup (TL.unpack dirName') buildHelper :: Bool -> Dependency -> IO () buildHelper b (Dependency lib' dirName' url'') = do
src/Language/ATS/Package/Exec.hs view
@@ -67,7 +67,7 @@ fetchPkg :: String -> IO () fetchPkg pkg = withSystemTempDirectory "atspkg" $ \p -> do let (lib, dirName, url') = ("atspkg", p, pkg) & each %~ TL.pack- fetchDeps True [Dependency lib dirName url']+ fetchDeps True [Dependency lib dirName url'] [] ps <- fmap ((p ++ "/") ++) <$> listDirectory p pkgDir <- fromMaybe p <$> findFile (p:ps) "atspkg.dhall" let a = withCurrentDirectory (takeDirectory pkgDir) (mkPkg ["install"])
src/Language/ATS/Package/Type.hs view
@@ -92,9 +92,9 @@ mapM_ cmd_ tests pkgToAction :: [String] -> Pkg -> Rules ()-pkgToAction rs (Pkg bs ts mt v v' ds) = do+pkgToAction rs (Pkg bs ts mt v v' ds cds) = do unless (rs == ["clean"]) $- liftIO $ fetchDeps False ds+ liftIO $ fetchDeps False ds cds action (need ["atspkg.dhall"]) mapM_ g (bs ++ ts) let bins = TL.unpack . target <$> bs@@ -120,5 +120,6 @@ , version :: [Integer] -- ^ Library version , compiler :: [Integer] -- ^ Compiler version , dependencies :: [Dependency] -- ^ List of dependencies+ , clib :: [Dependency] -- ^ List of C dependencies } deriving (Show, Eq, Generic, Interpret)
stack.yaml view
@@ -3,9 +3,10 @@ packages: - '.' extra-deps:- - shake-ext-1.2.0.3+ - shake-ext-1.4.0.0+ - shake-ats-0.1.0.0 - composition-prelude-1.1.0.2- - language-ats-0.1.0.6+ - language-ats-0.1.1.3 flags: ats-pkg: development: false