modify to use caffe ssd fork

There was a deleted `caffe-pkg` package by  jerry73204 with the
following PKGBUILD:

========================= BEGIN CODE BLOCK ==========================

  # Maintainer : jerry73204 < jerry73204 at gmail dot com >

  # NOTE:
  # In order to build with NCCL support, uncomment the NCCL
  # lines in 'depends' and 'preprare()'.

pkgname=caffe-ssd
_srcname=caffe
pkgver=ssdv1.0.r0.g4817bf8b
pkgrel=3
pkgdesc="weiliu89's caffe"
arch=('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'
    # AUR:
        # required:
            'openblas-lapack'
        # not required:
            # 'nccl'
        #python:
            'python-leveldb' 'python-scikit-image' 'python-pydotplus'
    # NOTE:
    # python-pydotplus (or python-pydot) is required by python executable draw_net.py
    # 691febcb83/python/caffe/draw.py (L7-L22)
)
makedepends=('git' 'gcc6' 'doxygen' 'texlive-core' 'findutils')
provides=('caffe')
conflicts=('caffe' 'caffe-cpu' 'caffe-cpu-git' 'caffe-dr-git' 'caffe-mnc-dr-git'
           'caffe2' 'caffe2-git' 'caffe2-cpu' 'caffe2-cpu-git' 'caffe-git' 'caffe-ssd-cpu')
source=("${pkgname}"::"git+https://github.com/weiliu89/caffe.git#branch=ssd")
sha256sums=('SKIP')

prepare() {
    cd "$pkgname"

    # 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

    # fix compatibility OpenCV 4
    sed -i '/INCLUDE_DIRS += $(BUILD_INCLUDE_DIR) .\/src .\/include/a\INCLUDE_DIRS += /usr/include/opencv4' Makefile
    sed -i 's|COMMON_FLAGS += \$(foreach includedir,\$(INCLUDE_DIRS),-isystem \$(includedir))|COMMON_FLAGS += \$(foreach includedir,\$(INCLUDE_DIRS),-I \$(includedir))|' Makefile

    find -name '*.cpp' -exec \
         sed -i -e 's/CV_LOAD_IMAGE_COLOR/cv::IMREAD_COLOR/g' \
         -e 's/CV_LOAD_IMAGE_GRAYSCALE/cv::IMREAD_GRAYSCALE/g' \
         -e 's/CV_CAP_PROP_FRAME_COUNT/cv::CAP_PROP_FRAME_COUNT/g' \
         -e 's/CV_CAP_PROP_POS_FRAMES/cv::CAP_PROP_POS_FRAMES/g' \
         -e 's/CV_HSV2BGR/cv::COLOR_HSV2BGR/g' \
         -e 's/CV_BGR2HSV/cv::COLOR_BGR2HSV/g' \
         -e 's/CV_BGR2Lab/cv::COLOR_BGR2Lab/g' \
         -e 's/CV_BGR2YCrCb/cv::COLOR_BGR2YCrCb/g' \
         -e 's/CV_YCrCb2BGR/cv::COLOR_YCrCb2BGR/g' \
         -e 's/CV_GRAY2BGR/cv::COLOR_GRAY2BGR/g' \
         -e 's/CV_BGR2GRAY/cv::COLOR_BGR2GRAY/g' \
         -e 's/CV_THRESH_BINARY_INV/cv::THRESH_BINARY_INV/g' \
         -e 's/CV_THRESH_OTSU/cv::THRESH_OTSU/g' \
         -e 's/CV_IMWRITE_JPEG_QUALITY/cv::IMWRITE_JPEG_QUALITY/g' \
         -e 's/CV_FOURCC/cv::VideoWriter::fourcc/g' \
         -e 's/CV_FILLED/cv::FILLED/g' \
         {} ';'

    # 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.0 code requires gcc6)
    sed -i '/CUSTOM_CXX/s/^#[[:space:]]//;/CUSTOM_CXX/s/$/-6/' 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/7/"             Makefile.config # change version in PYTHON_LIBRARIES
    sed -i "$((_py3inc_line))s/5/7/"              Makefile.config # change version in python3 PYTHON_INCLUDE
    sed -i "$((_py3inc_line+1))s/5/7/;$((_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
}

pkgver() {
    cd "$pkgname"

    # git, tags available
    git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g'
}

