71 lines
1.8 KiB
Nix
71 lines
1.8 KiB
Nix
|
{ stdenv
|
||
|
, openblas
|
||
|
, boost
|
||
|
, cudaSupport ? true
|
||
|
, cudnnSupport ? false
|
||
|
, cudnn ? null
|
||
|
, cudatoolkit7
|
||
|
, fetchFromGitHub
|
||
|
, google-gflags
|
||
|
, glog
|
||
|
, hdf5
|
||
|
, leveldb
|
||
|
, lmdb
|
||
|
, opencv
|
||
|
, protobuf
|
||
|
, snappy
|
||
|
}:
|
||
|
|
||
|
|
||
|
let optional = stdenv.lib.optional;
|
||
|
in stdenv.mkDerivation rec {
|
||
|
# Use git revision because latest "release" is really old
|
||
|
name = "caffe-git-2015-07-02";
|
||
|
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "BVLC";
|
||
|
repo = "caffe";
|
||
|
rev = "77d66dfc907dd875d69bb9fc12dd950b531e464f";
|
||
|
sha256 = "0vd4qrc49dhsawj298xpkd5mvi35sh56kdswx3yp8ya4fjajwakx";
|
||
|
};
|
||
|
|
||
|
preConfigure = "mv Makefile.config.example Makefile.config";
|
||
|
|
||
|
makeFlags = "BLAS=open " +
|
||
|
(if !cudaSupport then "CPU_ONLY=1 " else "CUDA_DIR=${cudatoolkit7} ") +
|
||
|
(if cudnnSupport then "USE_CUDNN=1 " else "");
|
||
|
|
||
|
# too many issues with tests to run them for now
|
||
|
doCheck = false;
|
||
|
checkPhase = "make runtest ${makeFlags}";
|
||
|
|
||
|
buildInputs = [ openblas boost google-gflags glog hdf5 leveldb lmdb opencv
|
||
|
protobuf snappy ]
|
||
|
++ optional cudaSupport cudatoolkit7
|
||
|
++ optional cudnnSupport cudnn;
|
||
|
|
||
|
installPhase = ''
|
||
|
mkdir -p $out/{bin,share,lib}
|
||
|
for bin in $(find build/tools -executable -type f -name '*.bin');
|
||
|
do
|
||
|
cp $bin $out/bin/$(basename $bin .bin)
|
||
|
done
|
||
|
|
||
|
cp -r build/examples $out/share
|
||
|
cp -r build/lib $out
|
||
|
'';
|
||
|
|
||
|
meta = with stdenv.lib; {
|
||
|
description = "Deep learning framework";
|
||
|
longDescription = ''
|
||
|
Caffe is a deep learning framework made with expression, speed, and
|
||
|
modularity in mind. It is developed by the Berkeley Vision and Learning
|
||
|
Center (BVLC) and by community contributors.
|
||
|
'';
|
||
|
homepage = http://caffe.berkeleyvision.org/;
|
||
|
maintainers = with maintainers; [ jb55 ];
|
||
|
license = licenses.bsd2;
|
||
|
platforms = platforms.linux;
|
||
|
};
|
||
|
}
|