Giter VIP home page Giter VIP logo

Gentoo Haskell project

pkgcheck-badge

IRC

Find us in #gentoo-haskell on libera.chat!

Quickest start

First, let's enable the Gentoo Haskell overlay. We can either use the eselect-repository method:

# Install eselect-repository if you don't already have it
emerge app-eselect/eselect-repository
# Fetch and output the list of overlays
eselect repository list
eselect repository enable haskell

or we can use the layman method:

# Add important USE flags for layman to your package.use directory:
echo "app-portage/layman sync-plugin-portage git" >> /etc/portage/package.use/layman
# Install layman if you don't already have it
emerge app-portage/layman
# Rebuild layman's repos.conf file:
layman-updater -R
# Add the Gentoo Haskell overlay:
layman -a haskell

Finally, we need to unmask the overlay (this does not apply if your system is already running on the ~testing branch):: # Unmask ~testing versions for your arch: echo "/::haskell" >> /etc/portage/package.accept_keywords

And here is the trick to speed up metadata resolution a bit. If you happen to use eix-sync for rsyncs you might like the following /etc/eix-sync.conf:

*
@egencache --jobs="$(($(nproc) + 1))" --repo=haskell --update --update-use-local-desc

It basically means:

  • sync overlays in layman list before the main tree sync
  • generate metadata for haskell repo after main tree sync is done, using N+1 cores

Overlay Priority

Gentoo has a mechanism to define which ebuild is selected in the event a package has the same version number in two different repositories. This is detailed in the Gentoo wiki: https://wiki.gentoo.org/wiki//etc/portage/repos.conf The ebuild in the repository with the highest priority will be selected.

When using the haskell overlay, ebuilds in this overlay should take precedence over the ebuilds in the main Gentoo repository, so you need to set the priorities accordingly.

Check the current priority in /etc/portage/repos.conf/gentoo.conf:

priority = -1000

Note: -1000 is the default value, but you may have changed it previously

In the haskell section of /etc/portage/repos.conf/layman.conf confirm the priority :

[haskell]
priority = 50
location = /var/lib/layman/haskell
layman-type = git
sync-type = laymansync
sync-uri = https://github.com/gentoo-haskell/gentoo-haskell.git
auto-sync = Yes

The value in the haskell section needs to be higher than in the gentoo.conf file - if it isn't, then modify one or both so it is.

Developer's corner

Have a nice haskell-related ebuild to share with community? Look at our Developer's README!

Loner's corner

Alternatively if you really don't want to share any ebuilds (want to keep outdated package versions, highly experimental things, publicly unavailable stuff, other reasons) that's also fine.

You can keep such ebuilds in your local overlay.

Here is a complete example of creating minimal overlay with a single haskell ebuild from hackage:

# create overlay and populate it (gentoo-generic):
$ mkdir my-ovl
$ cd    my-ovl
$ mkdir metadata
$ echo 'masters = gentoo' > metadata/layout.conf
# register an overlay in /etc/portage/repos.conf:
$ echo '[my-ovl]' >> /etc/portage/repos.conf
$ echo "location = $(pwd)" >> /etc/portage/repos.conf

# haskell-specific stuff
$ hackport -p . update
# DONE!

# adding an example ebuild
$ hackport merge hichi
$ emerge -av1 hichi

Gentoo Haskell Project's Projects

cabal icon cabal

Official upstream development repository for Cabal and cabal-install

fquery icon fquery

Installed package query tool for Gentoo Linux

hackport icon hackport

A command line tool to generate Gentoo ebuilds from Hackage packages.

haskell-updater icon haskell-updater

rebuilds Haskell packages after a GHC upgrade or a dependency upgrade

syn-kw icon syn-kw

Sync new KEYWORDS to overlay and back

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.