cabal2nix 2.15.0 → 2.15.1
raw patch · 8 files changed
+37/−27 lines, 8 filesdep ~CabalPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: Cabal
API changes (from Hackage documentation)
Files
- README.md +6/−6
- cabal2nix.cabal +6/−10
- hackage2nix/Main.hs +1/−1
- src/Cabal2nix.hs +2/−2
- src/Distribution/Nixpkgs/Haskell/Derivation.hs +1/−1
- src/Distribution/Nixpkgs/Haskell/FromCabal/Flags.hs +8/−3
- src/Distribution/Nixpkgs/Haskell/FromCabal/Name.hs +3/−1
- src/Distribution/Nixpkgs/Haskell/FromCabal/PostProcess.hs +10/−3
README.md view
@@ -27,16 +27,16 @@ `file:///local/path/pkg.cabal` URI that doesn't depend on network access. However, if the source hash is not already in `cabal2nix`'s cache or provided using the `--sha256` option, `cabal2nix` still needs to download the source-code to compute the hash, which obviously still causes network traffic. Run the-utility with `--help` to see the complete list of supported command line flags.+code to compute the hash, which still causes network traffic. Run the utility+with `--help` to see the complete list of supported command-line flags. -Detailed instructions how to use those generated files with Nix can be found at+Detailed instructions on how to use those generated files with Nix can be found at https://nixos.org/nixpkgs/manual/#how-to-create-nix-builds-for-your-own-private-haskell-packages. `cabal2nix` can also build derivations for projects from other sources than-hackage. You only need to provide an URI that points to a cabal project. The-most common usecase for this is probably to generate a derivation for a project-on the local file system:+Hackage. You only need to provide a URI that points to a cabal project. The+most common use-case for this is probably to generate a derivation for a+project on the local file system: $ cabal get mtl-2.2.1 && cd mtl-2.2.1 $ cabal2nix .
cabal2nix.cabal view
@@ -1,5 +1,5 @@ name: cabal2nix-version: 2.15.0+version: 2.15.1 synopsis: Convert Cabal files into Nix build instructions. description: Convert Cabal files into Nix build instructions. Users of Nix can install the latest@@ -27,7 +27,7 @@ gebbert, laMudri, Александр Цамутали maintainer: Peter Simons <simons@cryp.to> stability: stable-tested-with: GHC == 8.6.5, GHC == 8.8.1+tested-with: GHC == 8.6.5, GHC == 8.8.3, GHC == 8.10.1 category: Distribution, Nix homepage: https://github.com/nixos/cabal2nix#readme bug-reports: https://github.com/nixos/cabal2nix/issues@@ -61,7 +61,7 @@ other-modules: Paths_cabal2nix hs-source-dirs: src build-depends: base > 4.11- , Cabal > 3+ , Cabal == 3.0.* , aeson > 1 , ansi-wl-pprint , bytestring@@ -84,7 +84,6 @@ , transformers , yaml default-language: Haskell2010- default-extensions: MonadFailDesugaring other-extensions: MultiParamTypeClasses ScopedTypeVariables FlexibleInstances@@ -102,7 +101,6 @@ 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 @@ -112,7 +110,7 @@ Paths_cabal2nix hs-source-dirs: hackage2nix build-depends: base < 5- , Cabal > 2.4+ , Cabal , aeson , bytestring , cabal2nix@@ -129,16 +127,15 @@ , 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+ -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-maxN16 test-suite regression-test type: exitcode-stdio-1.0 main-is: Main.hs hs-source-dirs: test build-depends: base- , Cabal > 2.4+ , Cabal , cabal2nix , containers , directory@@ -150,7 +147,6 @@ , 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 -with-rtsopts=-K64K
hackage2nix/Main.hs view
@@ -10,7 +10,7 @@ import Control.Monad.Par.Combinator import Control.Monad.Par.IO import Control.Monad.Trans ( liftIO )-import Data.List+import Data.List ( intercalate ) import Data.Map.Strict ( Map ) import qualified Data.Map.Strict as Map import Data.Maybe
src/Cabal2nix.hs view
@@ -11,10 +11,9 @@ import Control.Exception ( bracket ) import Control.Lens import Control.Monad-import Data.List+import Data.List ( intercalate, isPrefixOf ) import Data.List.Split import Data.Maybe ( fromMaybe, isJust, listToMaybe )-import Data.Monoid ( (<>) ) import qualified Data.Set as Set import Data.String import Data.Time@@ -136,6 +135,7 @@ "watchos" -> "ios" "tvos" -> "ios" "linux-android" -> "linux-android"+ "linux-androideabi" -> "linux-androideabi" _ | "linux-" `isPrefixOf` os -> "linux" _ -> fromMaybe os $ listToMaybe [prefix | prefix <- osPrefixes, prefix `isPrefixOf` os]
src/Distribution/Nixpkgs/Haskell/Derivation.hs view
@@ -15,7 +15,7 @@ import Control.DeepSeq import Control.Lens-import Data.List+import Data.List ( isPrefixOf ) import Data.Set ( Set ) import qualified Data.Set as Set import Data.Set.Lens
src/Distribution/Nixpkgs/Haskell/FromCabal/Flags.hs view
@@ -4,6 +4,7 @@ import Distribution.Nixpkgs.Haskell.OrphanInstances ( ) +import Data.Char import Distribution.Package import Distribution.PackageDescription import Distribution.Version@@ -15,6 +16,7 @@ configureCabalFlags' (PackageIdentifier name version) | name == "accelerate-examples"= [disable "opencl"] | name == "arithmoi" = [disable "llvm"]+ | name == "bustle" = [disable "hgettext"] -- https://gitlab.freedesktop.org/bustle/bustle/issues/13 | name == "cabal-plan" = [enable "exe"] | name == "cassava" = [disable "bytestring--lt-0_10_4"] | name == "darcs" = [enable "library", enable "force-char8-encoding"]@@ -26,7 +28,7 @@ , enable "dbus" , disable "debuglocks" , enable "magicmime"- , disable "networkbsd"+ , enable "networkbsd" , enable "pairing" , enable "production" , enable "s3"@@ -57,7 +59,10 @@ | otherwise = [] enable :: String -> (FlagName,Bool)-enable name = (mkFlagName name, True)+enable name = (mkFlagName' name, True) disable :: String -> (FlagName,Bool)-disable name = (mkFlagName name, False)+disable name = (mkFlagName' name, False)++mkFlagName' :: String -> FlagName+mkFlagName' = mkFlagName . map toLower
src/Distribution/Nixpkgs/Haskell/FromCabal/Name.hs view
@@ -29,6 +29,7 @@ libNixName "appindicator3-0.1" = return "libappindicator-gtk3" libNixName "asound" = return "alsaLib" libNixName "b2" = return "libb2"+libNixName "boost_context" = return "boost" libNixName "bz2" = return "bzip2" libNixName "c++" = [] -- What is that? libNixName "cairo-gobject" = return "cairo"@@ -94,6 +95,8 @@ libNixName "libavutil" = return "ffmpeg" libNixName "libgsasl" = return "gsasl" libNixName "libpcre" = return "pcre"+libNixName "libpcre2" = return "pcre2"+libNixName "libpcre2-8" = libNixName "libpcre2" libNixName "libqrencode" = return "qrencode" libNixName "libR" = return "R" libNixName "libsoup-gnome-2.4" = return "libsoup"@@ -200,7 +203,6 @@ buildToolNixName "nix-hash" = return "nix" buildToolNixName "nix-instantiate" = return "nix" buildToolNixName "nix-store" = return "nix"-buildToolNixName "pkg-config" = return "pkgconfig" buildToolNixName x = return (fromString x) -- | Helper function to extract the package name from a String that may or may
src/Distribution/Nixpkgs/Haskell/FromCabal/PostProcess.hs view
@@ -13,6 +13,7 @@ import qualified Data.Set as Set import Distribution.Nixpkgs.Haskell import Distribution.Nixpkgs.Meta+import Distribution.Nixpkgs.License import Distribution.Package import Distribution.System import Distribution.Text@@ -78,7 +79,7 @@ , ("alsa-core", over (metaSection . platforms) (Set.filter (\(Platform _ os) -> os == Linux))) , ("bindings-GLFW", over (libraryDepends . system) (Set.union (Set.fromList [bind "pkgs.xorg.libXext", bind "pkgs.xorg.libXfixes"]))) , ("bindings-lxc", over (metaSection . platforms) (Set.filter (\(Platform _ os) -> os == Linux)))- , ("bustle", set (libraryDepends . pkgconfig . contains "system-glib = pkgs.glib") True)+ , ("bustle", bustleOverrides) , ("Cabal", set doCheck False) -- test suite doesn't work in Nix , ("Cabal >2.2", over (setupDepends . haskell) (Set.union (Set.fromList [self "mtl", self "parsec"]))) -- https://github.com/haskell/cabal/issues/5391 , ("cabal-helper", set doCheck False) -- https://github.com/DanielG/cabal-helper/issues/17@@ -89,7 +90,7 @@ , ("dns", set testTarget "spec") -- don't execute tests that try to access the network , ("eventstore", over (metaSection . platforms) (Set.filter (\(Platform arch _) -> arch == X86_64))) , ("freenect < 1.2.1", over configureFlags (Set.union (Set.fromList ["--extra-include-dirs=${pkgs.freenect}/include/libfreenect", "--extra-lib-dirs=${pkgs.freenect}/lib"])))- , ("fltkhs", set (libraryDepends . system . contains (pkg "fltk14")) True . set (libraryDepends . pkgconfig . contains (pkg "libGLU_combined")) True) -- TODO: fltk14 belongs into the *setup* dependencies.+ , ("fltkhs", set (libraryDepends . system . contains (pkg "fltk14")) True . over (libraryDepends . pkgconfig) (Set.union (pkgs ["libGLU", "libGL"]))) -- TODO: fltk14 belongs into the *setup* dependencies. , ("gf", set phaseOverrides gfPhaseOverrides . set doCheck False) , ("gi-cairo", giCairoPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36 , ("gi-gdk", set runHaddock True )@@ -255,7 +256,7 @@ , " sed -i \"s|numJobs (bf bi)++||\" ./Setup.hs" -- Parallel compilation fails. Disable it. , "'';"- , "preBuild = ''export LD_LIBRARY_PATH=`pwd`/dist/build:$LD_LIBRARY_PATH'';"+ , "preBuild = ''export LD_LIBRARY_PATH=`pwd`/dist/build''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH'';" -- The build step itself, after having built the library, needs to be able -- to find the library it just built in order to compile grammar files. ]@@ -400,3 +401,9 @@ , " mv \"man/\"*.1 $out/share/man/man1/" , "'';" ]++bustleOverrides :: Derivation -> Derivation+bustleOverrides = set (libraryDepends . pkgconfig . contains "system-glib = pkgs.glib") True+ . set (executableDepends . pkgconfig . contains "gio-unix = null") False+ . set (metaSection . license) (Known "stdenv.lib.licenses.lgpl21Plus")+ . set (metaSection . hydraPlatforms) allKnownPlatforms