erlang: patch all versions to work with clang 4

This commit is contained in:
Dan Peebles 2017-03-19 00:36:15 -04:00
parent 0cf93fda07
commit 5a81c66906
5 changed files with 36 additions and 13 deletions

View file

@ -27,6 +27,11 @@ stdenv.mkDerivation rec {
++ optional odbcSupport unixODBC
++ optionals stdenv.isDarwin [ Carbon Cocoa ];
# Clang 4 (rightfully) thinks signed comparisons of pointers with NULL are nonsense
prePatch = ''
substituteInPlace lib/wx/c_src/wxe_impl.cpp --replace 'temp > NULL' 'temp != NULL'
'';
patchPhase = '' sed -i "s@/bin/rm@rm@" lib/odbc/configure erts/configure '';
preConfigure = ''

View file

@ -2,7 +2,7 @@
, gnused, gawk, makeWrapper
, odbcSupport ? false, unixODBC ? null
, wxSupport ? false, mesa ? null, wxGTK ? null, xorg ? null
, enableDebugInfo ? false
, enableDebugInfo ? false
, Carbon ? null, Cocoa ? null }:
assert wxSupport -> mesa != null && wxGTK != null && xorg != null;
@ -24,11 +24,16 @@ stdenv.mkDerivation rec {
debugInfo = enableDebugInfo;
buildInputs =
[ perl gnum4 ncurses openssl makeWrapper autoconf264 gcc
[ perl gnum4 ncurses openssl makeWrapper autoconf264 gcc
] ++ optional wxSupport [ mesa wxGTK xorg.libX11 ]
++ optional odbcSupport [ unixODBC ]
++ optionals stdenv.isDarwin [ Carbon Cocoa ];
# Clang 4 (rightfully) thinks signed comparisons of pointers with NULL are nonsense
prePatch = ''
substituteInPlace lib/wx/c_src/wxe_impl.cpp --replace 'temp > NULL' 'temp != NULL'
'';
patchPhase = '' sed -i "s@/bin/rm@rm@" lib/odbc/configure.in erts/configure.in '';
preConfigure = ''
@ -36,22 +41,22 @@ stdenv.mkDerivation rec {
export LANG=C
export ERL_TOP=$(pwd)
sed -e s@/bin/pwd@pwd@g -i otp_build
sed -e s@"/usr/bin/env escript"@${erlang}/bin/escript@g -i lib/diameter/bin/diameterc
sed -e s@"/usr/bin/env escript"@${erlang}/bin/escript@g -i lib/diameter/bin/diameterc
'';
configureFlags= [
"--with-ssl=${openssl.dev}"
"--enable-smp-support"
"--enable-threads"
"--enable-kernel-poll"
"--disable-hipe"
"${optionalString odbcSupport "--with-odbc=${unixODBC}"}"
"${optionalString stdenv.isDarwin "--enable-darwin-64bit"}"
"--enable-smp-support"
"--enable-threads"
"--enable-kernel-poll"
"--disable-hipe"
"${optionalString odbcSupport "--with-odbc=${unixODBC}"}"
"${optionalString stdenv.isDarwin "--enable-darwin-64bit"}"
"${optionalString stdenv.isLinux "--enable-m64-build"}"
];
buildPhase = ''
./otp_build autoconf
./otp_build autoconf
./otp_build setup -a --prefix=$out $configureFlags
'';
@ -89,7 +94,7 @@ stdenv.mkDerivation rec {
telephony and instant messaging. Erlang's runtime system has
built-in support for concurrency, distribution and fault
tolerance.
This version of Erlang is Basho's version, forked from Ericsson's
This version of Erlang is Basho's version, forked from Ericsson's
repository.
'';

View file

@ -35,7 +35,12 @@ stdenv.mkDerivation rec {
++ optional javacSupport openjdk
++ stdenv.lib.optionals stdenv.isDarwin [ Carbon Cocoa ];
patchPhase = '' sed -i "s@/bin/rm@rm@" lib/odbc/configure erts/configure '';
patchPhase = ''
# Clang 4 (rightfully) thinks signed comparisons of pointers with NULL are nonsense
substituteInPlace lib/wx/c_src/wxe_impl.cpp --replace 'temp > NULL' 'temp != NULL'
sed -i "s@/bin/rm@rm@" lib/odbc/configure erts/configure
'';
debugInfo = enableDebugInfo;

View file

@ -1,4 +1,4 @@
{ stdenv, fetchurl, fetchFromGitHub, perl, gnum4, ncurses, openssl
{ stdenv, fetchurl, fetchpatch, fetchFromGitHub, perl, gnum4, ncurses, openssl
, gnused, gawk, autoconf, libxslt, libxml2, makeWrapper
, Carbon, Cocoa
, odbcSupport ? false, unixODBC ? null
@ -53,6 +53,11 @@ stdenv.mkDerivation rec {
sha256 = "10h5348p6g279b4q01i5jdqlljww5chcvrx5b4b0dv79pk0p0m9f";
};
# Clang 4 (rightfully) thinks signed comparisons of pointers with NULL are nonsense
prePatch = ''
substituteInPlace lib/wx/c_src/wxe_impl.cpp --replace 'temp > NULL' 'temp != NULL'
'';
patches = [
rmAndPwdPatch
envAndCpPatch

View file

@ -46,6 +46,9 @@ stdenv.mkDerivation rec {
prePatch = ''
substituteInPlace configure.in \
--replace '`sw_vers -productVersion`' '10.10'
# Clang 4 (rightfully) thinks signed comparisons of pointers with NULL are nonsense
substituteInPlace lib/wx/c_src/wxe_impl.cpp --replace 'temp > NULL' 'temp != NULL'
'';
preConfigure = ''