diff --git a/lib/maintainers.nix b/lib/maintainers.nix index c1e25d40d109..5077ac233f2d 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -61,6 +61,7 @@ codyopel = "Cody Opel "; copumpkin = "Dan Peebles "; coroa = "Jonas Hörsch "; + couchemar = "Andrey Pavlov "; cstrahan = "Charles Strahan "; cwoac = "Oliver Matthews "; DamienCassou = "Damien Cassou "; diff --git a/pkgs/development/interpreters/erlang/R18.nix b/pkgs/development/interpreters/erlang/R18.nix new file mode 100644 index 000000000000..9bc36ee47dec --- /dev/null +++ b/pkgs/development/interpreters/erlang/R18.nix @@ -0,0 +1,87 @@ +{ stdenv, fetchurl, perl, gnum4, ncurses, openssl +, gnused, gawk, makeWrapper +, odbcSupport ? false, unixODBC ? null +, wxSupport ? true, mesa ? null, wxGTK ? null, xlibs ? null, wxmac ? null +, javacSupport ? false, openjdk ? null +, enableHipe ? true +}: + +assert wxSupport -> (if stdenv.isDarwin + then wxmac != null + else mesa != null && wxGTK != null && xlibs != null); + +assert odbcSupport -> unixODBC != null; +assert javacSupport -> openjdk != null; + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "erlang-" + version + "${optionalString odbcSupport "-odbc"}" + + "${optionalString javacSupport "-javac"}"; + version = "18.0"; + + src = fetchurl { + url = "http://www.erlang.org/download/otp_src_${version}.tar.gz"; + sha256 = "1ahi865ii3iqzd00yyn3nrxjb9qa2by9d7ixssvqw8ag9firvdm0"; + }; + + buildInputs = + [ perl gnum4 ncurses openssl makeWrapper + ] ++ optional wxSupport (if stdenv.isDarwin then [ wxmac ] else [ mesa wxGTK xlibs.libX11 ]) + ++ optional odbcSupport [ unixODBC ] + ++ optional javacSupport [ openjdk ]; + + patchPhase = '' sed -i "s@/bin/rm@rm@" lib/odbc/configure erts/configure ''; + + preConfigure = '' + export HOME=$PWD/../ + sed -e s@/bin/pwd@pwd@g -i otp_build + ''; + + configureFlags= [ + "--with-ssl=${openssl}" + ] ++ optional enableHipe "--enable-hipe" + ++ optional wxSupport "--enable-wx" + ++ optional odbcSupport "--with-odbc=${unixODBC}" + ++ optional javacSupport "--with-javac" + ++ optional stdenv.isDarwin "--enable-darwin-64bit"; + + postInstall = let + manpages = fetchurl { + url = "http://www.erlang.org/download/otp_doc_man_${version}.tar.gz"; + sha256 = "0wsnp7sp21ydinwkg3rkazyrs382pdzwra9apikkhs70dv1hwkz4"; + }; + in '' + ln -s $out/lib/erlang/lib/erl_interface*/bin/erl_call $out/bin/erl_call + tar xf "${manpages}" -C "$out/lib/erlang" + for i in "$out"/lib/erlang/man/man[0-9]/*.[0-9]; do + prefix="''${i%/*}" + ensureDir "$out/share/man/''${prefix##*/}" + ln -s "$i" "$out/share/man/''${prefix##*/}/''${i##*/}erl" + done + ''; + + # Some erlang bin/ scripts run sed and awk + postFixup = '' + wrapProgram $out/lib/erlang/bin/erl --prefix PATH ":" "${gnused}/bin/" + wrapProgram $out/lib/erlang/bin/start_erl --prefix PATH ":" "${gnused}/bin/:${gawk}/bin" + ''; + + meta = { + homepage = "http://www.erlang.org/"; + description = "Programming language used for massively scalable soft real-time systems"; + + longDescription = '' + Erlang is a programming language used to build massively scalable + soft real-time systems with requirements on high availability. + Some of its uses are in telecoms, banking, e-commerce, computer + telephony and instant messaging. Erlang's runtime system has + built-in support for concurrency, distribution and fault + tolerance. + ''; + + platforms = platforms.unix; + maintainers = with maintainers; [ the-kenny sjmackenzie couchemar ]; + license = licenses.asl20; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 920423b54a2f..79759faaf611 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4779,10 +4779,14 @@ let erlangR17_odbc = callPackage ../development/interpreters/erlang/R17.nix { odbcSupport = true; }; erlangR17_javac = callPackage ../development/interpreters/erlang/R17.nix { javacSupport = true; }; erlangR17_odbc_javac = callPackage ../development/interpreters/erlang/R17.nix { javacSupport = true; odbcSupport = true; }; - erlang = erlangR17; - erlang_odbc = erlangR17_odbc; - erlang_javac = erlangR17_javac; - erlang_odbc_javac = erlangR17_odbc_javac; + erlangR18 = callPackage ../development/interpreters/erlang/R18.nix { }; + erlangR18_odbc = callPackage ../development/interpreters/erlang/R18.nix { odbcSupport = true; }; + erlangR18_javac = callPackage ../development/interpreters/erlang/R18.nix { javacSupport = true; }; + erlangR18_odbc_javac = callPackage ../development/interpreters/erlang/R18.nix { javacSupport = true; odbcSupport = true; }; + erlang = erlangR18; + erlang_odbc = erlangR18_odbc; + erlang_javac = erlangR18_javac; + erlang_odbc_javac = erlangR18_odbc_javac; rebar = callPackage ../development/tools/build-managers/rebar { }; @@ -9191,7 +9195,7 @@ let xwayland = with xorg; callPackage ../servers/x11/xorg/xwayland.nix { }; - yaws = callPackage ../servers/http/yaws { }; + yaws = callPackage ../servers/http/yaws { erlang = erlangR17; }; zabbix = recurseIntoAttrs (import ../servers/monitoring/zabbix { inherit fetchurl stdenv pkgconfig postgresql curl openssl zlib;