{-# LANGUAGE OverloadedStrings #-}

module Distribution.Nixpkgs.Haskell.FromCabal.Flags ( configureCabalFlags ) where

import Distribution.Nixpkgs.Haskell.OrphanInstances ( )

import Data.Char
import Distribution.Package
import Distribution.PackageDescription
import Distribution.Version

configureCabalFlags :: PackageIdentifier -> FlagAssignment
configureCabalFlags :: PackageIdentifier -> FlagAssignment
configureCabalFlags = [(FlagName, Bool)] -> FlagAssignment
mkFlagAssignment ([(FlagName, Bool)] -> FlagAssignment)
-> (PackageIdentifier -> [(FlagName, Bool)])
-> PackageIdentifier
-> FlagAssignment
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PackageIdentifier -> [(FlagName, Bool)]
configureCabalFlags'

configureCabalFlags' :: PackageIdentifier -> [(FlagName,Bool)]
configureCabalFlags' :: PackageIdentifier -> [(FlagName, Bool)]
configureCabalFlags' (PackageIdentifier PackageName
name Version
version)
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"accelerate-examples"= [String -> (FlagName, Bool)
disable String
"opencl"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"arithmoi"           = [String -> (FlagName, Bool)
disable String
"llvm"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"bustle"             = [String -> (FlagName, Bool)
disable String
"hgettext"] -- https://gitlab.freedesktop.org/bustle/bustle/issues/13
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"cabal-plan"         = [String -> (FlagName, Bool)
enable String
"exe"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"cassava"            = [String -> (FlagName, Bool)
disable String
"bytestring--lt-0_10_4"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"darcs"              = [String -> (FlagName, Bool)
enable String
"library", String -> (FlagName, Bool)
enable String
"force-char8-encoding"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"diagrams-builder"   = [String -> (FlagName, Bool)
enable String
"cairo", String -> (FlagName, Bool)
enable String
"svg", String -> (FlagName, Bool)
enable String
"ps", String -> (FlagName, Bool)
enable String
"rasterific"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"fltkhs"             = [String -> (FlagName, Bool)
enable String
"opengl"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"folds"              = [String -> (FlagName, Bool)
disable String
"test-hlint"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"git-annex"          = [ String -> (FlagName, Bool)
enable String
"assistant"
                                  , String -> (FlagName, Bool)
disable String
"benchmark"
                                  , String -> (FlagName, Bool)
enable String
"dbus"
                                  , String -> (FlagName, Bool)
disable String
"debuglocks"
                                  , String -> (FlagName, Bool)
enable String
"magicmime"
                                  , String -> (FlagName, Bool)
enable String
"networkbsd"
                                  , String -> (FlagName, Bool)
enable String
"pairing"
                                  , String -> (FlagName, Bool)
enable String
"production"
                                  , String -> (FlagName, Bool)
enable String
"s3"
                                  , String -> (FlagName, Bool)
enable String
"torrentparser"
                                  , String -> (FlagName, Bool)
enable String
"webapp"
                                  , String -> (FlagName, Bool)
enable String
"webdav"
                                  ]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"haskeline"          = [String -> (FlagName, Bool)
enable String
"terminfo"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"haste-compiler"     = [String -> (FlagName, Bool)
enable String
"portable"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"highlighting-kate"  = [String -> (FlagName, Bool)
enable String
"pcre-light"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"hlibsass" Bool -> Bool -> Bool
&& Version
version Version -> Version -> Bool
forall a. Ord a => a -> a -> Bool
>= [Int] -> Version
mkVersion [Int
0,Int
1,Int
5]
                                = [String -> (FlagName, Bool)
enable String
"externalLibsass"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"hmatrix"            = [String -> (FlagName, Bool)
enable String
"openblas", String -> (FlagName, Bool)
enable String
"disable-default-paths"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"hslua"              = [String -> (FlagName, Bool)
enable String
"system-lua", String -> (FlagName, Bool)
disable String
"use-pkgconfig"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"idris"              = [String -> (FlagName, Bool)
enable String
"gmp", String -> (FlagName, Bool)
enable String
"ffi", String -> (FlagName, Bool)
enable String
"curses", (FlagName
"execonly", Version
version Version -> VersionRange -> Bool
`withinRange` Version -> VersionRange
orLaterVersion ([Int] -> Version
mkVersion [Int
1,Int
1,Int
1])) ]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"io-streams"         = [String -> (FlagName, Bool)
enable String
"NoInteractiveTests"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"liquid-fixpoint"    = [String -> (FlagName, Bool)
enable String
"build-external"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"pandoc"             = [String -> (FlagName, Bool)
enable String
"https", String -> (FlagName, Bool)
disable String
"trypandoc"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"pandoc-placetable"  = [String -> (FlagName, Bool)
enable String
"inlineMarkdown"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"persistent-sqlite"  = [String -> (FlagName, Bool)
enable String
"systemlib"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"reactive-banana-wx" = [String -> (FlagName, Bool)
disable String
"buildExamples"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"skylighting"        = [String -> (FlagName, Bool)
enable String
"executable"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"snap-server"        = [String -> (FlagName, Bool)
enable String
"openssl"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"stack"              = [String -> (FlagName, Bool)
enable String
"disable-git-info", String -> (FlagName, Bool)
enable String
"hide-dependency-versions", String -> (FlagName, Bool)
enable String
"supported-build"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"xmobar"             = [String -> (FlagName, Bool)
enable String
"with_alsa", String -> (FlagName, Bool)
enable String
"with_conduit", String -> (FlagName, Bool)
enable String
"with_datezone", String -> (FlagName, Bool)
enable String
"with_dbus", String -> (FlagName, Bool)
enable String
"with_inotify", String -> (FlagName, Bool)
enable String
"with_iwlib", String -> (FlagName, Bool)
enable String
"with_mpd", String -> (FlagName, Bool)
enable String
"with_mpris", String -> (FlagName, Bool)
enable String
"with_rtsopts", String -> (FlagName, Bool)
enable String
"with_threaded", String -> (FlagName, Bool)
enable String
"with_utf8", String -> (FlagName, Bool)
enable String
"with_uvmeter", String -> (FlagName, Bool)
enable String
"with_weather", String -> (FlagName, Bool)
enable String
"with_xft", String -> (FlagName, Bool)
enable String
"with_xpm"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"xmonad-extras"      = [String -> (FlagName, Bool)
disable String
"with_hlist", String -> (FlagName, Bool)
enable String
"with_split", String -> (FlagName, Bool)
enable String
"with_parsec"]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"yaml"               = [(FlagName
"system-libyaml", Version
version Version -> Version -> Bool
forall a. Ord a => a -> a -> Bool
>= Version
"0.10.1.1")]
 | PackageName
name PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
"yi"                 = [String -> (FlagName, Bool)
enable String
"pango", String -> (FlagName, Bool)
enable String
"vty"]
 | Bool
otherwise                    = []

enable :: String -> (FlagName,Bool)
enable :: String -> (FlagName, Bool)
enable String
name = (String -> FlagName
mkFlagName' String
name, Bool
True)

disable :: String -> (FlagName,Bool)
disable :: String -> (FlagName, Bool)
disable String
name = (String -> FlagName
mkFlagName' String
name, Bool
False)

mkFlagName' :: String -> FlagName
mkFlagName' :: String -> FlagName
mkFlagName' = String -> FlagName
mkFlagName (String -> FlagName) -> (String -> String) -> String -> FlagName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
map Char -> Char
toLower