packages feed

cabal2nix 2.9.3 → 2.10.0

raw patch · 7 files changed

+216/−212 lines, 7 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Cabal2nix: instance GHC.Show.Show Cabal2nix.Options
+ Cabal2nix: Options :: Maybe String -> [String] -> Bool -> Bool -> Bool -> Bool -> Maybe String -> Bool -> Bool -> Bool -> Maybe Bool -> [String] -> Maybe FilePath -> Bool -> [String] -> CompilerId -> Platform -> Maybe FilePath -> Maybe UTCTime -> NixpkgsResolver -> String -> Options
+ Cabal2nix: [optCompiler] :: Options -> CompilerId
+ Cabal2nix: [optDoCheck] :: Options -> Bool
+ Cabal2nix: [optEnableExecutableProfiling] :: Options -> Bool
+ Cabal2nix: [optEnableLibraryProfiling] :: Options -> Bool
+ Cabal2nix: [optEnableProfiling] :: Options -> Maybe Bool
+ Cabal2nix: [optExtraArgs] :: Options -> [String]
+ Cabal2nix: [optFlags] :: Options -> [String]
+ Cabal2nix: [optHackageDb] :: Options -> Maybe FilePath
+ Cabal2nix: [optHackageSnapshot] :: Options -> Maybe UTCTime
+ Cabal2nix: [optHaddock] :: Options -> Bool
+ Cabal2nix: [optHpack] :: Options -> Bool
+ Cabal2nix: [optHyperlinkSource] :: Options -> Bool
+ Cabal2nix: [optJailbreak] :: Options -> Bool
+ Cabal2nix: [optMaintainer] :: Options -> [String]
+ Cabal2nix: [optNixShellOutput] :: Options -> Bool
+ Cabal2nix: [optNixpkgsIdentifier] :: Options -> NixpkgsResolver
+ Cabal2nix: [optRevision] :: Options -> Maybe String
+ Cabal2nix: [optSha256] :: Options -> Maybe String
+ Cabal2nix: [optSubpath] :: Options -> Maybe FilePath
+ Cabal2nix: [optSystem] :: Options -> Platform
+ Cabal2nix: [optUrl] :: Options -> String
+ Cabal2nix: data Options
+ Cabal2nix: parseArgs :: [String] -> IO Options
+ Distribution.Nixpkgs.Haskell.Hackage: parsePackageData :: HackageDB -> PackageName -> PackageData -> PackageData
- Cabal2nix: cabal2nix' :: [String] -> IO (Either Doc Derivation)
+ Cabal2nix: cabal2nix' :: Options -> IO (Either Doc Derivation)
- Cabal2nix: cabal2nixWithDB :: HackageDB -> [String] -> IO (Either Doc Derivation)
+ Cabal2nix: cabal2nixWithDB :: HackageDB -> Options -> IO (Either Doc Derivation)

Files

