Skip to content
ArthurClemens edited this page Aug 25, 2012 · 9 revisions

The Yesod team uses (and has built) quite a number of tools to make our jobs easier. This page is meant to give a comprehensive list of the tools available and the problems they solve. It is not intended to give a deep explanation of how to use them.

Build tools

  • Obviously GHC is our most important tool. These days, we recommend users- and therefore developers- to start off directly with the Haskell Platform. Yesod is always officially supported on the current Haskell Platform, though in reality we try to make it work with the previous HP release and any release candidates of GHC.
  • Cabal is the standard Haskell build system. It's a combination of a library and a command line tool (known as cabal-install, though the executable is just cabal). All packages in the Yesod project are cabalized (i.e., they are built via cabal).
  • cabal-dev is a wrapper around cabal which provides for build sandboxes. This lets you experiment with different versions of packages without destroying existing installs. Highly recommended in general. (Alternatively, there is virthualenv, which serves much the same purpose.)
  • cabal-meta is another cabal wrapper, but helps with setting up simultaneous builds. This can help prevent dependency hell in many circumstances. It is also compatible with cabal-dev.
  • cabal-src essentially deploys a package to a local repo (you could think of it as a local alternative to Hackage). This is used internally by the Yesod build scripts. It's very convenient when working on a large number of updated dependencies that have not yet been released to Hackage.
  • mega-sdist helps deal with mega-repos, or repositories containing a number of packages as subfolders. It will automatically create tarballs of each package and compare it to the version available on Hackage, letting you know if you need to bump any version numbers.
  • Virtual machine using VirtualBox and Vagrant
  • packdeps (and website) lets you know when dependencies on a package are out-of-date.

Text editors

Clone this wiki locally