summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /dev-haskell/happy
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'dev-haskell/happy')
-rw-r--r--dev-haskell/happy/Manifest4
-rw-r--r--dev-haskell/happy/files/happy-1.18.6-man.patch12
-rw-r--r--dev-haskell/happy/files/happy-1.18.9-missing-tests.patch260
-rw-r--r--dev-haskell/happy/files/happy-1.19.5-ghc-7.10.2.patch27
-rw-r--r--dev-haskell/happy/happy-1.18.10.ebuild63
-rw-r--r--dev-haskell/happy/happy-1.19.3.ebuild67
-rw-r--r--dev-haskell/happy/happy-1.19.4.ebuild67
-rw-r--r--dev-haskell/happy/happy-1.19.5.ebuild74
-rw-r--r--dev-haskell/happy/metadata.xml8
9 files changed, 582 insertions, 0 deletions
diff --git a/dev-haskell/happy/Manifest b/dev-haskell/happy/Manifest
new file mode 100644
index 000000000000..c3532967afac
--- /dev/null
+++ b/dev-haskell/happy/Manifest
@@ -0,0 +1,4 @@
+DIST happy-1.18.10.tar.gz 159994 SHA256 c1c920f77906740252e261e2baec5b7519e584344d6080aa5a9cc0b677b9064b SHA512 e052b016bae9f255a9dfa7e4970a015cc5abfdd5216e6e4d4317c63890f154dd68da75aac1ac9bb5a8c84854e59066d0daed09c6ac4d4928ce93ecf4c8bcfb80 WHIRLPOOL ec97a2d7011af0dfd2e099b19bc6dda1df9a128b2a1c50bc82c010b7504c0a5682533b032b9f51386fd37935c17fee5aa38f7bd27e6dbb920664d964dcbbe637
+DIST happy-1.19.3.tar.gz 160853 SHA256 7d9c21ae2093c4f753f68eb6f654e48f08f72a79157bcac7182e6fcede8d70e0 SHA512 8d04a5756eb3b36a0aea3e7828adb69d657c6f9a18a2552295c60483fd50caf27a21cff3da4052e25adf25b0203907e782372ed0d2e2563467425144654a281b WHIRLPOOL cf97b16698b68f3fe4f9788689fbe799ab8d336c61b8b095ef79ad10cf4094e560c8d05add5b23825ee51acfa383253fdc6b7fd83bfbe88e2ef631f0d6e89754
+DIST happy-1.19.4.tar.gz 160497 SHA256 6be499f66c61f8c48cbbbcb70515eb8e62c2bfa08adcc8c9474e7ae343a6936d SHA512 d49893098f9982321fc03dad464bf787873a1a82167165d53f617ba04923c7e5d8f177def7fa045a5669d1c7f886a88087ba8f668ef1900a71498b5800cc4b1a WHIRLPOOL 6f9b63a149e3681f3ea52a91c01386898c70df5c0d06d9d99f1979b21628ffce483d71bc48cd21c3ca0a7cec8edc4581dea02fc33b90ff9de9902453327fdeec
+DIST happy-1.19.5.tar.gz 159280 SHA256 62f03ac11d7b4b9913f212f5aa2eee1087f3b46dc07d799d41e1854ff02843da SHA512 7b43ef5236bdfba82bbddedb7edc7a8094990a389c0d3f5f848cb6208c3577e7b394cb290e51a2b2eebca25c97978a85ee932e74bbf6a792e261e5b5bff25a2b WHIRLPOOL 24bb36acb56dc20203032b9b81d542cc8e8f258bffd3b4e004cfa4185b209712c5b79c06da22f9bac4087452a0595021e94937fdd18fea79b082d0ac849c0541
diff --git a/dev-haskell/happy/files/happy-1.18.6-man.patch b/dev-haskell/happy/files/happy-1.18.6-man.patch
new file mode 100644
index 000000000000..cd5558cc6607
--- /dev/null
+++ b/dev-haskell/happy/files/happy-1.18.6-man.patch
@@ -0,0 +1,12 @@
+Tue Aug 2 12:16:38 EEST 2011 Sergei Trofimovich <slyfox@community.haskell.org>
+ * doc: make happy.1 be buildabale with doc/configure
+diff -rN -u old-happy/doc/configure.ac new-happy/doc/configure.ac
+--- old-happy/doc/configure.ac 2011-08-02 12:24:20.913926740 +0300
++++ new-happy/doc/configure.ac 2011-08-02 12:24:20.923926615 +0300
+@@ -9,5 +9,5 @@
+
+ AC_PATH_PROG(DbLatexCmd,dblatex)
+
+-AC_CONFIG_FILES([config.mk])
++AC_CONFIG_FILES([config.mk happy.1])
+ AC_OUTPUT
diff --git a/dev-haskell/happy/files/happy-1.18.9-missing-tests.patch b/dev-haskell/happy/files/happy-1.18.9-missing-tests.patch
new file mode 100644
index 000000000000..eb993678723d
--- /dev/null
+++ b/dev-haskell/happy/files/happy-1.18.9-missing-tests.patch
@@ -0,0 +1,260 @@
+--- happy-1.18.9-orig/happy.cabal 2012-02-06 20:49:56.000000000 +1100
++++ happy-1.18.9/happy.cabal 2012-02-07 20:50:33.859004968 +1100
+@@ -100,10 +100,13 @@
+ templates/GLR_Base.hs
+ templates/GenericTemplate.hs
+ templates/GLR_Lib.hs
++ tests/AttrGrammar001.y
++ tests/AttrGrammar002.y
+ tests/error001.y
+ tests/error001.stdout
+ tests/error001.stderr
+ tests/monad001.y
++ tests/monaderror.y
+ tests/Makefile
+ tests/TestMulti.ly
+ tests/Partial.ly
+--- happy-1.18.9-orig/tests/Makefile 2012-02-06 20:49:55.000000000 +1100
++++ happy-1.18.9/tests/Makefile 2012-02-07 20:50:33.859004968 +1100
+@@ -1,5 +1,5 @@
+ HAPPY=../dist/build/happy/happy
+-HC=ghc
++HC=ghc -hide-all-packages -package base -package array -package mtl
+
+ TESTS = Test.ly TestMulti.ly TestPrecedence.ly bug001.ly \
+ monad001.y monad002.ly precedence001.ly precedence002.y \
+--- /dev/null 2012-02-07 10:04:42.144206507 +1100
++++ happy-1.18.9/tests/AttrGrammar001.y 2012-02-07 20:50:47.013316418 +1100
+@@ -0,0 +1,68 @@
++{
++import Control.Monad (unless)
++}
++
++%tokentype { Char }
++
++%token a { 'a' }
++%token b { 'b' }
++%token c { 'c' }
++
++%attributetype { Attrs a }
++%attribute value { a }
++%attribute len { Int }
++
++%name parse abcstring
++
++%monad { Maybe }
++
++%%
++
++abcstring
++ : alist blist clist
++ { $$ = $1 ++ $2 ++ $3
++ ; $2.len = $1.len
++ ; $3.len = $1.len
++ }
++
++alist
++ : a alist
++ { $$ = $1 : $>
++ ; $$.len = $>.len + 1
++ }
++ | { $$ = []; $$.len = 0 }
++
++blist
++ : b blist
++ { $$ = $1 : $>
++ ; $>.len = $$.len - 1
++ }
++ | { $$ = []
++ ; where failUnless ($$.len == 0) "blist wrong length"
++ }
++
++clist
++ : c clist
++ { $$ = $1 : $>
++ ; $>.len = $$.len - 1
++ }
++ | { $$ = []
++ ; where failUnless ($$.len == 0) "clist wrong length"
++ }
++
++{
++happyError = error "parse error"
++failUnless b msg = unless b (fail msg)
++
++main = case parse "" of { Just _ ->
++ case parse "abc" of { Just _ ->
++ case parse "aaaabbbbcccc" of { Just _ ->
++ case parse "abbcc" of { Nothing ->
++ case parse "aabcc" of { Nothing ->
++ case parse "aabbc" of { Nothing ->
++ putStrLn "Test works";
++ _ -> quit } ; _ -> quit }; _ -> quit };
++ _ -> quit } ; _ -> quit }; _ -> quit }
++
++quit = putStrLn "Test failed"
++}
+--- /dev/null 2012-02-07 10:04:42.144206507 +1100
++++ happy-1.18.9/tests/AttrGrammar002.y 2012-02-07 20:50:47.013316418 +1100
+@@ -0,0 +1,58 @@
++
++%tokentype { Char }
++
++%token minus { '-' }
++%token plus { '+' }
++%token one { '1' }
++%token zero { '0' }
++
++%attributetype { Attrs }
++%attribute value { Integer }
++%attribute pos { Int }
++
++%name parse start
++
++%monad { Maybe }
++
++%%
++
++start
++ : num { $$ = $1 }
++
++num
++ : bits { $$ = $1 ; $1.pos = 0 }
++ | plus bits { $$ = $2 ; $2.pos = 0 }
++ | minus bits { $$ = negate $2; $2.pos = 0 }
++
++bits
++ : bit { $$ = $1
++ ; $1.pos = $$.pos
++ }
++
++ | bits bit { $$ = $1 + $2
++ ; $1.pos = $$.pos + 1
++ ; $2.pos = $$.pos
++ }
++
++bit
++ : zero { $$ = 0 }
++ | one { $$ = 2^($$.pos) }
++
++
++{
++happyError msg = fail $ "parse error: "++msg
++
++main = case parse "" of { Nothing ->
++ case parse "abc" of { Nothing ->
++ case parse "0" of { Just 0 ->
++ case parse "1" of { Just 1 ->
++ case parse "101" of { Just 5 ->
++ case parse "111" of { Just 7 ->
++ case parse "10001" of { Just 17 ->
++ putStrLn "Test worked";
++ _ -> quit }; _ -> quit }; _ -> quit };
++ _ -> quit }; _ -> quit }; _ -> quit };
++ _ -> quit }
++
++quit = putStrLn "Test Failed"
++}
+--- /dev/null 2012-02-07 10:04:42.144206507 +1100
++++ happy-1.18.9/tests/ParGF.y 2012-02-07 20:50:47.014316443 +1100
+@@ -0,0 +1,40 @@
++{-
++
++With Happy 1.17 this file produces "Internal Happy error" when run:
++
++$ happy ParGF.y && runghc ParGF.hs
++ParGF.hs: Internal Happy error
++
++The problem is that we always pass around the "current token". When not
++using %lexer and we've run out of tokens, the current token is notHappyAtAll,
++which gets passed to happyError when there's an error.
++
++-}
++
++{
++}
++
++%name pGrammar
++
++%tokentype { String }
++%error { parseError }
++
++%token
++ 'a' { "a" }
++
++%%
++
++Grammar :: { () }
++Grammar : 'a' 'a' { () }
++
++{
++
++parseError :: [String] -> a
++-- commenting out the below line gets rid of the "Internal Happy Error"
++parseError ("":_) = error "bar"
++parseError _ = error "foo"
++
++main :: IO ()
++main = print $ pGrammar ["a"]
++
++}
+--- /dev/null 2012-02-07 10:04:42.144206507 +1100
++++ happy-1.18.9/tests/monaderror.y 2012-02-07 20:50:47.015316467 +1100
+@@ -0,0 +1,57 @@
++{
++module Main where
++
++import Data.Char
++import Control.Monad.Error
++import System.Exit
++}
++
++%name parseFoo
++%tokentype { Token }
++%error { handleError }
++
++%monad { ParseM } { (>>=) } { return }
++
++%token
++ 'S' { TokenSucc }
++ 'Z' { TokenZero }
++
++%%
++
++Exp : 'Z' { 0 }
++ | 'S' Exp { $2 + 1 }
++
++{
++
++type ParseM a = Either ParseError a
++data ParseError
++ = ParseError (Maybe Token)
++ | StringError String
++ deriving (Eq,Show)
++instance Error ParseError where
++ strMsg = StringError
++
++data Token
++ = TokenSucc
++ | TokenZero
++ deriving (Eq,Show)
++
++handleError :: [Token] -> ParseM a
++handleError [] = throwError $ ParseError Nothing
++handleError ts = throwError $ ParseError $ Just $ head ts
++
++lexer :: String -> [Token]
++lexer [] = []
++lexer (c:cs)
++ | isSpace c = lexer cs
++ | c == 'S' = TokenSucc:(lexer cs)
++ | c == 'Z' = TokenZero:(lexer cs)
++ | otherwise = error "lexer error"
++
++main :: IO ()
++main = do
++ let tokens = lexer "S S"
++ when (parseFoo tokens /= Left (ParseError Nothing)) $ do
++ print (parseFoo tokens)
++ exitWith (ExitFailure 1)
++}
diff --git a/dev-haskell/happy/files/happy-1.19.5-ghc-7.10.2.patch b/dev-haskell/happy/files/happy-1.19.5-ghc-7.10.2.patch
new file mode 100644
index 000000000000..dee216b029fb
--- /dev/null
+++ b/dev-haskell/happy/files/happy-1.19.5-ghc-7.10.2.patch
@@ -0,0 +1,27 @@
+I'm not sure if it's a ghc feature or a bug.
+Should happy emable that extension for -g option?
+
+The build error is Kind mismatch:
+
+ monad002.g.hs:296:26:
+ Couldn't match kind ‘*’ with ‘#’
+ When matching types
+ t0 :: *
+ Happy_GHC_Exts.Int# :: #
+ Relevant bindings include
+ cont :: t0 -> [Char] -> Int -> ParseResult a
+ (bound at monad002.g.hs:293:13)
+ In the first argument of ‘cont’, namely ‘8#’
+ In the expression: cont 8#
+ In a case alternative: TokenLet -> cont 8#
+
+Slightly related bug: https://ghc.haskell.org/trac/ghc/ticket/8739
+
+diff --git a/tests/monad002.ly b/tests/monad002.ly
+index 35cc5b0..4c526ca 100644
+--- a/tests/monad002.ly
++++ b/tests/monad002.ly
+@@ -5,2 +5,3 @@ Test for monadic Happy Parsers, Simon Marlow 1996.
+ > {-# OPTIONS_GHC -fglasgow-exts #-}
++> {-# LANGUAGE MonoLocalBinds #-}
+ > -- -fglasgow-exts required because P is a type synonym, and Happy uses it
diff --git a/dev-haskell/happy/happy-1.18.10.ebuild b/dev-haskell/happy/happy-1.18.10.ebuild
new file mode 100644
index 000000000000..cdd99e16b3e7
--- /dev/null
+++ b/dev-haskell/happy/happy-1.18.10.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+CABAL_FEATURES="bin"
+inherit base eutils haskell-cabal autotools
+
+DESCRIPTION="Happy is a parser generator for Haskell"
+HOMEPAGE="http://www.haskell.org/happy/"
+SRC_URI="mirror://hackage/packages/archive/${PN}/${PV}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="alpha amd64 ia64 ppc ppc64 sparc x86"
+IUSE="doc"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.2.3
+ >=dev-haskell/mtl-1.0
+ >=dev-lang/ghc-6.8.2 <dev-lang/ghc-7.8
+ doc? ( ~app-text/docbook-xml-dtd-4.2
+ app-text/docbook-xsl-stylesheets )"
+
+PATCHES=("${FILESDIR}/${PN}-1.18.6-man.patch"
+ "${FILESDIR}/${PN}-1.18.9-missing-tests.patch")
+
+src_prepare() {
+ base_src_prepare
+
+ use doc && cd doc && eautoconf
+}
+
+src_configure() {
+ cabal_src_configure
+
+ if use doc; then
+ cd doc && econf || die "econf failed in /doc"
+ fi
+}
+
+src_compile() {
+ cabal_src_compile
+
+ if use doc; then
+ cd doc && emake -j1 || die "emake failed in /doc"
+ fi
+}
+
+src_test() {
+ emake -C "${S}/tests/" || die "emake for tests failed"
+}
+
+src_install() {
+ cabal_src_install
+ if use doc; then
+ cd doc
+ dohtml -r happy/*
+ doman "${S}/doc/happy.1"
+ fi
+}
diff --git a/dev-haskell/happy/happy-1.19.3.ebuild b/dev-haskell/happy/happy-1.19.3.ebuild
new file mode 100644
index 000000000000..b7bb3d385676
--- /dev/null
+++ b/dev-haskell/happy/happy-1.19.3.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+# ebuild generated by hackport 0.3.4.9999
+
+CABAL_FEATURES="bin test-suite"
+inherit eutils haskell-cabal autotools
+
+DESCRIPTION="Happy is a parser generator for Haskell"
+HOMEPAGE="http://www.haskell.org/happy/"
+SRC_URI="mirror://hackage/packages/archive/${PN}/${PV}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="doc"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.8
+ >=dev-haskell/mtl-1.0
+ >=dev-lang/ghc-6.10.4
+ doc? ( ~app-text/docbook-xml-dtd-4.2
+ app-text/docbook-xsl-stylesheets )
+"
+
+src_prepare() {
+ for f in AttrGrammarParser Parser; do
+ # drop broken autogenerated
+ mv "dist/build/happy/happy-tmp/$f.hs" src/ || die
+ # drop depend on itself, otherwise cabal tries to regenerate it
+ rm "src/$f.ly" || die
+ done
+ use doc && cd doc && eautoconf
+}
+
+src_configure() {
+ # '--with-happy=false' allows detecting circular
+ # depends even when 'happy' is installed in system
+ haskell-cabal_src_configure --with-happy=false
+
+ if use doc; then
+ # does not like out-of-source builds
+ cd doc || die
+ econf
+ fi
+}
+
+src_compile() {
+ haskell-cabal_src_compile
+
+ if use doc; then
+ emake -C doc -j1
+ fi
+}
+
+src_install() {
+ haskell-cabal_src_install
+ if use doc; then
+ cd doc || die
+ dohtml -r happy/*
+ doman "${S}/doc/happy.1"
+ fi
+}
diff --git a/dev-haskell/happy/happy-1.19.4.ebuild b/dev-haskell/happy/happy-1.19.4.ebuild
new file mode 100644
index 000000000000..df7dc81d75c8
--- /dev/null
+++ b/dev-haskell/happy/happy-1.19.4.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+# ebuild generated by hackport 0.3.4.9999
+
+CABAL_FEATURES="bin test-suite"
+inherit eutils haskell-cabal autotools
+
+DESCRIPTION="Happy is a parser generator for Haskell"
+HOMEPAGE="http://www.haskell.org/happy/"
+SRC_URI="mirror://hackage/packages/archive/${PN}/${PV}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="alpha amd64 ia64 ppc ppc64 sparc x86"
+IUSE="doc"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.8
+ >=dev-haskell/mtl-1.0
+ >=dev-lang/ghc-6.10.4
+ doc? ( ~app-text/docbook-xml-dtd-4.2
+ app-text/docbook-xsl-stylesheets )
+"
+
+src_prepare() {
+ for f in AttrGrammarParser Parser; do
+ # drop broken autogenerated
+ mv "dist/build/happy/happy-tmp/$f.hs" src/ || die
+ # drop depend on itself, otherwise cabal tries to regenerate it
+ rm "src/$f.ly" || die
+ done
+ use doc && cd doc && eautoconf
+}
+
+src_configure() {
+ # '--with-happy=false' allows detecting circular
+ # depends even when 'happy' is installed in system
+ haskell-cabal_src_configure --with-happy=false
+
+ if use doc; then
+ # does not like out-of-source builds
+ cd doc || die
+ econf
+ fi
+}
+
+src_compile() {
+ haskell-cabal_src_compile
+
+ if use doc; then
+ emake -C doc -j1
+ fi
+}
+
+src_install() {
+ haskell-cabal_src_install
+ if use doc; then
+ cd doc || die
+ dohtml -r happy/*
+ doman "${S}/doc/happy.1"
+ fi
+}
diff --git a/dev-haskell/happy/happy-1.19.5.ebuild b/dev-haskell/happy/happy-1.19.5.ebuild
new file mode 100644
index 000000000000..6e63037dc8a4
--- /dev/null
+++ b/dev-haskell/happy/happy-1.19.5.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+# ebuild generated by hackport 0.3.4.9999
+
+CABAL_FEATURES="bin test-suite"
+inherit eutils haskell-cabal autotools
+
+DESCRIPTION="Happy is a parser generator for Haskell"
+HOMEPAGE="http://www.haskell.org/happy/"
+SRC_URI="mirror://hackage/packages/archive/${PN}/${PV}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="doc"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.8
+ >=dev-haskell/mtl-1.0
+ >=dev-lang/ghc-6.10.4
+ doc? ( ~app-text/docbook-xml-dtd-4.2
+ app-text/docbook-xsl-stylesheets )
+"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-1.19.5-ghc-7.10.2.patch
+
+ for f in AttrGrammarParser Parser; do
+ # drop broken autogenerated
+ mv "dist/build/happy/happy-tmp/$f.hs" src/ || die
+ # drop depend on itself, otherwise cabal tries to regenerate it
+ rm "src/$f.ly" || die
+ done
+ use doc && cd doc && eautoconf
+}
+
+src_configure() {
+ # '--with-happy=false' allows detecting circular
+ # depends even when 'happy' is installed in system
+ haskell-cabal_src_configure --with-happy=false
+
+ if use doc; then
+ # does not like out-of-source builds
+ cd doc || die
+ econf
+ fi
+}
+
+src_compile() {
+ haskell-cabal_src_compile
+
+ if use doc; then
+ emake -C doc -j1
+ fi
+}
+
+src_test() {
+ # workaround https://github.com/haskell/cabal/issues/2398
+ emake -k -C tests all || die
+}
+
+src_install() {
+ haskell-cabal_src_install
+ if use doc; then
+ cd doc || die
+ dohtml -r happy/*
+ doman "${S}/doc/happy.1"
+ fi
+}
diff --git a/dev-haskell/happy/metadata.xml b/dev-haskell/happy/metadata.xml
new file mode 100644
index 000000000000..1a2ff416b8e8
--- /dev/null
+++ b/dev-haskell/happy/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>haskell</herd>
+ <longdescription>
+ Happy is a parser generator for Haskell
+ </longdescription>
+</pkgmetadata>