ats-pkg: A build tool for ATS

[ ats, bsd3, development, library, program ] [ Propose Tags ]

A collection of scripts to simplify building ATS projects.

[Skip to Readme]


[Last Documentation]

  • Distribution
    • Distribution.ATS
  • Language
    • ATS
      • Language.ATS.Package


Manual Flags


Enable `-Werror`


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, (info)
Change log
Dependencies ansi-wl-pprint, archive-libarchive (>=, archive-sig (>=, ats-pkg, base (>=4.10 && <5), binary, bytestring, Cabal (>=, cli-setup, composition-prelude (>=, containers (>=0.6), dependency (>=, dhall (>=1.27.0), directory (>=, file-embed (>=0.0.9), filepath, http-client, http-client-tls, language-ats (>=, lzma, microlens, mtl, optparse-applicative, parallel-io, process, shake (>=0.18.4), shake-ats (>=, shake-c (>=, shake-ext (>=, temporary, text, unix, unix-compat, zip-archive, zlib [details]
License BSD-3-Clause
Copyright Copyright: (c) 2018-2020 Vanessa McHale
Author Vanessa McHale
Category Development, ATS
Bug tracker
Source repo head: git clone
Uploaded by vmchale at 2022-10-03T19:54:59Z
Executables atspkg
Downloads 94133 total (300 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2022-10-04 [all 2 reports]

Readme for ats-pkg-

[back to package description]


Build Status Windows build status Hackage CI Hackage Dependencies of latest version on Hackage

This is a build system for ATS written in Haskell and configured with Dhall. It is not fully working, but the configuration format is now stable.

atspkg works quite well as a build system, and acceptably well as a package manager.

Features & Non-Features

Things that atspkg will do for you:

  • Dramatically simplify CI for ATS projects
  • Simplify distribution of your project
  • Enable Haskell builds that depend on ATS code
  • Enable ATS builds that depend on Haskell code
  • Track all file dependencies
  • Make contributing to your projects easier
  • Run builds in parallel (like make)
  • Install patscc and other ATS tooling
  • Install manual pages and shell completions
  • Install ATS libraries
  • Dependency resolution

Things that atspkg will not do for you:

  • Give you the full flexibility of the C/ATS ecosystem
  • Integrate with other ecosystems
  • Provide a centralized package repository
  • Cache builds (like nix or cabal new-build)


As an example, the following will install polyglot:

atspkg remote

As you can see, this greatly simplifies distribution and testing of programs written in ATS.



The easiest way to install is via a script, viz.

curl -sSl | sh -s

Thereafter, you can run

atspkg upgrade

to upgrade to the latest release.


If that doesn't work, you can download Cabal and GHC and install with

cabal update
cabal new-install ats-pkg --symlink-bindir ~/.local/bin --happy-options='-gcsa' --alex-options='-g'

Note that $HOME/.local/bin will need to be on your PATH.

Quick Start

Install pi with

curl -LSfs | sh -s -- --git vmchale/project-init

Initialize an ATS project with

pi new ats project

Then build & run it:

cd project
atspkg run


You can find several examples with explanation here.

Global Configuration

atspkg is configured via a file in $HOME/.config/atspkg/config.dhall. You can set a custom package set as follows:

let version = "master"

let cfg =
  { defaultPkgs = "${version}/ats-pkg/pkgs/pkg-set.dhall"
  , path = ([] : Optional Text)
  , githubUsername = "vmchale"
  , filterErrors = False
in cfg

I recommend setting version to whichever branch your version of atspkg was built from.