ats-pkg 2.3.0.0 → 2.3.0.3
raw patch · 9 files changed
+50/−30 lines, 9 files
Files
- ats-pkg.cabal +2/−1
- config.dhall +1/−0
- man/atspkg.1 +5/−0
- src/Language/ATS/Package/Build.hs +7/−5
- src/Language/ATS/Package/Dependency.hs +2/−2
- src/Language/ATS/Package/Error.hs +5/−4
- src/Language/ATS/Package/Exec.hs +15/−9
- src/Language/ATS/Package/PackageSet.hs +12/−8
- stack.yaml +1/−1
ats-pkg.cabal view
@@ -1,5 +1,5 @@ name: ats-pkg-version: 2.3.0.0+version: 2.3.0.3 synopsis: A build tool for ATS description: A collection of scripts to simplify building ATS projects. homepage: https://github.com/vmchale/atspkg#readme@@ -56,6 +56,7 @@ , unix , lens , dhall+ , ansi-wl-pprint , shake-ats >= 1.3.0.0 , shake-ext >= 2.3.0.0 , composition-prelude >= 1.1.0.2
config.dhall view
@@ -1,5 +1,6 @@ let cfg = { defaultPkgs = "https://raw.githubusercontent.com/vmchale/atspkg/master/pkgs/pkg-set.dhall"+ , solverIters = 15 } in cfg
man/atspkg.1 view
@@ -61,6 +61,11 @@ Rebuild all binary targets. .RS .RE+.TP+.B \f[B]\-l\f[], \f[B]\-\-no\-lint\f[]+Disable the shake linter+.RS+.RE .SH CONFIGURATION .PP \f[B]atspkg\f[] is configured with Dhall, in an atspkg.dhall file.
src/Language/ATS/Package/Build.hs view
@@ -53,7 +53,7 @@ build :: [String] -- ^ Targets -> IO () build rs = bool (mkPkgEmpty [buildAll Nothing]) (mkPkgEmpty mempty) =<< check Nothing- where mkPkgEmpty ts = mkPkg False False ts rs Nothing 1+ where mkPkgEmpty ts = mkPkg False False True ts rs Nothing 1 -- TODO clean generated ATS mkClean :: Rules ()@@ -124,11 +124,12 @@ options :: Bool -- ^ Whether to rebuild config -> Bool -- ^ Whether to rebuild all targets+ -> Bool -- ^ Whether to run the linter -> [String] -- ^ A list of targets -> ShakeOptions-options rb rba rs = shakeOptions { shakeFiles = ".atspkg"+options rb rba lint rs = shakeOptions { shakeFiles = ".atspkg" , shakeThreads = 4- , shakeLint = Just LintBasic+ , shakeLint = bool Nothing (Just LintBasic) lint , shakeVersion = showVersion version , shakeRebuild = foldMap g [ (rb, [(RebuildNow, ".atspkg/config")]) , (rba, (RebuildNow ,) <$> rs)@@ -142,14 +143,15 @@ mkPkg :: Bool -- ^ Whether to ignore cached package config -> Bool -- ^ Rebuild all targets+ -> Bool -- ^ Run linter -> [IO ()] -- ^ Setup -> [String] -- ^ Targets -> Maybe String -- ^ Target triple -> Int -- ^ Verbosity -> IO ()-mkPkg rb rba setup rs tgt _ = do+mkPkg rb rba lint setup rs tgt _ = do cfg <- cleanConfig rs- let opt = options rb rba $ pkgToTargets cfg rs+ let opt = options rb rba lint $ pkgToTargets cfg rs shake opt $ mconcat [ want rs
src/Language/ATS/Package/Dependency.hs view
@@ -34,11 +34,11 @@ -> IO () fetchDeps setup' deps cdeps b' = unless (null deps && null cdeps && b') $ do- deps' <- join <$> setBuildPlan "ats" deps+ deps' <- join <$> setBuildPlan "ats" deps 15 putStrLn "Checking ATS dependencies..." d <- (<> "lib/") <$> pkgHome let libs' = fmap (buildHelper False) deps'- cdeps' <- join <$> setBuildPlan "c" cdeps+ cdeps' <- join <$> setBuildPlan "c" cdeps 4 let unpacked = fmap (over dirLens (TL.pack d <>)) cdeps' clibs = fmap (buildHelper False) unpacked parallel_ (setup' ++ libs' ++ clibs)
src/Language/ATS/Package/Error.hs view
@@ -5,6 +5,7 @@ , resolutionFailed ) where +import Data.Dependency import System.Exit import Text.PrettyPrint.ANSI.Leijen @@ -13,18 +14,18 @@ unrecognized :: String -> IO a unrecognized = printErr . Unrecognized -resolutionFailed :: IO a-resolutionFailed = printErr ResolutionFailed+resolutionFailed :: ResolveError -> IO a+resolutionFailed = printErr . DepErr data PackageError = Unrecognized String- | ResolutionFailed+ | DepErr ResolveError (<#>) :: Doc -> Doc -> Doc (<#>) a b = a <> line <> b instance Pretty PackageError where pretty (Unrecognized t) = red "Error:" <+> "Unrecognized archive format when unpacking" <#> hang 2 (text t)- pretty ResolutionFailed = red "Error:" <+> "Package resolution failed.\n"+ pretty (DepErr d) = pretty d -- TODO monaderror? printErr :: PackageError -> IO a
src/Language/ATS/Package/Exec.hs view
@@ -33,6 +33,7 @@ , _archTarget :: Maybe String , _rebuildAll :: Bool , _verbosity :: Int+ , _lint :: Bool } | Clean | Test { _targets :: [String] }@@ -87,7 +88,12 @@ <> short 'r' <> help "Force rebuild of all targets") <*> (length <$>- many (flag' () (short 't' <> long "verbose")))+ many (flag' () (short 't' <> long "verbose" <> help "Turn up verbosity")))+ <*> fmap not+ (switch+ (long "no-lint"+ <> short 'l'+ <> help "Disable the shake linter")) fetch :: Parser Command fetch = Fetch <$>@@ -101,25 +107,25 @@ buildHelper True (ATSDependency lib dirName url' undefined mempty) ps <- getSubdirs p pkgDir <- fromMaybe p <$> findFile (p:ps) "atspkg.dhall"- let a = withCurrentDirectory (takeDirectory pkgDir) (mkPkg False False mempty ["install"] Nothing 0)+ let a = withCurrentDirectory (takeDirectory pkgDir) (mkPkg False False False mempty ["install"] Nothing 0) bool (buildAll (Just pkgDir) >> a) a =<< check (Just pkgDir) exec :: IO () exec = execParser wrapper >>= run -runHelper :: Bool -> Bool -> [String] -> Maybe String -> Int -> IO ()-runHelper rb rba rs tgt v = bool- (mkPkg rb rba [buildAll Nothing] rs tgt v)- (mkPkg rb rba mempty rs tgt v)+runHelper :: Bool -> Bool -> Bool -> [String] -> Maybe String -> Int -> IO ()+runHelper rb rba lint rs tgt v = bool+ (mkPkg rb rba lint [buildAll Nothing] rs tgt v)+ (mkPkg rb rba lint mempty rs tgt v) =<< check Nothing run :: Command -> IO () run Upgrade = upgradeAtsPkg run Nuke = cleanAll run (Fetch u) = fetchPkg u-run Clean = mkPkg False False mempty ["clean"] Nothing 0-run (Build rs rb tgt rba v) = runHelper rb rba rs tgt v-run c = runHelper False False rs Nothing 0+run Clean = mkPkg False False False mempty ["clean"] Nothing 0+run (Build rs rb tgt rba v lint) = runHelper rb rba lint rs tgt v+run c = runHelper False False False rs Nothing 0 where rs = g c g Install = ["install"] g (Test ts) = "test" : ts
src/Language/ATS/Package/PackageSet.hs view
@@ -28,8 +28,9 @@ setBuildPlan :: FilePath -- ^ Filepath for cache inside @.atspkg@ -> [String] -- ^ Libraries we want+ -> Int -- ^ Depth of search when resolving dependencies -> IO [[ATSDependency]]-setBuildPlan p deps = do+setBuildPlan p deps n = do b <- doesFileExist depCache bool setBuildPlan' (decode <$> BSL.readFile depCache) b @@ -37,16 +38,19 @@ setBuildPlan' = do putStrLn "Resolving dependencies..." pkgSet <- input auto "https://raw.githubusercontent.com/vmchale/atspkg/master/pkgs/pkg-set.dhall"- case mkBuildPlan pkgSet deps of- Just x -> createDirectoryIfMissing True ".atspkg" >> BSL.writeFile depCache (encode x) >> pure x- Nothing -> resolutionFailed+ case mkBuildPlan pkgSet n deps of+ Right x -> createDirectoryIfMissing True ".atspkg" >> BSL.writeFile depCache (encode x) >> pure x+ Left x -> resolutionFailed x -mkBuildPlan :: ATSPackageSet -> [String] -> Maybe [[ATSDependency]]-mkBuildPlan aps@(ATSPackageSet ps) = finalize . resolve . fmap asDep <=< stringBuildPlan+mkBuildPlan :: ATSPackageSet -> Int -> [String] -> DepM [[ATSDependency]]+mkBuildPlan aps@(ATSPackageSet ps) n = finalize . resolve . fmap asDep <=< stringBuildPlan where finalize = fmap (fmap (fmap (lookupVersions aps)))- resolve = resolveDependencies (atsPkgsToPkgs aps)- stringBuildPlan names = sequence [ lookup x libs | x <- names ]+ resolve = resolveDependencies n (atsPkgsToPkgs aps)+ stringBuildPlan names = sequence [ lookup' x libs | x <- names ] where libs = (TL.unpack . libName &&& id) <$> ps+ lookup' k vs = case lookup k vs of+ Just x -> Right x+ Nothing -> Left (NotPresent k) asDep :: ATSDependency -> Dependency asDep ATSDependency{..} = Dependency (TL.unpack libName) mempty (TL.unpack <$> libDeps) libVersion
stack.yaml view
@@ -2,6 +2,7 @@ resolver: lts-10.4 packages: - '.'+ - 'dependency' extra-deps: - shake-ext-2.3.0.0 - shake-ats-1.3.0.6@@ -9,7 +10,6 @@ - language-ats-0.2.0.0 - cli-setup-0.2.0.1 - hs2ats-0.2.1.3- - dependency-0.1.0.3 - ats-setup-0.3.0.2 flags: ats-pkg: