cabal2nix 2.19.0 → 2.19.1
raw patch · 6 files changed
+40/−51 lines, 6 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG.md +26/−0
- README.md +0/−47
- cabal2nix.cabal +3/−2
- src/Distribution/Nixpkgs/Haskell/FromCabal/Name.hs +2/−1
- test/Main.hs +6/−0
- test/golden-test-cases/crypt-sha512.nix.golden +3/−1
CHANGELOG.md view
@@ -1,5 +1,31 @@ # Revision History for cabal2nix +## 2.19.1++**Warning**: This version of `cabal2nix` generates Nix expressions that+are expected to be used with at least NixOS 22.11 or the unstable+channels at `3928cfa27d9925f9fbd1d211cf2549f723546a81` or later (which+should be all unstable channels published after 2022-10-23) due to changes+how `libcrypt` is provided by `nixpkgs`. For details read below.++* `cabal2nix` and `hackage2nix` will now emit a dependency on `libxcrypt`+ if the `crypt` library is requested by a package description. This has+ been done because `nixpkgs` has+ [disabled `libcrypt` being bundled with `glibc`](https://github.com/NixOS/nixpkgs/pull/181764),+ so the library will need to be pulled in from elsewhere.+ These new generated nix expressions may not work correctly with older+ versions of `nixpkgs` (since two `libcrypt`s would be pulled in).+ Versions expected to work are listed in the warning above.+ See also [#576](https://github.com/NixOS/cabal2nix/pull/576).+* `cabal2nix` and `hackage2nix` can now resolve the `FLAC` library name.+ See also [#567](https://github.com/NixOS/cabal2nix/pull/567).+* Fix test suite compilation with `Cabal >= 3.8`.+ See also [#572](https://github.com/NixOS/cabal2nix/pull/572).+* Packages closely tied to `cabal2nix` have been merged into the main+ `cabal2nix` source repository. As a consequence, the cabal2nix source+ code has been moved into the `cabal2nix` subdirectory.+ See also [#567](https://github.com/NixOS/cabal2nix/pull/567).+ ## 2.19.0 Note that some of the API has also changed in a breaking
README.md view
@@ -69,50 +69,3 @@ This repository also contains, in the [`hackage2nix/`](./hackage2nix) directory, the tool to update the Haskell packages in [nixpkgs](https://github.com/NixOS/nixpkgs). It has its own README there.--## Building--`cabal2nix` is built using [`cabal-install`](https://www.haskell.org/cabal/),-like you'd expect, and you are free to use your favourite way of setting up-a Haskell development environment.--Since `cabal2nix` is quite intertwined with the packages `distribution-nixpkgs`-and `hackage-db`, we recommend setting up a shared development environment-for the three packages like so:--```console-$ mkdir /path/to/cabal2nix-root && cd /path/to/cabal2nix-root-$ # clone repositories, note that you may need to checkout an-$ # older tag for some depending on breaking changes on master.-$ git clone https://github.com/NixOS/cabal2nix.git-$ git clone https://github.com/NixOS/hackage-db.git-$ git clone https://github.com/NixOS/distribution-nixpkgs.git-$ # setup development environment with shellFor-$ cat > shell.nix << EOF-# assumes nix{os,pkgs}-unstable-{ pkgs ? import <nixpkgs> {} }:--pkgs.haskellPackages.shellFor {- packages = p: [- p.cabal2nix-unstable- p.distribution-nixpkgs- p.hackage-db- ];-- # for running doctests locally- nativeBuildInputs = [- pkgs.haskellPackages.doctest- ];-- # set environment variable, so the development version of- # distribution-nixpkgs finds derivation-attr-paths.nix- distribution_nixpkgs_datadir = toString ./distribution-nixpkgs;-}-EOF-$ # tell cabal about local packages-$ cat > cabal.project << EOF-packages: ./*/*.cabal-EOF-$ # test our new development environment-$ nix-shell --run "cabal v2-build exe:cabal2nix exe:hackage2nix"-```
cabal2nix.cabal view
@@ -1,5 +1,5 @@ name: cabal2nix-version: 2.19.0+version: 2.19.1 synopsis: Convert Cabal files into Nix build instructions. description: Convert Cabal files into Nix build instructions. Users of Nix can install the latest@@ -12,7 +12,7 @@ -- list all contributors: git log --pretty='%an' | sort | uniq maintainer: sternenseemann <sternenseemann@systemli.org> stability: stable-tested-with: GHC == 8.8.4 || == 8.10.7 || == 9.0.2+tested-with: GHC == 8.8.4 || == 8.10.7 || == 9.0.2 || == 9.2.2 category: Distribution, Nix homepage: https://github.com/nixos/cabal2nix#readme bug-reports: https://github.com/nixos/cabal2nix/issues@@ -26,6 +26,7 @@ source-repository head type: git location: https://github.com/nixos/cabal2nix+ subdir: cabal2nix library exposed-modules: Cabal2nix
src/Distribution/Nixpkgs/Haskell/FromCabal/Name.hs view
@@ -36,7 +36,7 @@ libNixName "cairo-pdf" = return "cairo" libNixName "cairo-ps" = return "cairo" libNixName "cairo-svg" = return "cairo"-libNixName "crypt" = [] -- provided by glibc+libNixName "crypt" = return "libxcrypt" -- starting with NixOS 22.11, glibc's libcrypt will no longer be built libNixName "crypto" = return "openssl" libNixName "curses" = return "ncurses" libNixName "dbusmenu-glib-0.4" = return "libdbusmenu"@@ -45,6 +45,7 @@ libNixName "ff" = return "libff" libNixName "fftw3" = return "fftw" libNixName "fftw3f" = return "fftwFloat"+libNixName "FLAC" = return "flac" libNixName "freetype2" = return "freetype" libNixName "gconf" = return "GConf" libNixName "gconf-2.0" = return "GConf"
test/Main.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-}+{-# LANGUAGE CPP #-} module Main ( main ) where @@ -13,8 +14,13 @@ import qualified Data.Set as Set import Distribution.Compiler import Distribution.Package+#if MIN_VERSION_Cabal(3,8,1)+import Distribution.Simple.PackageDescription+import Distribution.Types.GenericPackageDescription+#else import Distribution.PackageDescription import Distribution.PackageDescription.Parsec+#endif import Distribution.System import Distribution.Verbosity import Distribution.Version
test/golden-test-cases/crypt-sha512.nix.golden view
@@ -1,5 +1,6 @@ { mkDerivation, attoparsec, base, bytestring, cryptohash-sha512-, lib, quickcheck-instances, tasty, tasty-hunit, tasty-quickcheck+, lib, libxcrypt, quickcheck-instances, tasty, tasty-hunit+, tasty-quickcheck }: mkDerivation { pname = "crypt-sha512";@@ -12,6 +13,7 @@ base bytestring quickcheck-instances tasty tasty-hunit tasty-quickcheck ];+ testSystemDepends = [ libxcrypt ]; homepage = "https://github.com/phadej/crypt-sha512"; description = "Pure Haskell implelementation for GNU SHA512 crypt algorithm"; license = lib.licenses.bsd3;