This repository contains a set of patches for particular packages from
Hackage that cannot be built out-of-the-box with etlas
. Packages are automatically installed when
you add them as a dependency to your project.
If a patch is in the repo, but your local etlas
in unable to find a patch for it, run
etlas update
and try the installation again.
Table of Contents
- Package Categorization
- Supported Packages
- Web Development
- Authentication
- Compilers
- Data Structures
- Parallel Computing
- Animations
- Math & Abstractions
- AWS
- Incremental Computing
- JSON
- Simulation
- Time
- Developer Tools
- Network
- Command Line
- DevOps
- Concurrent Computing
- Data Streaming
- Data Serialization
- Data Manipulation
- Base Libraries
- Algorithms
- Foreign Function Interface
- Heuristics
- Compression
- Graphics
- Distributed Computing
- Benchmarks
- Cryptography
- Files
- Error Handling
- Text
- Testing
- Database
- Memory
- Pretty Printers
- System
- Metaprogramming
- Uncategorized
- Unsupported Packages
- Built-in Packages
- Supported Packages
- Contributing
We have categorized the packages from Hackage below in relation to etlas
support. If a package from Hackage has not been listed here, it means no one has tried to build it and categorize it.
If you would like to have a given package/version made compatible with etlas
, you can:
These packages are supported by etlas
.
- cookie >= 0.4.2.1 && <= 0.4.3
- heist-1.0.1.1
- html-1.0.1.2
- html-truncate-0.3.0.0
- http2 >= 1.6.2 && <= 1.6.4
- http-api-data >= 0.3.5 && <= 0.3.7.1
- http-client >= 0.5.11 && <= 0.5.14
- http-client-tls-0.3.5.1
- http-conduit-2.3.2
- http-date-0.0.6.1
- http-media-0.6.4
- http-types >= 0.9.1 && <= 0.12.1
- HTTP-4000.3.8
- js-flot-0.8.3
- js-jquery >= 3.1.1 && <= 3.2.1
- mime-types-0.1.0.7
- path-pieces-0.2.1
- servant >= 0.9.1.1 && <= 0.11
- servant-docs >= 0.9.1.1 && <= 0.11
- servant-server >= 0.9.1.1 && <= 0.12
- superbuffer-0.3.1.1
- Scotty
- Spock-0.13.0.0
- Spock-api-0.12.0.1
- Spock-api-server-0.12.0.1
- uri-bytestring >= 0.2.2.1 && <= 0.3.0.1
- wai-3.2.1.1
- wai-extra-3.0.21.0
- wai-logger-2.3.1
- wai-app-static-3.1.6.2
- websockets >= 0.12.5.1 && <= 0.12.5.2
- yesod-1.6.0
- yesod-core-1.6.6
- yesod-static-1.6.0
- abstract-deque-0.3
- array >= 0.5.1.1 && <= 0.5.2.0
- array-utils-0.3
- bitarray-0.0.1.1
- blaze-builder >=0.3.3.4 && <= 0.4.0.2
- Boolean >= 0.2.3 && <= 0.2.4
- carray-0.1.6.6
- containers >= 0.5.8.1 && <= 0.5.9.1
- deepseq >= 1.4.2.0 && <= 1.4.3.0
- deepseq-generics-0.2.0.0
- disjoint-sets-st-0.1
- distributive >= 0.5.0.2 && <= 0.5.3
- dual-tree-0.2.1
- fingertree-0.1.1.0
- fingertree-psqueue-0.3
- fingertree-tf-0.1.0.0
- fgl-5.5.3.0
- fmlist-0.9
- graph-matchings-0.1.0.0
- graph-wrapper-0.2.5.1
- heap-1.0.3
- heaps-0.3.3
- hetero-map-0.21
- hgal-2.0.0.2
- HoleyMonoid-0.1.1
- interval-1.20160821
- ix-shapable-0.1.0
- kan-extensions-5.0.1
- keys-3.11
- labeled-tree-1.0.0.0
- lca-0.3
- map-syntax >= 0.2.0.1 && <= 0.2.0.2
- meldable-heap-2.0.3
- multiset-0.3.3
- nested-sequence-0.2
- nested-sets-0.0.1.1
- patch-combinators-0.2.2
- pqueue-1.3.1.1
- psqueues-0.2.2.3
- PSQueue-1.1
- queue-0.1.2
- relacion-0.1
- repa-3.4.1.2
- repa-algorithms-3.4.1.1
- repa-eval-4.0.0.2
- repa-io-3.4.1.1
- randproc-0.4
- tree-fun-0.8.1.0
- type-level-sets-0.8.0.0
- vector >= 0.11.0.0 && <= 0.12.0.1
- vector-algorithms-0.7.0.1
- vector-binary-instances >= 0.2.3.3 && <= 0.2.3.5
- vector-instances-3.4
- vector-th-unbox-0.2.1.6
- yi-rope-0.10
- ad-4.3.5
- adjunctions >= 4.3 && <= 4.4
- affine-0.1.1.0
- agum >= 2.6 && <= 2.7
- aig-0.2.6
- alg >= 0.2.5.0 && <= 0.2.8.0
- algebra-4.3.1
- algebraic-graphs-0.1.1.1
- alternators-1.0.0.0
- arrows-0.4.4.2
- bifunctors >= 5.4.1 && <= 5.5.3
- comonad-5
- contravariant >= 1.33 && <= 1.4
- control-monad-omega-0.3.1
- diagrams-solve-0.1.1
- erf-2.0.0.0
- fibonacci-0.2.0.1
- free-4.12.4
- hmatrix-0.19.0.0
- integer-logarithms-1.0.2
- invariant-0.5
- linear-1.20.6
- log-domain-0.12
- logict-0.6.0.2
- math-functions-0.2.1.0
- matrix-0.3.5.0
- mfsolve-0.3.2.0
- mmorph >= 1.0.6 && <= 1.1.0
- monoid-absorbing-0.1.0.4
- monad-control >= 1.0.1.0 && <= 1.0.2.2
- monad-logger >= 0.3.26 && <= 0.3.28
- monad-loops-0.4.3
- MonadRandom >= 0.4.2.3 && <= 0.5.1
- monads-tf-0.1.0.3
- mtl-2.2.1
- mtl-compat-0.2.1.3
- nats-1.1.1
- operational-0.2.3.5
- primes-0.2.1.0
- profunctors-5.2
- sbv-6.1
- semigroups >= 0.18.2 && <= 0.18.5
- semigroupoids >= 5.1 && <= 5.3.1
- statistics-0.14.0.2
- transformers >= 0.4.2.0 && <= 0.5.5.0
- transformers-base-0.4.4
- transformers-compat-0.5.1.4
- aeson == 0.11.0.0 || >= 0.11.3.0 && <= 1.4.0.0
- aeson-compat >= 0.3.7.1 && <= 0.3.8
- aeson-diff-1.1.0.5
- aeson-extra-0.4.1.1
- aeson-filthy-0.1.2
- aeson-generic-compat-0.0.1.2
- aeson-iproute-0.2
- aeson-options-0.0.0
- aeson-picker-0.1.0.4
- aeson-pretty >= 0.8.2 && <= 0.8.5
- aeson-quick-0.1.2.1
- dhall-json == 1.2.1 || >= 1.2.4
- alarmclock-0.5.0.2
- clock-0.7.2
- hourglass >= 0.2.10 && <= 0.2.11
- iso8601-time-0.1.4
- old-time-1.1.0.3
- time >= 1.6.0.1 <= 1.8.0.3
- time-locale-compat-0.1.1.3
- alex-3.2.4
- alex-tools-0.4
- api-builder-0.15.0.0
- appar >= 0.1.4 && <= 0.1.5
- attoparsec >= 0.13.1.0 && <= 0.13.2.2
- attoparsec-iso8601-1.0.0.0
- binary-0.8.5.1
- cassava-0.5.1.0
- extra >= 1.5.2 && <= 1.6.3
- happy-1.19.9
- highlighting-kate-0.6.4
- megaparsec == 5.3.1 || (>= 6.4.1 && <= 6.5.0) || (>= 7.0.3 && <= 7.0.4)
- optparse-applicative >= 0.13.2.0 && <= 0.14.0.0 || == 0.14.0.2
- parsec >= 3.1.11 && <= 3.1.13.0
- polyparse-1.12
- shake >= 0.16.2 && <= 0.16.4
- tagsoup-0.14
- amqp-0.18.1
- connection-0.2.8
- hostname-1.0
- iproute-1.7.1
- network-2.6.3.2
- network-info-0.2.0.10
- network-multicast-0.2.0
- network-transport >=0.4.4.0 && <= 0.5.2
- network-uri >= 2.6.0.2 && <= 2.6.1.0
- socks-0.5.5
- tls-1.4.0
- ansi-terminal >= 0.6.2.3 && <= 0.6.3.1 || == 0.7.1.1 || == 0.8.0.4 || == 0.9.1
- ansi-wl-pprint-0.6.7.3
- cmdargs >= 0.10.18 && <= 0.10.20
- haskeline-0.7.4.3
- ReadArgs-1.2.3
- terminal-size-0.3.2.1
- turtle-1.5.10
- async-2.1.1.1
- haxl >= 2.0.0.0 && <= 2.0.1.0
- conceit-0.4.0.0
- concurrent-machines-0.2.3.3
- concurrent-output == 1.10.6 || == 1.10.10
- lifted-async-0.9.0
- monad-coroutine-0.9.0.3
- stm-2.4.4.1
- stm-chans-3.0.0.4
- unbounded-delays-0.1.1.0
- conduit >= 1.2.8 && <= 1.3.0.3
- conduit-combinators-1.1.2
- conduit-extra-1.2.1
- machines-0.6.1
- machines-binary-0.3.0.3
- machines-io-0.2.0.13
- pipes >= 4.3.1 && <= 4.3.2
- pipes-bytestring-2.1.4
- pipes-concurrency-2.0.7
- pipes-group-1.0.6
- pipes-parse-3.0.8
- pipes-safe-2.2.5
- streaming-commons >= 0.1.18 && <= 0.1.19
- basic-lens-0.0.0
- lens >= 4.15.1 && <= 4.17
- lens-aeson-1.0.2
- lens-family-1.2.1
- lens-family-core-1.2.1
- lens-labels-0.2.0.1
- microlens >= 0.4.7.0 && <= 0.4.8.0
- microlens-mtl >= 0.1.10.0 && <= 0.1.11.0
- proto-lens-0.3.1.0
- basement >= 0.0.4 && <= 0.0.6
- base-compat >= 0.9.1 && <= 0.10.4
- base-compat-batteries-0.10.4
- base-orphans >= 0.5.4 && <= 0.8
- base-prelude >= 0.6.1 && <= 1.2.0.1
- base16-bytestring-0.1.1.6
- base64-bytestring-1.0.0.1
- foundation >= 0.0.17 && <= 0.0.18
- lifted-base >= 0.2.3.8 && <= 0.2.3.11
- prelude-extras-0.4.0.3
- protolude >= 0.1.10 && <= 0.2.2
- rio-0.1.5.0
- binary-search-1.0.0.3
- DecisionTree-0.0
- dom-lt-0.1.3
- garsia-wachs-1.2
- stable-marriage-0.1.1.0
- unification-fd-0.10.0.1
- union-find-0.2
- union-find-array-0.1.0.2
- colour-2.3.3
- FontyFruity-0.5.3.3
- integration-0.2.1
- JuicyPixels >=3.2.9.5 && <= 3.3
- language-glsl-0.2.1
- svg-builder-0.1.0.2
- base58-bytestring-0.1.0
- bytestring >= 0.10.8.1.0 && <= 0.10.8.2.0
- bytestring-builder-0.10.8.1.0
- bytestring-trie-0.2.4.1
- bytestring-show-0.3.5.6
- bytestring-strict-builder-0.4.5.1
- bytestring-tree-builder-0.2.7.2
- stringable-0.1.3
- crypto-api-0.13.2
- cryptohash-0.11.9
- crypto-pubkey-types-0.4.3
- cryptonite >= 0.24 && <= 0.26
- cryptohash-md5-0.11.100.1
- cryptohash-sha1-0.11.100.1
- digest 0.0.1.2
- entropy-0.4
- mwc-random >= 0.13.5.0 && <= 0.13.6.0
- pure-zlib-0.6
- pureMD5-2.1.3
- RSA-2.2.0
- SHA >=1.6.4.2 && <= 1.6.4.4
- tf-random-0.5
- utf8-string-1.0.1.1
- zlib-0.6.1.2
- zlib-bindings-0.1.1.5
- directory >= 1.3.0.0 && <= 1.3.1.0
- directory-tree-0.12.1
- easy-file-0.2.1
- filepath >= 1.4.1.0 && <= 1.4.1.1
- file-embed >= 0.0.10.1 && <= 0.0.11
- fsnotify-0.3.0.1
- path-io-1.4.0
- temporary-1.2.1.1
- formatting >= 6.3.2 && <= 6.3.4
- microstache-1.0.1.1
- pretty-show >= 1.6.16 && <= 1.8.1
- readable-0.3.1
- regex-base-0.93.2
- regex-pcre-builtin-0.94.4.8.8.35
- regex-posix-0.95.2
- regex-tdfa >= 1.2.1 && <= 1.2.3.1
- text >= 1.2.2.1 && <= 1.2.3.0
- text-binary-0.2.1.1
- text-short-0.1.1
- word8 >= 0.1.2 && <= 0.1.3
- xml-1.3.5
- xml-types-0.3.6
- xmlhtml >= 0.2.3.5 && <= 0.2.5.2
- xml-hamlet-0.5.0
- hxt-9.3.1.16
- HaXml-1.25.4
- tagsoup-0.14.6
- genvalidity-0.5.1.0
- hedgehog >= 0.5.3 && <= 0.6
- hspec-2.4.3
- hspec-core >= 2.4.3 && <= 2.4.6
- hspec-discover-2.4.3
- hspec-expectations-0.8.2
- HUnit >= 1.2.5.2 && <= 1.6.0.0
- QuickCheck >= 2.7.6 && <= 2.10.0.1
- quickcheck-io-0.1.4
- tasty >= 0.11.2.1 && <= 1.1.0.4
- test-framework-0.8.2.0
- testpack-2.1.3.0
- process-1.6.2.0
- setenv-0.1.1.3
- system-filepath-0.4.13.4
- system-fileio-0.3.16.3
- typed-process >= 0.2.0.0 && <= 0.2.2.0
- asn1-encoding-0.9.5
- asn1-parse-0.9.4
- auto-update-0.1.4
- binary-conduit-1.2.4.1
- binary-orphans-0.1.8.0
- blaze-html >= 0.8.1.3 && <= 0.9.0.1
- blaze-html-truncate-0.3.0.0
- blaze-markup >= 0.7.1.1 && <= 0.8.0.0
- blaze-textual-0.2.1.0
- byteable-0.1.1
- byteorder-1.0.4
- bytes-0.15.3
- call-stack-0.1.0
- case-insensitive >= 1.2.0.7 && <= 1.2.0.10
- cereal-0.5.4.0
- circle-packing-0.1.0.6
- chunked-data-0.3.0
- code-page-0.1.3
- constraints-0.8
- convertible-1.1.1.0
- crackNum-1.9
- data-binary-ieee754-0.4.4
- data-default-0.7.1.1
- data-default-class-0.1.2.0
- data-default-instances-containers-0.0.1
- data-default-instances-dlist-0.0.1
- data-default-instances-old-locale-0.0.1
- data-reify-0.6.1
- dlist >= 0.8.0.2 && <= 0.8.0.3
- either-4.4.1.1
- exceptions-0.8.3
- fail-4.9.0.0
- fast-logger >= 2.4.10 && <= 2.4.11
- fast-math-1.0.2
- foldl-1.2.5
- foreign-store-0.2
- FloatingHex-0.4
- generic-deriving >= 1.10.7 && <= 1.11.2
- GenericPretty-1.2.1
- gdiff-1.1
- geniplate-mirror-0.7.6
- gray-code-0.3.1
- ghc-boot-th-8.0.1
- Glob >= 0.7.14 && <= 0.9.2
- groups-0.4.0.0
- half-0.3
- hashable >= 1.2.4.0 && <= 1.2.7.0
- hashtables >= 1.2.1.0 && <= 1.2.3.1
- haste-prim-0.6.0.0
- hex-0.1.2
- hslogger-1.2.10
- ieee754-0.8.0
- lazy-io-0.1.0
- list-extras-0.4.1.4
- loop-0.3.0
- MemoTrie-0.6.8
- MissingH-1.4.0.1
- mono-traversable-1.0.1
- named-0.2.0.0
- newtype-0.2
- newtype-generics-0.4.1
- NumInstances-1.4
- old-locale-1.0.0.7
- OneTuple-0.2.1
- Only-0.1
- pandoc-2.5
- pandoc-types-1.17.5.4
- pem-0.2.2
- pointed-5
- reflection-2.1.2
- resourcet >= 1.1.8.1 && <= 1.1.11
- safe >= 0.3.9 && <= 0.3.11
- safe-exceptions-0.1.6.0
- scientific >= 0.3.4.9 && <= 0.3.5.1
- silently-1.2.5
- singletons-2.0.1
- sorted-list-0.2.0.0
- split >= 0.2.3.1 && <= 0.2.3.2
- StateVar >= 1.1.0.4 && <= 1.1.1.0
- storable-complex-0.2.2
- string-conversions-0.4.0.1
- stringsearch-0.3.6.6
- syb >= 0.6 && <= 0.7
- tagged-0.8.5
- texmath-0.11.2
- unexceptionalio-0.3.0
- unicode-transforms-0.2.0
- unix-time-0.3.7
- unliftio >= 0.2.7.0 && <= 0.2.7.1
- unliftio-core-0.1.1.0
- unordered-containers >= 0.2.7.1 && <= 0.2.9.0
- uuid-types-1.0.3
- validity-0.7.0.0
- vault >= 0.3.0.6 && <= 0.3.0.7
- versions-3.0.1.1
- vinyl >= 0.5.1.1 && <= 0.8.1.1
- void >= 0.7.1 && <= 0.7.2
- webdriver-0.8.5
- x509-1.7.2
- x509-store-1.6.5
- x509-system-1.6.6
- x509-validation-1.6.9
These packages are heavy on FFI dependencies and don't make sense in the context of the JVM, hence no effort will be made to port them.
- None for now
These packages have special meaning in the Eta compiler and hence are provided upon installation.
- base-4.8.2.0
- integer-0.5.1.0
- NOTE: Due to the drastic differences between the
Integer
implementations, the public API between the corresponding GHC package is slightly different.
- NOTE: Due to the drastic differences between the
- ghc-prim-0.4.0.0
- NOTE: Due to the introduction of new primitives for Eta, the public API between the corresponding GHC package is slightly different.
Suppose that you find a library you want to patch or fix an existing patch, say
somepackage-0.1.2.3
.
If you have already forked this repository, then skip to step 3.
-
Fork this repository.
-
Clone the forked repository.
git clone http://github.com/your-name-here/eta-hackage
-
Checkout the
master
branch and pull any changes.git checkout master git pull
-
Create a new branch with the same name as the package.
$ git checkout -b somepackage
-
Fetch the package and navigate to it.
etlas get somepackage-0.1.2.3 cd somepackage-0.1.2.3/
-
If the message "Found patch in eta-hackage for somepackage-0.1.2.3" appeared in step 1, skip to step 3.
Otherwise, initialize a Git repository and make an initial commit.
git init && git add . && git commit -m "First"
-
Build the package.
etlas build
-
If the previous version of the package has already been patched, try out:
git apply --reject [path-to-patch]
This will work in most cases. If not, resolve the changes.
-
Otherwise, apply the desired changes and go back to step 3 as long as the build fails.
-
Once the build succeeds, make a commit.
rm -rf dist/ && git add . && git commit -m "Patched"
-
Create a patch.
Mac and Linux users can use the following command to patch:
git format-patch HEAD~ --stdout > somepackage-0.1.2.3.patch
Windows users can use the following command to patch:
git format-patch HEAD~ --stdout --ignore-cr-at-eol > somepackage-0.1.2.3.patch
It had been detected that in windows patches created using powershell has not the correct format and can't be applied so it's better to do it in the dos console.
-
If you have changed the
.cabal
file of the package in your patch, make a copy and rename it fromsomepackage.cabal
tosomepackage-0.1.2.3.cabal
.cp somepackage.cabal somepackage-0.1.2.3.cabal
-
Copy the patch file and the cabal file (if changed) to the
patches
directory in your local clone of your fork of theeta-hackage
repository.NOTE:
$YOUR_FORK_PATH
should be replaced with the path to the local clone of your forked version ofeta-hackage
.If the cabal file didn't change:
cp somepackage-0.1.2.3.patch $YOUR_FORK_PATH/patches/
If the cabal file changes:
cp somepackage-0.1.2.3.cabal somepackage-0.1.2.3.patch $YOUR_FORK_PATH/patches/
-
Update this
README.md
with the package name (in alphabetical order) in the Supported Packages section in the same format as the other packages.If there already exists an entry for an older or newer version of the package, please consolidate the new versions into the existing entry. You can see the
directory
entry as an example. -
In your
eta-hackage
repository,$ git add . $ git commit -m "Patched somepackage-0.1.2.3" $ git push origin
-
Submit a pull request to this repository for review.
If you want to apply the patch to an old version of a package to a new version of a package, you can run
git apply --ignore-space-change --ignore-whitespace --reject [location-of-patch]