build() {
    cd "$pkgname"

    export CC=gcc-6
    export CXX=g++-6

    msg2 "Building target 'all'..."
    make all

    msg2 "Building target 'pycaffe'..."
    make pycaffe

    msg2 "Building target 'docs'..."
    rm -rf doxygen
    make docs

    msg2 "Building target 'distribute'..."
    make distribute
}

    # uncomment this block if you want to run the checks/tests
    #check() {
    #    cd "$pkgname"
    #    msg2 "Building target 'test'..."
    #    make test
    #    msg2 "Making target 'runtest'..."
    #    make runtest
    #}

package() {
    # directories creation
    mkdir -p "${pkgdir}/usr/bin"
    mkdir -p "${pkgdir}/usr/include/caffe/"{layers,proto,test,util}
    mkdir -p "${pkgdir}/usr/lib/python3.7/site-packages/caffe/"{imagenet,proto,test}
    mkdir -p "${pkgdir}/usr/share/"{caffe,doc/"${_srcname}"/search,licenses/"${pkgname}"}

    # binaries
    cd "${pkgname}/distribute/bin"
    install -D -m755 * "${pkgdir}/usr/bin"

    # libraries
    cd "${srcdir}/${pkgname}/distribute/lib"
    install -D -m755 *.so "${pkgdir}/usr/lib"

    # includes
    cd "${srcdir}/${pkgname}/distribute/include/caffe"
    install -D -m644 *.hpp "${pkgdir}/usr/include/caffe"
    for _dir in layers proto test util
    do
        cd "${srcdir}/${pkgname}/distribute/include/caffe/${_dir}"
        install -D -m644 * "${pkgdir}/usr/include/caffe/${_dir}"
    done

    # python
    cd "${srcdir}/${pkgname}/distribute/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/python3.7/site-packages/caffe"
    done

    for _dir in imagenet proto test
    do
        cd "${srcdir}/${pkgname}/distribute/python/caffe/${_dir}"
        for _file in *
        do
            _mode="$(stat --format '%a' "$_file")"
            install -D -m"$_mode" "$_file" "${pkgdir}/usr/lib/python3.7/site-packages/caffe/${_dir}"
        done
    done

    # proto
    cd "${srcdir}/${pkgname}/distribute/proto"
    install -D -m644 * "${pkgdir}/usr/share/caffe"

    # docs
    cd "${srcdir}/${pkgname}/doxygen/html"
    for _file in *
    do
        [ -d "$_file" ] && continue # skip directories
        install -D -m644 "$_file" "${pkgdir}/usr/share/doc/${_srcname}"
    done
    cd search
    install -D -m644 * "${pkgdir}/usr/share/doc/${_srcname}/search"

    # license
    cd "${srcdir}/${pkgname}"
    install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}"
}

======================+=== END CODE BLOCK ===========================
master
Peter Babič 2 years ago
parent 3a61bba854
commit aa7ceb9503
  1. 19
      .SRCINFO
  2. 29
      PKGBUILD
  3. 2
      caffe-1.0-opencv4-fix.patch
  4. 18
      caffe-ssd-1.0-draw.py-fix.patch
  5. 58
      caffe-ssd-1.0-opencv4-fix.patch

@ -1,7 +1,7 @@
pkgbase = caffe
pkgdesc = A deep learning framework made with expression, speed, and modularity in mind (cpu only)
pkgbase = caffe-ssd
pkgdesc = A deep learning framework made with expression, speed, and modularity in mind (cpu only, ssd branch)
pkgver = 1.0
pkgrel = 16
pkgrel = 1
url = https://caffe.berkeleyvision.org/
arch = x86_64
license = BSD
@ -42,12 +42,15 @@ pkgbase = caffe
provides = caffe-cpu
conflicts = caffe-cpu
replaces = caffe-cpu
source = caffe-1.0.tar.gz::https://github.com/BVLC/caffe/archive/1.0.tar.gz
source = caffe-ssd-ssd-1.0.tar.gz::https://github.com/weiliu89/caffe/archive/refs/tags/ssdv1.0.tar.gz
source = Makefile.config
source = caffe-1.0-opencv4-fix.patch
sha256sums = 71d3c9eb8a183150f965a465824d01fe82826c22505f7aa314f700ace03fa77f
source = caffe-ssd-1.0-opencv4-fix.patch
source = caffe-ssd-1.0-draw.py-fix.patch
sha256sums = 7f1ef29a5f32578e06cbb82181c19d3e4b0e45ea5374f7443c8b69b26418d008
sha256sums = d2a96f1cc984a2258b9f44a9dec8ec994796bd80f5f29b8f7bbb9a9de9f2f19b
sha256sums = 2072c8ca1393b53ef280a15c43af940cc9bf1419ae32b3d8a6541b10b8cb50e9
pkgname = caffe
sha256sums = 1503248080c2a960344719433b7b1c0dfcecb2fe640a405db10187fe1791d299
sha256sums = 8fc84fc47ec53844916340c79a85f35ba5566c148afbf4ffd5b2596ee2111d98
sha256sums = 921a1231ad416f6acd5d4c3ecb8663f1ea4ffd089779247cf8106d191912b93b
pkgname = caffe-ssd

