1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-12-25 03:17:13 +00:00
nixpkgs/pkgs/applications/networking/irc/weechat/default.nix

85 lines
3.3 KiB
Nix
Raw Normal View History

{ stdenv, fetchurl, lib
2019-12-16 15:32:41 +00:00
, ncurses, openssl, aspell, gnutls, gettext
, zlib, curl, pkgconfig, libgcrypt
, cmake, makeWrapper, libobjc, libresolv, libiconv
2016-10-14 22:30:38 +01:00
, asciidoctor # manpages
, guileSupport ? true, guile
, luaSupport ? true, lua5
, perlSupport ? true, perl
, pythonSupport ? true, python3Packages
, rubySupport ? true, ruby
, tclSupport ? true, tcl
, extraBuildInputs ? []
}:
let
inherit (python3Packages) python;
plugins = [
{ name = "perl"; enabled = perlSupport; cmakeFlag = "ENABLE_PERL"; buildInputs = [ perl ]; }
{ name = "tcl"; enabled = tclSupport; cmakeFlag = "ENABLE_TCL"; buildInputs = [ tcl ]; }
{ name = "ruby"; enabled = rubySupport; cmakeFlag = "ENABLE_RUBY"; buildInputs = [ ruby ]; }
{ name = "guile"; enabled = guileSupport; cmakeFlag = "ENABLE_GUILE"; buildInputs = [ guile ]; }
{ name = "lua"; enabled = luaSupport; cmakeFlag = "ENABLE_LUA"; buildInputs = [ lua5 ]; }
{ name = "python"; enabled = pythonSupport; cmakeFlag = "ENABLE_PYTHON3"; buildInputs = [ python ]; }
];
enabledPlugins = builtins.filter (p: p.enabled) plugins;
in
assert lib.all (p: p.enabled -> ! (builtins.elem null p.buildInputs)) plugins;
stdenv.mkDerivation rec {
weechat: v2.7.1 → v2.8 New features core: add variable "old_full_name" in buffer, set during buffer renaming (issue weechat/weechat#1428) core: add debug option "-d" in command /eval (issue weechat/weechat#1434) api: add functions crypto_hash and crypto_hash_pbkdf2 api: add info "auto_connect" (issue weechat/weechat#1453) api: add info "weechat_headless" (issue weechat/weechat#1433) buflist: add pointer "window" in bar item evaluation irc: add support of fake servers (no I/O, for testing purposes) relay: accept hash of password in init command of weechat protocol with option "password_hash" (PBKDF2, SHA256, SHA512) relay: reject client with weechat protocol if password or totp is received in init command but not set in WeeChat (issue weechat/weechat#1435) Bug fixes core: fix memory leak in completion core: flush stdout/stderr before forking in hook_process function (issue weechat/weechat#1441) core: fix evaluation of condition with nested "if" (issue weechat/weechat#1434) irc: split AUTHENTICATE message in 400-byte chunks (issue weechat/weechat#1459) irc: copy temporary server flag in command /server copy irc: add nick changes in the hotlist (except self nick change) irc: case-insensitive comparison on incoming CTCP command, force upper case on CTCP replies (issue weechat/weechat#1439) irc: fix memory leak when the channel topic is changed logger: fix crash when logging is disabled on a buffer and the log file was deleted in the meanwhile, when option logger.file.info_lines is on (issue weechat/weechat#1444) php: fix crash when loading script with PHP 7.4 (issue weechat/weechat#1452) relay: update buffers synchronization when buffers are renamed (issue weechat/weechat#1428) script: fix memory leak in read of script repository file if it has invalid content script: fix unexpected display of scripts list in buffer with command /script list -i xfer: send signal "xfer_ended" after the received file has been renamed (issue weechat/weechat#1438) Tests scripts: fix generation of test scripts with Python 3.8 unit: add tests on IRC protocol functions and callbacks unit: add tests on function secure_derive_key unit: add tests on functions util_get_time_diff and util_file_get_content Build core: fix Cygwin build guile: add detection of Guile 3.0.0 (issue weechat/weechat#1442) irc: fix build with GnuTLS < 3.1.0 (issue weechat/weechat#1431) php: add detection of PHP 7.4 ruby: add detection of Ruby 2.7 (issue weechat/weechat#1455)
2020-03-29 15:04:28 +01:00
version = "2.8";
pname = "weechat";
src = fetchurl {
url = "https://weechat.org/files/src/weechat-${version}.tar.bz2";
weechat: v2.7.1 → v2.8 New features core: add variable "old_full_name" in buffer, set during buffer renaming (issue weechat/weechat#1428) core: add debug option "-d" in command /eval (issue weechat/weechat#1434) api: add functions crypto_hash and crypto_hash_pbkdf2 api: add info "auto_connect" (issue weechat/weechat#1453) api: add info "weechat_headless" (issue weechat/weechat#1433) buflist: add pointer "window" in bar item evaluation irc: add support of fake servers (no I/O, for testing purposes) relay: accept hash of password in init command of weechat protocol with option "password_hash" (PBKDF2, SHA256, SHA512) relay: reject client with weechat protocol if password or totp is received in init command but not set in WeeChat (issue weechat/weechat#1435) Bug fixes core: fix memory leak in completion core: flush stdout/stderr before forking in hook_process function (issue weechat/weechat#1441) core: fix evaluation of condition with nested "if" (issue weechat/weechat#1434) irc: split AUTHENTICATE message in 400-byte chunks (issue weechat/weechat#1459) irc: copy temporary server flag in command /server copy irc: add nick changes in the hotlist (except self nick change) irc: case-insensitive comparison on incoming CTCP command, force upper case on CTCP replies (issue weechat/weechat#1439) irc: fix memory leak when the channel topic is changed logger: fix crash when logging is disabled on a buffer and the log file was deleted in the meanwhile, when option logger.file.info_lines is on (issue weechat/weechat#1444) php: fix crash when loading script with PHP 7.4 (issue weechat/weechat#1452) relay: update buffers synchronization when buffers are renamed (issue weechat/weechat#1428) script: fix memory leak in read of script repository file if it has invalid content script: fix unexpected display of scripts list in buffer with command /script list -i xfer: send signal "xfer_ended" after the received file has been renamed (issue weechat/weechat#1438) Tests scripts: fix generation of test scripts with Python 3.8 unit: add tests on IRC protocol functions and callbacks unit: add tests on function secure_derive_key unit: add tests on functions util_get_time_diff and util_file_get_content Build core: fix Cygwin build guile: add detection of Guile 3.0.0 (issue weechat/weechat#1442) irc: fix build with GnuTLS < 3.1.0 (issue weechat/weechat#1431) php: add detection of PHP 7.4 ruby: add detection of Ruby 2.7 (issue weechat/weechat#1455)
2020-03-29 15:04:28 +01:00
sha256 = "0xpzl7985j47rpmly4r833jxd448xpy7chqphaxmhlql2c0gc08z";
};
outputs = [ "out" "man" ] ++ map (p: p.name) enabledPlugins;
enableParallelBuilding = true;
cmakeFlags = with stdenv.lib; [
"-DENABLE_MAN=ON"
"-DENABLE_DOC=ON"
weechat: 2.6 -> 2.7 Disables support for Javascript and PHP: - Javascript requires an old version of v8 - PHP requires a larger number of dependencies in addition to php-embed Changelog [1]: New features - core: add option weechat.look.nick_color_hash_salt to shuffle nick colors (issue #635) - core: add different icons sizes (16x16 to 512x512) (issue #1347) - core: add file weechat.desktop - core: add reverse of string for screen in evaluation of expressions with "revscr:" - core: add length of string (number of chars and on screen) in evaluation of expressions with "length:xxx" and "lengthscr:xxx" - core: add calculation of expression in evaluation of expressions with "calc:xxx" (issue #997) - core: add optional default path (evaluated) in completion "filename" - core: add support of modifiers in evaluation of expressions with "modifier:name,data,string" - api: add modifier "color_encode_ansi" (issue #528) - api: add modifier "eval_path_home" - irc: add filters on raw buffer (issue #1000) - irc: add option irc.look.display_pv_warning_address to display a warning in private buffer if the remote nick address has changed (issue #892) - irc: add server option "ssl_password" (issue #115, issue #1416) - irc: add "user" in output of irc_message_parse (issue #136) - irc: add options irc.color.message_kick and irc.color.reason_kick (issue #683, issue #684) - logger: add option logger.file.color_lines (issue #528, issue #621) - script: add options "-ol" and "-il" in command "/script list" to send translated string with list of scripts loaded, display "No scripts loaded" if no scripts are loaded - xfer: add option xfer.file.download_temporary_suffix with default value ".part" (issue #1237) Bug fixes - core: set buffer name, short name and title only if the value has changed - core: fix scrolling up in bare mode when switched to bare mode at the top of the buffer (issue #899, issue #978) - core: optimize load of configuration files - core: fix window separators not respecting window splits (issue #630) - core: fix cursor mode info when prefix_align is none and with words split across lines (issue #610, issue #617, issue #619) - core: add support of reverse video in ANSI color codes - core: fixed segfault during excessive evaluation in function string_repeat (issue #1400) - buflist: fix extra spaces between buffers when conditions are used to hide buffers (regression introduced in version 2.6) (issue #1403) - irc: do not automatically open a channel with name "0" (issue #1429) - irc: remove option irc.network.channel_encode, add server option "charset_message" to control which part of the IRC message is decoded/encoded to the target charset (issue #832) - irc: use path from option xfer.file.upload_path to complete filename in command "/dcc send" (issue #60) - logger: fix write in log file if it has been deleted or renamed (issue #123) - python: send "bytes" instead of "str" to callbacks in Python 3 when the string is not UTF-8 valid (issue #1389) - relay: send message "_buffer_title_changed" to clients only when the title is changed - xfer: fix memory leak when a xfer is freed and when the plugin is unloaded Tests - unit: add tests on GUI color functions Build - core: fix build on Haiku (issue #1420) - core: fix build on Alpine - core: remove file FindTCL.cmake - core: display an error on missing dependency in CMake (issue #916, issue #956) - debian: disable Javascript plugin on Debian Sid and Ubuntu Eoan - debian: build with Guile 2.2 - guile: add support of Guile 2.2, disable /guile eval (issue #1098) - python: add detection of Python 3.8 [1] https://weechat.org/files/changelog/ChangeLog-2.7.html
2019-12-08 22:16:35 +00:00
"-DENABLE_JAVASCRIPT=OFF" # Requires v8 <= 3.24.3, https://github.com/weechat/weechat/issues/360
"-DENABLE_PHP=OFF"
2016-10-14 22:30:38 +01:00
]
++ optionals stdenv.isDarwin ["-DICONV_LIBRARY=${libiconv}/lib/libiconv.dylib" "-DCMAKE_FIND_FRAMEWORK=LAST"]
++ map (p: "-D${p.cmakeFlag}=" + (if p.enabled then "ON" else "OFF")) plugins
;
buildInputs = with stdenv.lib; [
2019-12-16 15:32:41 +00:00
ncurses openssl aspell gnutls gettext zlib curl pkgconfig
libgcrypt makeWrapper cmake asciidoctor
]
++ optionals stdenv.isDarwin [ libobjc libresolv ]
++ concatMap (p: p.buildInputs) enabledPlugins
++ extraBuildInputs;
NIX_CFLAGS_COMPILE = "-I${python}/include/${python.libPrefix}"
# Fix '_res_9_init: undefined symbol' error
+ (stdenv.lib.optionalString stdenv.isDarwin "-DBIND_8_COMPAT=1 -lresolv");
postInstall = with stdenv.lib; ''
for p in ${concatMapStringsSep " " (p: p.name) enabledPlugins}; do
from=$out/lib/weechat/plugins/$p.so
to=''${!p}/lib/weechat/plugins/$p.so
mkdir -p $(dirname $to)
mv $from $to
done
'';
meta = {
homepage = "http://www.weechat.org/";
description = "A fast, light and extensible chat client";
longDescription = ''
You can find more documentation as to how to customize this package
(eg. adding python modules for scripts that would require them, etc.)
on https://nixos.org/nixpkgs/manual/#sec-weechat .
'';
license = stdenv.lib.licenses.gpl3;
maintainers = with stdenv.lib.maintainers; [ lovek323 the-kenny lheckemann ma27 ];
platforms = stdenv.lib.platforms.unix;
};
}