ATSPackage
This is a build system for ATS written in Haskell and configured with Dhall. It
is not yet stable.
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
- Ensure reproducible builds via pinned compiler versions
- Track all file dependencies
- Make contributing to your projects easier
- Run builds in parallel (like
make
)
- Handle flags and libraries for garbage collection when specified
- Install
patscc
and other ATS tooling
Things that atspkg
will not do for you:
- Dependency resolution (this is planned)
- Give you the full flexibility of the C/ATS ecosystem
- Integrate with other ecosystems
- Provide a centralized package repository
- Offer a common architecture for package builds
- Cache builds locally (like
nix
or cabal
)
Example
As an example, the following two lines will install polyglot
:
curl -sSl https://raw.githubusercontent.com/vmchale/atspkg/master/bash/install.sh | bash -s
atspkg remote https://github.com/vmchale/polyglot/archive/master.zip
As you can see, this greatly simplifies distribution and testing of programs
written in ATS.
Installation
Script
The easiest way to install is via a script, viz.
curl -sSl https://raw.githubusercontent.com/vmchale/atspkg/master/bash/install.sh | bash -s
Thereafter, you can run
atspkg upgrade
to upgrade to the latest release.
Source
Alternately, you can download
Cabal and
GHC and install with
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
.
Global Configuration
atspkg
is configured via a file in ~/.config/atspkg/config.dhall
. You can
set custom package set as follows:
let cfg =
{ defaultPkgs = "https://raw.githubusercontent.com/vmchale/atspkg/master/pkgs/pkg-set.dhall"
}
in cfg
Package sets are simply sets of packages, so you can also use Dhall to
concatenate custom package sets with the above.
Examples
You can find several examples with explanation
here