@ -1,10 +1,11 @@
# Maintainer : Daniel Bermond <dbermond@archlinux.org>
# Maintainer: Peter Babič <peter@babic.dev>
# Contributor: Daniel Bermond <dbermond@archlinux.org>
# Contributor: Micah Chambers <micahc.vt@gmail.com>
pkgname=caffe
pkgname=caffe-ssd
pkgver=1.0
pkgrel=16
pkgdesc='A deep learning framework made with expression, speed, and modularity in mind (cpu only)'
pkgrel=1
pkgdesc='A deep learning framework made with expression, speed, and modularity in mind (cpu only, ssd branch)'
arch=('x86_64')
url='https://caffe.berkeleyvision.org/'
license=('BSD')
@ -25,19 +26,27 @@ makedepends=('boost' 'doxygen' 'texlive-core' 'texlive-latexextra' 'ghostscript'
provides=('caffe-cpu')
conflicts=('caffe-cpu')
replaces=('caffe-cpu')
source=("${pkgname}-${pkgver}.tar.gz"::"https://github.com/BVLC/caffe/archive/${pkgver}.tar.gz"
source=("${pkgname}-ssd-${pkgver}.tar.gz"::"https://github.com/weiliu89/caffe/archive/refs/tags/ssdv${pkgver}.tar.gz"
'Makefile.config'
'caffe-1.0-opencv4-fix.patch')
sha256sums=('71d3c9eb8a183150f965a465824d01fe82826c22505f7aa314f700ace03fa77f'
'caffe-1.0-opencv4-fix.patch'
'caffe-ssd-1.0-opencv4-fix.patch'
'caffe-ssd-1.0-draw.py-fix.patch')
sha256sums=('7f1ef29a5f32578e06cbb82181c19d3e4b0e45ea5374f7443c8b69b26418d008'
'd2a96f1cc984a2258b9f44a9dec8ec994796bd80f5f29b8f7bbb9a9de9f2f19b'
'2072c8ca1393b53ef280a15c43af940cc9bf1419ae32b3d8a6541b10b8cb50e9')
'1503248080c2a960344719433b7b1c0dfcecb2fe640a405db10187fe1791d299'
'8fc84fc47ec53844916340c79a85f35ba5566c148afbf4ffd5b2596ee2111d98'
'921a1231ad416f6acd5d4c3ecb8663f1ea4ffd089779247cf8106d191912b93b')
prepare() {
mv "${pkgname}v${pkgver}" "${pkgname}-${pkgver}"
cp -af Makefile.config "${pkgname}-${pkgver}"
# fix build with opencv 4
# https://github.com/BVLC/caffe/pull/6625
patch -d "${pkgname}-${pkgver}" -Np1 -i "${srcdir}/caffe-1.0-opencv4-fix.patch"
patch -d "${pkgname}-${pkgver}" -Np1 -i "${srcdir}/caffe-1.0-opencv4-fix.patch"
# https://github.com/weiliu89/caffe/issues/982
patch -d "${pkgname}-${pkgver}" -Np1 -i "${srcdir}/caffe-ssd-1.0-opencv4-fix.patch"
# https://github.com/BVLC/caffe/issues/3698#issuecomment-258759498
patch -d "${pkgname}-${pkgver}" -Np1 -i "${srcdir}/caffe-ssd-1.0-draw.py-fix.patch"
}
build() {

@ -21,7 +21,7 @@ index b7660e852d6..95f3443adab 100644
- ifeq ($(OPENCV_VERSION), 3)
+ ifeq ($(OPENCV_VERSION), $(filter $(OPENCV_VERSION), 3 4))
LIBRARIES += opencv_imgcodecs
LIBRARIES += opencv_imgcodecs opencv_videoio
endif
+ ifeq ($(OPENCV_VERSION), 4)
+ ifeq ($(USE_PKG_CONFIG), 1)

@ -0,0 +1,18 @@
diff --color --unified --recursive --text caffe-ssd-1.0.orig/python/caffe/draw.py caffe-ssd-1.0.new/python/caffe/draw.py
--- caffe-ssd-1.0.orig/python/caffe/draw.py 2018-01-02 20:07:58.000000000 +0100
+++ caffe-ssd-1.0.new/python/caffe/draw.py 2021-11-21 20:42:15.904577707 +0100
@@ -91,11 +91,11 @@
separator,
layer.type,
separator,
- layer.convolution_param.kernel_size[0] if len(layer.convolution_param.kernel_size._values) else 1,
+ layer.convolution_param.kernel_size[0] if len(layer.convolution_param.kernel_size) else 1,
separator,
- layer.convolution_param.stride[0] if len(layer.convolution_param.stride._values) else 1,
+ layer.convolution_param.stride[0] if len(layer.convolution_param.stride) else 1,
separator,
- layer.convolution_param.pad[0] if len(layer.convolution_param.pad._values) else 0)
+ layer.convolution_param.pad[0] if len(layer.convolution_param.pad) else 0)
elif layer.type == 'Pooling':
pooling_types_dict = get_pooling_types_dict()
node_label = '"%s%s(%s %s)%skernel size: %d%sstride: %d%spad: %d"' %\

