From f8c402ecad06da9dc703cddaf74942472057dbd4 Mon Sep 17 00:00:00 2001 From: Kovacsics Robert Date: Tue, 25 Feb 2020 15:29:27 +0000 Subject: [PATCH] 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 --- .../polyml/5.7-new-libffi-FFI_SYSV.patch | 34 +++++++++++++++++++ pkgs/development/compilers/polyml/5.7.nix | 2 ++ pkgs/development/compilers/polyml/default.nix | 10 +++++- 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/compilers/polyml/5.7-new-libffi-FFI_SYSV.patch 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 00000000000..c5c9846300f --- /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 +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 db1c7613f65..dca34ca6727 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 7be5fd993ae..f35021b6597 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;