diff options
author | Cheng Shao <cheng.shao@tweag.io> | 2021-01-25 09:41:25 +0000 |
---|---|---|
committer | Peter Simons <simons@cryp.to> | 2021-02-05 22:54:09 +0100 |
commit | 643169bbb48126a3b6ec3c4a32bbbe7a815d11c8 (patch) | |
tree | b56136a4500eaef97f81c7636d2f661d31017c74 | |
parent | 2a0677fd9aa6c7e4aeccc5dd197fb2385b0fca8e (diff) | |
download | nixpkgs-643169bbb48126a3b6ec3c4a32bbbe7a815d11c8.tar nixpkgs-643169bbb48126a3b6ec3c4a32bbbe7a815d11c8.tar.gz nixpkgs-643169bbb48126a3b6ec3c4a32bbbe7a815d11c8.tar.bz2 nixpkgs-643169bbb48126a3b6ec3c4a32bbbe7a815d11c8.tar.lz nixpkgs-643169bbb48126a3b6ec3c4a32bbbe7a815d11c8.tar.xz nixpkgs-643169bbb48126a3b6ec3c4a32bbbe7a815d11c8.tar.zst nixpkgs-643169bbb48126a3b6ec3c4a32bbbe7a815d11c8.zip |
Fix ar command path in GHC.
Previously, the "ar command" in the global config of GHC in nixpkgs is simply "ar" instead of a proper absolute path in the nix store. This will result in an "ar: command not found" error when using GHC and cabal in a pure nix shell. This commit adds the patch and applies to all pre-9.0 versions. See output of ghc --info for "ar command" value.
-rw-r--r-- | pkgs/development/compilers/ghc/8.10.1.nix | 10 | ||||
-rw-r--r-- | pkgs/development/compilers/ghc/8.10.2.nix | 10 | ||||
-rw-r--r-- | pkgs/development/compilers/ghc/8.10.3.nix | 10 | ||||
-rw-r--r-- | pkgs/development/compilers/ghc/8.6.5.nix | 8 | ||||
-rw-r--r-- | pkgs/development/compilers/ghc/8.8.2.nix | 10 | ||||
-rw-r--r-- | pkgs/development/compilers/ghc/8.8.3.nix | 10 | ||||
-rw-r--r-- | pkgs/development/compilers/ghc/8.8.4.nix | 10 | ||||
-rw-r--r-- | pkgs/development/compilers/ghc/respect-ar-path.patch | 25 |
8 files changed, 91 insertions, 2 deletions
diff --git a/pkgs/development/compilers/ghc/8.10.1.nix b/pkgs/development/compilers/ghc/8.10.1.nix index 661dd5cb002..83604630545 100644 --- a/pkgs/development/compilers/ghc/8.10.1.nix +++ b/pkgs/development/compilers/ghc/8.10.1.nix @@ -116,6 +116,16 @@ stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; + patches = [ + # See upstream patch at + # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build + # from source distributions, the auto-generated configure script needs to be + # patched as well, therefore we use an in-tree patch instead of pulling the + # upstream patch. Don't forget to check backport status of the upstream patch + # when adding new GHC releases in nixpkgs. + ./respect-ar-path.patch + ]; + postPatch = "patchShebangs ."; # GHC is a bit confused on its cross terminology. diff --git a/pkgs/development/compilers/ghc/8.10.2.nix b/pkgs/development/compilers/ghc/8.10.2.nix index 6e194b68faa..a42dfce6468 100644 --- a/pkgs/development/compilers/ghc/8.10.2.nix +++ b/pkgs/development/compilers/ghc/8.10.2.nix @@ -107,8 +107,16 @@ stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; - # https://gitlab.haskell.org/ghc/ghc/-/issues/18549 patches = [ + # See upstream patch at + # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build + # from source distributions, the auto-generated configure script needs to be + # patched as well, therefore we use an in-tree patch instead of pulling the + # upstream patch. Don't forget to check backport status of the upstream patch + # when adding new GHC releases in nixpkgs. + ./respect-ar-path.patch + + # https://gitlab.haskell.org/ghc/ghc/-/issues/18549 ./issue-18549.patch ] ++ lib.optionals stdenv.isDarwin [ # Make Block.h compile with c++ compilers. Remove with the next release diff --git a/pkgs/development/compilers/ghc/8.10.3.nix b/pkgs/development/compilers/ghc/8.10.3.nix index 582817cca07..f1b225b12c8 100644 --- a/pkgs/development/compilers/ghc/8.10.3.nix +++ b/pkgs/development/compilers/ghc/8.10.3.nix @@ -107,7 +107,15 @@ stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; - patches = lib.optionals stdenv.isDarwin [ + patches = [ + # See upstream patch at + # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build + # from source distributions, the auto-generated configure script needs to be + # patched as well, therefore we use an in-tree patch instead of pulling the + # upstream patch. Don't forget to check backport status of the upstream patch + # when adding new GHC releases in nixpkgs. + ./respect-ar-path.patch + ] ++ stdenv.lib.optionals stdenv.isDarwin [ # Make Block.h compile with c++ compilers. Remove with the next release (fetchpatch { url = "https://gitlab.haskell.org/ghc/ghc/-/commit/97d0b0a367e4c6a52a17c3299439ac7de129da24.patch"; diff --git a/pkgs/development/compilers/ghc/8.6.5.nix b/pkgs/development/compilers/ghc/8.6.5.nix index 219ace5a916..8237f27241e 100644 --- a/pkgs/development/compilers/ghc/8.6.5.nix +++ b/pkgs/development/compilers/ghc/8.6.5.nix @@ -110,6 +110,14 @@ stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; patches = [ + # See upstream patch at + # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build + # from source distributions, the auto-generated configure script needs to be + # patched as well, therefore we use an in-tree patch instead of pulling the + # upstream patch. Don't forget to check backport status of the upstream patch + # when adding new GHC releases in nixpkgs. + ./respect-ar-path.patch + (fetchpatch { # https://phabricator.haskell.org/D5123 url = "https://gitlab.haskell.org/ghc/ghc/-/commit/13ff0b7ced097286e0d7b054f050871effe07f86.diff"; name = "D5123.diff"; diff --git a/pkgs/development/compilers/ghc/8.8.2.nix b/pkgs/development/compilers/ghc/8.8.2.nix index 94553e56a81..144e4645975 100644 --- a/pkgs/development/compilers/ghc/8.8.2.nix +++ b/pkgs/development/compilers/ghc/8.8.2.nix @@ -111,6 +111,16 @@ stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; + patches = [ + # See upstream patch at + # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build + # from source distributions, the auto-generated configure script needs to be + # patched as well, therefore we use an in-tree patch instead of pulling the + # upstream patch. Don't forget to check backport status of the upstream patch + # when adding new GHC releases in nixpkgs. + ./respect-ar-path.patch + ]; + postPatch = "patchShebangs ."; # GHC is a bit confused on its cross terminology. diff --git a/pkgs/development/compilers/ghc/8.8.3.nix b/pkgs/development/compilers/ghc/8.8.3.nix index ca4dc35ccdc..9e99207d9aa 100644 --- a/pkgs/development/compilers/ghc/8.8.3.nix +++ b/pkgs/development/compilers/ghc/8.8.3.nix @@ -116,6 +116,16 @@ stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; + patches = [ + # See upstream patch at + # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build + # from source distributions, the auto-generated configure script needs to be + # patched as well, therefore we use an in-tree patch instead of pulling the + # upstream patch. Don't forget to check backport status of the upstream patch + # when adding new GHC releases in nixpkgs. + ./respect-ar-path.patch + ]; + postPatch = "patchShebangs ."; # GHC is a bit confused on its cross terminology. diff --git a/pkgs/development/compilers/ghc/8.8.4.nix b/pkgs/development/compilers/ghc/8.8.4.nix index ab5f2c12e23..9bef190ad1c 100644 --- a/pkgs/development/compilers/ghc/8.8.4.nix +++ b/pkgs/development/compilers/ghc/8.8.4.nix @@ -116,6 +116,16 @@ stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; + patches = [ + # See upstream patch at + # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build + # from source distributions, the auto-generated configure script needs to be + # patched as well, therefore we use an in-tree patch instead of pulling the + # upstream patch. Don't forget to check backport status of the upstream patch + # when adding new GHC releases in nixpkgs. + ./respect-ar-path.patch + ]; + postPatch = "patchShebangs ."; # GHC is a bit confused on its cross terminology. diff --git a/pkgs/development/compilers/ghc/respect-ar-path.patch b/pkgs/development/compilers/ghc/respect-ar-path.patch new file mode 100644 index 00000000000..a08a802c18a --- /dev/null +++ b/pkgs/development/compilers/ghc/respect-ar-path.patch @@ -0,0 +1,25 @@ +diff -urd a/aclocal.m4 b/aclocal.m4 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -1199,7 +1199,8 @@ + # thinks that target == host so it never checks the unqualified + # tools for Windows. See #14274. + AC_DEFUN([FP_PROG_AR], +-[if test -z "$fp_prog_ar"; then ++[AC_SUBST(fp_prog_ar,$AR) ++if test -z "$fp_prog_ar"; then + if test "$HostOS" = "mingw32" + then + AC_PATH_PROG([fp_prog_ar], [ar]) +diff -urd a/configure b/configure +--- a/configure ++++ b/configure +@@ -10744,6 +10744,8 @@ + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + ++fp_prog_ar=$AR ++ + if test -z "$fp_prog_ar"; then + if test "$HostOS" = "mingw32" + then |