From 4e4a88d03a8f4727693580aac837acdca54bd005 Mon Sep 17 00:00:00 2001 From: sternenseemann Date: Sun, 20 Mar 2022 11:43:37 +0100 Subject: [PATCH] haskell.package-list: only include versions that conform to PVP Since this list is intended for Hackage, we need to make sure that only packages with versions conforming to the PVP versioning scheme are actually included in the CSV or Hackage will reject it. --- pkgs/development/haskell-modules/package-list.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/development/haskell-modules/package-list.nix b/pkgs/development/haskell-modules/package-list.nix index 64f4be3a7722..688844bcc46c 100644 --- a/pkgs/development/haskell-modules/package-list.nix +++ b/pkgs/development/haskell-modules/package-list.nix @@ -1,10 +1,16 @@ { runCommand, haskellPackages, lib, all-cabal-hashes, writeShellScript }: let + # Checks if the version looks like a Haskell PVP version which is the format + # Hackage enforces. This will return false if the version strings is empty or + # we've overridden the package to ship an unstable version of the package + # (sadly there's no good way to show something useful on hackage in this case). + isPvpVersion = v: builtins.match "([0-9]+)(\\.[0-9]+)*" v != null; + pkgLine = name: pkg: let version = pkg.version or ""; in - if version != "" then + if isPvpVersion version then ''"${name}","${version}","http://hydra.nixos.org/job/nixpkgs/trunk/haskellPackages.${name}.x86_64-linux"'' else ""; all-haskellPackages = builtins.toFile "all-haskellPackages" (lib.concatStringsSep "\n" (lib.filter (x: x != "") (lib.mapAttrsToList pkgLine haskellPackages)));