From 52a77dd660a2356827b3b3f6dccfc53035e092fe Mon Sep 17 00:00:00 2001 From: "Satadru Pramanik, DO, MPH, MEng" Date: Sun, 14 May 2023 08:13:20 -0700 Subject: [PATCH] Update tesseract + deps (#8259) * Update giflib, leptonica * update tesseract --- packages/giflib.rb | 87 +++++++++++++++++++++++++++------- packages/leptonica.rb | 57 +++++++++++++---------- packages/tesseract.rb | 106 ++++++++++++++++++++---------------------- 3 files changed, 154 insertions(+), 96 deletions(-) diff --git a/packages/giflib.rb b/packages/giflib.rb index ea1b14425..092ff918d 100644 --- a/packages/giflib.rb +++ b/packages/giflib.rb @@ -3,31 +3,30 @@ require 'package' class Giflib < Package description 'giflib is a library for reading and writing gif images.' homepage 'http://giflib.sourceforge.net/' - version '5.1.4' + version '5.2.1' license 'MIT' compatibility 'all' - source_url 'https://prdownloads.sourceforge.net/project/giflib/giflib-5.1.4.tar.bz2' - source_sha256 'df27ec3ff24671f80b29e6ab1c4971059c14ac3db95406884fc26574631ba8d5' + source_url 'https://downloads.sourceforge.net/project/giflib/giflib-5.2.1.tar.gz' + source_sha256 '31da5562f44c5f15d63340a09a4fd62b48c45620cd302f77a6d9acf0077879bd' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/giflib/5.1.4_armv7l/giflib-5.1.4-chromeos-armv7l.tar.xz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/giflib/5.1.4_armv7l/giflib-5.1.4-chromeos-armv7l.tar.xz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/giflib/5.1.4_i686/giflib-5.1.4-chromeos-i686.tar.xz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/giflib/5.1.4_x86_64/giflib-5.1.4-chromeos-x86_64.tar.xz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/giflib/5.2.1_armv7l/giflib-5.2.1-chromeos-armv7l.tar.zst', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/giflib/5.2.1_armv7l/giflib-5.2.1-chromeos-armv7l.tar.zst', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/giflib/5.2.1_i686/giflib-5.2.1-chromeos-i686.tar.zst', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/giflib/5.2.1_x86_64/giflib-5.2.1-chromeos-x86_64.tar.zst' }) binary_sha256({ - aarch64: '546af3350ca70ffc33ba0c12e6de65efe2fc9bce95ef3c48ab81da2d6cc1cae0', - armv7l: '546af3350ca70ffc33ba0c12e6de65efe2fc9bce95ef3c48ab81da2d6cc1cae0', - i686: 'ad9b824becceb46ad8b22515085ea105497117e10e7550f7ba965398c4d56d36', - x86_64: '2efb3d4ac43bd4400e5af45cf8281e1852b86a2050af1efb0437eb9e92cd3312' + aarch64: '727b6d1cdbcbc59a90d2b759faeaddf29a957bc4670e088683f5f867caf04593', + armv7l: '727b6d1cdbcbc59a90d2b759faeaddf29a957bc4670e088683f5f867caf04593', + i686: 'cc0a7353ec3c691b37e33512f25bd7b5d0d20a57dcc5d516162c3a66b6905c4e', + x86_64: '06bb0ff65e3562c7779671eaa4a0fbd45ae51e01e46e4b4ced6e89df05b6abbf' }) + depends_on 'glibc' # R + def self.build - system './configure', - "--prefix=#{CREW_PREFIX}", - "--libdir=#{CREW_LIB_PREFIX}", - '--disable-dependency-tracking' - system 'make' + # No configure script in the source. + system 'make', "PREFIX=#{CREW_PREFIX}", "LIBDIR=#{CREW_LIB_PREFIX}" end def self.check @@ -35,6 +34,60 @@ class Giflib < Package end def self.install - system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' + system 'make', "DESTDIR=#{CREW_DEST_DIR}", "PREFIX=#{CREW_PREFIX}", "LIBDIR=#{CREW_LIB_PREFIX}", 'install' + @libname = name.to_s.start_with?('lib') ? name.downcase : "lib#{name.gsub('lib', '').downcase}" + @libnames = Dir["#{CREW_DEST_LIB_PREFIX}/#{@libname}.so*"] + @libnames = Dir["#{CREW_DEST_LIB_PREFIX}/#{@libname}-*.so*"] if @libnames.empty? + @libnames.each do |s| + s.gsub!("#{CREW_DEST_LIB_PREFIX}/", '') + end + @dlname = @libnames.grep(/.so./).first + @libname = @dlname.gsub(/.so.\d+/, '') + @longest_libname = @libnames.max_by(&:length) + @libvars = @longest_libname.rpartition('.so.')[2].split('.') + @libtool_file = <<~LIBTOOLEOF + # #{@libname}.la - a libtool library file + # Generated by libtool (GNU libtool) (Created by Chromebrew) + # + # Please DO NOT delete this file! + # It is necessary for linking the library. + + # The name that we can dlopen(3). + dlname='#{@dlname}' + + # Names of this library. + library_names='#{@libnames.reverse.join(' ')}' + + # The name of the static archive. + old_library='#{@libname}.a' + + # Linker flags that cannot go in dependency_libs. + inherited_linker_flags='' + + # Libraries that this one depends upon. + dependency_libs='' + + # Names of additional weak libraries provided by this library + weak_library_names='' + + # Version information for #{name}. + current=#{@libvars[1]} + age=#{@libvars[1]} + revision=#{@libvars[2]} + + # Is this an already installed library? + installed=yes + + # Should we warn about portability when linking against -modules? + shouldnotlink=no + + # Files to dlopen/dlpreopen + dlopen='' + dlpreopen='' + + # Directory that this library needs to be installed in: + libdir='#{CREW_LIB_PREFIX}' + LIBTOOLEOF + File.write("#{CREW_DEST_LIB_PREFIX}/#{@libname}.la", @libtool_file) end end diff --git a/packages/leptonica.rb b/packages/leptonica.rb index 982428c46..c01bbc584 100644 --- a/packages/leptonica.rb +++ b/packages/leptonica.rb @@ -3,46 +3,55 @@ require 'package' class Leptonica < Package description 'Software that is broadly useful for image processing and image analysis applications' homepage 'http://www.leptonica.com/' - @_ver = '1.82.0' - version "#{@_ver}-1" + @_ver = '1.83.1' + version @_ver license 'Apache-2.0' - compatibility 'all' + compatibility 'x86_64 aarch64 armv7l' source_url 'https://github.com/DanBloomberg/leptonica.git' git_hashtag @_ver binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/leptonica/1.82.0-1_armv7l/leptonica-1.82.0-1-chromeos-armv7l.tar.zst', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/leptonica/1.82.0-1_armv7l/leptonica-1.82.0-1-chromeos-armv7l.tar.zst', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/leptonica/1.82.0-1_i686/leptonica-1.82.0-1-chromeos-i686.tar.zst', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/leptonica/1.82.0-1_x86_64/leptonica-1.82.0-1-chromeos-x86_64.tar.zst' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/leptonica/1.83.1_armv7l/leptonica-1.83.1-chromeos-armv7l.tar.zst', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/leptonica/1.83.1_armv7l/leptonica-1.83.1-chromeos-armv7l.tar.zst', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/leptonica/1.83.1_x86_64/leptonica-1.83.1-chromeos-x86_64.tar.zst' }) binary_sha256({ - aarch64: '1860d784a88c153650ab389c339dafa608e350a9790dd2e30e52f1c8b5654115', - armv7l: '1860d784a88c153650ab389c339dafa608e350a9790dd2e30e52f1c8b5654115', - i686: '52e64b338abe4cdae009176a7f55ddb5602cc05ef2c130eb6930708f9302aedc', - x86_64: '5ef3ed7eb5760e110eb58faeb678aa6bfd549b344d91efb7b7e185deb7410acd' + aarch64: '7f2cd928e003b7fa66511514185ceb38b4936329b901bb2aae9447a9798eaf45', + armv7l: '7f2cd928e003b7fa66511514185ceb38b4936329b901bb2aae9447a9798eaf45', + x86_64: '575415215fa8b9a569983c7f5eeea2800118dc3058d429fd9ab750a894c4c7e3' }) - depends_on 'giflib' - depends_on 'libjpeg' - depends_on 'harfbuzz' - depends_on 'libtiff' - depends_on 'libwebp' - depends_on 'openjpeg' + depends_on 'giflib' # R depends_on 'glibc' # R - depends_on 'libdeflate' # R + depends_on 'harfbuzz' => :build + depends_on 'libdeflate' => :build + depends_on 'libjpeg' # R depends_on 'libpng' # R - depends_on 'xzutils' # R + depends_on 'libtiff' # R + depends_on 'libwebp' # R + depends_on 'openjpeg' # R + depends_on 'xzutils' => :build depends_on 'zlibpkg' # R - depends_on 'zstd' # R + depends_on 'zstd' => :build + + def self.patch + # See https://github.com/DanBloomberg/leptonica/issues/693 + system "sed -i 's,lib/cmake/leptonica,#{ARCH_LIB}/cmake/leptonica,g' CMakeLists.txt" + system "sed -i 's,lib/pkgconfig,#{ARCH_LIB}/pkgconfig,g' CMakeLists.txt" + system "sed -i 's,prefix}/lib,prefix}/#{ARCH_LIB},g' lept.pc.cmake" + system "sed -i 's,set(lib,set(#{ARCH_LIB},g' src/CMakeLists.txt" + system "sed -i 's,DESTINATION lib ARCHIVE DESTINATION lib,DESTINATION #{ARCH_LIB} ARCHIVE DESTINATION #{ARCH_LIB},g' src/CMakeLists.txt" + end def self.build - system '[ -x configure ] || ./autogen.sh' - system "[ -f Makefile ] || ./configure #{CREW_OPTIONS}" - system 'mold -run make' + system "mold -run cmake -B builddir #{CREW_CMAKE_OPTIONS} \ + -DBUILD_SHARED_LIBS=ON \ + -Wno-dev \ + -G Ninja" + system "#{CREW_NINJA} -C builddir" end def self.install - system "make DESTDIR=#{CREW_DEST_DIR} install" + system "DESTDIR=#{CREW_DEST_DIR} #{CREW_NINJA} -C builddir install" end end diff --git a/packages/tesseract.rb b/packages/tesseract.rb index f3b0f1d02..144a7040a 100644 --- a/packages/tesseract.rb +++ b/packages/tesseract.rb @@ -3,85 +3,81 @@ require 'package' class Tesseract < Package description 'A neural net (LSTM) based OCR engine which is focused on line recognition & an older OCR engine which recognizes character patterns.' homepage 'https://github.com/tesseract-ocr/tesseract' - @_ver = '5.2.0' - version "#{@_ver}-1" + @_ver = '5.3.1' + version @_ver license 'Apache-2.0' - compatibility 'all' + compatibility 'x86_64 aarch64 armv7l' source_url 'https://github.com/tesseract-ocr/tesseract.git' git_hashtag @_ver binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/tesseract/5.2.0-1_armv7l/tesseract-5.2.0-1-chromeos-armv7l.tar.zst', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/tesseract/5.2.0-1_armv7l/tesseract-5.2.0-1-chromeos-armv7l.tar.zst', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/tesseract/5.2.0-1_i686/tesseract-5.2.0-1-chromeos-i686.tar.zst', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/tesseract/5.2.0-1_x86_64/tesseract-5.2.0-1-chromeos-x86_64.tar.zst' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/tesseract/5.3.1_armv7l/tesseract-5.3.1-chromeos-armv7l.tar.zst', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/tesseract/5.3.1_armv7l/tesseract-5.3.1-chromeos-armv7l.tar.zst', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/tesseract/5.3.1_x86_64/tesseract-5.3.1-chromeos-x86_64.tar.zst' }) binary_sha256({ - aarch64: '350272935abbf6bfab1cc3b018243d2e9fa08677d27c2f2feeaac4d57bd75145', - armv7l: '350272935abbf6bfab1cc3b018243d2e9fa08677d27c2f2feeaac4d57bd75145', - i686: 'b40e7e19174f21b38abc0695cd1821d31d1819f4d044d76d716ad724f22f0783', - x86_64: 'd5fe0ec1764be79709c7ee4103a0084c313fbaa433f2a0b2a2ad98a8c30527c6' + aarch64: '7822dc17500f27a28b76ac88637578a262d3e6f5061f7e5c086535d0162eb378', + armv7l: '7822dc17500f27a28b76ac88637578a262d3e6f5061f7e5c086535d0162eb378', + x86_64: '98d8715bf3f19ac7c32bafb76d6664117ecb964d71f0c20bfcf33c4e913917b6' }) + depends_on 'acl' => :build depends_on 'asciidoc' => :build - depends_on 'cairo' + depends_on 'attr' => :build + depends_on 'brotli' => :build + depends_on 'bz2' => :build + depends_on 'cairo' => :build + depends_on 'c_ares' => :build + depends_on 'curl' # R depends_on 'docbook_xsl' => :build - depends_on 'fontconfig' - depends_on 'giflib' - depends_on 'glib' - depends_on 'leptonica' - depends_on 'libarchive' - depends_on 'curl' - depends_on 'libjpeg' - depends_on 'openldap' - depends_on 'harfbuzz' - depends_on 'libtiff' - depends_on 'pango' - depends_on 'acl' # R - depends_on 'attr' # R - depends_on 'brotli' # R - depends_on 'bz2' # R - depends_on 'c_ares' # R - depends_on 'e2fsprogs' # R - depends_on 'expat' # R + depends_on 'e2fsprogs' => :build + depends_on 'expat' => :build + depends_on 'fontconfig' # R depends_on 'freetype' # R depends_on 'gcc' # R + depends_on 'giflib' # R + depends_on 'glib' => :build depends_on 'glibc' # R + depends_on 'glib' # R + depends_on 'harfbuzz' # R depends_on 'icu4c' # R - depends_on 'krb5' # R - depends_on 'libcyrussasl' # R - depends_on 'libdeflate' # R - depends_on 'libidn2' # R - depends_on 'libnghttp2' # R + depends_on 'krb5' => :build + depends_on 'leptonica' # R + depends_on 'libarchive' # R + depends_on 'libcyrussasl' => :build + depends_on 'libdeflate' => :build + depends_on 'libidn2' => :build + depends_on 'libjpeg' # R + depends_on 'libnghttp2' => :build depends_on 'libpng' # R - depends_on 'libpsl' # R - depends_on 'libssh' # R - depends_on 'libunistring' # R + depends_on 'libpsl' => :build + depends_on 'libssh' => :build + depends_on 'libtiff' # R + depends_on 'libunistring' => :build depends_on 'libwebp' # R - depends_on 'libxml2' # R - depends_on 'lz4' # R + depends_on 'libxml2' => :build + depends_on 'lz4' => :build depends_on 'openjpeg' # R - depends_on 'openssl' # R - depends_on 'xzutils' # R + depends_on 'openldap' => :build + depends_on 'openssl' => :build + depends_on 'pango' # R + depends_on 'xzutils' => :build depends_on 'zlibpkg' # R - depends_on 'zstd' # R + depends_on 'zstd' => :build + git_fetchtags def self.build - system '[ -x configure ] || ./autogen.sh' - system 'filefix' - system "[ -f Makefile ] || #{CREW_ENV_OPTIONS} ./configure #{CREW_OPTIONS}" - # XML_CATALOG_FILES=#{CREW_PREFIX}/etc/xml/catalog does not get set - # in the Makefile without this, which results in errors at install - system "find . -name 'Makefile' -exec sed -i 's,XML_CATALOG_FILES = ,XML_CATALOG_FILES = #{CREW_PREFIX}/etc/xml/catalog,g' {} +" - system 'make || make' - system 'make training' + system "mold -run cmake -B builddir #{CREW_CMAKE_OPTIONS} \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_INSTALL_LIBDIR=#{ARCH_LIB} \ + -DENABLE_LTO=ON \ + -Wno-dev \ + -G Ninja" + system "#{CREW_NINJA} -C builddir" end def self.install - system "make DESTDIR=#{CREW_DEST_DIR} install" - system "make DESTDIR=#{CREW_DEST_DIR} training-install" - FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/share/tessdata" - system "curl -Ls https://github.com/tesseract-ocr/tessdata/blob/c2b2e0df86272ce11be323f23f96cf656565ed41/eng.traineddata -o #{CREW_DEST_PREFIX}/share/tessdata/osd.traineddata" + system "DESTDIR=#{CREW_DEST_DIR} #{CREW_NINJA} -C builddir install" end end