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 ++ optional odbcSupport unixODBC
++ optionals stdenv.isDarwin [ Carbon Cocoa ]; ++ 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 ''; patchPhase = '' sed -i "s@/bin/rm@rm@" lib/odbc/configure erts/configure '';
preConfigure = '' preConfigure = ''

View File

@ -2,7 +2,7 @@
, gnused, gawk, makeWrapper , gnused, gawk, makeWrapper
, odbcSupport ? false, unixODBC ? null , odbcSupport ? false, unixODBC ? null
, wxSupport ? false, mesa ? null, wxGTK ? null, xorg ? null , wxSupport ? false, mesa ? null, wxGTK ? null, xorg ? null
, enableDebugInfo ? false , enableDebugInfo ? false
, Carbon ? null, Cocoa ? null }: , Carbon ? null, Cocoa ? null }:
assert wxSupport -> mesa != null && wxGTK != null && xorg != null; assert wxSupport -> mesa != null && wxGTK != null && xorg != null;
@ -24,11 +24,16 @@ stdenv.mkDerivation rec {
debugInfo = enableDebugInfo; debugInfo = enableDebugInfo;
buildInputs = buildInputs =
[ perl gnum4 ncurses openssl makeWrapper autoconf264 gcc [ perl gnum4 ncurses openssl makeWrapper autoconf264 gcc
] ++ optional wxSupport [ mesa wxGTK xorg.libX11 ] ] ++ optional wxSupport [ mesa wxGTK xorg.libX11 ]
++ optional odbcSupport [ unixODBC ] ++ optional odbcSupport [ unixODBC ]
++ optionals stdenv.isDarwin [ Carbon Cocoa ]; ++ 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 ''; patchPhase = '' sed -i "s@/bin/rm@rm@" lib/odbc/configure.in erts/configure.in '';
preConfigure = '' preConfigure = ''
@ -36,22 +41,22 @@ stdenv.mkDerivation rec {
export LANG=C export LANG=C
export ERL_TOP=$(pwd) export ERL_TOP=$(pwd)
sed -e s@/bin/pwd@pwd@g -i otp_build 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= [ configureFlags= [
"--with-ssl=${openssl.dev}" "--with-ssl=${openssl.dev}"
"--enable-smp-support" "--enable-smp-support"
"--enable-threads" "--enable-threads"
"--enable-kernel-poll" "--enable-kernel-poll"
"--disable-hipe" "--disable-hipe"
"${optionalString odbcSupport "--with-odbc=${unixODBC}"}" "${optionalString odbcSupport "--with-odbc=${unixODBC}"}"
"${optionalString stdenv.isDarwin "--enable-darwin-64bit"}" "${optionalString stdenv.isDarwin "--enable-darwin-64bit"}"
"${optionalString stdenv.isLinux "--enable-m64-build"}" "${optionalString stdenv.isLinux "--enable-m64-build"}"
]; ];
buildPhase = '' buildPhase = ''
./otp_build autoconf ./otp_build autoconf
./otp_build setup -a --prefix=$out $configureFlags ./otp_build setup -a --prefix=$out $configureFlags
''; '';
@ -89,7 +94,7 @@ stdenv.mkDerivation rec {
telephony and instant messaging. Erlang's runtime system has telephony and instant messaging. Erlang's runtime system has
built-in support for concurrency, distribution and fault built-in support for concurrency, distribution and fault
tolerance. 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. repository.
''; '';

View File

@ -35,7 +35,12 @@ stdenv.mkDerivation rec {
++ optional javacSupport openjdk ++ optional javacSupport openjdk
++ stdenv.lib.optionals stdenv.isDarwin [ Carbon Cocoa ]; ++ 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; 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 , gnused, gawk, autoconf, libxslt, libxml2, makeWrapper
, Carbon, Cocoa , Carbon, Cocoa
, odbcSupport ? false, unixODBC ? null , odbcSupport ? false, unixODBC ? null
@ -53,6 +53,11 @@ stdenv.mkDerivation rec {
sha256 = "10h5348p6g279b4q01i5jdqlljww5chcvrx5b4b0dv79pk0p0m9f"; 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 = [ patches = [
rmAndPwdPatch rmAndPwdPatch
envAndCpPatch envAndCpPatch

View File

@ -46,6 +46,9 @@ stdenv.mkDerivation rec {
prePatch = '' prePatch = ''
substituteInPlace configure.in \ substituteInPlace configure.in \
--replace '`sw_vers -productVersion`' '10.10' --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 = '' preConfigure = ''