diff options
author | Daniel Bermond | 2018-11-26 13:26:13 +0000 |
---|---|---|
committer | Daniel Bermond | 2018-11-26 13:26:13 +0000 |
commit | 53954ba06b361941cc971a55a9fed1fb1cd55815 (patch) | |
tree | de4f04c9b1e53e340498a22c48d78e2e07617bdb | |
parent | 605b9bf43344ccee8faaed68b528fde3429322e3 (diff) | |
download | aur-53954ba06b361941cc971a55a9fed1fb1cd55815.tar.gz |
Fix build with opencv4
-rw-r--r-- | .SRCINFO | 6 | ||||
-rw-r--r-- | Makefile.config | 2 | ||||
-rw-r--r-- | PKGBUILD | 12 | ||||
-rw-r--r-- | caffe-1.0-opencv4-fix.patch | 116 |
4 files changed, 130 insertions, 6 deletions
@@ -1,7 +1,7 @@ pkgbase = caffe-cuda pkgdesc = A deep learning framework made with expression, speed, and modularity in mind (with cuda) pkgver = 1.0 - pkgrel = 5 + pkgrel = 6 url = https://caffe.berkeleyvision.org/ arch = x86_64 license = BSD @@ -45,8 +45,10 @@ pkgbase = caffe-cuda conflicts = caffe source = caffe-cuda-1.0.tar.gz::https://github.com/BVLC/caffe/archive/1.0.tar.gz source = Makefile.config + source = caffe-1.0-opencv4-fix.patch sha256sums = 71d3c9eb8a183150f965a465824d01fe82826c22505f7aa314f700ace03fa77f - sha256sums = 40d725152bc78326ed230ab9598dc0aec90764cc82b66631ed6d2594ea7d7ae5 + sha256sums = e3e294f15f46ff46b7243297cb562cd5a5b11d540231eb2874d2c21588ceaf54 + sha256sums = 2072c8ca1393b53ef280a15c43af940cc9bf1419ae32b3d8a6541b10b8cb50e9 pkgname = caffe-cuda diff --git a/Makefile.config b/Makefile.config index e82b03357ff4..6e9768352630 100644 --- a/Makefile.config +++ b/Makefile.config @@ -1,6 +1,6 @@ _PYVER := $(shell python -c 'import sys; print("%s.%s" %sys.version_info[0:2])') _PYMAJ := $(shell python -c 'import sys; print("%s" %sys.version_info[0])') -_OCVMAJ := $(shell opencv_version | awk -F'.' '{ print $1 }') +_OCVMAJ := $(shell opencv_version | awk -F'.' '{ print $$1 }') USE_CUDNN := 1 USE_OPENCV := 1 @@ -3,7 +3,7 @@ pkgname=caffe-cuda _srcname=caffe pkgver=1.0 -pkgrel=5 +pkgrel=6 pkgdesc='A deep learning framework made with expression, speed, and modularity in mind (with cuda)' arch=('x86_64') url='https://caffe.berkeleyvision.org/' @@ -26,12 +26,18 @@ makedepends=('gcc7' 'boost' 'doxygen' 'texlive-core') provides=('caffe') conflicts=('caffe') source=("${pkgname}-${pkgver}.tar.gz"::"https://github.com/BVLC/caffe/archive/${pkgver}.tar.gz" - 'Makefile.config') + 'Makefile.config' + 'caffe-1.0-opencv4-fix.patch') sha256sums=('71d3c9eb8a183150f965a465824d01fe82826c22505f7aa314f700ace03fa77f' - '40d725152bc78326ed230ab9598dc0aec90764cc82b66631ed6d2594ea7d7ae5') + 'e3e294f15f46ff46b7243297cb562cd5a5b11d540231eb2874d2c21588ceaf54' + '2072c8ca1393b53ef280a15c43af940cc9bf1419ae32b3d8a6541b10b8cb50e9') prepare() { cp -af "${srcdir}/Makefile.config" "${srcdir}/${_srcname}-${pkgver}" + + # fix build with opencv 4.0 + cd "${_srcname}-${pkgver}" + patch -Np1 -i "${srcdir}/caffe-1.0-opencv4-fix.patch" } build() { diff --git a/caffe-1.0-opencv4-fix.patch b/caffe-1.0-opencv4-fix.patch new file mode 100644 index 000000000000..1aef32f2eabc --- /dev/null +++ b/caffe-1.0-opencv4-fix.patch @@ -0,0 +1,116 @@ +From 7f503bd9a19758a173064e299ab9d4cac65ed60f Mon Sep 17 00:00:00 2001 +From: Daniel Bermond <danielbermond@gmail.com> +Date: Mon, 26 Nov 2018 13:11:23 +0000 +Subject: [PATCH] Fix build with OpenCV 4.0 + +--- + Makefile | 16 ++++++++++++++-- + Makefile.config.example | 2 +- + src/caffe/layers/window_data_layer.cpp | 2 +- + src/caffe/test/test_io.cpp | 4 ++-- + src/caffe/util/io.cpp | 8 ++++---- + 5 files changed, 22 insertions(+), 10 deletions(-) + +diff --git a/Makefile b/Makefile +index b7660e852d6..95f3443adab 100644 +--- a/Makefile ++++ b/Makefile +@@ -200,9 +200,17 @@ endif + ifeq ($(USE_OPENCV), 1) + LIBRARIES += opencv_core opencv_highgui opencv_imgproc + +- ifeq ($(OPENCV_VERSION), 3) ++ ifeq ($(OPENCV_VERSION), $(filter $(OPENCV_VERSION), 3 4)) + LIBRARIES += opencv_imgcodecs + endif ++ ifeq ($(OPENCV_VERSION), 4) ++ ifeq ($(USE_PKG_CONFIG), 1) ++ INCLUDE_DIRS += $(shell pkg-config opencv4 --cflags-only-I | sed 's/-I//g') ++ else ++ INCLUDE_DIRS += /usr/include/opencv4 /usr/local/include/opencv4 ++ INCLUDE_DIRS += /usr/include/opencv4/opencv /usr/local/include/opencv4/opencv ++ endif ++ endif + + endif + PYTHON_LIBRARIES ?= boost_python python2.7 +@@ -429,7 +437,11 @@ LINKFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) + + USE_PKG_CONFIG ?= 0 + ifeq ($(USE_PKG_CONFIG), 1) +- PKG_CONFIG := $(shell pkg-config opencv --libs) ++ ifeq ($(OPENCV_VERSION), 4) ++ PKG_CONFIG := $(shell pkg-config opencv4 --libs) ++ else ++ PKG_CONFIG := $(shell pkg-config opencv --libs) ++ endif + else + PKG_CONFIG := + endif +diff --git a/Makefile.config.example b/Makefile.config.example +index 24ca632783a..24802e91534 100644 +--- a/Makefile.config.example ++++ b/Makefile.config.example +@@ -19,7 +19,7 @@ + # possibility of simultaneous read and write + # ALLOW_LMDB_NOLOCK := 1 + +-# Uncomment if you're using OpenCV 3 ++# Uncomment and set accordingly if you're using OpenCV 3/4 + # OPENCV_VERSION := 3 + + # To customize your choice of compiler, uncomment and set the following. +diff --git a/src/caffe/layers/window_data_layer.cpp b/src/caffe/layers/window_data_layer.cpp +index 1bf3760e9fd..f41169debe4 100644 +--- a/src/caffe/layers/window_data_layer.cpp ++++ b/src/caffe/layers/window_data_layer.cpp +@@ -290,7 +290,7 @@ void WindowDataLayer<Dtype>::load_batch(Batch<Dtype>* batch) { + image_database_cache_[window[WindowDataLayer<Dtype>::IMAGE_INDEX]]; + cv_img = DecodeDatumToCVMat(image_cached.second, true); + } else { +- cv_img = cv::imread(image.first, CV_LOAD_IMAGE_COLOR); ++ cv_img = cv::imread(image.first, cv::IMREAD_COLOR); + if (!cv_img.data) { + LOG(ERROR) << "Could not open or find file " << image.first; + return; +diff --git a/src/caffe/test/test_io.cpp b/src/caffe/test/test_io.cpp +index c2c919e90dc..b80df287fba 100644 +--- a/src/caffe/test/test_io.cpp ++++ b/src/caffe/test/test_io.cpp +@@ -20,8 +20,8 @@ class IOTest : public ::testing::Test {}; + bool ReadImageToDatumReference(const string& filename, const int label, + const int height, const int width, const bool is_color, Datum* datum) { + cv::Mat cv_img; +- int cv_read_flag = (is_color ? CV_LOAD_IMAGE_COLOR : +- CV_LOAD_IMAGE_GRAYSCALE); ++ int cv_read_flag = (is_color ? cv::IMREAD_COLOR : ++ cv::IMREAD_GRAYSCALE); + + cv::Mat cv_img_origin = cv::imread(filename, cv_read_flag); + if (!cv_img_origin.data) { +diff --git a/src/caffe/util/io.cpp b/src/caffe/util/io.cpp +index 5295d9dddb9..1f9167a114f 100644 +--- a/src/caffe/util/io.cpp ++++ b/src/caffe/util/io.cpp +@@ -73,8 +73,8 @@ void WriteProtoToBinaryFile(const Message& proto, const char* filename) { + cv::Mat ReadImageToCVMat(const string& filename, + const int height, const int width, const bool is_color) { + cv::Mat cv_img; +- int cv_read_flag = (is_color ? CV_LOAD_IMAGE_COLOR : +- CV_LOAD_IMAGE_GRAYSCALE); ++ int cv_read_flag = (is_color ? cv::IMREAD_COLOR : ++ cv::IMREAD_GRAYSCALE); + cv::Mat cv_img_origin = cv::imread(filename, cv_read_flag); + if (!cv_img_origin.data) { + LOG(ERROR) << "Could not open or find file " << filename; +@@ -179,8 +179,8 @@ cv::Mat DecodeDatumToCVMat(const Datum& datum, bool is_color) { + CHECK(datum.encoded()) << "Datum not encoded"; + const string& data = datum.data(); + std::vector<char> vec_data(data.c_str(), data.c_str() + data.size()); +- int cv_read_flag = (is_color ? CV_LOAD_IMAGE_COLOR : +- CV_LOAD_IMAGE_GRAYSCALE); ++ int cv_read_flag = (is_color ? cv::IMREAD_COLOR : ++ cv::IMREAD_GRAYSCALE); + cv_img = cv::imdecode(vec_data, cv_read_flag); + if (!cv_img.data) { + LOG(ERROR) << "Could not decode datum "; |