All Projects → typelead → Eta Hackage

typelead / Eta Hackage

A set of patches to make Hackage compatible with the Eta language.

Programming Languages

haskell
3896 projects

Labels

Projects that are alternatives of or similar to Eta Hackage

Mastering Modular Javascript
📦 Module thinking, principles, design patterns and best practices.
Stars: ✭ 3,972 (+6306.45%)
Mutual labels:  packages
Satis On Heroku
Your private Satis instance on Heroku, just one click away.
Stars: ✭ 5 (-91.94%)
Mutual labels:  packages
Gomodctl
Search, Check, and Update Go modules.
Stars: ✭ 37 (-40.32%)
Mutual labels:  packages
Aports
[MIRROR] Alpine packages build scripts
Stars: ✭ 479 (+672.58%)
Mutual labels:  packages
Composer
Dependency Manager for PHP
Stars: ✭ 25,994 (+41825.81%)
Mutual labels:  packages
Repo
Arch Linux CN Repository
Stars: ✭ 929 (+1398.39%)
Mutual labels:  packages
Termux Archlinux
You can use setupTermuxArch.bash 📲 to install Arch Linux in Termux on Amazon, Android, Chromebook and Windows. https://sdrausty.github.io/termux-archlinux/
Stars: ✭ 384 (+519.35%)
Mutual labels:  packages
Dtupdate
The dtupdate package has functions that try to make it easier to keep up with the non-CRAN universe
Stars: ✭ 51 (-17.74%)
Mutual labels:  packages
Awesome Magento2
Curated list of awesome Magento 2 Extensions, Resources and other Highlights
Stars: ✭ 817 (+1217.74%)
Mutual labels:  packages
Fenix
Rust nightly toolchains and rust analyzer nightly for nix [[email protected]]
Stars: ✭ 29 (-53.23%)
Mutual labels:  packages
Termux Packages
A build system and primary set of packages for Termux.
Stars: ✭ 6,916 (+11054.84%)
Mutual labels:  packages
Termuxarch
You can use setupTermuxArch.bash 📲 to install Arch Linux in Amazon, Android, Chromebook and Windows. https://sdrausty.github.io/TermuxArch/docs/install
Stars: ✭ 653 (+953.23%)
Mutual labels:  packages
Harbours
Ported software for HelenOS.
Stars: ✭ 15 (-75.81%)
Mutual labels:  packages
Smarthome
@skalavala 👍 Nothing But Smarthome Stuff! - By Mahasri Kalavala
Stars: ✭ 437 (+604.84%)
Mutual labels:  packages
Package im stepper
A growing collection of beautiful, easy to use, stepper and page indicator widgets.
Stars: ✭ 42 (-32.26%)
Mutual labels:  packages
Box
Write reusable, composable and modular R code
Stars: ✭ 388 (+525.81%)
Mutual labels:  packages
Shinyappdemo
A demo shiny app inside a package
Stars: ✭ 23 (-62.9%)
Mutual labels:  packages
Npm Compare
Compare npm packages from your terminal
Stars: ✭ 55 (-11.29%)
Mutual labels:  packages
Rock
Create semantic version tags for your Go packages, search and discover new packages
Stars: ✭ 50 (-19.35%)
Mutual labels:  packages
Dotnet Assembly Grapher
Reverse engineering and software quality assurance tool for .NET assemblies
Stars: ✭ 21 (-66.13%)
Mutual labels:  packages

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

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.

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

Blockchain

Bytestring

Cryptography

Files

Error Handling

Text

Testing

Database

Memory

Pretty Printers

System

Metaprogramming

Generic Programming

Audio

Uncategorized

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.com/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. 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.

  5. Otherwise, apply the desired changes and go back to step 3 as long as the build fails.

  6. Once the build succeeds, make a commit.

    rm -rf dist/ && git add . && git commit -m "Patched"
    
  7. 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.

  8. 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
    
  9. 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/
    
  10. 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.

  11. In your eta-hackage repository,

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

Applying an Existing Patch

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]
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].