dynamic-cabal alternatives and similar packages
Based on the "Distribution" category.
Alternatively, view dynamic-cabal alternatives based on common mentions on social networks and blogs.
-
Cabal-ide-backend
Official upstream development repository for Cabal and cabal-install -
stackage
Stable Haskell package sets: vetted consistent packages from Hackage -
cabal-dev
A wrapper program around cabal and cabal-install that maintains sandboxed build environments. -
hackage-repo-tool
Hackage security framework based on TUF (The Update Framework) -
hackage-security-HTTP
Hackage security framework based on TUF (The Update Framework) -
hackage-security
Hackage security framework based on TUF (The Update Framework) -
redo
djb's redo implementation in Haskell (for Haskell from Scratch video series) -
hackport
A command line tool to generate Gentoo ebuilds from Hackage packages. -
cabal-helper
Give Haskell development tools access to Cabal project environment. -
packunused
Tool for detecting redundant Cabal package dependencies -
cabal-bounds
Set the version bounds of dependencies in a cabal file -
hackage-diff
Compare the public API of different versions of a Hackage library -
haddocset
Generate docset of Dash by Haddock haskell documentation tool -
stackage-upload
A more secure version of cabal upload which uses HTTPS -
stackage-setup
An executable for downloading a Haskell setup -
stackage-cabal
A CLI executable for cabal-based stackage commands -
cabal-meta
avoid cabal dependency hell by installing all your cabal dependencies at the same time -
language-nix
Data types and useful functions to represent and manipulate the Nix language. | Source has moved to https://github.com/nixos/cabal2nix -
cblrepo
Tool to simplify managing a consistent set of Haskell packages for distributions. -
hackage-db
provide access to the Hackage database via Data.Map | Source has moved to https://github.com/nixos/cabal2nix -
haskell-packages
Haskell suite library for package management and integration with Cabal -
distribution-nixpkgs
Haskell types and functions to represent, query, and manipulate the Nixpkgs distribution. | Source has moved to https://github.com/nixos/cabal2nix -
cabal-dependency-licenses
Compose a list of a project's transitive dependencies with their licenses -
jailbreak-cabal
Strip version restrictions from build dependencies in Cabal files. -
haskell-updater
rebuilds Haskell packages after a GHC upgrade or a dependency upgrade -
cabal-uninstall
Very simple Haskell script to uninstall cabal packages -
stackage-update
Update your package index incrementally (requires git) -
cabal-file-th
Template haskell function to bring cabal file fields into your source. -
stackage-metadata
Tool for extracting metadata on all packages -
cabal-constraints
Repeatable builds for cabalized Haskell projects
WorkOS - The modern identity platform for B2B SaaS
Do you think we are missing an alternative of dynamic-cabal or a related project?
README
dynamic-cabal
Note: The problem this library solves no longer exists starting with GHC 7.10, since versions later than that do not depend on the Cabal library. You only need this library if you like to support older GHC versions.
If you've ever used Cabal together with the GHC-API, you know the problem. Because GHC depends on a version of Cabal, which is often outdated, there is no way to parse the setup-config file generated by newer cabal versions. This library attemps to solve the problem by dynamically generating code that performs the action you want, and then compiling and loading that with GHC. With this method, you don't need to depend on Cabal at compile time and so you can use any version of Cabal.
Usage
Currently, the library only allows two queries: Getting the targets (along with their dependencies, ghc options, etc) and the package databases. The first is easily achieved using the targets
query provided by the library. To run the query, you can use the runQuery
function, which takes the path to the setup-config file as an argument. For example, the following little program prints out the names of all test suites, when run in a configured cabal project root directory:
import Distribution.Client.Dynamic
main :: IO ()
main = do
tgs <- runQuery (on localPkgDesc targets) "dist/setup-config"
mapM_ putStrLn [ n | TestSuite n <- map name tgs ]
Because targets
works on a PackageDescription, on localPkgDesc
is used to get the current PackageDescription.
Contributing
At the moment, I only implemented the functions I need myself. If you have more functions you want to implement, just send a pull request or open an issue.