diff options
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 200 |
1 files changed, 128 insertions, 72 deletions
@@ -2,45 +2,45 @@ # NOTE: # In order to build with NCCL support, follow these steps: -# - uncomment the nccl line in 'depends' -# - in 'build()', change '-DUSE_NCCL:BOOL=OFF' from 'OFF' to 'ON' -# - add these options to cmake command line: +# 1) uncomment the nccl line in 'depends' +# 2) in 'build()', change '-DUSE_NCCL:BOOL=OFF' from 'OFF' to 'ON' +# 3) add these options to cmake command line: # -DNCCL_INCLUDE_DIR:PATH='/opt/cuda/include' -# -DNCCL_LIBRARY:FILEPATH='/opt/cuda/lib64/libnccl.so' # -DNCCL_ROOT_DIR:PATH='/opt/cuda' pkgname=caffe2-git -pkgver=0.8.1.r525.g20edf4eb +pkgver=0.1.11.r7977.g3b63be063 pkgrel=1 +epoch=1 pkgdesc='A new lightweight, modular, and scalable deep learning framework (git version, gpu enabled)' arch=('x86_64') url='http://caffe2.ai/' -license=('APACHE') +license=('BSD') depends=( # official repositories: # required: - 'google-glog' 'protobuf' 'python2' 'python2-numpy' 'python2-protobuf' 'cuda' - 'cudnn' + 'google-glog' 'protobuf' 'lapack' 'python' 'python-numpy' 'python-protobuf' + 'cuda' 'cudnn' # not required but enabled in build: - 'gflags' 'gtest' 'openmp' 'leveldb' 'lmdb' 'openmpi' 'snappy' 'zeromq' - 'hiredis' 'ffmpeg' - # python2: - 'python2-flask' 'python2-future' 'graphviz' 'python2-hypothesis' - 'python2-jupyter_core' 'python2-matplotlib' 'python2-pydot' 'python2-yaml' - 'python2-requests' 'python2-scipy' 'python2-setuptools' 'python2-six' - 'python2-tornado' 'python2-gflags' 'python2-pyzmq' + 'gflags' 'gtest' 'openmp' 'leveldb' 'lmdb' 'numactl' 'openmpi' 'snappy' + 'zeromq' 'hiredis' 'ffmpeg' + # python: + 'python-flask' 'python-future' 'graphviz' 'python-hypothesis' + 'python-jupyter_core' 'python-matplotlib' 'python-pydot' 'python-yaml' + 'python-requests' 'python-scipy' 'python-setuptools' 'python-six' + 'python-tornado' 'python-gflags' 'python-pyzmq' # AUR: - # not required: - # 'nccl' - # python2: - 'python2-nvd3' 'python2-scikit-image' 'python2-glog' 'python2-leveldb' - 'python2-lmdb' + # not required and disabled in build: + #'nccl' + # python: + 'python-nvd3' 'python-scikit-image' 'python-glog' 'python-leveldb' + 'python-lmdb' ) makedepends=( # official repositories: - 'git' 'cmake' 'gcc6' 'ninja' + 'git' 'cmake' # AUR: - 'confu-git' 'python-peachpy-git' + 'gcc5' ) provides=('caffe2') conflicts=('caffe' 'caffe-cpu' 'caffe-git' 'caffe-cpu-git' @@ -48,25 +48,35 @@ conflicts=('caffe' 'caffe-cpu' 'caffe-git' 'caffe-cpu-git' options=('!emptydirs') source=( # main source: - "$pkgname"::'git+https://github.com/caffe2/caffe2.git' + 'pytorch-git'::'git+https://github.com/pytorch/pytorch.git' # git submodules: - 'submodule-pybind11'::'git+https://github.com/pybind/pybind11.git' - 'submodule-nccl'::'git+https://github.com/nvidia/nccl.git' - 'submodule-cub'::'git+https://github.com/NVlabs/cub.git' - 'submodule-eigen'::'git+https://github.com/RLovelett/eigen.git' - 'submodule-googletest'::'git+https://github.com/google/googletest.git' - 'submodule-nervanagpu'::'git+https://github.com/NervanaSystems/nervanagpu.git' - 'submodule-benchmark'::'git+https://github.com/google/benchmark.git' - 'submodule-protobuf'::'git+https://github.com/google/protobuf.git' - 'submodule-android-cmake'::'git+https://github.com/Yangqing/android-cmake.git' - 'submodule-ios-cmake'::'git+https://github.com/Yangqing/ios-cmake.git' - 'submodule-NNPACK'::'git+https://github.com/Maratyszcza/NNPACK.git' - 'submodule-gloo'::'git+https://github.com/facebookincubator/gloo' - 'submodule-NNPACK_deps-pthreadpool'::'git+https://github.com/Maratyszcza/pthreadpool.git' - 'submodule-NNPACK_deps-FXdiv'::'git+https://github.com/Maratyszcza/FXdiv.git' - 'submodule-NNPACK_deps-FP16'::'git+https://github.com/Maratyszcza/FP16.git' - 'submodule-NNPACK_deps-psimd'::'git+https://github.com/Maratyszcza/psimd.git' - 'submodule-aten'::'git+https://github.com/zdevito/ATen.git' + 'caffe2-submodule-aten-cpuinfo'::'git+https://github.com/Maratyszcza/cpuinfo' + 'caffe2-submodule-aten-tbb_remote'::'git+https://github.com/01org/tbb#branch=tbb_2018' + 'caffe2-submodule-aten-catch'::'git+https://github.com/catchorg/Catch2.git' + 'caffe2-submodule-nanopb'::'git+https://github.com/nanopb/nanopb.git' + 'caffe2-submodule-pybind11'::'git+https://github.com/pybind/pybind11.git' + 'caffe2-submodule-nccl'::'git+https://github.com/nvidia/nccl.git' + 'caffe2-submodule-cub'::'git+https://github.com/NVlabs/cub.git' + 'caffe2-submodule-eigen'::'git+https://github.com/RLovelett/eigen.git' + 'caffe2-submodule-googletest'::'git+https://github.com/google/googletest.git' + 'caffe2-submodule-nervanagpu'::'git+https://github.com/NervanaSystems/nervanagpu.git' + 'caffe2-submodule-benchmark'::'git+https://github.com/google/benchmark.git' + 'caffe2-submodule-protobuf'::'git+https://github.com/google/protobuf.git' + 'caffe2-submodule-ios-cmake'::'git+https://github.com/Yangqing/ios-cmake.git' + 'caffe2-submodule-NNPACK'::'git+https://github.com/Maratyszcza/NNPACK.git' + 'caffe2-submodule-gloo'::'git+https://github.com/facebookincubator/gloo' + 'caffe2-submodule-NNPACK_deps-pthreadpool'::'git+https://github.com/Maratyszcza/pthreadpool.git' + 'caffe2-submodule-NNPACK_deps-FXdiv'::'git+https://github.com/Maratyszcza/FXdiv.git' + 'caffe2-submodule-NNPACK_deps-FP16'::'git+https://github.com/Maratyszcza/FP16.git' + 'caffe2-submodule-NNPACK_deps-psimd'::'git+https://github.com/Maratyszcza/psimd.git' + 'caffe2-submodule-zstd'::'git+https://github.com/facebook/zstd.git' + 'caffe2-submodule-cpuinfo'::'git+https://github.com/Maratyszcza/cpuinfo.git' + 'caffe2-submodule-python-enum'::'git+https://github.com/PeachPy/enum34.git' + 'caffe2-submodule-python-peachpy'::'git+https://github.com/Maratyszcza/PeachPy.git' + 'caffe2-submodule-python-six'::'git+https://github.com/benjaminp/six.git' + 'caffe2-submodule-ComputeLibrary'::'git+https://github.com/ARM-software/ComputeLibrary.git' + 'caffe2-submodule-onnx'::'git+https://github.com/onnx/onnx.git' + 'caffe2-submodule-ideep'::'git+https://github.com/intel/ideep.git' ) sha256sums=('SKIP' 'SKIP' @@ -85,36 +95,58 @@ sha256sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' 'SKIP') prepare() { - cd "$pkgname" - local _submodule_list="pybind11 nccl cub eigen googletest nervanagpu benchmark \ - protobuf android-cmake ios-cmake NNPACK gloo \ - NNPACK_deps/pthreadpool NNPACK_deps/FXdiv NNPACK_deps/FP16 \ - NNPACK_deps/psimd aten" + cd pytorch-git + + local _submodule_list="nanopb pybind11 nccl cub eigen googletest nervanagpu benchmark \ + protobuf ios-cmake NNPACK gloo NNPACK_deps/pthreadpool \ + NNPACK_deps/FXdiv NNPACK_deps/FP16 NNPACK_deps/psimd zstd \ + python-enum python-peachpy python-six ComputeLibrary onnx ideep" + git submodule init + + git config --local 'submodule.aten/src/ATen/cpu/cpuinfo.url' "${srcdir}/caffe2-submodule-aten-cpuinfo" + git config --local 'submodule.aten/src/ATen/cpu/tbb/tbb_remote.url' "${srcdir}/caffe2-submodule-aten-tbb_remote" + git config --local 'submodule.aten/src/ATen/utils/catch.url' "${srcdir}/caffe2-submodule-aten-catch" + git config --local 'submodule.third-party/cpuinfo.url' "${srcdir}/caffe2-submodule-cpuinfo" + for _submodule in $_submodule_list do - local _submodule_dir="submodule-$(printf '%s' "${_submodule}" | tr '/' '-')" + local _submodule_dir="caffe2-submodule-${_submodule/\//-}" git config --local "submodule.third_party/${_submodule}.url" "${srcdir}/${_submodule_dir}" done - unset _submodule + git submodule update - # allow building with cuda 9.0 - sed -i '/if[[:space:]](CMAKE_C_COMPILER_ID[[:space:]]STREQUAL[[:space:]]"GNU"[[:space:]]AND/s/(/(CUDA_VERSION VERSION_EQUAL 8.0 AND /' cmake/Dependencies.cmake + # fix build with if eigen is installed (use eigen from git submodule) + local _eigen=' message(STATUS "Using Eigen third party subdirectory for compatibility.")' + sed -i '/find_package(Eigen3)/s/^/#/' cmake/Dependencies.cmake + sed -i "/Did[[:space:]]not[[:space:]]find[[:space:]]system[[:space:]]Eigen/s/.*/${_eigen}/" cmake/Dependencies.cmake } pkgver() { - cd "$pkgname" + cd pytorch-git # git, tags available git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//' } build() { - cd "$pkgname" + cd pytorch-git + + local _pythonver="$(python --version | sed 's/^Python[[:space:]]//' | grep -o '^[0-9]*\.[0-9]*')" mkdir -p build cd build @@ -128,21 +160,24 @@ build() { \ -DBUILD_TEST:BOOL='OFF' \ \ - -DCMAKE_BUILD_TYPE:STRING='Release' \ -DCMAKE_COLOR_MAKEFILE:BOOL='ON' \ - -DCMAKE_CXX_COMPILER='/usr/bin/g++-6' \ - -DCMAKE_C_COMPILER='/usr/bin/gcc-6' \ + -DCMAKE_CXX_COMPILER='/usr/bin/g++-5' \ + -DCMAKE_CXX_FLAGS:STRING="${CXXFLAGS/-fno-plt/}" \ + -DCMAKE_C_COMPILER='/usr/bin/gcc-5' \ + -DCMAKE_C_FLAGS:STRING="${CFLAGS/-fno-plt/}" \ + -DCMAKE_INSTALL_LIBDIR:PATH='lib' \ -DCMAKE_INSTALL_PREFIX:PATH='/usr' \ -DCMAKE_SKIP_INSTALL_RPATH:BOOL='NO' \ -DCMAKE_SKIP_RPATH:BOOL='NO' \ -DCMAKE_VERBOSE_MAKEFILE:BOOL='FALSE' \ \ + -DCUDA_ARCH_NAME:STRING='Auto' \ -DCUDA_64_BIT_DEVICE_CODE:BOOL='ON' \ -DCUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE:BOOL='ON' \ -DCUDA_BUILD_CUBIN:BOOL='OFF' \ -DCUDA_BUILD_EMULATION:BOOL='OFF' \ -DCUDA_HOST_COMPILATION_CPP:BOOL='ON' \ - -DCUDA_HOST_COMPILER:FILEPATH='/usr/bin/gcc-6' \ + -DCUDA_HOST_COMPILER:FILEPATH='/usr/bin/gcc-5' \ -DCUDA_NVCC_EXECUTABLE:FILEPATH='/opt/cuda/bin/nvcc' \ -DCUDA_PROPAGATE_HOST_FLAGS:BOOL='ON' \ -DCUDA_SDK_ROOT_DIR:PATH='/opt/cuda' \ @@ -152,17 +187,22 @@ build() { -DCUDA_USE_STATIC_CUDA_RUNTIME:BOOL='OFF' \ -DCUDA_VERBOSE_BUILD:BOOL='OFF' \ -DCUDNN_INCLUDE_DIR:PATH='/opt/cuda/include' \ + -DCUDNN_LIBRARY:FILEPATH='/opt/cuda/lib64/libcudnn.so' \ -DCUDNN_ROOT_DIR:PATH='/opt/cuda' \ \ -DGLOO_STATIC_OR_SHARED:STRING='STATIC' \ \ -DOpenCV_DIR:PATH='/usr/share/OpenCV' \ \ - -DPYTHON_EXECUTABLE:FILEPATH='/usr/bin/python2.7' \ - -DPYTHON_INCLUDE_DIR:PATH='/usr/include/python2.7' \ - -DPYTHON_LIBRARY:FILEPATH='/usr/lib/libpython2.7.so' \ + -DPYTHON_EXECUTABLE:FILEPATH="/usr/bin/python${_pythonver}" \ + -DPYTHON_INCLUDE_DIR:PATH="/usr/include/python${_pythonver}m" \ + -DPYTHON_LIBRARY:FILEPATH="/usr/lib/libpython${_pythonver}m.so" \ \ + -DUSE_ACL:BOOL='OFF' \ + -DUSE_ASAN:BOOL='OFF' \ + -DUSE_ATEN:BOOL='OFF' \ -DUSE_CUDA:BOOL='ON' \ + -DUSE_FFMPEG:BOOL='ON' \ -DUSE_GFLAGS:BOOL='ON' \ -DUSE_GLOG:BOOL='ON' \ -DUSE_GLOO:BOOL='ON' \ @@ -173,35 +213,51 @@ build() { -DUSE_MOBILE_OPENGL:BOOL='OFF' \ -DUSE_MPI:BOOL='ON' \ -DUSE_NCCL:BOOL='OFF' \ - -DUSE_NERVANA_GPU:BOOL='ON' \ + -DUSE_NERVANA_GPU:BOOL='OFF' \ + -DUSE_NNAPI:BOOL='OFF' \ -DUSE_NNPACK:BOOL='ON' \ + -DUSE_NUMA:BOOL='ON' \ -DUSE_OBSERVERS:BOOL='ON' \ + -DUSE_OPENCL:BOOL='OFF' \ -DUSE_OPENCV:BOOL='OFF' \ - -DUSE_FFMPEG:BOOL='ON' \ -DUSE_OPENMP:BOOL='ON' \ + -DUSE_PROF:BOOL='OFF' \ -DUSE_REDIS:BOOL='ON' \ -DUSE_ROCKSDB:BOOL='OFF' \ - -DUSE_THREADS:BOOL='ON' \ + -DUSE_SNPE:BOOL='OFF' \ + -DUSE_TENSORRT:BOOL='OFF' \ -DUSE_ZMQ:BOOL='ON' \ + -DUSE_ZSTD:BOOL='ON' \ \ -Wno-dev \ .. - make + + # NOTE: + # The recommended approach of running make in build() and make install in + # package() produces two compilations (being the second one unnecessary). + # A workaround is to suppress make in build() and run only make install + # in package(). + + #make } package() { - cd "${pkgname}/build" - make DESTDIR="$pkgdir" install + cd pytorch-git/build - # directories creation - mkdir -p "${pkgdir}/usr/lib/python2.7/site-packages" - mkdir -p "${pkgdir}/usr/share/licenses/${pkgname}" + make DESTDIR="$pkgdir" install - # move/rename folders to the right location - mv -f "${pkgdir}/usr/caffe" "${pkgdir}/usr/lib/python2.7/site-packages" - mv -f "${pkgdir}/usr/caffe2" "${pkgdir}/usr/lib/python2.7/site-packages" + # remove unneeded files + rm -rf "${pkgdir}/usr/include/google" + rm -rf "${pkgdir}/usr/lib/cmake/protobuf" + rm -f "$pkgdir"/usr/bin/{protoc,unzstd,zstd{cat,mt,}} + rm -f "$pkgdir"/usr/include/{{bitcasts,cpuinfo,fp16,fxdiv,nnpack,psimd,pthreadpool,zbuff,zdict,zstd*}.h,{__init__,avx{,2}}.py} + rm -f "$pkgdir"/usr/lib/lib{{cpuinfo,nnpack,protobuf-lite,protobuf,protoc,pthreadpool,zstd}.a,zstd.so*} + rm -f "$pkgdir"/usr/lib/pkgconfig/{protobuf-lite,protobuf}.pc + rm -f "$pkgdir"/usr/share/pkgconfig/libzstd.pc + rm -f "$pkgdir"/usr/share/man/man1/{unzstd,zstd{cat,}}.1 # license - cd "${srcdir}/${pkgname}" - install -D -m644 'LICENSE' "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + cd "${srcdir}/pytorch-git" + install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + install -D -m644 NOTICE "${pkgdir}/usr/share/licenses/${pkgname}/NOTICE" } |