cabal2nix 1.61 → 1.63
raw patch · 9 files changed
+67/−27 lines, 9 files
Files
- cabal2nix.cabal +4/−4
- src/Cabal2Nix/Flags.hs +1/−1
- src/Cabal2Nix/Generate.hs +1/−0
- src/Cabal2Nix/Hackage.hs +1/−1
- src/Cabal2Nix/Name.hs +4/−0
- src/Cabal2Nix/PostProcess.hs +42/−19
- src/Distribution/NixOS/Derivation/Cabal.hs +3/−1
- src/cabal2nix.hs +1/−1
- src/hackage4nix.hs +10/−0
cabal2nix.cabal view
@@ -1,5 +1,5 @@ Name: cabal2nix-Version: 1.61+Version: 1.63 Copyright: Peter Simons, Andres Loeh License: BSD3 License-File: LICENSE@@ -10,7 +10,7 @@ Synopsis: Convert Cabal files into Nix build instructions Cabal-Version: >= 1.8 Build-Type: Custom-Tested-With: GHC >= 6.12.3 && <= 7.6.3+Tested-With: GHC >= 6.10.4 && <= 7.8.2 Data-files: README.md Description: The @cabal2nix@ utility converts Cabal files into Nix build instructions. The@@ -34,8 +34,8 @@ . The only required argument is the path to the cabal file. For example: .- > cabal2nix http://hackage.haskell.org/packages/archive/cabal2nix/1.61/cabal2nix.cabal- > cabal2nix cabal://cabal2nix-1.61+ > cabal2nix http://hackage.haskell.org/packages/archive/cabal2nix/1.63/cabal2nix.cabal+ > cabal2nix cabal://cabal2nix-1.63 . If the @--sha256@ option has not been specified, cabal2nix calls @nix-prefetch-url@ to determine the hash automatically. This causes
src/Cabal2Nix/Flags.hs view
@@ -15,7 +15,7 @@ | name == "idris" = [enable "llvm", enable "gmp", enable "ffi"] | name == "io-streams" = [enable "NoInteractiveTests"] | name == "reactive-banana-wx" = [disable "buildExamples"]- | name == "xmobar" = [enable "with_xft", enable "with_iwlib", enable "with_alsa"]+ | name == "xmobar" = [enable "all_extensions"] | name == "xmonad-extras" = [disable "with_hlist", enable "with_split", enable "with_parsec"] | name == "yi" = [enable "pango"] | otherwise = []
src/Cabal2Nix/Generate.hs view
@@ -20,6 +20,7 @@ , sha256 = "cabal2nix left the sha256 field undefined" , isLibrary = isJust (Cabal.library tpkg) , isExecutable = not (null (Cabal.executables tpkg))+ , extraFunctionArgs = [] , buildDepends = map unDep deps , testDepends = map unDep tstDeps ++ concatMap Cabal.extraLibs tests , buildTools = map unDep tools
src/Cabal2Nix/Hackage.hs view
@@ -76,7 +76,7 @@ fetchUrl :: String -> IO String fetchUrl url = do- (_,rsp) <- Network.Browser.browse $ do+ (_,rsp) <- browse $ do setCheckForProxy True setDebugLog Nothing setOutHandler (\_ -> return ())
src/Cabal2Nix/Name.hs view
@@ -20,10 +20,12 @@ libNixName "adns" = return "adns" libNixName "alsa" = return "alsaLib" libNixName "asound" = return "alsaLib"+libNixName "bz2" = return "bzip2" libNixName "cairo-pdf" = return "cairo" libNixName "cairo-ps" = return "cairo" libNixName "cairo" = return "cairo" libNixName "cairo-svg" = return "cairo"+libNixName "crypt" = [] -- provided by glibc libNixName "crypto" = return "openssl" libNixName "dl" = [] -- provided by glibc libNixName "gconf-2.0" = return "gconf"@@ -54,6 +56,7 @@ libNixName "idn" = return "libidn" libNixName "IL" = return "libdevil" libNixName "iw" = return "wirelesstools"+libNixName "jack" = return "jackaudio" libNixName "jpeg" = return "libjpeg" libNixName "libglade-2.0" = return "libglade" libNixName "libgsasl" = return "gsasl"@@ -84,6 +87,7 @@ libNixName "Xrandr" = return "libXrandr" libNixName "Xss" = return "libXScrnSaver" libNixName "Xtst" = return "libXtst"+libNixName "Xxf86vm" = return "libXxf86vm" libNixName "zmq" = return "zeromq" libNixName "z" = return "zlib" libNixName x = return x
src/Cabal2Nix/PostProcess.hs view
@@ -14,6 +14,7 @@ = deriv { buildTools = "perl":buildTools } | pname == "alex" && version >= Version [3,1] [] = deriv { buildTools = "perl":"happy":buildTools }+ | pname == "bindings-GLFW" = deriv { extraLibs = "libXext":"libXfixes":extraLibs } | pname == "cabal2nix" = deriv { doCheck = True, phaseOverrides = cabal2nixDoCheckHook } | pname == "cabal-install" && version >= Version [0,14] [] = deriv { phaseOverrides = cabalInstallPostInstall }@@ -36,19 +37,25 @@ | pname == "gloss-raster" = deriv { extraLibs = "llvm":extraLibs } | pname == "GLUT" = deriv { extraLibs = "glut":"libSM":"libICE":"libXmu":"libXi":"mesa":extraLibs } | pname == "gtk" = deriv { extraLibs = "pkgconfig":"libc":extraLibs, buildDepends = delete "gio" buildDepends }+ | pname == "gtk2hs-buildtools"= deriv { buildDepends = "hashtables":buildDepends } | pname == "gtksourceview2" = deriv { extraLibs = "pkgconfig":"libc":extraLibs }- | pname == "haddock" = deriv { buildTools = "alex":"happy":buildTools }+ | pname == "haddock" && version < Version [2,14] []+ = deriv { buildTools = "alex":"happy":buildTools } | pname == "happy" = deriv { buildTools = "perl":buildTools } | pname == "haskeline" = deriv { buildDepends = "utf8String":buildDepends } | pname == "haskell-src" = deriv { buildTools = "happy":buildTools } | pname == "haskell-src-meta" = deriv { buildDepends = "uniplate":buildDepends } | pname == "hflags" = deriv { metaSection = metaSection { license = Unknown (Just "Apache-2.0") } }+ | pname == "hfsevents" = deriv { buildTools = "gccApple":buildTools, phaseOverrides = "configureFlags = \"--ghc-option=-pgmc=${gccApple}/bin/gcc\";" } | pname == "HFuse" = deriv { phaseOverrides = hfusePreConfigure } | pname == "highlighting-kate"= highlightingKatePostProcessing deriv | pname == "HList" = deriv { buildTools = "diffutils":buildTools } | pname == "hmatrix" = deriv { extraLibs = "gsl":"liblapack":"blas":extraLibs } | pname == "hoogle" = deriv { testTarget = "--test-option=--no-net" } | pname == "hspec" = deriv { doCheck = False }+ | pname == "HTTP" && version >= Version [4000,2,14] []+ = deriv { runHaddock = True, phaseOverrides = httpNoHaddock }+ | pname == "GlomeVec" = deriv { buildTools = "llvm":buildTools } | pname == "idris" = deriv { buildTools = "happy":buildTools, extraLibs = "gmp":"boehmgc":extraLibs } | pname == "language-c-quote" = deriv { buildTools = "alex":"happy":buildTools } | pname == "language-java" = deriv { buildDepends = "syb":buildDepends }@@ -58,8 +65,10 @@ | pname == "llvm-base" = deriv { extraLibs = "llvm":extraLibs } | pname == "llvm-general" = deriv { doCheck = False } | pname == "llvm-general-pure"= deriv { doCheck = False }+ | pname == "MFlow" = deriv { buildTools = "cpphs":buildTools } | pname == "markdown-unlit" = deriv { runHaddock = True, phaseOverrides = markdownUnlitNoHaddock } | pname == "multiarg" = deriv { buildDepends = "utf8String":buildDepends }+ | pname == "mime-mail" = deriv { extraFunctionArgs = ["sendmail ? \"sendmail\""], phaseOverrides = mimeMailConfigureFlags } | pname == "mysql" = deriv { buildTools = "mysqlConfig":buildTools, extraLibs = "zlib":extraLibs } | pname == "ncurses" = deriv { phaseOverrides = ncursesPatchPhase } | pname == "OpenAL" = deriv { extraLibs = "openal":extraLibs }@@ -69,17 +78,27 @@ | pname == "pcap" = deriv { extraLibs = "libpcap":extraLibs } | pname == "persistent" = deriv { extraLibs = "sqlite3":extraLibs } | pname == "poppler" = deriv { extraLibs = "libc":extraLibs }+ | pname == "QuickCheck" && version >= Version [2,7,3] []+ = deriv { runHaddock = True, phaseOverrides = quickCheckNoHaddock } | pname == "repa-algorithms" = deriv { extraLibs = "llvm":extraLibs } | pname == "repa-examples" = deriv { extraLibs = "llvm":extraLibs } | pname == "SDL-image" = deriv { extraLibs = "SDL_image":extraLibs } | pname == "SDL-mixer" = deriv { extraLibs = "SDL_mixer":extraLibs } | pname == "SDL-ttf" = deriv { extraLibs = "SDL_ttf":extraLibs } | pname == "sloane" = deriv { phaseOverrides = sloanePostInstall }+ | pname == "split" && version == Version [0,2,2] []+ = deriv { doCheck = True, phaseOverrides = splitDoCheck } | pname == "structured-haskell-mode" = deriv { buildTools = "emacs":buildTools, phaseOverrides = structuredHaskellModePostInstall } | pname == "svgcairo" = deriv { extraLibs = "libc":extraLibs }+ | pname == "syb" && version == Version [0,4,2] []+ = deriv { doCheck = True, phaseOverrides = sybDoCheck }+ | pname == "tar" = deriv { runHaddock = True, phaseOverrides = tarNoHaddock } | pname == "terminfo" = deriv { extraLibs = "ncurses":extraLibs }+ | pname == "text-icu" = deriv { doCheck = True, phaseOverrides = textIcuDoCheckHook } | pname == "threadscope" = deriv { configureFlags = "--ghc-options=-rtsopts":configureFlags }- | pname == "trifecta" = deriv { phaseOverrides = trifectaPostPatch }+ | pname == "transformers" && version >= Version [0,4,1] []+ = deriv { runHaddock = True, phaseOverrides = transformersNoHaddock }+ | pname == "tz" = deriv { extraFunctionArgs = ["pkgs_tzdata"], phaseOverrides = "preConfigure = \"export TZDIR=${pkgs_tzdata}/share/zoneinfo\";" } | pname == "unix-time" = deriv { phaseOverrides = unixTimeConfigureFlags } | pname == "vacuum" = deriv { extraLibs = "ghcPaths":extraLibs } | pname == "wxc" = deriv { extraLibs = "wxGTK":"mesa":"libX11":extraLibs, phaseOverrides = wxcPostInstall }@@ -122,7 +141,8 @@ ghcModPostInstall :: String ghcModPostInstall = unlines- [ "postInstall = ''"+ [ "configureFlags = \"--datasubdir=${self.pname}-${self.version}\";"+ , "postInstall = ''" , " cd $out/share/$pname-$version" , " make" , " rm Makefile"@@ -165,7 +185,7 @@ highlightingKatePostProcessing :: Derivation -> Derivation highlightingKatePostProcessing deriv@(MkDerivation {..}) = deriv- { phaseOverrides = "prePatch = \"sed -i -e 's|regex-pcre-builtin|regex-pcre|' highlighting-kate.cabal\";"+ { phaseOverrides = "prePatch = \"sed -i -e 's|regex-pcre-builtin >= .*|regex-pcre|' highlighting-kate.cabal\";" , buildDepends = "regex-pcre" : filter (/="regex-pcre-builtin") buildDepends } @@ -227,21 +247,6 @@ ncursesPatchPhase :: String ncursesPatchPhase = "patchPhase = \"find . -type f -exec sed -i -e 's|ncursesw/||' {} \\\\;\";" -trifectaPostPatch :: String-trifectaPostPatch = unlines- [ "postPatch = ''"- , " substituteInPlace trifecta.cabal \\"- , " --replace \"blaze-html >= 0.5 && < 0.6,\" \"blaze-html >= 0.5 && < 0.8,\" \\"- , " --replace \"blaze-html >= 0.5 && < 0.7,\" \"blaze-html >= 0.5 && < 0.8,\" \\"- , " --replace \"blaze-markup >= 0.5 && < 0.6,\" \"blaze-markup >= 0.5 && < 0.7,\" \\"- , " --replace \"hashable >= 1.2.1 && < 1.3,\" \"hashable >= 1.1 && < 1.3,\" \\"- , " --replace \"hashable >= 1.2 && < 1.3,\" \"hashable >= 1.1 && < 1.3,\" \\"- , " --replace \"fingertree >= 0.0.1 && < 0.1,\" \"fingertree >= 0.0.1 && < 0.2,\" \\"- , " --replace \"comonad == 3.*,\" \"comonad >= 3 && < 5,\" \\"- , " --replace \"comonad >= 3 && < 4,\" \"comonad >= 3 && < 5,\""- , "'';"- ]- doctestNoHaddock, markdownUnlitNoHaddock :: String markdownUnlitNoHaddock = "noHaddock = self.stdenv.lib.versionOlder self.ghc.version \"7.4\";" doctestNoHaddock = markdownUnlitNoHaddock@@ -249,9 +254,18 @@ cabal2nixDoCheckHook :: String cabal2nixDoCheckHook = "doCheck = self.stdenv.lib.versionOlder \"7.6\" self.ghc.version;" +textIcuDoCheckHook :: String+textIcuDoCheckHook = "doCheck = !self.stdenv.isDarwin;"+ eitherNoHaddock :: String eitherNoHaddock = "noHaddock = self.stdenv.lib.versionOlder self.ghc.version \"7.6\";" +httpNoHaddock, quickCheckNoHaddock, tarNoHaddock :: String+httpNoHaddock = "noHaddock = self.stdenv.lib.versionOlder self.ghc.version \"6.11\";"+quickCheckNoHaddock = httpNoHaddock+tarNoHaddock = httpNoHaddock+transformersNoHaddock = httpNoHaddock+ agdaPostInstall :: String agdaPostInstall = unlines [ "postInstall = ''"@@ -279,3 +293,12 @@ , " cp sloane.1 $out/share/man/man1/" , "'';" ]++mimeMailConfigureFlags :: String+mimeMailConfigureFlags = unlines+ [ "configureFlags = \"--ghc-option=-DMIME_MAIL_SENDMAIL_PATH=\\\"${sendmail}\\\"\";"+ ]++sybDoCheck, splitDoCheck :: String+sybDoCheck = "doCheck = self.stdenv.lib.versionOlder self.ghc.version \"7.9\";"+splitDoCheck = sybDoCheck
src/Distribution/NixOS/Derivation/Cabal.hs view
@@ -46,6 +46,7 @@ , sha256 :: String , isLibrary :: Bool , isExecutable :: Bool+ , extraFunctionArgs :: [String] , buildDepends :: [String] , testDepends :: [String] , buildTools :: [String]@@ -97,7 +98,7 @@ ] where inputs = nub $ sortBy (compare `on` map toLower) $ filter (/="cabal") $ filter (not . isPrefixOf "self.") $- buildDepends deriv ++ testDepends deriv ++ buildTools deriv ++ extraLibs deriv ++ pkgConfDeps deriv+ buildDepends deriv ++ testDepends deriv ++ buildTools deriv ++ extraLibs deriv ++ pkgConfDeps deriv ++ extraFunctionArgs deriv renderedFlags = [ text "-f" <> (if enable then empty else char '-') <> text f | (FlagName f, enable) <- cabalFlags deriv ] ++ map text (configureFlags deriv) @@ -124,6 +125,7 @@ , sha256 = sha , isLibrary = False , isExecutable = False+ , extraFunctionArgs = [] , buildDepends = [] , testDepends = [] , buildTools = []
src/cabal2nix.hs view
@@ -42,7 +42,7 @@ options :: [OptDescr (Configuration -> Configuration)] options = [ Option "h" ["help"] (NoArg (\o -> o { optPrintHelp = True })) "show this help text"- , Option "" ["sha256"] (ReqArg (\x o -> o { optSha256 = Just x }) "HASH") "sha256 hash of source tarball"+ , Option "" ["sha256"] (ReqArg (\x o -> o { optSha256 = Just x }) "HASH") "sha256 hash of source tarball" , Option "m" ["maintainer"] (ReqArg (\x o -> o { optMaintainer = x : optMaintainer o }) "MAINTAINER") "maintainer of this package (may be specified multiple times)" , Option "p" ["platform"] (ReqArg (\x o -> o { optPlatform = x : optPlatform o }) "PLATFORM") "supported build platforms (may be specified multiple times)" , Option "" ["no-haddock"] (NoArg (\o -> o { optHaddock = False })) "don't run Haddock when building this package"
src/hackage4nix.hs view
@@ -228,4 +228,14 @@ , "top-level/all-packages.nix", "top-level/haskell-packages.nix" -- This build is way too complicated to maintain it automatically. , "pkgs/development/compilers/pakcs/default.nix"+ -- Requires platform-specific magic that I don't want to add to cabal2nix.+ , "pkgs/development/libraries/haskell/fsnotify/default.nix"+ -- Not registered on Hackage.+ , "pkgs/development/compilers/agda/stdlib.nix"+ , "pkgs/development/compilers/cryptol/1.8.x.nix"+ , "pkgs/development/compilers/cryptol/2.0.x.nix"+ , "pkgs/development/compilers/jhc/default.nix"+ , "pkgs/development/tools/haskell/cabal-delete/default.nix"+ , "pkgs/tools/networking/sproxy-web/default.nix"+ , "pkgs/tools/networking/sproxy/default.nix" ]