From 7fe513971f4139a52c22bae36097c950731b56f2 Mon Sep 17 00:00:00 2001 From: Baptiste Jonglez Date: Wed, 30 Jun 2021 14:09:42 +0200 Subject: [PATCH] tessdata: uncompress tarball only once to speed up builds The previous approach was to uncompress N times a big tarball (638 MB) where N=130 is the number of supported languages. Each iteration would only extract a single file, but it still needs to uncompress the whole tarball. This is of course completely inefficient. Now, we uncompress the tarball only once to extract all relevant files, and then iterate N times to copy the file needed for each language. This massively speeds up builds, at the expense of temporarily requiring more build space (about 1 GB more) Signed-off-by: Baptiste Jonglez --- utils/tessdata/Makefile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/utils/tessdata/Makefile b/utils/tessdata/Makefile index a2d4cbe7fc..376d16c190 100644 --- a/utils/tessdata/Makefile +++ b/utils/tessdata/Makefile @@ -18,7 +18,7 @@ PKG_MAINTAINER:=Valentín Kivachuk PKG_LICENSE:=Apache-2.0 PKG_LICENSE_FILES:=COPYING -#No need to extract 1,5GB... +#No need to extract 1,5GB... We only extract what we need. PKG_UNPACK:= include $(INCLUDE_DIR)/package.mk @@ -26,6 +26,11 @@ include $(INCLUDE_DIR)/package.mk ALLTESSERACTLANG:=afr amh ara asm aze aze_cyrl bel ben bod bos bre bul cat ceb ces chi_sim chi_sim_vert chi_tra chi_tra_vert chr cos cym dan dan_frak deu deu_frak div dzo ell eng enm epo equ est eus fao fas fil fin fra frk frm fry gla gle glg grc guj hat heb hin hrv hun hye iku ind isl ita ita_old jav jpn jpn_vert kan kat kat_old kaz khm kir kmr kor kor_vert lao lat lav lit ltz mal mar mkd mlt mon mri msa mya nep nld nor oci ori osd pan pol por pus que ron rus san sin slk slk_frak slv snd spa spa_old sqi srp srp_latn sun swa swe syr tam tat tel tgk tgl tha tir ton tur uig ukr urd uzb uzb_cyrl vie yid yor +define Build/Prepare + $(Build/Prepare/Default) + $(TAR) --strip=1 -C $(PKG_BUILD_DIR) -xvf $(DL_DIR)/$(PKG_NAME)-$(PKG_VERSION).tar.gz --exclude 'script' --wildcards '*.traineddata' +endef + define Build/Compile endef @@ -37,6 +42,7 @@ define Package/tesseract-data-default SECTION:=utils CATEGORY:=Utilities DEPENDS:=tesseract + PKGARCH:=all endef define generate-tesseract-data-package @@ -47,7 +53,7 @@ define generate-tesseract-data-package define Package/tesseract-data-$(1)/install $(INSTALL_DIR) $$(1)/usr/share/tessdata - $(TAR) --strip=1 -C $$(1)/usr/share/tessdata/ -xvf $(DL_DIR)/$(PKG_NAME)-$(PKG_VERSION).tar.gz $(PKG_NAME)-$(PKG_VERSION)/$(1).traineddata + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(1).traineddata $$(1)/usr/share/tessdata/ endef endef