ecl: fix build with libffi 3.3

The build was broken by the recent libffi update
(53a04a2df0c0812fd983364184d519dc3356e7d2) because of this upstream
change:

ef76205647

I have changed the usage of FFI_SYSV as gentoo suggests:

https://wiki.gentoo.org/wiki/Libffi_3.3_porting_notes/FFI_SYSV

I'm not entirely sure if that is the right call here, but I haven't
noticed any regressions in my testing and its definitely better than a
broken build.

Upstream: https://gitlab.com/embeddable-common-lisp/ecl/issues/302
This commit is contained in:
Timo Kaufmann 2019-12-16 23:02:26 +01:00
parent 3ad650a14b
commit 00c3761322
4 changed files with 35 additions and 0 deletions

@ -61,6 +61,7 @@ stdenv.mkDerivation {
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/ecl/patches/16.1.2-getcwd.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
sha256 = "1fbi8gn7rv8nqff5mpaijsrch3k3z7qc5cn4h1vl8qrr8xwqlqhb";
})
./ecl-1.16.2-libffi-3.3-abi.patch
];
hardeningDisable = [ "format" ];

@ -35,6 +35,10 @@ stdenv.mkDerivation {
inherit (s) url sha256;
};
patches = [
./libffi-3.3-abi.patch
];
configureFlags = [
(if threadSupport then "--enable-threads" else "--disable-threads")
"--with-gmp-prefix=${gmp.dev}"

@ -0,0 +1,15 @@
diff --git a/src/c/ffi.d b/src/c/ffi.d
index 8861303e..8a959c23 100644
--- a/src/c/ffi.d
+++ b/src/c/ffi.d
@@ -145,8 +145,8 @@ static struct {
#elif defined(X86_WIN64)
{@':win64', FFI_WIN64},
#elif defined(X86_ANY) || defined(X86) || defined(X86_64)
- {@':cdecl', FFI_SYSV},
- {@':sysv', FFI_SYSV},
+ {@':cdecl', FFI_UNIX64},
+ {@':sysv', FFI_UNIX64},
{@':unix64', FFI_UNIX64},
#endif
};

@ -0,0 +1,15 @@
diff --git a/src/c/ffi.d b/src/c/ffi.d
index 8174977a..caa69f39 100644
--- a/src/c/ffi.d
+++ b/src/c/ffi.d
@@ -133,8 +133,8 @@ static struct {
#elif defined(X86_WIN64)
{@':win64', FFI_WIN64},
#elif defined(X86_ANY) || defined(X86) || defined(X86_64)
- {@':cdecl', FFI_SYSV},
- {@':sysv', FFI_SYSV},
+ {@':cdecl', FFI_UNIX64},
+ {@':sysv', FFI_UNIX64},
{@':unix64', FFI_UNIX64},
#endif
};