@ -0,0 +1,58 @@
diff --color --unified --recursive --text caffe-ssd-1.0.orig/include/caffe/common.hpp caffe-ssd-1.0.new/include/caffe/common.hpp
--- caffe-ssd-1.0.orig/include/caffe/common.hpp 2018-01-02 20:07:58.000000000 +0100
+++ caffe-ssd-1.0.new/include/caffe/common.hpp 2021-11-21 17:01:19.980866883 +0100
@@ -69,6 +69,16 @@
// is executed we will see a fatal log.
#define NOT_IMPLEMENTED LOG(FATAL) << "Not Implemented Yet"
+// Supporting OpenCV4
+#if (CV_MAJOR_VERSION == 4)
+#define CV_LOAD_IMAGE_COLOR cv::IMREAD_COLOR
+#define CV_LOAD_IMAGE_GRAYSCALE cv::IMREAD_GRAYSCALE
+#define CV_CAP_PROP_FRAME_COUNT cv::CAP_PROP_FRAME_COUNT
+#define CV_CAP_PROP_POS_FRAMES cv::CAP_PROP_POS_FRAMES
+#define CV_FILLED cv::FILLED
+#define CV_FOURCC cv::VideoWriter::fourcc
+#endif
+
// See PR #1236
namespace cv { class Mat; }
diff --color --unified --recursive --text caffe-ssd-1.0.orig/Makefile caffe-ssd-1.0.new/Makefile
--- caffe-ssd-1.0.orig/Makefile 2021-11-21 16:59:16.379709144 +0100
+++ caffe-ssd-1.0.new/Makefile 2021-11-21 17:01:19.980866883 +0100
@@ -404,7 +404,7 @@
CXXFLAGS += -MMD -MP
# Complete build flags.
-COMMON_FLAGS += $(foreach includedir,$(INCLUDE_DIRS),-isystem $(includedir))
+COMMON_FLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I $(includedir))
CXXFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS)
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
# mex may invoke an older gcc that is too liberal with -Wuninitalized
diff --color --unified --recursive --text caffe-ssd-1.0.orig/src/caffe/util/im_transforms.cpp caffe-ssd-1.0.new/src/caffe/util/im_transforms.cpp
--- caffe-ssd-1.0.orig/src/caffe/util/im_transforms.cpp 2018-01-02 20:07:58.000000000 +0100
+++ caffe-ssd-1.0.new/src/caffe/util/im_transforms.cpp 2021-11-21 17:05:01.293051919 +0100
@@ -1,7 +1,7 @@
#ifdef USE_OPENCV
#include <opencv2/highgui/highgui.hpp>
-#if CV_VERSION_MAJOR == 3
+#if CV_VERSION_MAJOR == 3 || CV_VERSION_MAJOR == 4
#include <opencv2/imgcodecs/imgcodecs.hpp>
#define CV_GRAY2BGR cv::COLOR_GRAY2BGR
#define CV_BGR2GRAY cv::COLOR_BGR2GRAY
@@ -12,6 +12,13 @@
#define CV_THRESH_BINARY_INV cv::THRESH_BINARY_INV
#define CV_THRESH_OTSU cv::THRESH_OTSU
#endif
+
+#if CV_VERSION_MAJOR == 4
+#define CV_BGR2HSV cv::COLOR_BGR2HSV
+#define CV_HSV2BGR cv::COLOR_HSV2BGR
+#define CV_BGR2Lab cv::COLOR_BGR2Lab
+#endif
+
#endif // USE_OPENCV
#include <algorithm>
Loading…
Cancel
Save