Skip to content
Snippets Groups Projects
brandon s allbery kf8nh's avatar
Brandon S. Allbery authored
With this change to the solver message rendering, I also fix some bugs around project imports, adding tests for those cases. Reviewers asked that the Y-shaped import checks (using IORef) be made on a separate pull request. Removing those lead to cascading deletions.

- Regenerate expected .out files
- Show tree provenance of import constraint
- Add trimmed down PackageTests/VersionPriority
- Add changelog entry
- Use NonEmpty
- Fix check for cyclical import
- Use primes for next iteration
- Remove unused LANGUAGE pragmas
- Rename to projectConfigPathRoot
- Docs for ProjectConfigPath and showProjectConfigPath
- Renaming
- Add cyclical import tests with 1 and 2 hops in cycle
- Use full path for cyclical error message
- Expected output has project with full project path
- Add fullPath local function
- Project directory as FilePath, not Maybe FilePath
- Use (_, projectFileName) binding splitFileName
- Need full path to project parsing legacy
- Inline seenImports conversion
- Add cyclical checks with same file names and hops
- Add noncyclical tests that hop over folders
- Add a project testing skipping in and out of a folder
- Update expectations of cyclical tests
- Use canonicalizePath for collapsing .. when possible
- Capture trace for later
- Add module for ProjectConfigPath
- Move functions for ProjectConfigPath to its module
- Fetch URI is not prefixed with ./https://etc
- Document normaliseConfigPath
- Add doctests for normaliseConfigPath
- Add doctest of canonicalizeConfigPath
- Show an example of canonical paths
- Use importer and importee in canonicalizeConfigPaths
- Add logging
af9d5df9
History

Cabal

Hackage version Stackage version Documentation Status IRC chat Matrix chat

This Cabal Git repository contains the following main packages:

The canonical upstream repository is located at https://github.com/haskell/cabal.

Ways to get the cabal-install binary

  1. GHCup (preferred): get GHCup using the directions on its website and run:

    ghcup install --set cabal latest
  2. Download from official website: the cabal-install binary download for your platform should contain the cabal executable.

Preview Releases

Getting unreleased versions of cabal-install: gives you a chance to try out yet-unreleased features. Currently, we only provide binaries for x86_64 platforms.

  1. GitHub preview release built from the tip of the master branch: download from GitHub or use this GHCup command to install:

    ghcup install cabal -u https://github.com/haskell/cabal/releases/download/cabal-head/cabal-head-Linux-x86_64.tar.gz head

    Replace "Linux" with "Windows" or "macOS" as appropriate.

    The default Linux build is dynamically linked against zlib, gmp and glibc. You will need to have appropriate versions of these libraries installed to use it. Alternatively a statically linked "Linux-static" binary is also provided.

    You might need to add the following to your cabal.project file if your build fails because of an out-of-date Cabal library:

    allow-newer: 
      *:Cabal,
      *:Cabal-syntax
    
    source-repository-package
        type: git
        location: https://github.com/haskell/cabal.git
        subdir: Cabal Cabal-syntax
  2. Even more cutting-edge binaries built from pull requests are always available from the Validate worklow page on GitHub, at the very bottom of the page, or from the build-alpine workflow for statically linked Linux builds.

Ways to build cabal-install for everyday use

  1. With cabal-install: if you have a pre-existing version of cabal-install, run:

    cabal install cabal-install

    to get the latest version of cabal-install. (You may want to cabal update first.)

  2. From Git: again with a pre-existing version of cabal-install, you can install the latest version from the Git repository. Clone the Git repository, move to its root, and run:

    cabal install --project-file=cabal.project.release cabal-install
  3. Bootstrapping: if you don't have a pre-existing version of cabal-install, look into the bootstrap directory.

Learn how to use cabal and get support

cabal comes with a thorough User Manual. If you are new to cabal and want to quickly learn the basics, check Getting Started With Haskell and Cabal.

Got questions? Ask in Haskell Matrix (online chat) or Haskell Discourse.

Build for hacking and contributing to cabal

Refer to CONTRIBUTING.md.