Code Monkey home page Code Monkey logo

eta-hackage's Introduction

Eta Hackage

Build Status

This repository contains a set of patches for particular packages from Hackage that cannot be built out-of-the-box with etlas. To install a package, you have to run the following command:

etlas install <package-name>

etlas will take care of downloading the tar file, optionally patching it, and installing it. 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

Overview

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:

Supported Packages

These packages are supported by etlas.

Unsupported Packages

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

Built-in Packages

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.
  • 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.

Contributing

Patching a Library

Suppose that you find a library you want to patch or fix an existing patch, say somepackage-0.1.2.3.

Prerequisites

If you have already forked this repository, then skip to step 3.

  1. Fork this repository.

  2. Clone the forked repository.

    git clone http://github.org/your-name-here/eta-hackage
    
  3. Checkout the master branch and pull any changes.

    git checkout master
    git pull
    
  4. Create a new branch with the same name as the package.

    $ git checkout -b somepackage
    

Patching

  1. Fetch the package and navigate to it.

    etlas get somepackage-0.1.2.3
    cd somepackage-0.1.2.3/
    
  2. 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"
    
  3. Build the package.

    etlas build
    
  4. Apply the desired changes and go back to step 3 as long as the build fails.

  5. Once the build succeeds, make a commit.

    git add . && git commit -m "Patched"
    
  6. Create a patch.

    git format-patch HEAD~ --stdout > somepackage-0.1.2.3.patch
    
  7. If you have changed the .cabal file of the package in your patch, make a copy and rename it from somepackage.cabal to somepackage-0.1.2.3.cabal.

    cp somepackage.cabal somepackage-0.1.2.3.cabal
    
  8. Copy the patch file and the cabal file (if changed) to the patches directory in your local clone of your fork of the eta-hackage repository.

    NOTE: $YOUR_FORK_PATH should be replaced with the path to the local clone of your forked version of eta-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/ 
    
  9. Update this README.md with the package name (in alphabetical order) in the Supported Packages section in the same format as the other packages.

  10. In your eta-hackage repository,

    $ git add .
    $ git commit -m "Patched somepackage-0.1.2.3"
    $ git push origin
    
  11. Submit a pull request to this repository for review.

eta-hackage's People

Contributors

abhiroop avatar aktowns avatar alaendle avatar jneira avatar jyothsnasrinivas avatar psibi avatar puffnfresh avatar rahulmutt avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.