summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Bermond2018-08-22 17:59:01 +0000
committerPeter Babič2021-11-23 19:08:36 +0100
commit6d24ec69a738fc0f78efa2d6c2fbe96d400f590a (patch)
treeb3992c598d4e5ebffe4d580d901c47bf69ab1826
parentb2611e8c2f711946624d0ab988312dd7ba48d7b7 (diff)
downloadaur-6d24ec69a738fc0f78efa2d6c2fbe96d400f590a.tar.gz
Package now provides the non-cuda version
This package now provides the non-cuda version (as known as the 'cpy only' build). If you want caffe2 with cuda support, use package caffe-cuda. This new package naming schema will better reflect the package contents. This conforms to tensorflow package naming from the official repositories.
-rw-r--r--.SRCINFO25
-rw-r--r--Makefile.config20
-rw-r--r--PKGBUILD202
3 files changed, 102 insertions, 145 deletions
diff --git a/.SRCINFO b/.SRCINFO
index dc8474462bd8..b45175ec352f 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,13 +1,16 @@
pkgbase = caffe
- pkgdesc = A deep learning framework made with expression, speed, and modularity in mind (gpu enabled)
+ pkgdesc = A deep learning framework made with expression, speed, and modularity in mind (cpu only)
pkgver = 1.0
- pkgrel = 9
+ pkgrel = 10
url = http://caffe.berkeleyvision.org/
+ arch = i686
arch = x86_64
license = BSD
- makedepends = gcc7
+ makedepends = boost
makedepends = doxygen
makedepends = texlive-core
+ depends = openblas
+ depends = lapack
depends = boost-libs
depends = protobuf
depends = google-glog
@@ -16,10 +19,7 @@ pkgbase = caffe
depends = opencv
depends = leveldb
depends = lmdb
- depends = cuda
- depends = cudnn
depends = python
- depends = boost
depends = cython
depends = python-numpy
depends = python-scipy
@@ -35,21 +35,22 @@ pkgbase = caffe
depends = python-yaml
depends = python-pillow
depends = python-six
- depends = openblas-lapack
depends = python-leveldb
depends = python-scikit-image
depends = python-pydotplus
+ provides = caffe-cpu
conflicts = caffe-git
+ conflicts = caffe-cuda
+ conflicts = caffe-cuda-git
conflicts = caffe-cpu
conflicts = caffe-cpu-git
- conflicts = caffe-dr-git
- conflicts = caffe-mnc-dr-git
conflicts = caffe2
- conflicts = caffe2-git
- conflicts = caffe2-cpu
- conflicts = caffe2-cpu-git
+ conflicts = caffe2-cuda
+ replaces = caffe-cpu
source = caffe-1.0.tar.gz::https://github.com/BVLC/caffe/archive/1.0.tar.gz
+ source = Makefile.config
sha256sums = 71d3c9eb8a183150f965a465824d01fe82826c22505f7aa314f700ace03fa77f
+ sha256sums = 9cbe8ea31d70904ec02a4ca3978aa072c99f10aff0629e7616c51bf4a6ca92f5
pkgname = caffe
diff --git a/Makefile.config b/Makefile.config
new file mode 100644
index 000000000000..a9a8f31bac7b
--- /dev/null
+++ b/Makefile.config
@@ -0,0 +1,20 @@
+CPU_ONLY := 1
+USE_OPENCV := 1
+USE_LEVELDB := 1
+USE_LMDB := 1
+OPENCV_VERSION := 3
+BLAS := open
+BLAS_INCLUDE := /usr/include
+BLAS_LIB := /usr/lib
+PYTHON_LIBRARIES := boost_python3 python3.7m
+PYTHON_INCLUDE := /usr/include/python3.7m \
+ /usr/lib/python3.7/site-packages/numpy/core/include
+PYTHON_LIB := /usr/lib
+WITH_PYTHON_LAYER := 1
+INCLUDE_DIRS := $(PYTHON_INCLUDE)
+LIBRARY_DIRS := $(PYTHON_LIB)
+USE_PKG_CONFIG := 1
+BUILD_DIR := build
+DISTRIBUTE_DIR := distribute
+TEST_GPUID := 0
+Q ?= @
diff --git a/PKGBUILD b/PKGBUILD
index f08589c7e117..27e15e23476f 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,100 +1,67 @@
# Maintainer : Daniel Bermond < yahoo-com: danielbermond >
# Contributor: Micah Chambers <micahc.vt@gmail.com>
-# NOTE:
-# In order to build with NCCL support, uncomment the NCCL
-# lines in 'depends' and 'preprare()'.
-
pkgname=caffe
pkgver=1.0
-pkgrel=9
-pkgdesc='A deep learning framework made with expression, speed, and modularity in mind (gpu enabled)'
-arch=('x86_64')
+pkgrel=10
+pkgdesc='A deep learning framework made with expression, speed, and modularity in mind (cpu only)'
+arch=('i686' 'x86_64')
url='http://caffe.berkeleyvision.org/'
license=('BSD')
depends=(
# official repositories:
- 'boost-libs' 'protobuf' 'google-glog' 'gflags' 'hdf5' 'opencv' 'leveldb'
- 'lmdb' 'cuda' 'cudnn' 'python' 'boost' 'cython' 'python-numpy' 'python-scipy'
- 'python-matplotlib' 'ipython' 'python-h5py' 'python-networkx' 'python-nose'
- 'python-pandas' 'python-dateutil' 'python-protobuf' 'python-gflags'
- 'python-yaml' 'python-pillow' 'python-six'
+ 'openblas' 'lapack' 'boost-libs' 'protobuf' 'google-glog' 'gflags'
+ 'hdf5' 'opencv' 'leveldb' 'lmdb' 'python' 'cython'
+ 'python-numpy' 'python-scipy' 'python-matplotlib' 'ipython'
+ 'python-h5py' 'python-networkx' 'python-nose' 'python-pandas'
+ 'python-dateutil' 'python-protobuf' 'python-gflags' 'python-yaml'
+ 'python-pillow' 'python-six'
# AUR:
- # required:
- 'openblas-lapack'
- # not required:
- # 'nccl'
- # python:
- 'python-leveldb' 'python-scikit-image' 'python-pydotplus'
+ 'python-leveldb' 'python-scikit-image' 'python-pydotplus'
# NOTE:
- # python-pydotplus (or python-pydot) is required by python executable draw_net.py
- # ttps://github.com/BVLC/caffe/blob/691febcb83d6a3147be8e9583c77aefaac9945f8/python/caffe/draw.py#L7-L22
+ # python-pydotplus (or python-pydot) is required by python executable 'draw_net.py'
+ # https://github.com/BVLC/caffe/blob/1.0/python/caffe/draw.py#L7-L22
)
-makedepends=('gcc7' 'doxygen' 'texlive-core')
-conflicts=('caffe-git' 'caffe-cpu' 'caffe-cpu-git' 'caffe-dr-git' 'caffe-mnc-dr-git'
- 'caffe2' 'caffe2-git' 'caffe2-cpu' 'caffe2-cpu-git')
-source=("${pkgname}-${pkgver}.tar.gz"::"https://github.com/BVLC/${pkgname}/archive/${pkgver}.tar.gz")
-sha256sums=('71d3c9eb8a183150f965a465824d01fe82826c22505f7aa314f700ace03fa77f')
+makedepends=('boost' 'doxygen' 'texlive-core')
+provides=('caffe-cpu')
+conflicts=('caffe-git' 'caffe-cuda' 'caffe-cuda-git' 'caffe-cpu' 'caffe-cpu-git'
+ 'caffe2' 'caffe2-cuda')
+replaces=('caffe-cpu')
+source=("${pkgname}-${pkgver}.tar.gz"::"https://github.com/BVLC/caffe/archive/${pkgver}.tar.gz"
+ 'Makefile.config')
+sha256sums=('71d3c9eb8a183150f965a465824d01fe82826c22505f7aa314f700ace03fa77f'
+ '9cbe8ea31d70904ec02a4ca3978aa072c99f10aff0629e7616c51bf4a6ca92f5')
prepare() {
cd "${pkgname}-${pkgver}"
- # prepare to configure options in Makefile.config
- cp -f Makefile.config.example Makefile.config
-
- # enable cuDNN acceleration switch
- sed -i '/USE_CUDNN/s/^#[[:space:]]//g' Makefile.config
-
- # enable NCCL acceleration switch
- # sed -i '/USE_NCCL/s/^#[[:space:]]//g' Makefile.config
-
- # strictly enable I/O dependencies
- sed -i '/USE_OPENCV/s/^#[[:space:]]//;/USE_OPENCV/s/0/1/' Makefile.config
- sed -i '/USE_LEVELDB/s/^#[[:space:]]//;/USE_LEVELDB/s/0/1/' Makefile.config
- sed -i '/USE_LMDB/s/^#[[:space:]]//;/USE_LMDB/s/0/1/' Makefile.config
- sed -i '/OPENCV_VERSION/s/^#[[:space:]]//g' Makefile.config
-
- # use gcc6 (CUDA 9.2 code requires gcc7)
- sed -i '/CUSTOM_CXX/s/^#[[:space:]]//;/CUSTOM_CXX/s/$/-7/' Makefile.config
-
- # set CUDA directory
- sed -i '/CUDA_DIR/s/\/usr\/local\/cuda/\/opt\/cuda/' Makefile.config
-
- # remove gpu architectures not supported by CUDA 9.0
- sed -i 's/-gencode[[:space:]]arch=compute_20,code=sm_20//' Makefile.config
- sed -i 's/-gencode[[:space:]]arch=compute_20,code=sm_21//' 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:]]\:=[[:space:]]\/path.*/BLAS_INCLUDE := \/usr\/include/' Makefile.config
- sed -i 's/.*BLAS_LIB[[:space:]]\:=[[:space:]]\/path.*/BLAS_LIB := \/usr\/lib/' Makefile.config
-
- # python3 settings
- _py2inc_line="$(sed -n '/PYTHON_INCLUDE[[:space:]]\:=[[:space:]]\/usr\/include\/python2\.7/=' Makefile.config)"
- _py3inc_line="$(sed -n '/PYTHON_INCLUDE[[:space:]]\:=[[:space:]]\/usr\/include\/python3\.5m/=' Makefile.config)"
- _py3libs_line="$(sed -n '/PYTHON_LIBRARIES/=' Makefile.config)"
- sed -i "$((_py2inc_line))s/^/# /" Makefile.config # comment python2 lines
- sed -i "$((_py2inc_line+1))s/^/#/" Makefile.config
- sed -i "$((_py3inc_line))s/^#[[:space:]]//" Makefile.config # uncomment python3 PYTHON_INCLUDE lines
- sed -i "$((_py3inc_line+1))s/^#//" Makefile.config
- sed -i "$((_py3libs_line))s/^#[[:space:]]//" Makefile.config # uncomment PYTHON_LIBRARIES line
- sed -i "$((_py3libs_line))s/5/6/" Makefile.config # change version in PYTHON_LIBRARIES
- sed -i "$((_py3inc_line))s/5/6/" Makefile.config # change version in python3 PYTHON_INCLUDE
- sed -i "$((_py3inc_line+1))s/5/6/;$((_py3inc_line+1))s/dist/site/" Makefile.config
-
- # use python layers
- sed -i '/WITH_PYTHON_LAYER/s/^#[[:space:]]//g' Makefile.config
-
- # if you want to use python2 _instead_ of python3:
- # - uncomment this block
- # - comment the python3 block
- # - change python3 dependencies to python2
- # - change python2 directories in package() to python3
- # - NOTE: do not enable both python2 and python3 blocks. choose only one.
- # - NOTE: python2 is the Caffe default but this package uses python3 by default
- # python2 settings
- #_py2inc_line="$(sed -n '/PYTHON_INCLUDE[[:space:]]\:=[[:space:]]\/usr\/include\/python2\.7/=' Makefile.config)"
- #sed -i "$((_py2inc_line+1))s/dist/site/" Makefile.config
+ local _pythonver
+ local _pythonmaj
+ local _opencvmaj
+
+ _pythonver="$(python --version | awk '{ print $2 }' | grep -o '^[0-9]*\.[0-9]*')"
+ _pythonmaj="$(python --version | awk '{ print $2 }' | awk -F'.' '{ print $1 }')"
+ _opencvmaj="$(opencv_version | awk -F'.' '{ print $1 }')"
+
+ # copy configuration options
+ cp -af "${srcdir}/Makefile.config" .
+
+ # make sure to use the correct versions of python and opencv
+
+ if ! grep -q "python${_pythonver}" Makefile.config
+ then
+ sed -i "s/python[0-9]*\.[0-9]*/python${_pythonver}/" Makefile.config
+ fi
+
+ if ! grep -q "boost_python${_pythonmaj}" Makefile.config
+ then
+ sed -i "/boost_python[0-9]/s/[0-9]/${_pythonmaj}/" Makefile.config
+ fi
+
+ if ! grep -q "OPENCV_VERSION[[:space:]]:=[[:space:]]${_opencvmaj}" Makefile.config
+ then
+ sed -i "/OPENCV_VERSION/s/[0-9]*$/${_opencvmaj}/" Makefile.config
+ fi
}
build() {
@@ -124,66 +91,35 @@ build() {
#}
package() {
- # directories creation
- mkdir -p "${pkgdir}/usr/bin"
- mkdir -p "${pkgdir}/usr/include/caffe/"{layers,proto,test,util}
- mkdir -p "${pkgdir}/usr/lib/python3.6/site-packages/caffe/"{imagenet,proto,test}
- mkdir -p "${pkgdir}/usr/share/"{caffe,doc/"${pkgname}"/search,licenses/"${pkgname}"}
+ local _pythonver
+ _pythonver="$(python --version | awk '{ print $2 }' | grep -o '^[0-9]*\.[0-9]*')"
+
+ mkdir -p "$pkgdir"/usr/{bin,include,lib/python"$_pythonver"/site-packages,share/doc}
+
+ cd "${pkgname}-${pkgver}/distribute"
# binaries
- cd "${pkgname}-${pkgver}/distribute/bin"
- install -D -m755 * "${pkgdir}/usr/bin"
-
- # libraries
- cd "${srcdir}/${pkgname}-${pkgver}/distribute/lib"
- install -D -m755 *.so "${pkgdir}/usr/lib"
-
- # includes
- cd "${srcdir}/${pkgname}-${pkgver}/distribute/include/caffe"
- install -D -m644 *.hpp "${pkgdir}/usr/include/caffe"
- for _dir in layers proto test util
- do
- cd "${srcdir}/${pkgname}-${pkgver}/distribute/include/caffe/${_dir}"
- install -D -m644 * "${pkgdir}/usr/include/caffe/${_dir}"
- done
+ install -m755 bin/* "${pkgdir}/usr/bin"
+
+ # library
+ cp -af lib/libcaffe.so* "${pkgdir}/usr/lib"
+ chmod 755 "${pkgdir}/usr/lib"/libcaffe.so.*.*.*
+
+ # headers
+ cp -af include "${pkgdir}/usr"
# python
- cd "${srcdir}/${pkgname}-${pkgver}/distribute/python"
- install -D -m755 *.py "${pkgdir}/usr/bin"
-
- cd caffe
- for _file in *
- do
- [ -d "$_file" ] && continue # skip directories
- _mode="$(stat --format '%a' "$_file")"
- install -D -m"$_mode" "$_file" "${pkgdir}/usr/lib/python3.6/site-packages/caffe"
- done
-
- for _dir in imagenet proto test
- 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/python3.6/site-packages/caffe/${_dir}"
- done
- done
+ install -m755 python/*.py "${pkgdir}/usr/bin"
+ cp -af python/caffe "${pkgdir}/usr/lib/python${_pythonver}/site-packages"
# proto
- cd "${srcdir}/${pkgname}-${pkgver}/distribute/proto"
- install -D -m644 * "${pkgdir}/usr/share/caffe"
+ install -D -m644 proto/caffe.proto -t "${pkgdir}/usr/share/caffe"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
# docs
- cd "${srcdir}/${pkgname}-${pkgver}/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"
+ cp -af doxygen/html "${pkgdir}/usr/share/doc/${pkgname}"
# license
- cd "${srcdir}/${pkgname}-${pkgver}"
- install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -D -m644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}"
}