cabal2nix.cabal view
@@ -1,206 +1,204 @@-name:           cabal2nix-version:        2.9.3-synopsis:       Convert Cabal files into Nix build instructions.-category:       Distribution, Nix-stability:      stable-homepage:       https://github.com/nixos/cabal2nix#readme-bug-reports:    https://github.com/nixos/cabal2nix/issues-author:         Peter Simons,-                Andres Loeh,-                Benno Fünfstück,-                Mateusz Kowalczyk,-                Michael Alan Dorman,-                Tom Smalley,-                Mathijs Kwik,-                Shea Levy,-                Dmitry Malikov,-                Eric Seidel,-                Jacob Mitchell,-                Graham Christensen,-                Hamish Mackenzie,-                Nikolay Amiantov,-                Aycan iRiCAN,-                Bryan Gardiner,-                Joe Hermaszewski,-                John Wiegley,-                Philipp Hausmann,-                Spencer Janssen,-                Tom Hunger,-                William Casarin,-                koral,-                ksaric,-                Adam Vogt,-                Alexey Shmalko,-                Corey O'Connor,-                Cray Elliott,-                David Johnson,-                Dmitry Bushev,-                Domen Kožar,-                Felix Kunzmann,-                Gabriel Ebner,-                Gergely Risko,-                Joachim Fasting,-                John Albietz,-                John Chee,-                Jussi Maki,-                Lisanna Dettwyler,-                Mark Laws,-                Mark Wotton,-                Matthew Pickering,-                Matthew Stewart,-                Matvey Aksenov,-                Nicholas Clarke,-                Nicolas Rolland,-                Oliver Charles,-                Pascal Wittmann,-                Patrick John Wheeler,-                Phil de Joux,-                Piotr Bogdan,-                Profpatsch,-                Raymond Gauthier,-                Renzo Carbonara,-                Rodney Lorrimar,-                Sibi,-                Sukant Hajra,-                Tanner Doshier,-                Vaibhav Sagar,-                Viktar Basharymau,-                danbst,-                karsten gebbert,-                laMudri,-                Александр Цамутали-maintainer:     Peter Simons <simons@cryp.to>-license:        BSD3-license-file:   LICENSE-tested-with:    GHC == 8.2.2, GHC == 8.4.3-build-type:     Simple-cabal-version:  1.24-+name:               cabal2nix+version:            2.10.0+synopsis:           Convert Cabal files into Nix build instructions. description:-  Convert Cabal files into Nix build instructions. Users of Nix can install the-  latest version by running:+  Convert Cabal files into Nix build instructions. Users of Nix can install the latest+  version by running:   .   > nix-env -i cabal2nix--extra-source-files:-  README.md-  test/golden-test-cases/*.cabal-  test/golden-test-cases/*.nix.golden+license:            BSD3+license-file:       LICENSE+author:             Peter Simons,+                    Andres Loeh,+                    Benno Fünfstück,+                    Mateusz Kowalczyk,+                    Michael Alan Dorman,+                    Tom Smalley,+                    Mathijs Kwik,+                    Shea Levy,+                    Dmitry Malikov,+                    Eric Seidel,+                    Jacob Mitchell,+                    Graham Christensen,+                    Hamish Mackenzie,+                    Nikolay Amiantov,+                    Aycan iRiCAN,+                    Bryan Gardiner,+                    Joe Hermaszewski,+                    John Wiegley,+                    Philipp Hausmann,+                    Spencer Janssen,+                    Tom Hunger,+                    William Casarin,+                    koral,+                    ksaric,+                    Adam Vogt,+                    Alexey Shmalko,+                    Corey O'Connor,+                    Cray Elliott,+                    David Johnson,+                    Dmitry Bushev,+                    Domen Kožar,+                    Felix Kunzmann,+                    Gabriel Ebner,+                    Gergely Risko,+                    Joachim Fasting,+                    John Albietz,+                    John Chee,+                    Jussi Maki,+                    Lisanna Dettwyler,+                    Mark Laws,+                    Mark Wotton,+                    Matthew Pickering,+                    Matthew Stewart,+                    Matvey Aksenov,+                    Nicholas Clarke,+                    Nicolas Rolland,+                    Oliver Charles,+                    Pascal Wittmann,+                    Patrick John Wheeler,+                    Phil de Joux,+                    Piotr Bogdan,+                    Profpatsch,+                    Raymond Gauthier,+                    Renzo Carbonara,+                    Rodney Lorrimar,+                    Sibi,+                    Sukant Hajra,+                    Tanner Doshier,+                    Vaibhav Sagar,+                    Viktar Basharymau,+                    danbst,+                    karsten gebbert,+                    laMudri,+                    Александр Цамутали+maintainer:         Peter Simons <simons@cryp.to>+stability:          stable+tested-with:        GHC == 8.4.3+category:           Distribution, Nix+homepage:           https://github.com/nixos/cabal2nix#readme+bug-reports:        https://github.com/nixos/cabal2nix/issues+build-type:         Simple+extra-source-files: README.md+                    test/golden-test-cases/*.cabal+                    test/golden-test-cases/*.nix.golden+cabal-version:      1.24  source-repository head-  type: git+  type:     git   location: https://github.com/nixos/cabal2nix  library-  hs-source-dirs:       src-  other-extensions:     CPP DeriveGeneric FlexibleInstances MultiParamTypeClasses-                        OverloadedStrings RecordWildCards ScopedTypeVariables-                        StandaloneDeriving TemplateHaskell-  default-extensions:   MonadFailDesugaring-  ghc-options:          -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates-                        -Wredundant-constraints-  build-depends:-      Cabal >2.2-    , aeson-    , ansi-wl-pprint-    , base <5-    , bytestring-    , containers-    , deepseq >=1.4-    , directory-    , distribution-nixpkgs >=1.1.1-    , filepath-    , hackage-db >=2.0.1-    , hopenssl >=2-    , hpack >= 0.26-    , language-nix-    , lens-    , optparse-applicative-    , pretty >=1.1.2-    , process-    , split-    , text-    , time-    , transformers-    , yaml-  exposed-modules:-      Cabal2nix-      Distribution.Nixpkgs.Fetch-      Distribution.Nixpkgs.Haskell-      Distribution.Nixpkgs.Haskell.BuildInfo-      Distribution.Nixpkgs.Haskell.Constraint-      Distribution.Nixpkgs.Haskell.Derivation-      Distribution.Nixpkgs.Haskell.FromCabal-      Distribution.Nixpkgs.Haskell.FromCabal.Configuration-      Distribution.Nixpkgs.Haskell.FromCabal.Flags-      Distribution.Nixpkgs.Haskell.FromCabal.License-      Distribution.Nixpkgs.Haskell.FromCabal.Name-      Distribution.Nixpkgs.Haskell.FromCabal.Normalize-      Distribution.Nixpkgs.Haskell.FromCabal.PostProcess-      Distribution.Nixpkgs.Haskell.Hackage-      Distribution.Nixpkgs.Haskell.OrphanInstances-      Distribution.Nixpkgs.Haskell.PackageSourceSpec-  other-modules:-      Paths_cabal2nix-  default-language: Haskell2010+  exposed-modules:    Cabal2nix+                      Distribution.Nixpkgs.Fetch+                      Distribution.Nixpkgs.Haskell+                      Distribution.Nixpkgs.Haskell.BuildInfo+                      Distribution.Nixpkgs.Haskell.Constraint+                      Distribution.Nixpkgs.Haskell.Derivation+                      Distribution.Nixpkgs.Haskell.FromCabal+                      Distribution.Nixpkgs.Haskell.FromCabal.Configuration+                      Distribution.Nixpkgs.Haskell.FromCabal.Flags+                      Distribution.Nixpkgs.Haskell.FromCabal.License+                      Distribution.Nixpkgs.Haskell.FromCabal.Name+                      Distribution.Nixpkgs.Haskell.FromCabal.Normalize+                      Distribution.Nixpkgs.Haskell.FromCabal.PostProcess+                      Distribution.Nixpkgs.Haskell.Hackage+                      Distribution.Nixpkgs.Haskell.OrphanInstances+                      Distribution.Nixpkgs.Haskell.PackageSourceSpec+  other-modules:      Paths_cabal2nix+  hs-source-dirs:     src+  build-depends:      base                 < 5+                    , Cabal                > 2.2+                    , aeson+                    , ansi-wl-pprint+                    , bytestring+                    , containers+                    , deepseq              >= 1.4+                    , directory+                    , distribution-nixpkgs >= 1.1.1+                    , filepath+                    , hackage-db           >= 2.0.1+                    , hopenssl             >= 2+                    , hpack                >= 0.26+                    , language-nix+                    , lens+                    , optparse-applicative+                    , pretty               >= 1.1.2+                    , process+                    , split+                    , text+                    , time+                    , transformers+                    , yaml+  default-language:   Haskell2010+  default-extensions: MonadFailDesugaring+  other-extensions:   MultiParamTypeClasses+                      ScopedTypeVariables+                      FlexibleInstances+                      CPP+                      TemplateHaskell+                      StandaloneDeriving+                      RecordWildCards+                      OverloadedStrings+                      DeriveGeneric+  ghc-options:        -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates+                      -Wredundant-constraints  executable cabal2nix-  main-is: Main.hs-  hs-source-dirs: cabal2nix-  default-extensions:   MonadFailDesugaring-  ghc-options:          -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates-                        -Wredundant-constraints-  build-depends: base, cabal2nix-  default-language: Haskell2010+  main-is:            Main.hs+  hs-source-dirs:     cabal2nix+  build-depends:      base, cabal2nix+  default-language:   Haskell2010+  default-extensions: MonadFailDesugaring+  ghc-options:        -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates+                      -Wredundant-constraints  executable hackage2nix-  main-is: Main.hs-  hs-source-dirs: hackage2nix-  default-extensions:   MonadFailDesugaring-  ghc-options:          -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates-                        -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N-  build-depends:-      Cabal >2.2-    , aeson-    , base <5-    , bytestring-    , cabal2nix-    , containers-    , directory-    , distribution-nixpkgs >=1.1.1-    , filepath-    , hopenssl >=2-    , language-nix-    , lens-    , monad-par-    , monad-par-extras-    , mtl-    , optparse-applicative-    , pretty >=1.1.2-  other-modules:-      Paths_cabal2nix-      HackageGit-  default-language: Haskell2010+  main-is:            Main.hs+  other-modules:      HackageGit+                      Paths_cabal2nix+  hs-source-dirs:     hackage2nix+  build-depends:      base                 < 5+                    , Cabal                > 2.2+                    , aeson+                    , bytestring+                    , cabal2nix+                    , containers+                    , directory+                    , distribution-nixpkgs >= 1.1.1+                    , filepath+                    , hopenssl             >= 2+                    , language-nix+                    , lens+                    , monad-par+                    , monad-par-extras+                    , mtl+                    , optparse-applicative+                    , pretty               >= 1.1.2+  default-language:   Haskell2010+  default-extensions: MonadFailDesugaring+  ghc-options:        -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates+                      -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N  test-suite regression-test-  type:                 exitcode-stdio-1.0-  main-is:              Main.hs-  hs-source-dirs:       test-  default-extensions:   MonadFailDesugaring-  ghc-options:          -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates-                        -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N-                        -with-rtsopts=-K1K-  build-depends:        base-                      , Cabal >2.2-                      , cabal2nix-                      , containers-                      , directory-                      , filepath-                      , language-nix-                      , lens-                      , pretty-                      , process >1.2-                      , tasty-                      , tasty-golden-  build-tools:          cabal2nix-  default-language:     Haskell2010+  type:               exitcode-stdio-1.0+  main-is:            Main.hs+  hs-source-dirs:     test+  build-depends:      base+                    , Cabal        > 2.2+                    , cabal2nix+                    , containers+                    , directory+                    , filepath+                    , language-nix+                    , lens+                    , pretty+                    , process      > 1.2+                    , tasty+                    , tasty-golden+  default-language:   Haskell2010+  default-extensions: MonadFailDesugaring+  build-tools:        cabal2nix+  ghc-options:        -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates+                      -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N+                      -with-rtsopts=-K1K
src/Cabal2nix.hs view
@@ -3,7 +3,8 @@ {-# LANGUAGE RecordWildCards #-}  module Cabal2nix-  ( main, cabal2nix, cabal2nix', cabal2nixWithDB+  ( main, cabal2nix, cabal2nix', cabal2nixWithDB, parseArgs+  , Options(..)   )   where @@ -61,9 +62,9 @@   , optSystem :: Platform   , optSubpath :: Maybe FilePath   , optHackageSnapshot :: Maybe UTCTime+  , optNixpkgsIdentifier :: NixpkgsResolver   , optUrl :: String   }-  deriving (Show)  options :: Parser Options options = Options@@ -87,6 +88,7 @@           <*> option (maybeReader parsePlatform) (long "system" <> help "host system (in either short Nix format or full LLVM style) to use when evaluating the Cabal file" <> value buildPlatform <> showDefaultWith display)           <*> optional (strOption $ long "subpath" <> metavar "PATH" <> help "Path to Cabal file's directory relative to the URI (default is root directory)")           <*> optional (option utcTimeReader (long "hackage-snapshot" <> help "hackage snapshot time, ISO format"))+          <*> pure (\i -> Just (binding # (i, path # [i])))           <*> strArgument (metavar "URI")  -- | A parser for the date. Hackage updates happen maybe once or twice a month.@@ -183,19 +185,15 @@ hpackOverrides = over phaseOverrides (++ "preConfigure = \"hpack\";")                . set (libraryDepends . tool . contains (PP.pkg "hpack")) True -cabal2nix' :: [String] -> IO (Either Doc Derivation)-cabal2nix' args = do-  opts@Options {..} <- handleParseResult $ execParserPure defaultPrefs pinfo args-+cabal2nix' :: Options -> IO (Either Doc Derivation)+cabal2nix' opts@Options{..} = do   pkg <- getPackage optHpack optHackageDb optHackageSnapshot $ Source optUrl (fromMaybe "" optRevision) (maybe UnknownHash Guess optSha256) (fromMaybe "" optSubpath)   processPackage opts pkg -cabal2nixWithDB :: DB.HackageDB -> [String] -> IO (Either Doc Derivation)-cabal2nixWithDB db args = do-  opts@Options {..} <- handleParseResult $ execParserPure defaultPrefs pinfo args+cabal2nixWithDB :: DB.HackageDB -> Options -> IO (Either Doc Derivation)+cabal2nixWithDB db opts@Options{..} = do   when (isJust optHackageDb) $ hPutStrLn stderr "WARN: HackageDB provided directly; ignoring --hackage-db"   when (isJust optHackageSnapshot) $ hPutStrLn stderr "WARN: HackageDB provided directly; ignoring --hackage-snapshot"-   pkg <- getPackage' optHpack (return db) $ Source optUrl (fromMaybe "" optRevision) (maybe UnknownHash Guess optSha256) (fromMaybe "" optSubpath)   processPackage opts pkg @@ -210,7 +208,7 @@        deriv :: Derivation       deriv = withHpackOverrides $ fromGenericPackageDescription (const True)-                                            (\i -> Just (binding # (i, path # [i])))+                                            optNixpkgsIdentifier                                             optSystem                                             (unknownCompilerInfo optCompiler NoAbiTag)                                             flags@@ -253,7 +251,12 @@   pure $ if optNixShellOutput then Left shell else Right deriv  cabal2nix :: [String] -> IO ()-cabal2nix = cabal2nix' >=> putStrLn . either render prettyShow+cabal2nix = parseArgs >=> cabal2nix' >=> putStrLn . either render prettyShow++parseArgs :: [String] -> IO Options+parseArgs = handleParseResult . execParserPure defaultPrefs pinfo++-- Utils  readFlagList :: [String] -> FlagAssignment readFlagList = mkFlagAssignment . map tagWithValue
src/Distribution/Nixpkgs/Haskell/FromCabal/Flags.hs view
@@ -30,13 +30,13 @@                                   , enable "pairing"                                   , enable "production"                                   , enable "quvi"-                                  , enable "s3"+                                  , disable "s3"                                   , enable "tahoe"                                   , enable "tdfa"                                   , ("testsuite", version `withinRange` "< 6.20170925 || >= 6.20171214")                                   , enable "torrentparser"-                                  , enable "webapp"-                                  , enable "webapp-secure"+                                  , disable "webapp"+                                  , disable "webapp-secure"                                   , enable "webdav"                                   , enable "xmpp"                                   ]
src/Distribution/Nixpkgs/Haskell/FromCabal/PostProcess.hs view
@@ -68,6 +68,7 @@   , ("github-backup", set (executableDepends . tool . contains (pkg "git")) True)   , ("GLFW", over (libraryDepends . system) (Set.union (Set.fromList [bind "pkgs.xorg.libXext", bind "pkgs.xorg.libXfixes"])))   , ("GlomeVec", set (libraryDepends . pkgconfig . contains (bind "self.llvmPackages.llvm")) True)+  , ("graphviz", set (testDepends . system . contains (pkg "graphviz")) True)   , ("gtk3", gtk3Hook)   , ("haddock", haddockHook) -- https://github.com/haskell/haddock/issues/511   , ("hakyll", set (testDepends . tool . contains (pkg "utillinux")) True) -- test suite depends on "rev"
src/Distribution/Nixpkgs/Haskell/Hackage.hs view
@@ -1,6 +1,6 @@ module Distribution.Nixpkgs.Haskell.Hackage   ( HackageDB, PackageData, VersionData(..)-  , hackageTarball, readTarball+  , hackageTarball, readTarball, parsePackageData   )   where 
src/Distribution/Nixpkgs/Haskell/PackageSourceSpec.hs view
@@ -202,8 +202,8 @@   mPackage <- liftIO $ Hpack.readPackageConfig Hpack.defaultDecodeOptions {Hpack.decodeOptionsTarget = dir </> Hpack.packageConfig}   case mPackage of     Left err -> liftIO $ hPutStrLn stderr ("*** hpack error: " ++ show err ++ ". Exiting.") >> exitFailure-    Right (Hpack.DecodeResult pkg' _ _) -> do-      let hpackOutput = encodeUtf8 $ Hpack.renderPackage [] pkg'+    Right r -> do+      let hpackOutput = encodeUtf8 $ Hpack.renderPackage [] (Hpack.decodeResultPackage r)           hash = printSHA256 $ digest (digestByName "sha256") hpackOutput       case runParseGenericPackageDescription "<hpack output>" hpackOutput of         Left msg -> liftIO $ do
test/Main.hs view
@@ -27,8 +27,10 @@  main :: IO () main = do-  -- TODO: run this test with all kinds of setLocaleEncoding values to ensure we don't-  -- depend on the system environment: https://github.com/NixOS/cabal2nix/issues/333+  -- TODO: Run this test with all kinds of setLocaleEncoding values to ensure we don't+  --       depend on the system environment: https://github.com/NixOS/cabal2nix/issues/333.+  --+  -- TODO: Run this test without $HOME defined to ensure that we don't need that variable.   cabal2nix <- findExecutable "cabal2nix" >>= maybe (fail "cannot find 'cabal2nix' in $PATH") return   testCases <- listDirectoryFilesBySuffix ".cabal" "test/golden-test-cases"   defaultMain $ testGroup "regression-tests"