about summary refs log tree commit diff
path: root/pkgs/development/compilers
diff options
context:
space:
mode:
authorKovacsics Robert <rmk35@cam.ac.uk>2020-02-25 15:29:27 +0000
committerFrederik Rietdijk <freddyrietdijk@fridh.nl>2020-03-02 09:13:12 +0100
commitf8c402ecad06da9dc703cddaf74942472057dbd4 (patch)
treee7d1c2b1f4d8a4e2b1bac026a996eab8b87560c4 /pkgs/development/compilers
parent9e8dea7986dbdde850a58c7704182776642d8919 (diff)
downloadnixlib-f8c402ecad06da9dc703cddaf74942472057dbd4.tar
nixlib-f8c402ecad06da9dc703cddaf74942472057dbd4.tar.gz
nixlib-f8c402ecad06da9dc703cddaf74942472057dbd4.tar.bz2
nixlib-f8c402ecad06da9dc703cddaf74942472057dbd4.tar.lz
nixlib-f8c402ecad06da9dc703cddaf74942472057dbd4.tar.xz
nixlib-f8c402ecad06da9dc703cddaf74942472057dbd4.tar.zst
nixlib-f8c402ecad06da9dc703cddaf74942472057dbd4.zip
polyml: fix with new libffi
New libffi doesn't have FFI_SYSV for x86/64 unix, this pulls in the
commit for the upstream version which fixes it, and ports that patch to
the 5.7 version. The 5.6 version is unchanged.

For ZHF: #80379
Diffstat (limited to 'pkgs/development/compilers')
-rw-r--r--pkgs/development/compilers/polyml/5.7-new-libffi-FFI_SYSV.patch34
-rw-r--r--pkgs/development/compilers/polyml/5.7.nix2
-rw-r--r--pkgs/development/compilers/polyml/default.nix10
3 files changed, 45 insertions, 1 deletions
diff --git a/pkgs/development/compilers/polyml/5.7-new-libffi-FFI_SYSV.patch b/pkgs/development/compilers/polyml/5.7-new-libffi-FFI_SYSV.patch
new file mode 100644
index 000000000000..c5c9846300f1
--- /dev/null
+++ b/pkgs/development/compilers/polyml/5.7-new-libffi-FFI_SYSV.patch
@@ -0,0 +1,34 @@
+For 5.7 the copyright header is different.
+
+From ad32de7f181acaffaba78d5c3d9e5aa6b84a741c Mon Sep 17 00:00:00 2001
+From: David Matthews <dm@prolingua.co.uk>
+Date: Sun, 7 Apr 2019 13:41:33 +0100
+Subject: [PATCH] Remove FFI_SYSV from abi table for X86/64 Unix.  It appears
+ that this has been removed in upstream versions of libffi and causes problems
+ when building using the system libffi.
+
+---
+ libpolyml/polyffi.cpp | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/libpolyml/polyffi.cpp b/libpolyml/polyffi.cpp
+index 5424dd84..3dc9cc7c 100644
+--- a/libpolyml/polyffi.cpp
++++ b/libpolyml/polyffi.cpp
+@@ -1,7 +1,7 @@
+ /*
+     Title:  New Foreign Function Interface
+
+-    Copyright (c) 2015  David C.J. Matthews
++    Copyright (c) 2015, 2019  David C.J. Matthews
+
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Lesser General Public
+@@ -109,7 +109,6 @@ static struct _abiTable { const char *abiName; ffi_abi abiCode; } abiTable[] =
+ #elif defined(X86_WIN64)
+     {"win64", FFI_WIN64},
+ #elif defined(X86_ANY)
+-    {"sysv", FFI_SYSV},
+     {"unix64", FFI_UNIX64},
+ #endif
+     { "default", FFI_DEFAULT_ABI}
diff --git a/pkgs/development/compilers/polyml/5.7.nix b/pkgs/development/compilers/polyml/5.7.nix
index db1c7613f65b..dca34ca67273 100644
--- a/pkgs/development/compilers/polyml/5.7.nix
+++ b/pkgs/development/compilers/polyml/5.7.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     substituteInPlace configure.ac --replace stdc++ c++
   '';
 
+  patches = [ ./5.7-new-libffi-FFI_SYSV.patch ];
+
   buildInputs = [ libffi gmp ];
 
   nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin autoreconfHook;
diff --git a/pkgs/development/compilers/polyml/default.nix b/pkgs/development/compilers/polyml/default.nix
index 7be5fd993aef..f35021b6597b 100644
--- a/pkgs/development/compilers/polyml/default.nix
+++ b/pkgs/development/compilers/polyml/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, gmp, libffi }:
+{ stdenv, fetchFromGitHub, fetchpatch, autoreconfHook, gmp, libffi }:
 
 stdenv.mkDerivation rec {
   pname = "polyml";
@@ -8,6 +8,14 @@ stdenv.mkDerivation rec {
     substituteInPlace configure.ac --replace stdc++ c++
   '';
 
+  patches = [
+    (fetchpatch {
+      name = "new-libffi-FFI_SYSV.patch";
+      url = "https://github.com/polyml/polyml/commit/ad32de7f181acaffaba78d5c3d9e5aa6b84a741c.patch";
+      sha256 = "007q3r2h9kfh3c1nv0dyhipmak44q468ab9bwnz4kk4a2dq76n8v";
+    })
+  ];
+
   buildInputs = [ libffi gmp ];
 
   nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin autoreconfHook;