torch: init at torch-git-2016-03-08

Torch is a machine-learning framework written in Lua

+367
+10
pkgs/applications/science/machine-learning/torch/default.nix
···
··· 1 + { callPackage, fetchgit } : 2 + let 3 + src = fetchgit { 4 + url = "https://github.com/grwlf/torch-distro"; 5 + rev = "f972c4253b14b95b53aefe7b24efa496223e73f2"; 6 + sha256 = "1lhjhivhyypaic33vj1nsghshsajf7vi6gwsclaf3nqdl27d1h1s"; 7 + }; 8 + 9 + in 10 + callPackage (import ./torch-distro.nix) { inherit src; }
+355
pkgs/applications/science/machine-learning/torch/torch-distro.nix
···
··· 1 + { luarocks, lib , stdenv, writeText , readline, makeWrapper, 2 + less, ncurses, cmake, openblas, coreutils, fetchgit, libuuid, czmq, openssl, 3 + gnuplot, fetchurl, 4 + 5 + src ? ./. 6 + } : 7 + 8 + let 9 + 10 + common_meta = { 11 + homepage = http://torch.ch; 12 + license = stdenv.lib.licenses.bsd3; 13 + maintainers = with stdenv.lib.maintainers; [ smironov ]; 14 + platforms = stdenv.lib.platforms.gnu; 15 + }; 16 + 17 + distro_src = src; 18 + 19 + default_luarocks = luarocks; 20 + 21 + pkgs_gnuplot = gnuplot; 22 + 23 + luapkgs = rec { 24 + 25 + 26 + luajit = 27 + stdenv.mkDerivation rec { 28 + name = "luajit-${version}"; 29 + version = "2.1.0-beta1"; 30 + luaversion = "5.1"; 31 + 32 + src = fetchurl { 33 + url = "http://luajit.org/download/LuaJIT-${version}.tar.gz"; 34 + sha256 = "06170d38387c59d1292001a166e7f5524f5c5deafa8705a49a46fa42905668dd"; 35 + }; 36 + 37 + enableParallelBuilding = true; 38 + 39 + patchPhase = '' 40 + substituteInPlace Makefile \ 41 + --replace /usr/local $out 42 + 43 + substituteInPlace src/Makefile --replace gcc cc 44 + '' + stdenv.lib.optionalString (stdenv.cc.libc != null) 45 + '' 46 + substituteInPlace Makefile \ 47 + --replace ldconfig ${stdenv.cc.libc}/sbin/ldconfig 48 + ''; 49 + 50 + configurePhase = false; 51 + buildFlags = [ "amalg" ]; # Build highly optimized version 52 + installPhase = '' 53 + make install INSTALL_INC=$out/include PREFIX=$out 54 + ln -s $out/bin/luajit* $out/bin/luajit 55 + ''; 56 + 57 + meta = with stdenv.lib; { 58 + description = "high-performance JIT compiler for Lua 5.1"; 59 + homepage = http://luajit.org; 60 + license = licenses.mit; 61 + platforms = platforms.linux ++ platforms.darwin; 62 + maintainers = [ maintainers.thoughtpolice ]; 63 + }; 64 + }; 65 + 66 + luarocks = default_luarocks.override { 67 + lua = luajit; 68 + }; 69 + 70 + buildLuaRocks = { rockspec ? "", luadeps ? [] , buildInputs ? [] 71 + , preBuild ? "" , postInstall ? "" 72 + , runtimeDeps ? [] , ... }@args : 73 + let 74 + 75 + luadeps_ = 76 + luadeps ++ 77 + (lib.concatMap (d : if d ? luadeps then d.luadeps else []) luadeps); 78 + 79 + runtimeDeps_ = 80 + runtimeDeps ++ 81 + (lib.concatMap (d : if d ? runtimeDeps then d.runtimeDeps else []) luadeps) ++ 82 + [ luajit coreutils ]; 83 + 84 + mkcfg = '' 85 + export LUAROCKS_CONFIG=config.lua 86 + cat >config.lua <<EOF 87 + rocks_trees = { 88 + { name = [[system]], root = [[${luarocks}]] } 89 + ${lib.concatImapStrings (i : dep : ", { name = [[dep${toString i}]], root = [[${dep}]] }") luadeps_} 90 + }; 91 + 92 + variables = { 93 + LUA_BINDIR = "$out/bin"; 94 + LUA_INCDIR = "$out/include"; 95 + LUA_LIBDIR = "$out/lib/lua/${luajit.luaversion}"; 96 + }; 97 + EOF 98 + ''; 99 + 100 + in 101 + stdenv.mkDerivation (args // { 102 + 103 + inherit preBuild postInstall; 104 + 105 + inherit luadeps runtimeDeps; 106 + 107 + phases = [ "unpackPhase" "patchPhase" "buildPhase"]; 108 + 109 + buildInputs = runtimeDeps ++ buildInputs ++ [ makeWrapper luajit ]; 110 + 111 + buildPhase = '' 112 + eval "$preBuild" 113 + ${mkcfg} 114 + eval "`${luarocks}/bin/luarocks --deps-mode=all --tree=$out path`" 115 + ${luarocks}/bin/luarocks make --deps-mode=all --tree=$out ${rockspec} 116 + 117 + for p in $out/bin/*; do 118 + wrapProgram $p \ 119 + --set LD_LIBRARY_PATH "${lib.makeSearchPath "lib" runtimeDeps_}" \ 120 + --set PATH "${lib.makeSearchPath "bin" runtimeDeps_}" \ 121 + --set LUA_PATH "'$LUA_PATH;$out/share/lua/${luajit.luaversion}/?.lua;$out/share/lua/${luajit.luaversion}/?/init.lua'" \ 122 + --set LUA_CPATH "'$LUA_CPATH;$out/lib/lua/${luajit.luaversion}/?.so;$out/lib/lua/${luajit.luaversion}/?/init.so'" 123 + done 124 + 125 + eval "$postInstall" 126 + ''; 127 + }); 128 + 129 + # FIXME: doesn't installs lua-files for some reason 130 + # lua-cjson = buildLuaPackage { 131 + # name = "lua-cjson"; 132 + # src = ./extra/lua-cjson; 133 + # rockspec = "lua-cjson-2.1devel-1.rockspec"; 134 + # }; 135 + 136 + lua-cjson = stdenv.mkDerivation rec { 137 + name = "lua-cjson"; 138 + src = "${distro_src}/extra/lua-cjson"; 139 + 140 + preConfigure = '' 141 + makeFlags="PREFIX=$out LUA_LIBRARY=$out/lib/lua" 142 + ''; 143 + 144 + buildInputs = [luajit]; 145 + 146 + installPhase = '' 147 + make install-extra $makeFlags 148 + ''; 149 + }; 150 + 151 + luafilesystem = buildLuaRocks { 152 + name = "filesystem"; 153 + src = "${distro_src}/extra/luafilesystem"; 154 + luadeps = [lua-cjson]; 155 + rockspec = "rockspecs/luafilesystem-1.6.3-1.rockspec"; 156 + }; 157 + 158 + penlight = buildLuaRocks { 159 + name = "penlight"; 160 + src = "${distro_src}/extra/penlight"; 161 + luadeps = [luafilesystem]; 162 + }; 163 + 164 + luaffifb = buildLuaRocks { 165 + name = "luaffifb"; 166 + src = "${distro_src}/extra/luaffifb"; 167 + }; 168 + 169 + sundown = buildLuaRocks rec { 170 + name = "sundown"; 171 + src = "${distro_src}/pkg/sundown"; 172 + rockspec = "rocks/${name}-scm-1.rockspec"; 173 + }; 174 + 175 + cwrap = buildLuaRocks rec { 176 + name = "cwrap"; 177 + src = "${distro_src}/pkg/cwrap"; 178 + rockspec = "rocks/${name}-scm-1.rockspec"; 179 + }; 180 + 181 + paths = buildLuaRocks rec { 182 + name = "paths"; 183 + src = "${distro_src}/pkg/paths"; 184 + buildInputs = [cmake]; 185 + rockspec = "rocks/${name}-scm-1.rockspec"; 186 + }; 187 + 188 + torch = buildLuaRocks rec { 189 + name = "torch"; 190 + src = "${distro_src}/pkg/torch"; 191 + luadeps = [ paths cwrap ]; 192 + buildInputs = [ cmake ]; 193 + rockspec = "rocks/torch-scm-1.rockspec"; 194 + preBuild = '' 195 + substituteInPlace ${rockspec} \ 196 + --replace '"sys >= 1.0"' ' ' 197 + export LUA_PATH="$src/?.lua;$LUA_PATH" 198 + ''; 199 + meta = common_meta // { 200 + description = "Torch is a machine-learning library"; 201 + longDescription = '' 202 + Torch is the main package in [Torch7](http://torch.ch) where data 203 + structures for multi-dimensional tensors and mathematical operations 204 + over these are defined. Additionally, it provides many utilities for 205 + accessing files, serializing objects of arbitrary types and other 206 + useful utilities. 207 + ''; 208 + }; 209 + }; 210 + 211 + dok = buildLuaRocks rec { 212 + name = "dok"; 213 + src = "${distro_src}/pkg/dok"; 214 + luadeps = [sundown]; 215 + rockspec = "rocks/${name}-scm-1.rockspec"; 216 + }; 217 + 218 + sys = buildLuaRocks rec { 219 + name = "sys"; 220 + luadeps = [torch]; 221 + buildInputs = [readline cmake]; 222 + src = "${distro_src}/pkg/sys"; 223 + rockspec = "sys-1.1-0.rockspec"; 224 + preBuild = '' 225 + export Torch_DIR=${torch}/share/cmake/torch 226 + ''; 227 + }; 228 + 229 + xlua = buildLuaRocks rec { 230 + name = "xlua"; 231 + luadeps = [torch sys]; 232 + src = "${distro_src}/pkg/xlua"; 233 + rockspec = "xlua-1.0-0.rockspec"; 234 + }; 235 + 236 + nn = buildLuaRocks rec { 237 + name = "nn"; 238 + luadeps = [torch luaffifb]; 239 + buildInputs = [cmake]; 240 + src = "${distro_src}/extra/nn"; 241 + rockspec = "rocks/nn-scm-1.rockspec"; 242 + preBuild = '' 243 + export Torch_DIR=${torch}/share/cmake/torch 244 + ''; 245 + }; 246 + 247 + graph = buildLuaRocks rec { 248 + name = "graph"; 249 + luadeps = [ torch ]; 250 + buildInputs = [cmake]; 251 + src = "${distro_src}/extra/graph"; 252 + rockspec = "rocks/graph-scm-1.rockspec"; 253 + preBuild = '' 254 + export Torch_DIR=${torch}/share/cmake/torch 255 + ''; 256 + }; 257 + 258 + nngraph = buildLuaRocks rec { 259 + name = "nngraph"; 260 + luadeps = [ torch nn graph ]; 261 + buildInputs = [cmake]; 262 + src = "${distro_src}/extra/nngraph"; 263 + preBuild = '' 264 + export Torch_DIR=${torch}/share/cmake/torch 265 + ''; 266 + }; 267 + 268 + image = buildLuaRocks rec { 269 + name = "image"; 270 + luadeps = [ torch dok sys xlua ]; 271 + buildInputs = [cmake]; 272 + src = "${distro_src}/pkg/image"; 273 + rockspec = "image-1.1.alpha-0.rockspec"; 274 + preBuild = '' 275 + export Torch_DIR=${torch}/share/cmake/torch 276 + ''; 277 + }; 278 + 279 + optim = buildLuaRocks rec { 280 + name = "optim"; 281 + luadeps = [ torch ]; 282 + buildInputs = [cmake]; 283 + src = "${distro_src}/pkg/optim"; 284 + rockspec = "optim-1.0.5-0.rockspec"; 285 + preBuild = '' 286 + export Torch_DIR=${torch}/share/cmake/torch 287 + ''; 288 + }; 289 + 290 + gnuplot = buildLuaRocks rec { 291 + name = "gnuplot"; 292 + luadeps = [ torch paths ]; 293 + runtimeDeps = [ pkgs_gnuplot less ]; 294 + src = "${distro_src}/pkg/gnuplot"; 295 + rockspec = "rocks/gnuplot-scm-1.rockspec"; 296 + }; 297 + 298 + trepl = buildLuaRocks rec { 299 + name = "trepl"; 300 + luadeps = [torch gnuplot paths penlight graph nn nngraph image gnuplot optim sys dok]; 301 + runtimeDeps = [ ncurses readline ]; 302 + src = "${distro_src}/exe/trepl"; 303 + meta = common_meta // { 304 + description = "A pure Lua REPL for LuaJIT, with heavy support for Torch types."; 305 + }; 306 + }; 307 + 308 + lbase64 = buildLuaRocks rec { 309 + name = "lbase64"; 310 + src = fetchgit { 311 + url = "https://github.com/LuaDist2/lbase64"; 312 + rev = "1e9e4f1e0bf589a0ed39f58acc185ec5e213d207"; 313 + sha256 = "1i1fpy9v6r4w3lrmz7bmf5ppq65925rv90gx39b3pykfmn0hcb9c"; 314 + }; 315 + }; 316 + 317 + luuid = stdenv.mkDerivation rec { 318 + name = "luuid"; 319 + src = fetchgit { 320 + url = "https://github.com/LuaDist/luuid"; 321 + sha256 = "062gdf1rild11jg46vry93hcbb36b4527pf1dy7q9fv89f7m2nav"; 322 + }; 323 + 324 + preConfigure = '' 325 + cmakeFlags="-DLUA_LIBRARY=${luajit}/lib/lua/${luajit.luaversion} -DINSTALL_CMOD=$out/lib/lua/${luajit.luaversion} -DINSTALL_MOD=$out/lib/lua/${luajit.luaversion}" 326 + ''; 327 + 328 + buildInputs = [cmake libuuid luajit]; 329 + meta = { 330 + # FIXME: set the exact revision for src 331 + broken = true; 332 + }; 333 + }; 334 + 335 + # Doesn't work due to missing deps (according to luarocs). 336 + itorch = buildLuaRocks rec { 337 + name = "itorch"; 338 + luadeps = [torch gnuplot paths penlight graph nn nngraph image gnuplot 339 + optim sys dok lbase64 lua-cjson luuid]; 340 + buildInputs = [czmq openssl]; 341 + src = "${distro_src}/extra/iTorch"; 342 + meta = { 343 + # FIXME: figure out whats wrong with deps 344 + broken = true; 345 + }; 346 + }; 347 + 348 + 349 + }; 350 + 351 + in 352 + 353 + luapkgs 354 + 355 +
+2
pkgs/top-level/all-packages.nix
··· 13427 quazip = qt5.quazip.override { qt = qt4; }; 13428 }; 13429 13430 torchat = callPackage ../applications/networking/instant-messengers/torchat { 13431 wrapPython = pythonPackages.wrapPython; 13432 };
··· 13427 quazip = qt5.quazip.override { qt = qt4; }; 13428 }; 13429 13430 + torch-packages = recurseIntoAttrs ( callPackage ../applications/science/machine-learning/torch { } ); 13431 + 13432 torchat = callPackage ../applications/networking/instant-messengers/torchat { 13433 wrapPython = pythonPackages.wrapPython; 13434 };