diff options
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 160 |
1 files changed, 131 insertions, 29 deletions
@@ -1,39 +1,141 @@ -# Maintainer: Micah Chambers <micahc.vt@gmail.com> +# Maintainer : Daniel Bermond < yahoo-com: danielbermond > +# Contributor: Micah Chambers <micahc.vt@gmail.com> pkgname=caffe -pkgver=rc3 +pkgver=rc5 pkgrel=1 -pkgdesc="Neural network toolkit" -arch=('i686' 'x86_64') -url="https://github.com/BVLC/caffe" +pkgdesc="A deep learning framework made with expression, speed, and modularity in mind (gpu enabled)" +arch=('x86_64') +url="http://caffe.berkeleyvision.org/" license=('BSD') -groups=('base-devel') -depends=('atlas-lapack-base' 'hdf5' 'opencv' 'boost' 'protobuf' 'google-glog' - 'gflags' 'leveldb' 'snappy' 'lmdb' 'xz>=5') -makedepends=('git' 'cmake') -optdepends=('cuda: for GPU support') -source=("https://github.com/BVLC/$pkgname/archive/$pkgver.tar.gz") -sha256sums=('0884207bfba0fbc8b263b87d30f9304f7094eec3a48f975177d142f8c72b6e3b') +depends=( # binary repositories: + 'boost-libs' 'protobuf' 'google-glog' 'gflags' 'hdf5' 'opencv' 'leveldb' + 'lmdb' 'cuda' 'python2' 'boost' 'cython2' 'python2-h5py' 'ipython2' + 'python2-matplotlib' 'python2-networkx' 'python2-nose' 'python2-numpy' + 'python2-pandas' 'python2-protobuf' 'python2-gflags' 'python2-scikit-learn' + 'python2-scipy' 'python2-pydot' + # AUR: + 'openblas-lapack' 'python2-leveldb' 'python2-scikit-image') +makedepends=('doxygen' 'texlive-core') +provides=('caffe-cpu') +conflicts=('caffe-git' 'caffe-cpu' 'caffe-cpu-git' 'caffe-dr-git' 'caffe-mnc-dr-git') +source=("${pkgname}-${pkgver}.tar.gz"::"https://github.com/BVLC/${pkgname}/archive/rc.tar.gz") +noextract=("${pkgname}-${pkgver}.tar.gz") +sha256sums=('7da46e2802c5d85e41aeda79bf27e907fc317fb1ecf96800403f4a57f1cd0dfb') -build() { - if [ $CARCH = "i686" ]; then - lib="lib" - else - lib="lib64" - fi - - cd "$srcdir/$pkgname-$pkgver" - rm -fr build - mkdir build - cd build - cmake ../ -DAtlas_LAPACK_LIBRARY=/usr/${lib}/libatlas.so \ - -DAtlas_BLAS_LIBRARY=/usr/${lib}/libatlas.so \ - -DCMAKE_INSTALL_PREFIX=$pkgdir/usr/ +prepare() { + # extract source file to a directory in the format $pkgname-$pkgver + mkdir -p "${pkgname}-${pkgver}" + cd "${pkgname}-${pkgver}" + tar xf ../"${pkgname}-${pkgver}.tar.gz" --strip 1 + + # compile fix: add 'opencv_imgcodecs' library to Makefile + sed -i '/opencv_imgproc/s/$/ opencv_imgcodecs/' Makefile + + # prepare to configure options in Makefile.config + cp -f Makefile.config.example Makefile.config + + # use gcc5 (gcc6 do not work) + sed -i '/CUSTOM_CXX/s/^#[[:space:]]//;/CUSTOM_CXX/s/$/-5/' Makefile.config + + # set CUDA directory + sed -i '/CUDA_DIR/s/\/usr\/local\/cuda/\/opt\/cuda/' Makefile.config + + # use newer CUDA version + sed -i '/#-gencode arch=compute_50/s/#//g' Makefile.config + + # set OpenBLAS as the BLAS provider and adjust its directories + sed -i '/BLAS[[:space:]]\:=[[:space:]]atlas/s/atlas/open/' Makefile.config + sed -i 's/.*BLAS_INCLUDE[[:space:]]\:=.*/BLAS_INCLUDE := \/usr\/include/' Makefile.config + sed -i 's/.*BLAS_LIB[[:space:]]\:=.*/BLAS_LIB := \/usr\/lib/' Makefile.config + + # python2 settings + _pyinc_line="$(sed -n '/PYTHON_INCLUDE[[:space:]]\:=[[:space:]]\/usr/=' Makefile.config)" + sed -i "$((_pyinc_line+1))s/dist/site/" Makefile.config + + # python3 settings + # if you want to try python3 _instead_ of python2 (currently not working): + # - uncomment this block + # - comment the python2 block + # - change python2 depends and optdepends to python3 + # - NOTE: do not enable both python2 and python3 blocks. choose only one. + #_pyinc_line="$(sed -n '/PYTHON_INCLUDE[[:space:]]\:=[[:space:]]\/usr/=' Makefile.config)" + #sed -i "$((_pyinc_line))s/2\.7/3.6m/" Makefile.config + #sed -i "$((_pyinc_line+1))s/2\.7/3.6/;$((_pyinc_line+1))s/dist/site/" Makefile.config +} - make +build() { + cd "${pkgname}-${pkgver}" + msg2 "Building target 'all'..." + make all + msg2 "Building target 'pycaffe'..." + make pycaffe + msg2 "Building target 'docs'..." + make docs + msg2 "Building target 'distribute'..." + make distribute } package() { - cd "$srcdir/$pkgname-$pkgver/build" - make install + # directories creation + mkdir -p "${pkgdir}/usr/bin" + mkdir -p "${pkgdir}/usr/include/caffe/"{proto,test,util} + mkdir -p "${pkgdir}/usr/lib/python2.7/site-packages/caffe/"{imagenet,proto} + mkdir -p "${pkgdir}/usr/share/"{doc/"${pkgname}"/search,licenses/"${pkgname}"} + + cd "${pkgname}-${pkgver}/distribute" + + # binaries + cd bin + install -D -m755 * "${pkgdir}/usr/bin" + + # libraries + cd ../lib + install -D -m755 *.so "${pkgdir}/usr/lib" + + # includes + cd ../include/caffe + install -D -m644 *.hpp "${pkgdir}/usr/include/caffe" + for _dir in proto test util + do + cd "${srcdir}/${pkgname}-${pkgver}/distribute/include/caffe/${_dir}" + install -D -m644 * "${pkgdir}/usr/include/caffe/${_dir}" + done + + # python + cd ../../../python + install -D -m755 *.py "${pkgdir}/usr/bin" + rm -rf python # remove duplicated 'python' folder + + cd caffe + for _file in * + do + [ -d "$_file" ] && continue # skip directories + _mode="$(stat --format '%a' "$_file")" + install -D -m"$_mode" "$_file" "${pkgdir}/usr/lib/python2.7/site-packages/caffe" + done + + for _dir in imagenet proto + do + cd "${srcdir}/${pkgname}-${pkgver}/distribute/python/caffe/$_dir" + for _file in * + do + _mode="$(stat --format '%a' "$_file")" + install -D -m"$_mode" "$_file" "${pkgdir}/usr/lib/python2.7/site-packages/caffe/${_dir}" + done + done + + # docs + cd ../../../../doxygen/html + for _file in * + do + [ -d "$_file" ] && continue # skip directories + install -D -m644 "$_file" "${pkgdir}/usr/share/doc/${pkgname}" + done + cd search + install -D -m644 * "${pkgdir}/usr/share/doc/${pkgname}/search" + + # license + cd "${srcdir}/${pkgname}-${pkgver}" + install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}" } |