diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/tsocks')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/tsocks/default.nix | 36 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/tsocks/poll.patch | 26 |
2 files changed, 62 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/tsocks/default.nix b/nixpkgs/pkgs/development/libraries/tsocks/default.nix new file mode 100644 index 000000000000..728c6e71f7fb --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/tsocks/default.nix @@ -0,0 +1,36 @@ +{ lib, stdenv, fetchurl }: + +stdenv.mkDerivation rec { + pname = "tsocks"; + version = "1.8beta5"; + + src = fetchurl { + url = "mirror://sourceforge/tsocks/${pname}-${version}.tar.gz"; + sha256 = "0ixkymiph771dcdzvssi9dr2pk1bzaw9zv85riv3xl40mzspx7c4"; + }; + + patches = [ ./poll.patch ]; + + preConfigure = '' + sed -i -e "s,\\\/usr,"$(echo $out|sed -e "s,\\/,\\\\\\\/,g")",g" tsocks + substituteInPlace tsocks --replace /usr $out + export configureFlags="$configureFlags --libdir=$out/lib" + ''; + + preBuild = '' + # We don't need the saveme binary, it is in fact never stored and we're + # never injecting stuff into ld.so.preload anyway + sed -i \ + -e "s,TARGETS=\(.*\)..SAVE.\(.*\),TARGETS=\1\2," \ + -e "/SAVE/d" Makefile + ''; + + meta = with lib; { + description = "Transparent SOCKS v4 proxying library"; + homepage = "http://tsocks.sourceforge.net/"; + license = lib.licenses.gpl2; + maintainers = with maintainers; [ edwtjo phreedom ]; + platforms = platforms.unix; + broken = stdenv.hostPlatform.isDarwin; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/tsocks/poll.patch b/nixpkgs/pkgs/development/libraries/tsocks/poll.patch new file mode 100644 index 000000000000..2bfeb9f779ca --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/tsocks/poll.patch @@ -0,0 +1,26 @@ +From Ingo Hadan <ingo.hadan@sdm.de> Fri, 02 Apr 2010 21:08:50 +0200 +From: Julien Moutinho <julm+tsocks@autogeree.net> +Date: Fri, 26 Apr 2013 01:57:26 +0200 +Subject: tsocks fails if socksified application uses poll(2) (e.g. subversion-1.5) + +--- +diff --git a/tsocks.c b/tsocks.c +index 9cfdfff..470babd 100644 +--- a/tsocks.c ++++ b/tsocks.c +@@ -657,10 +657,11 @@ int poll(POLL_SIGNATURE) { + * be ready for writing), otherwise we'll just let the select loop + * come around again (since we can't flag it for read, we don't know + * if there is any data to be read and can't be bothered checking) */ +- if (conn->selectevents & WRITE) { +- setevents |= POLLOUT; ++ if (conn->selectevents & POLLOUT) { ++ ufds[i].revents |= POLLOUT; + nevents++; + } ++ ufds[i].events = conn->selectevents; + } + } + } while (nevents == 0); + + |