Closed kloczek closed 2 years ago
I tried it on OpenSUSE linux and there is no problem. Please provide full information - not only error message.
First I've been thinking that this issue is about removed by LTO symbol but that is not the case because even with disabled LTO I have the still the same error.
(BTW ENABLE_LTO
option can be removed because cmake handles LTO without any problems by just changeing content of the $CFLAGS, $CXFLAGS, $LDFLAGS, $AR, $NM and $RANLIB env variables)
I'm using Fedora gcc 11.2.1. Here is extracted part from generated by rpm build script which could be used to try reproduce the issue:
CFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections'
CXXFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections'
LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,--gc-sections -Wl,-z,now'
CC=/usr/bin/gcc
AR=/usr/bin/gcc-ar
NM=/usr/bin/gcc-nm
RANLIB=/usr/bin/gcc-ranlib
export CFLAGS CXXFLAGS FFLAGS FCFLAGS LDFLAGS CC CXX FC AR NM RANLIB
/usr/bin/cmake -B x86_64-redhat-linux-gnu -D BUILD_SHARED_LIBS=ON -D CMAKE_AR=/usr/bin/gcc-ar -D CMAKE_BUILD_TYPE=RelWithDebInfo -D CMAKE_C_FLAGS_RELEASE=-DNDEBUG -D CMAKE_CXX_FLAGS_RELEASE=-DNDEBUG -D CMAKE_Fortran_FLAGS_RELEASE=-DNDEBUG -D CMAKE_INSTALL_PREFIX=/usr -D CMAKE_NM=/usr/bin/gcc-nm -D CMAKE_RANLIB=/usr/bin/gcc-ranlib -D CMAKE_VERBOSE_MAKEFILE=ON -D INCLUDE_INSTALL_DIR=/usr/include -D LIB_INSTALL_DIR=/usr/lib64 -D LIB_SUFFIX=64 -D SHARE_INSTALL_PREFIX=/usr/share -D SYSCONF_INSTALL_DIR=/etc -S . -D BUILD_TESTS=ON -D CMAKE_INSTALL_LIBDIR=lib64 -D TESSDATA_PREFIX=/usr/share/tesseract -D USE_SYSTEM_ICU=ON
Are you Fedora's Tesseract package maintainer? Did you try building with Autotutools?
No I'm not Fedora's Tesseract package maintainer.
Seems like problem with any customization of CFLAGS/CXXFLAGS/LDFLAGS... Can you just make clean build (cmake .. && make)?
Hmm .. what you mean "clean build". I'm using exactly the same %cmake rpm macros across all packages which are using cmake
[tkloczko@ss-desktop SPECS]$ grep -w %cmake *.spec -l | wc -l
401
Does it mean that you've been able to reporoduce reported effect using scririp which I've provided?
Nevertheless looks like it is issue with only one lbrary public symbol. I cannot fined anything specyfic in the cose which could make that tesseract::Plumbing::AddToStack
non-public :/
With clean build I mean this:
git clone --depth=1 https://github.com/tesseract-ocr/tesseract.git
cd tesseract
mkdir build & cd build
cmake ..
make
It fails on
-- The C compiler identification is GNU 11.2.1
-- The CXX compiler identification is GNU 11.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
fatal: No names found, cannot describe anything.
Configuring tesseract version 5.0.0...
-- Setting build type to 'Release' as none was specified.
-- IPO / LTO supported
-- Performing Test COMPILER_SUPPORTS_MARCH_NATIVE
-- Performing Test COMPILER_SUPPORTS_MARCH_NATIVE - Success
CMAKE_SYSTEM_PROCESSOR=<x86_64>
CMake Warning (dev) in CMakeLists.txt:
A logical block opening on the line
/data/home/tkloczko/rpmbuild/g2v/SPECS/tesseract/CMakeLists.txt:152 (if)
closes on the line
/data/home/tkloczko/rpmbuild/g2v/SPECS/tesseract/CMakeLists.txt:236 (endif)
with mis-matching arguments.
This warning is for project developers. Use -Wno-dev to suppress it.
-- Performing Test HAVE_AVX
-- Performing Test HAVE_AVX - Success
-- Performing Test HAVE_AVX2
-- Performing Test HAVE_AVX2 - Success
-- Performing Test HAVE_FMA
-- Performing Test HAVE_FMA - Success
-- Performing Test HAVE_SSE4_1
-- Performing Test HAVE_SSE4_1 - Success
-- target changed from "" to "auto"
-- Detected CPU: zen
-- Performing Test check_cxx_compiler_flag__march_znver1
-- Performing Test check_cxx_compiler_flag__march_znver1 - Success
-- Performing Test check_cxx_compiler_flag__msse2
-- Performing Test check_cxx_compiler_flag__msse2 - Success
-- Performing Test check_cxx_compiler_flag__msse3
-- Performing Test check_cxx_compiler_flag__msse3 - Success
-- Looking for C++ include pmmintrin.h
-- Looking for C++ include pmmintrin.h - found
-- Performing Test check_cxx_compiler_flag__mssse3
-- Performing Test check_cxx_compiler_flag__mssse3 - Success
-- Looking for C++ include tmmintrin.h
-- Looking for C++ include tmmintrin.h - found
-- Performing Test check_cxx_compiler_flag__msse4_1
-- Performing Test check_cxx_compiler_flag__msse4_1 - Success
-- Looking for C++ include smmintrin.h
-- Looking for C++ include smmintrin.h - found
-- Performing Test check_cxx_compiler_flag__msse4_2
-- Performing Test check_cxx_compiler_flag__msse4_2 - Success
-- Performing Test check_cxx_compiler_flag__msse4a
-- Performing Test check_cxx_compiler_flag__msse4a - Success
-- Looking for C++ include ammintrin.h
-- Looking for C++ include ammintrin.h - found
-- Performing Test check_cxx_compiler_flag__mavx
-- Performing Test check_cxx_compiler_flag__mavx - Success
-- Looking for C++ include immintrin.h
-- Looking for C++ include immintrin.h - found
-- Performing Test check_cxx_compiler_flag__mfma
-- Performing Test check_cxx_compiler_flag__mfma - Success
-- Performing Test check_cxx_compiler_flag__mbmi2
-- Performing Test check_cxx_compiler_flag__mbmi2 - Success
-- Performing Test check_cxx_compiler_flag__mavx2
-- Performing Test check_cxx_compiler_flag__mavx2 - Success
-- Performing Test check_cxx_compiler_flag__mno_xop
-- Performing Test check_cxx_compiler_flag__mno_xop - Success
-- Performing Test check_cxx_compiler_flag__mno_fma4
-- Performing Test check_cxx_compiler_flag__mno_fma4 - Success
-- Performing Test check_cxx_compiler_flag__mno_avx512f
-- Performing Test check_cxx_compiler_flag__mno_avx512f - Success
-- Performing Test check_cxx_compiler_flag__mno_avx512vl
-- Performing Test check_cxx_compiler_flag__mno_avx512vl - Success
-- Performing Test check_cxx_compiler_flag__mno_avx512pf
-- Performing Test check_cxx_compiler_flag__mno_avx512pf - Success
-- Performing Test check_cxx_compiler_flag__mno_avx512er
-- Performing Test check_cxx_compiler_flag__mno_avx512er - Success
-- Performing Test check_cxx_compiler_flag__mno_avx512cd
-- Performing Test check_cxx_compiler_flag__mno_avx512cd - Success
-- Performing Test check_cxx_compiler_flag__mno_avx512dq
-- Performing Test check_cxx_compiler_flag__mno_avx512dq - Success
-- Performing Test check_cxx_compiler_flag__mno_avx512bw
-- Performing Test check_cxx_compiler_flag__mno_avx512bw - Success
-- Performing Test check_cxx_compiler_flag__mno_avx512ifma
-- Performing Test check_cxx_compiler_flag__mno_avx512ifma - Success
-- Performing Test check_cxx_compiler_flag__mno_avx512vbmi
-- Performing Test check_cxx_compiler_flag__mno_avx512vbmi - Success
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.0")
-- Could NOT find Leptonica (missing: Leptonica_DIR)
-- Checking for module 'lept>=1.74'
-- Found lept, version 1.82.0
-- Found TIFF: /usr/lib64/libtiff.so (found version "4.3.0")
-- Found LibArchive: /usr/lib64/libarchive.so (found version "3.5.2")
-- Found CURL: /usr/lib64/libcurl.so (found version "7.80.0")
-- Looking for include file dlfcn.h
-- Looking for include file dlfcn.h - found
-- Looking for include file inttypes.h
-- Looking for include file inttypes.h - found
-- Looking for include file memory.h
-- Looking for include file memory.h - found
-- Looking for include file stdint.h
-- Looking for include file stdint.h - found
-- Looking for include file stdlib.h
-- Looking for include file stdlib.h - found
-- Looking for include file string.h
-- Looking for include file string.h - found
-- Looking for include file sys/stat.h
-- Looking for include file sys/stat.h - found
-- Looking for include file sys/types.h
-- Looking for include file sys/types.h - found
-- Looking for include file unistd.h
-- Looking for include file unistd.h - found
-- Looking for include file cairo/cairo-version.h
-- Looking for include file cairo/cairo-version.h - found
-- Looking for include file CL/cl.h
-- Looking for include file CL/cl.h - found
-- Looking for include file OpenCL/cl.h
-- Looking for include file OpenCL/cl.h - not found
-- Looking for include file pango-1.0/pango/pango-features.h
-- Looking for include file pango-1.0/pango/pango-features.h - found
-- Looking for include file unicode/uchar.h
-- Looking for include file unicode/uchar.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of long long int
-- Check size of long long int - done
-- Check size of wchar_t
-- Check size of wchar_t - done
--
-- General configuration for Tesseract 5.0.0
-- --------------------------------------------------------
-- Build type: Release
-- Compiler: GNU
-- Used standard: C++17
-- CXX compiler options: -DNDEBUG
-- Compile definitions = HAVE_AVX;HAVE_AVX2;HAVE_FMA;HAVE_SSE4_1;CMAKE_BUILD;HAVE_CONFIG_H
-- Linker options:
-- Install directory: /usr/local
-- Architecture flags: -march=znver1;-msse2;-msse3;-mssse3;-msse4.1;-msse4.2;-msse4a;-mavx;-mfma;-mbmi2;-mavx2;-mno-xop;-mno-fma4;-mno-avx512f;-mno-avx512vl;-mno-avx512pf;-mno-avx512er;-mno-avx512cd;-mno-avx512dq;-mno-avx512bw;-mno-avx512ifma;-mno-avx512vbmi
-- Vector unit list: sse2;sse3;ssse3;sse4.1;sse4.2;sse4a;avx;fma;bmi2;avx2
-- HAVE_AVX: 1
-- HAVE_AVX2: 1
-- HAVE_FMA: 1
-- HAVE_SSE4_1: 1
-- MARCH_NATIVE_OPT: ON
-- HAVE_NEON: FALSE
-- Link-time optimization: FALSE
-- --------------------------------------------------------
-- Build with sw [SW_BUILD]: OFF
-- Build with openmp support [OPENMP_BUILD]: OFF
-- Build with libarchive support [HAVE_LIBARCHIVE]: ON
-- Build with libcurl support [HAVE_LIBCURL]: ON
-- Enable float for LSTM [FAST_FLOAT]: ON
-- Disable disable graphics (ScrollView) [GRAPHICS_DISABLED]: OFF
-- Disable the legacy OCR engine [DISABLED_LEGACY_ENGINE]: OFF
-- Build training tools [BUILD_TRAINING_TOOLS]: ON
-- Build tests [BUILD_TESTS]: OFF
-- Use system ICU Library [USE_SYSTEM_ICU]: OFF
-- --------------------------------------------------------
--
-- Checking for modules 'icu-uc;icu-i18n'
-- Found icu-uc, version 69.1
-- Found icu-i18n, version 69.1
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Checking for module 'pango>=1.38.0'
-- Found pango, version 1.50.1
-- Checking for module 'cairo'
-- Found cairo, version 1.17.4
-- Checking for module 'pangoft2'
-- Found pangoft2, version 1.50.1
-- Checking for module 'pangocairo'
-- Found pangocairo, version 1.50.1
-- Checking for module 'fontconfig'
-- Found fontconfig, version 2.13.94
-- Configuring done
-- Generating done
-- Build files have been written to: /data/home/tkloczko/rpmbuild/g2v/SPECS/tesseract/build
Consolidate compiler generated dependencies of target libtesseract
[ 0%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/equationdetect.cpp.o
[ 1%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/control.cpp.o
[ 1%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/fixxht.cpp.o
[ 2%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/fixspace.cpp.o
[ 3%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/ltrresultiterator.cpp.o
[ 3%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/docqual.cpp.o
[ 3%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/osdetect.cpp.o
[ 3%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/mutableiterator.cpp.o
[ 3%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/pageiterator.cpp.o
[ 4%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/pagesegmain.cpp.o
[ 4%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/output.cpp.o
[ 4%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/linerec.cpp.o
[ 5%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/pagewalk.cpp.o
[ 5%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/par_control.cpp.o
[ 5%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/paragraphs.cpp.o
[ 6%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/paramsd.cpp.o
[ 6%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/pgedit.cpp.o
[ 7%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/recogtraining.cpp.o
[ 7%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/reject.cpp.o
[ 7%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/resultiterator.cpp.o
[ 8%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/superscript.cpp.o
[ 8%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/tessbox.cpp.o
[ 8%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/tessedit.cpp.o
[ 9%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/tesseractclass.cpp.o
[ 9%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/tessvars.cpp.o
[ 9%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/tfacepp.cpp.o
[ 10%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/thresholder.cpp.o
[ 10%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/werdit.cpp.o
[ 10%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/blamer.cpp.o
[ 11%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/blobbox.cpp.o
[ 11%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/blobs.cpp.o
[ 11%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/blread.cpp.o
[ 12%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/boxread.cpp.o
[ 12%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/boxword.cpp.o
[ 12%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/ccstruct.cpp.o
[ 13%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/coutln.cpp.o
[ 13%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/detlinefit.cpp.o
[ 14%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/dppoint.cpp.o
[ 14%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/fontinfo.cpp.o
[ 14%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/image.cpp.o
[ 15%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/imagedata.cpp.o
[ 15%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/linlsq.cpp.o
[ 15%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/matrix.cpp.o
[ 16%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/mod128.cpp.o
[ 16%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/normalis.cpp.o
[ 16%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/ocrblock.cpp.o
[ 17%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/ocrpara.cpp.o
[ 17%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/ocrrow.cpp.o
[ 17%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/otsuthr.cpp.o
[ 18%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/pageres.cpp.o
[ 18%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/params_training_featdef.cpp.o
[ 18%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/pdblock.cpp.o
[ 19%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/points.cpp.o
[ 19%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/polyaprx.cpp.o
[ 19%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/polyblk.cpp.o
[ 20%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/quadlsq.cpp.o
[ 20%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/quspline.cpp.o
[ 21%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/ratngs.cpp.o
[ 21%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/rect.cpp.o
[ 21%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/rejctmap.cpp.o
[ 22%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/seam.cpp.o
[ 22%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/split.cpp.o
[ 22%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/statistc.cpp.o
[ 23%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/stepblob.cpp.o
[ 23%] Building CXX object CMakeFiles/libtesseract.dir/src/ccstruct/werd.cpp.o
[ 23%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/ambigs.cpp.o
[ 24%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/bitvector.cpp.o
[ 24%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/ccutil.cpp.o
[ 24%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/clst.cpp.o
[ 25%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/elst.cpp.o
[ 25%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/elst2.cpp.o
[ 25%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/errcode.cpp.o
[ 26%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/indexmapbidi.cpp.o
[ 26%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/params.cpp.o
[ 26%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/mainblk.cpp.o
[ 27%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/scanutils.cpp.o
[ 27%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/serialis.cpp.o
[ 28%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/tessdatamanager.cpp.o
[ 28%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/tprintf.cpp.o
[ 28%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/unichar.cpp.o
[ 29%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/unicharcompress.cpp.o
[ 29%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/unicharmap.cpp.o
[ 30%] Building CXX object CMakeFiles/libtesseract.dir/src/ccutil/unicharset.cpp.o
[ 30%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/adaptive.cpp.o
[ 30%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/adaptmatch.cpp.o
[ 30%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/blobclass.cpp.o
[ 31%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/classify.cpp.o
[ 31%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/cluster.cpp.o
[ 31%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/clusttool.cpp.o
[ 32%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/cutoffs.cpp.o
[ 32%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/featdefs.cpp.o
[ 32%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/float2int.cpp.o
[ 33%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/fpoint.cpp.o
[ 33%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/intfeaturespace.cpp.o
[ 33%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/intfx.cpp.o
[ 34%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/intmatcher.cpp.o
[ 34%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/intproto.cpp.o
[ 35%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/kdtree.cpp.o
[ 35%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/mf.cpp.o
[ 35%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/mfoutline.cpp.o
[ 36%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/mfx.cpp.o
[ 36%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/normfeat.cpp.o
[ 36%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/normmatch.cpp.o
[ 37%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/ocrfeatures.cpp.o
[ 37%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/outfeat.cpp.o
[ 37%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/picofeat.cpp.o
[ 38%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/protos.cpp.o
[ 38%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/shapeclassifier.cpp.o
[ 38%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/shapetable.cpp.o
[ 39%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/tessclassifier.cpp.o
[ 39%] Building CXX object CMakeFiles/libtesseract.dir/src/classify/trainingsample.cpp.o
[ 39%] Building CXX object CMakeFiles/libtesseract.dir/src/cutil/oldlist.cpp.o
[ 40%] Building CXX object CMakeFiles/libtesseract.dir/src/dict/context.cpp.o
[ 40%] Building CXX object CMakeFiles/libtesseract.dir/src/dict/dawg.cpp.o
[ 40%] Building CXX object CMakeFiles/libtesseract.dir/src/dict/dawg_cache.cpp.o
[ 41%] Building CXX object CMakeFiles/libtesseract.dir/src/dict/dict.cpp.o
[ 41%] Building CXX object CMakeFiles/libtesseract.dir/src/dict/hyphen.cpp.o
[ 42%] Building CXX object CMakeFiles/libtesseract.dir/src/dict/permdawg.cpp.o
[ 42%] Building CXX object CMakeFiles/libtesseract.dir/src/dict/stopper.cpp.o
[ 42%] Building CXX object CMakeFiles/libtesseract.dir/src/dict/trie.cpp.o
[ 43%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/convolve.cpp.o
[ 43%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/fullyconnected.cpp.o
[ 43%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/functions.cpp.o
[ 44%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/input.cpp.o
[ 44%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/lstm.cpp.o
[ 44%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/lstmrecognizer.cpp.o
[ 45%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/maxpool.cpp.o
[ 45%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/network.cpp.o
[ 45%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/networkio.cpp.o
[ 46%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/parallel.cpp.o
[ 46%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/plumbing.cpp.o
[ 46%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/recodebeam.cpp.o
[ 47%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/reconfig.cpp.o
[ 47%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/reversed.cpp.o
[ 47%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/series.cpp.o
[ 48%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/stridemap.cpp.o
[ 48%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/tfnetwork.cpp.o
[ 48%] Building CXX object CMakeFiles/libtesseract.dir/src/lstm/weightmatrix.cpp.o
[ 49%] Building CXX object CMakeFiles/libtesseract.dir/src/opencl/openclwrapper.cpp.o
[ 49%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/alignedblob.cpp.o
[ 50%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/baselinedetect.cpp.o
[ 50%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/bbgrid.cpp.o
[ 50%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/blkocc.cpp.o
[ 51%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/blobgrid.cpp.o
[ 51%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/ccnontextdetect.cpp.o
[ 51%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/cjkpitch.cpp.o
[ 52%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/colfind.cpp.o
[ 52%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/colpartition.cpp.o
[ 52%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/colpartitiongrid.cpp.o
[ 53%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/colpartitionset.cpp.o
[ 53%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/devanagari_processing.cpp.o
[ 53%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/drawtord.cpp.o
[ 54%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/edgblob.cpp.o
[ 54%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/edgloop.cpp.o
[ 54%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/equationdetectbase.cpp.o
[ 55%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/fpchop.cpp.o
[ 55%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/gap_map.cpp.o
[ 55%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/imagefind.cpp.o
[ 56%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/linefind.cpp.o
[ 56%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/makerow.cpp.o
[ 57%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/oldbasel.cpp.o
[ 57%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/pithsync.cpp.o
[ 57%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/pitsync1.cpp.o
[ 58%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/scanedg.cpp.o
[ 58%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/sortflts.cpp.o
[ 58%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/strokewidth.cpp.o
[ 59%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/tabfind.cpp.o
[ 59%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/tablefind.cpp.o
[ 59%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/tablerecog.cpp.o
[ 60%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/tabvector.cpp.o
[ 60%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/textlineprojection.cpp.o
[ 60%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/textord.cpp.o
[ 61%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/topitch.cpp.o
[ 61%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/tordmain.cpp.o
[ 61%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/tospace.cpp.o
[ 62%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/tovars.cpp.o
[ 62%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/underlin.cpp.o
[ 62%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/wordseg.cpp.o
[ 63%] Building CXX object CMakeFiles/libtesseract.dir/src/textord/workingpartset.cpp.o
[ 63%] Building CXX object CMakeFiles/libtesseract.dir/src/viewer/scrollview.cpp.o
[ 64%] Building CXX object CMakeFiles/libtesseract.dir/src/viewer/svmnode.cpp.o
[ 64%] Building CXX object CMakeFiles/libtesseract.dir/src/viewer/svpaint.cpp.o
[ 64%] Building CXX object CMakeFiles/libtesseract.dir/src/viewer/svutil.cpp.o
[ 65%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/associate.cpp.o
[ 65%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/chop.cpp.o
[ 65%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/chopper.cpp.o
[ 66%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/drawfx.cpp.o
[ 66%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/findseam.cpp.o
[ 66%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/gradechop.cpp.o
[ 67%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/language_model.cpp.o
[ 67%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/lm_consistency.cpp.o
[ 68%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/lm_state.cpp.o
[ 68%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/lm_pain_points.cpp.o
[ 68%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/outlines.cpp.o
[ 68%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/params_model.cpp.o
[ 69%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/pieces.cpp.o
[ 69%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/plotedges.cpp.o
[ 69%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/render.cpp.o
[ 70%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/segsearch.cpp.o
[ 70%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/tface.cpp.o
[ 71%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/wordclass.cpp.o
[ 71%] Building CXX object CMakeFiles/libtesseract.dir/src/wordrec/wordrec.cpp.o
[ 71%] Building CXX object CMakeFiles/libtesseract.dir/src/api/baseapi.cpp.o
[ 72%] Building CXX object CMakeFiles/libtesseract.dir/src/api/capi.cpp.o
[ 72%] Building CXX object CMakeFiles/libtesseract.dir/src/api/renderer.cpp.o
[ 72%] Building CXX object CMakeFiles/libtesseract.dir/src/api/altorenderer.cpp.o
[ 73%] Building CXX object CMakeFiles/libtesseract.dir/src/api/hocrrenderer.cpp.o
[ 73%] Building CXX object CMakeFiles/libtesseract.dir/src/api/lstmboxrenderer.cpp.o
[ 73%] Building CXX object CMakeFiles/libtesseract.dir/src/api/pdfrenderer.cpp.o
[ 74%] Building CXX object CMakeFiles/libtesseract.dir/src/api/wordstrboxrenderer.cpp.o
[ 74%] Building CXX object CMakeFiles/libtesseract.dir/src/arch/dotproduct.cpp.o
[ 74%] Building CXX object CMakeFiles/libtesseract.dir/src/arch/simddetect.cpp.o
[ 75%] Building CXX object CMakeFiles/libtesseract.dir/src/arch/intsimdmatrix.cpp.o
[ 75%] Building CXX object CMakeFiles/libtesseract.dir/src/arch/dotproductavx.cpp.o
[ 75%] Building CXX object CMakeFiles/libtesseract.dir/src/arch/intsimdmatrixavx2.cpp.o
[ 76%] Building CXX object CMakeFiles/libtesseract.dir/src/arch/dotproductfma.cpp.o
[ 76%] Building CXX object CMakeFiles/libtesseract.dir/src/arch/dotproductsse.cpp.o
[ 76%] Building CXX object CMakeFiles/libtesseract.dir/src/arch/intsimdmatrixsse.cpp.o
[ 77%] Linking CXX static library libtesseract.a
[ 77%] Built target libtesseract
[ 77%] Building CXX object src/training/CMakeFiles/common_training.dir/common/networkbuilder.cpp.o
[ 78%] Building CXX object CMakeFiles/tesseract.dir/src/tesseract.cpp.o
[ 79%] Building CXX object src/training/CMakeFiles/common_training.dir/common/commontraining.cpp.o
[ 80%] Building CXX object src/training/CMakeFiles/common_training.dir/common/intfeaturedist.cpp.o
[ 80%] Building CXX object src/training/CMakeFiles/common_training.dir/common/commandlineflags.cpp.o
[ 80%] Building CXX object src/training/CMakeFiles/common_training.dir/common/errorcounter.cpp.o
[ 80%] Building CXX object src/training/CMakeFiles/common_training.dir/common/sampleiterator.cpp.o
[ 80%] Building CXX object src/training/CMakeFiles/common_training.dir/common/intfeaturemap.cpp.o
[ 81%] Building CXX object src/training/CMakeFiles/common_training.dir/common/mastertrainer.cpp.o
[ 81%] Building CXX object src/training/CMakeFiles/common_training.dir/common/trainingsampleset.cpp.o
[ 81%] Building CXX object src/training/CMakeFiles/common_training.dir/common/ctc.cpp.o
[ 82%] Linking CXX static library libcommon_training.a
[ 82%] Linking CXX executable bin/tesseract
[ 82%] Built target common_training
[ 83%] Building CXX object src/training/CMakeFiles/classifier_tester.dir/classifier_tester.cpp.o
[ 83%] Building CXX object src/training/CMakeFiles/ambiguous_words.dir/ambiguous_words.cpp.o
[ 83%] Building CXX object src/training/CMakeFiles/shapeclustering.dir/shapeclustering.cpp.o
[ 85%] Building CXX object src/training/CMakeFiles/merge_unicharsets.dir/merge_unicharsets.cpp.o
[ 85%] Building CXX object src/training/CMakeFiles/cntraining.dir/cntraining.cpp.o
[ 85%] Building CXX object src/training/CMakeFiles/wordlist2dawg.dir/wordlist2dawg.cpp.o
[ 85%] Building CXX object src/training/CMakeFiles/combine_tessdata.dir/combine_tessdata.cpp.o
[ 85%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/fileio.cpp.o
[ 86%] Building CXX object src/training/CMakeFiles/mftraining.dir/mergenf.cpp.o
[ 85%] Building CXX object src/training/CMakeFiles/mftraining.dir/mftraining.cpp.o
[ 86%] Building CXX object src/training/CMakeFiles/dawg2wordlist.dir/dawg2wordlist.cpp.o
[ 87%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/icuerrorcode.cpp.o
[ 87%] Linking CXX executable ../../bin/merge_unicharsets
[ 88%] Linking CXX executable ../../bin/cntraining
[ 89%] Linking CXX executable ../../bin/wordlist2dawg
[ 90%] Linking CXX executable ../../bin/dawg2wordlist
[ 90%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/lang_model_helpers.cpp.o
[ 90%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/lstmtester.cpp.o
[ 90%] Linking CXX executable ../../bin/mftraining
[ 90%] Linking CXX executable ../../bin/shapeclustering
[ 90%] Built target tesseract
[ 90%] Linking CXX executable ../../bin/ambiguous_words
[ 90%] Linking CXX executable ../../bin/combine_tessdata
[ 91%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/lstmtrainer.cpp.o
[ 91%] Linking CXX executable ../../bin/classifier_tester
[ 91%] Built target merge_unicharsets
[ 91%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/normstrngs.cpp.o
[ 91%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/unicharset_training_utils.cpp.o
[ 91%] Built target cntraining
[ 92%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/validate_grapheme.cpp.o
[ 92%] Built target wordlist2dawg
[ 92%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/validate_indic.cpp.o
[ 92%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/validate_javanese.cpp.o
[ 92%] Built target combine_tessdata
[ 93%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/validate_khmer.cpp.o
[ 93%] Built target mftraining
[ 93%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/validate_myanmar.cpp.o
[ 93%] Built target ambiguous_words
[ 93%] Building CXX object src/training/CMakeFiles/unicharset_training.dir/unicharset/validator.cpp.o
[ 93%] Built target shapeclustering
[ 93%] Built target dawg2wordlist
[ 93%] Built target classifier_tester
[ 94%] Linking CXX static library libunicharset_training.a
[ 94%] Built target unicharset_training
[ 94%] Building CXX object src/training/CMakeFiles/combine_lang_model.dir/combine_lang_model.cpp.o
[ 94%] Building CXX object src/training/CMakeFiles/pango_training.dir/pango/pango_font_info.cpp.o
[ 94%] Building CXX object src/training/CMakeFiles/lstmtraining.dir/lstmtraining.cpp.o
[ 94%] Building CXX object src/training/CMakeFiles/lstmeval.dir/lstmeval.cpp.o
[ 94%] Building CXX object src/training/CMakeFiles/pango_training.dir/pango/boxchar.cpp.o
[ 96%] Building CXX object src/training/CMakeFiles/unicharset_extractor.dir/unicharset_extractor.cpp.o
[ 96%] Building CXX object src/training/CMakeFiles/pango_training.dir/pango/ligature_table.cpp.o
[ 96%] Building CXX object src/training/CMakeFiles/pango_training.dir/pango/stringrenderer.cpp.o
[ 97%] Building CXX object src/training/CMakeFiles/pango_training.dir/pango/tlog.cpp.o
[ 97%] Building CXX object src/training/CMakeFiles/set_unicharset_properties.dir/set_unicharset_properties.cpp.o
In file included from /data/home/tkloczko/rpmbuild/g2v/SPECS/tesseract/src/training/pango/pango_font_info.cpp:39:
/usr/include/pango-1.0/pango/pangofc-font.h:35:10: fatal error: ft2build.h: No such file or directory
35 | #include <ft2build.h>
| ^~~~~~~~~~~~
compilation terminated.
make[2]: *** [src/training/CMakeFiles/pango_training.dir/build.make:104: src/training/CMakeFiles/pango_training.dir/pango/pango_font_info.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 97%] Linking CXX executable ../../bin/combine_lang_model
[ 97%] Linking CXX executable ../../bin/unicharset_extractor
[ 98%] Linking CXX executable ../../bin/set_unicharset_properties
[ 99%] Linking CXX executable ../../bin/lstmeval
[ 99%] Linking CXX executable ../../bin/lstmtraining
make[1]: *** [CMakeFiles/Makefile2:653: src/training/CMakeFiles/pango_training.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 99%] Built target combine_lang_model
[ 99%] Built target unicharset_extractor
[ 99%] Built target set_unicharset_properties
[ 99%] Built target lstmeval
[ 99%] Built target lstmtraining
make: *** [Makefile:136: all] Error 2
[tkloczko@ss-desktop build]$ rpm -qal | grep ft2build.h
/usr/include/freetype2/ft2build.h
[tkloczko@ss-desktop build]$ pkg-config --cflags freetype2
-I/usr/include/freetype2
So classifier_tester
was built and linked - the problem must be in rpm build script (outside of tesseract).
I will have a look at how OpenSUSE gets info about location of ft2build.h.
Here is the fix for pango:
--- a/src/training/CMakeLists.txt~ 2021-12-17 11:00:16.000000000 +0000
+++ b/src/training/CMakeLists.txt 2021-12-17 11:21:12.056943863 +0000
@@ -297,7 +297,7 @@
if (PKG_CONFIG_FOUND OR SW_BUILD)
if (PKG_CONFIG_FOUND)
-pkg_check_modules(Pango REQUIRED pango>=1.38.0)
+pkg_check_modules(Pango REQUIRED pangoft2>=1.38.0)
pkg_check_modules(Cairo REQUIRED cairo)
pkg_check_modules(PangoFt2 REQUIRED pangoft2)
pkg_check_modules(PangoCairo REQUIRED pangocairo)
Fix for missing symbol is in Fedora: https://src.fedoraproject.org/rpms/tesseract/raw/999433700af7345994ea2ccaa7e40076e1caebdd/f/tesseract_api.patch Here is 3rd patch to use standard cmake GNUInstallDirs module which allow use standard install paths;
--- a/CMakeLists.txt~ 2021-12-17 11:15:45.750113296 +0000
+++ b/CMakeLists.txt 2021-12-17 11:14:24.000404153 +0000
@@ -1,6 +1,7 @@
cmake_minimum_required (VERSION 3.0.0)
include (utils.cmake)
+include (GNUInstallDirs)
disallow_intree_builds()
@@ -55,14 +56,14 @@
if (UTF8PROC_INSTALL)
include(GNUInstallDirs)
- install(FILES utf8proc.h DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
+ install(FILES utf8proc.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
install(TARGETS utf8proc
- ARCHIVE DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}"
- LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}"
- RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
)
configure_file(libutf8proc.pc.cmakein libutf8proc.pc @ONLY)
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libutf8proc.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libutf8proc.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
endif()
if(UTF8PROC_ENABLE_TESTING)
Please let me know if you want those two patches as PR.
It is yet another issue. When is used BUILD_TESTS=ON
you are including googletest git repo instead use system installed gtest libraries.
Yes, please send it as 2 separate PR, so it can be checked by GH action.
Regarding your fist patch -I think it should be like this:
pkg_check_modules(Pango REQUIRED pango>=1.38.0)
pkg_check_modules(Cairo REQUIRED cairo)
- pkg_check_modules(PangoFt2 REQUIRED pangoft2)
+ pkg_check_modules(PangoFt2 REQUIRED pangoft2>=1.38.0)
pkg_check_modules(PangoCairo REQUIRED pangocairo)
Can you test it on Fedora?
I'm not using fedora.
Regarding your fist patch -I think it should be like this:
pkg_check_modules(Pango REQUIRED pango>=1.38.0) pkg_check_modules(Cairo REQUIRED cairo) - pkg_check_modules(PangoFt2 REQUIRED pangoft2) + pkg_check_modules(PangoFt2 REQUIRED pangoft2>=1.38.0) pkg_check_modules(PangoCairo REQUIRED pangocairo)
Can you test it on Fedora?
This is not matter minimum version pangoft2.
[tkloczko@ss-desktop SPECS]$ pkg-config --cflags pangoft2
-I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2
[tkloczko@ss-desktop SPECS]$ pkg-config --cflags pango
-I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/harfbuzz
More cmake issues:
I'm reverting my build procedure to GNU auto tools. cmake is not finished and/or broken at the moment.
However look slike GNU auto tools suffers sim,illar issues with test suit abcause it tries to compile google test submodule ainstead checking (using pkg-config) is gtest available. Buldling other projects is not good habit ..
And yet another small detail. Compile time warnings:
In file included from /usr/include/CL/cl.h:20,
from ./src/opencl/openclwrapper.h:30,
from src/tesseract.cpp:38:
/usr/include/CL/cl_version.h:22:104: note: '#pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)'
22 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)")
| ^
In file included from /usr/include/CL/cl.h:20,
from ./src/opencl/openclwrapper.h:30,
from src/api/baseapi.cpp:45:
/usr/include/CL/cl_version.h:22:104: note: '#pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)'
22 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)")
| ^
In file included from /usr/include/CL/cl.h:20,
from ./src/opencl/openclwrapper.h:30,
from src/ccmain/thresholder.cpp:24:
/usr/include/CL/cl_version.h:22:104: note: '#pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)'
22 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)")
| ^
In file included from /usr/include/CL/cl.h:20,
from ./src/opencl/openclwrapper.h:30,
from src/ccstruct/otsuthr.cpp:25:
/usr/include/CL/cl_version.h:22:104: note: '#pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)'
22 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)")
| ^
In file included from /usr/include/CL/cl.h:20,
from ./src/opencl/openclwrapper.h:30,
from src/textord/linefind.cpp:31:
/usr/include/CL/cl_version.h:22:104: note: '#pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)'
22 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)")
| ^
src/textord/linefind.cpp: In static member function 'static void tesseract::LineFinder::GetLineMasks(int, tesseract::Image, tesseract::Image*, tesseract::Image*, tesseract::Image*, tesseract::Image*, tesseract::Image*, tesseract::Image*, Pixa*)':
src/textord/linefind.cpp:579:9: warning: unused variable 'clStatus' [-Wunused-variable]
579 | int clStatus =
| ^~~~~~~~
In file included from /usr/include/CL/cl.h:20,
from src/opencl/openclwrapper.h:30,
from src/opencl/openclwrapper.cpp:23:
/usr/include/CL/cl_version.h:22:104: note: '#pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)'
22 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)")
| ^
src/opencl/openclwrapper.cpp: In function 'tesseract::ds_status tesseract::initDSProfile(tesseract::ds_profile**, const char*)':
src/opencl/openclwrapper.cpp:166:9: warning: 'void* memset(void*, int, size_t)' clearing an object of type 'struct tesseract::ds_profile' with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess]
166 | memset(profile, 0, sizeof(ds_profile));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/opencl/openclwrapper.cpp:105:8: note: 'struct tesseract::ds_profile' declared here
105 | struct ds_profile {
| ^~~~~~~~~~
src/opencl/openclwrapper.cpp: In function 'void tesseract::populateGPUEnvFromDevice(tesseract::GPUEnv*, cl_device_id)':
src/opencl/openclwrapper.cpp:600:27: warning: '_cl_command_queue* clCreateCommandQueue(cl_context, cl_device_id, cl_command_queue_properties, cl_int*)' is deprecated [-Wdeprecated-declarations]
600 | clCreateCommandQueue(gpuInfo->mpContext, gpuInfo->mpDevID, queueProperties, &clStatus);
| ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from src/opencl/openclwrapper.h:30,
from src/opencl/openclwrapper.cpp:23:
/usr/include/CL/cl.h:1906:1: note: declared here
1906 | clCreateCommandQueue(cl_context context,
| ^~~~~~~~~~~~~~~~~~~~
src/opencl/openclwrapper.cpp: In static member function 'static int tesseract::OpenclDevice::HistogramRectOCL(void*, int, int, int, int, int, int, int, int*)':
src/opencl/openclwrapper.cpp:1594:10: warning: unused variable 'atomicSyncBuffer' [-Wunused-variable]
1594 | cl_mem atomicSyncBuffer =
| ^~~~~~~~~~~~~~~~
src/opencl/openclwrapper.cpp: In function 'double tesseract::histogramRectMicroBench(tesseract::GPUEnv*, tesseract::TessScoreEvaluationInputData, tesseract::ds_device_type)':
src/opencl/openclwrapper.cpp:1997:9: warning: unused variable 'retVal' [-Wunused-variable]
1997 | int retVal = OpenclDevice::HistogramRectOCL(input.imageData, input.numChannels, bytes_per_line,
| ^~~~~~
src/opencl/openclwrapper.cpp: In function 'double tesseract::thresholdRectToPixMicroBench(tesseract::GPUEnv*, tesseract::TessScoreEvaluationInputData, tesseract::ds_device_type)':
src/opencl/openclwrapper.cpp:2116:9: warning: unused variable 'retVal' [-Wunused-variable]
2116 | int retVal = OpenclDevice::ThresholdRectToPixOCL(
| ^~~~~~
src/opencl/openclwrapper.cpp: In static member function 'static tesseract::ds_device tesseract::OpenclDevice::getDeviceSelection()':
src/opencl/openclwrapper.cpp:2415:56: warning: comparison of integer expressions of different signedness: 'int' and 'unsigned int' [-Wsign-compare]
2415 | if (overrideDeviceIdx > 0 && overrideDeviceIdx <= profile->numDevices) {
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
src/opencl/openclwrapper.cpp:2443:38: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
2443 | selectedDevice.oclDeviceName = "(null)";
| ^~~~~~~~
Just in case .. I'm not trying to critiocize yir work. What I;ve mention is more like ToDo list for 5.0.1 :)
Cheers
Some notes for clarification:
it tries to compile google test submodule instead checking (using pkg-config) is gtest available
It should be possible to use an installed googletest on Linux hosts, but the current solution would still be needed for MacOS. Homebrew on MacOS has a googletest
formula which conflicts with nss
:
Error: Cannot install googletest because conflicting formulae are installed.
nss: because both install `libgtest.a`
Debian has a package libgtest-dev
which also installs the googletest
1.10.0 sources. Why would it be better to require an installation of those packages (which typically are not preinstalled) instead of using the existing Git submodule?
Why would it be better to require an installation of those packages (which typically are not preinstalled) instead of using the existing Git submodule?
Do not waste time on compile those binaries.
If some MacOS gtest binaries have some issues it is the problem of those distributed binaries .. not the tesseract, Isn't it?
Do not waste time on compile those binaries.
time nohup make libgtest.la libgtest_main.la libgmock.la libgmock_main.la
nohup: ignoring input and appending output to 'nohup.out'
real 0m26.839s
user 0m25.440s
sys 0m1.426s
The googletest files take less than 30 seconds to compile (single threaded), and only once for a fresh build.
This looks negligible compared to the total time for make check
.
The googletest files take less than 30 seconds to compile (single threaded), and only once for a fresh build.
So how long takes to compile other libratriues used by tesseract?🤔 Why not they are included in tesseract source tree?😱
@kloczek, your comment is not helpful. Feel free to contribute a pull request which uses an existing libgtest, but still allows to use the Git submodule.
GoogleTest is not like other dependencies. It is used for unit testing which is not meant to be used bv most users.
GoogleTest is not like other dependencies. It is used for unit testing which is not meant to be used bv most users.
Really? One sec .. let me check ..
[tkloczko@ss-desktop SPECS]$ grep BuildRequires:.*gtest *
dwgrep.spec:BuildRequires: gtest-devel
google-benchmark.spec:BuildRequires: gtest-devel
gumbo-parser.spec:BuildRequires: gtest-devel
libecpint.spec:BuildRequires: gtest-devel
libphonenumber.spec:BuildRequires: gtest-devel
meson.spec:BuildRequires: gtest-devel
msgpack.spec:BuildRequires: gtest-devel
ninja-build.spec:BuildRequires: gtest-devel
proj.spec:BuildRequires: pkgconfig(gtest) >= 1.8.0
protobuf.spec:BuildRequires: pkgconfig(gtest)
rapidjson.spec:BuildRequires: gtest-devel
uriparser.spec:BuildRequires: gtest-devel
utf8cpp.spec:BuildRequires: gtest-devel
xsimd.spec:BuildRequires: gtest-devel
zstd.spec:BuildRequires: gtest-devel
Again your comment is not helpful. On Debian, very few packages require libgtest-dev
. So most users won't have it installed.
It is some reason why gtest provides public interface with header files and pkgconfig file as well. That reasdon is "please use that interface (only)". On debian gtest is packaged so there is no any obstacles to use system installed files.
I could understand to fall back to compile it if system gtest is not available but this is not the case here.
Is there still a build problem, or can this issue be closed?
I don't remember. Let me check.
Looks like local copy of the google test still is in use
+ /usr/bin/make -O -j12 V=1 VERBOSE=1 check
Making check in .
/usr/bin/make apiexample_test applybox_test baseapi_test baseapi_thread_test bitvector_test cleanapi_test colpartition_test commandlineflags_test dawg_test denorm_test equationdetect_test fileio_test heap_test imagedata_test indexmapbidi_test intfeaturemap_test intsimdmatrix_test lang_model_test layout_test ligature_table_test linlsq_test list_test lstm_recode_test lstm_squashed_test lstm_test lstmtrainer_test loadlang_test mastertrainer_test matrix_test networkio_test normstrngs_test nthitem_test osd_test pagesegmode_test pango_font_info_test paragraphs_test params_model_test progress_test qrsequence_test recodebeam_test rect_test resultiterator_test scanutils_test shapetable_test stats_test stridemap_test stringrenderer_test tablefind_test tablerecog_test tabvector_test tatweel_test textlineprojection_test tfile_test unichar_test unicharcompress_test unicharset_test validate_grapheme_test validate_indic_test validate_khmer_test validate_myanmar_test validator_test libgtest.la libgtest_main.la libgmock.la libgmock_main.la
make[2]: *** No rule to make target 'unittest/third_party/googletest/googletest/src/gtest-all.cc', needed by 'unittest/third_party/googletest/googletest/src/libgtest_la-gtest-all.lo'. Stop.
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [Makefile:9033: check-am] Error 2
make: *** [Makefile:8151: check-recursive] Error 1
make: *** Waiting for unfinished jobs....
Yes, and the local copy works fine. In your build you just forgot to run git submodule update --init
. If you want support for a pre-installed googletest, your pull request is welcome.
I close the issue as there seem to be no other problems.
cmake setup:
And buuild fails in: