ImageProcessing-ElectronicPublications / scantailor-advanced

ScanTailor Advanced is the version that merges the features of the ScanTailor Featured and ScanTailor Enhanced versions, brings new ones and fixes.
https://scantailor.org/
GNU General Public License v3.0
6 stars 0 forks source link

OS: Windows? #1

Closed zvezdochiot closed 1 year ago

zvezdochiot commented 1 year ago

Hi @plzombie .

Прошу прощения за наглость, но ты не мог бы скомпилить scantailor-advanced c новыми порогами (EdgePlus и BlurDiv). А то на http://publ.lib.ru/cgi/forum/YaBB.pl похоже все способные компилять вымерли к чортовой матери.

:warning: scantailor-advanced требует Qt5 или Qt6, а на Qt4 вряд ли взлетит. Ежели нема таких в наличии, оставь сообщение. Закрою тогда issue.

plzombie commented 1 year ago

Привет. Попробую

plzombie commented 1 year ago

Так. Тут сборка завязана на каком-то Qt Jom, которого у меня нет. И вообще, Qt ушёл из России, так что у меня даже нет возможности это скачать. Я честно не понимаю, зачем надо было использовать CMake, если есть QMake. Там слишком всё намудрено.

plzombie commented 1 year ago

@zvezdochiot Можешь мне выхлоп от CMake'а скинуть? Я попробую его под винду адаптировать

zvezdochiot commented 1 year ago

@plzombie say:

Можешь мне выхлоп от CMake'а скинуть?

cmake ..
-- The C compiler identification is GNU 10.2.1
-- The CXX compiler identification is GNU 10.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
-- Found JPEG: /usr/lib/x86_64-linux-gnu/libjpeg.so (found version "80") 
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11") 
-- Found PNG: /usr/lib/x86_64-linux-gnu/libpng.so (found version "1.6.37") 
-- Found TIFF: /usr/lib/x86_64-linux-gnu/libtiff.so (found version "4.2.0") 
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake (found suitable version "1.74.0", minimum required is "1.60") found components: unit_test_framework prg_exec_monitor 
-- Could NOT find Qt6 (missing: Qt6_DIR)
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/zvezdochiot/WORK/pub/soft/ebook/scantailor-advanced/build

Смотри также вложения: CMakeCache.txt.gz CMakeError.log.gz CMakeOutput.log.gz

PS: Ежели не получиться, значит не получится. Буду ждать "специально обученного умельца".

plzombie commented 1 year ago

@zvezdochiot Вот меня эта папка вся интересует

Build files have been written to: /home/zvezdochiot/WORK/pub/soft/ebook/scantailor-advanced/build
zvezdochiot commented 1 year ago

@plzombie say:

меня эта папка вся интересует

Понял: build.tar.gz

zvezdochiot commented 1 year ago

Hi @plzombie .

А ты случаем Github-Action (директория .github) не баловался? Я в одной репе видел конфиги автоматической сборки (правда не на Qt). Если бы как-нибудь распарсить эту "тему", то подобные "проблемы" решились бы на корню. Я просто тогда склонировал бы репу себе в личку, там бы отрелизил, получив автосборку, после чего удалил бы ненужный форк.

PS: И "это" не единственный проект на Qt, который было бы совсем неплохо поставить на такие "рельсы".

plzombie commented 1 year ago

@zvezdochiot travis ci не работает для российских аккаунтов. Есть ещё github workflow, но я не использовал, не знаю, как настроить

PS: И "это" не единственный проект на Qt, который было бы совсем неплохо поставить на такие "рельсы".

У этого проекта - огромный скрипт на cmake, это его проблема

plzombie commented 1 year ago

Так. Я разобрался, что вместо jom можно использовать стандартный nmake. Теперь мне нужны исходники qt, потому что с бинарниками этот чудесный скрипт cmake не работает. А официально их уже не скачать

plzombie commented 1 year ago

Qt я скачал отсюда и переименовал папку в qt-lts-lgpl-5.15.9. Только он не собирается нихрена. А какая версия qt нужна, чтобы оно собиралось, там не написано

plzombie commented 1 year ago

Я собрал зависимости с qt 5.6.3 (ну как собрал, там всё равно что-то не запустилось по части qt). Теперь ругается на libtiff, хотя папка такая есть, и библиотека там тоже собрана

CMake Error at G:/Program Files/CMake/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)
Call Stack (most recent call first):
  G:/Program Files/CMake/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  G:/Program Files/CMake/share/cmake-3.26/Modules/FindTIFF.cmake:124 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:156 (find_package)

Если можешь сказать, что он конкретно тут проверяет, то смогу продолжить сборку

zvezdochiot commented 1 year ago

@plzombie say:

Если можешь сказать, что он конкретно тут проверяет, то смогу продолжить сборку

Точно не скажу, но в лине пользуются динамические версии библиотек:

ldd scantailor 
        linux-vdso.so.1 (0x00007ffe9752e000)
        libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007fe9e6a4e000)
        libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fe9e6a14000)
        libjpeg.so.62 => /usr/lib/x86_64-linux-gnu/libjpeg.so.62 (0x00007fe9e6990000)
        libQt5OpenGL.so.5 => /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5 (0x00007fe9e6936000)
        libQt5Svg.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Svg.so.5 (0x00007fe9e68df000)
        libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007fe9e6255000)
        libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007fe9e5b91000)
        libQt5Xml.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5 (0x00007fe9e5b4d000)
        libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007fe9e5602000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe9e5435000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe9e52f1000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe9e52d7000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe9e5100000)
        libwebp.so.6 => /usr/lib/x86_64-linux-gnu/libwebp.so.6 (0x00007fe9e5097000)
        libzstd.so.1 => /usr/lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fe9e4fbc000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fe9e4f94000)
        libjbig.so.0 => /usr/lib/x86_64-linux-gnu/libjbig.so.0 (0x00007fe9e4d86000)
        libdeflate.so.0 => /usr/lib/x86_64-linux-gnu/libdeflate.so.0 (0x00007fe9e4d6a000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe9e4d4b000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe9e4d29000)
        libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fe9e4ca2000)
        libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007fe9e4bba000)
        libmd4c.so.0 => /usr/lib/x86_64-linux-gnu/libmd4c.so.0 (0x00007fe9e4ba8000)
        libdouble-conversion.so.3 => /usr/lib/x86_64-linux-gnu/libdouble-conversion.so.3 (0x00007fe9e4b8f000)
        libicui18n.so.67 => /usr/lib/x86_64-linux-gnu/libicui18n.so.67 (0x00007fe9e4889000)
        libicuuc.so.67 => /usr/lib/x86_64-linux-gnu/libicuuc.so.67 (0x00007fe9e46a0000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe9e469a000)
        libpcre2-16.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-16.so.0 (0x00007fe9e460f000)
        libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fe9e44e0000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fe9e6f01000)
        libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fe9e4426000)
        libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fe9e43f2000)
        libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fe9e432f000)
        libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007fe9e4303000)
        libicudata.so.67 => /usr/lib/x86_64-linux-gnu/libicudata.so.67 (0x00007fe9e27ea000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fe9e2775000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fe9e2632000)
        libbrotlidec.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007fe9e2624000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fe9e25f9000)
        libbrotlicommon.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007fe9e25d6000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fe9e25cf000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fe9e23c9000)
        libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fe9e23b2000)
        libmd.so.0 => /usr/lib/x86_64-linux-gnu/libmd.so.0 (0x00007fe9e23a5000)

Может ему dll-ка нужна? https://github.com/ImageProcessing-ElectronicPublications/scantailor-advanced/blob/7b6fde9bed5250434deb5a60adb1a078eb66e4e4/CMakeLists.txt#L156-L163 Но учитывая, что это винда, я бы заменил на static. И libjpeg, libpng, libz тоже.

В scantailor-universal "слегка" по-другому сделано:

FIND_PATH(
        TIFF_INCLUDE_DIR tiff.h
    PATHS /usr/local/include /usr/include
    HINTS ${TIFF_DIR} # TIFF_DIR may come from export-vars.cmake
    PATH_SUFFIXES libtiff
    DOC "Path to libtiff headers."
)
IF(NOT TIFF_INCLUDE_DIR)
        MESSAGE(
                FATAL_ERROR
                "Could not find libtiff headers.\n"
                "You may need to install a package named libtiff4-dev or similarly."
        )
ENDIF()

INCLUDE_DIRECTORIES("${TIFF_INCLUDE_DIR}")

FIND_LIBRARY(
        TIFF_LIBRARY tiff libtiff.lib
    PATHS /usr/local/lib /usr/lib
    HINTS ${STAGING_LIBS_DIR}
    PATH_SUFFIXES libtiff
    DOC "Path to tiff library."
)
IF(NOT TIFF_LIBRARY)
        MESSAGE(
                FATAL_ERROR
                "Could not find libtiff library.\n"
                "You may need to install a package named libtiff4-dev or similarly."
        )
ENDIF()

IF(WIN32)
        ADD_DEFINITIONS(-DUSE_LIBTIFF_DLL)
ENDIF()
plzombie commented 1 year ago

@zvezdochiot понятно, что dll-ка. А есть идея, в какой папке она ищется? Что есть TIFF_LIBRARY TIFF_INCLUDE_DIR? Потому что dll-ка там такая есть

zvezdochiot commented 1 year ago

@plzombie say:

Что есть TIFF_LIBRARY TIFF_INCLUDE_DIR?

Ну это явно переменные cmake, в которые прописываются пути. Ох уж этот cmake и как с ним бодаться. Смотри. В scantailor-universal помимо libtiff.dll пользуется libtiff.lib (это ссылочный файл на dll-ку). Может в нём засада? Есть такой файл в твоей сборке libtiff?

PS: А scantailor-universal у тебя собирается (:warning: он пользует openjpeg, не помню, опционально или жёстко)?

:information_source: Смотри. В build/src/app/CMakeFiles/scantailor.dir/link.txt прописано:

/usr/bin/c++  -Wall -Wextra -Wpedantic -Werror=return-type -Wno-unused -O3 -DNDEBUG CMakeFiles/scantailor.dir/scantailor_autogen/mocs_compilation.cpp.o CMakeFiles/scantailor.dir/RelinkablePathVisualization.cpp.o CMakeFiles/scantailor.dir/RelinkingModel.cpp.o CMakeFiles/scantailor.dir/RelinkingSortingModel.cpp.o CMakeFiles/scantailor.dir/RelinkingListView.cpp.o CMakeFiles/scantailor.dir/RelinkingDialog.cpp.o CMakeFiles/scantailor.dir/SettingsDialog.cpp.o CMakeFiles/scantailor.dir/FixDpiDialog.cpp.o CMakeFiles/scantailor.dir/LoadFilesStatusDialog.cpp.o CMakeFiles/scantailor.dir/ProjectCreationContext.cpp.o CMakeFiles/scantailor.dir/ProjectOpeningContext.cpp.o CMakeFiles/scantailor.dir/OutOfMemoryDialog.cpp.o CMakeFiles/scantailor.dir/ThumbnailSequence.cpp.o CMakeFiles/scantailor.dir/ProjectFilesDialog.cpp.o CMakeFiles/scantailor.dir/NewOpenProjectPanel.cpp.o CMakeFiles/scantailor.dir/SystemLoadWidget.cpp.o CMakeFiles/scantailor.dir/MainWindow.cpp.o CMakeFiles/scantailor.dir/main.cpp.o CMakeFiles/scantailor.dir/StatusBarPanel.cpp.o CMakeFiles/scantailor.dir/DefaultParamsDialog.cpp.o CMakeFiles/scantailor.dir/scantailor_autogen/UKIBSY7YGX/qrc_resources.cpp.o CMakeFiles/scantailor.dir/scantailor_autogen/GQQMFSSK5H/qrc_dark_scheme.cpp.o CMakeFiles/scantailor.dir/scantailor_autogen/L44T22TW2P/qrc_light_scheme.cpp.o -o ../../scantailor  ../core/libcore.a ../core/zones/libzones.a ../core/filters/fix_orientation/libfix_orientation.a ../core/filters/page_split/libpage_split.a ../core/filters/deskew/libdeskew.a ../core/filters/select_content/libselect_content.a ../core/filters/page_layout/libpage_layout.a ../core/filters/output/liboutput.a ../core/interaction/libinteraction.a ../core/libcore.a ../core/zones/libzones.a ../core/filters/fix_orientation/libfix_orientation.a ../core/filters/page_split/libpage_split.a ../core/filters/deskew/libdeskew.a ../core/filters/select_content/libselect_content.a ../core/filters/page_layout/libpage_layout.a ../core/filters/output/liboutput.a ../core/interaction/libinteraction.a /usr/lib/x86_64-linux-gnu/libtiff.so /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Svg.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.2 ../dewarping/libdewarping.a ../imageproc/libimageproc.a ../math/libmath.a ../foundation/libfoundation.a /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.2 -pthread

Выделяю "интересующее":

/usr/lib/x86_64-linux-gnu/libtiff.so

Это собственно и должно быть TIFF_LIBRARY. Вроде как. И "это" ссылочный файл на libtiff.so.5.

zvezdochiot commented 1 year ago

@plzombie say:

Теперь ругается на...

А вот это: https://github.com/ScanTailor-Advanced/scantailor-libs-build/blob/master/README.md никак не пожет?

6. Unpack the folder of this project there.
You should have gotten a folder structure similar to this:
...
plzombie commented 1 year ago

А вот это: https://github.com/ScanTailor-Advanced/scantailor-libs-build/blob/master/README.md никак не пожет?

Я уже собирал зависимости с помощью этого репозитория, дошла очередь до самого scantailor

zvezdochiot commented 1 year ago

@plzombie say:

дошла очередь до самого scantailor

Да я про стркутуру директорий. Ежели выстроить их так, как написано, не находит? То есть 2 базовые директории:

libs
scantailor-advanced

А уже в libs понапиханы все либы.

plzombie commented 1 year ago

Там есть в libs папка tiff-4.2.0, он её находит при сборке зависимостей. Статическая библиотека+библиотека импорта созданы. Всё должно быть ок

f:\NonOfMyBusiness\scantailor\libs\Boost\
f:\NonOfMyBusiness\scantailor\libs\boost_1_82_0\
f:\NonOfMyBusiness\scantailor\libs\jpeg-9e\
f:\NonOfMyBusiness\scantailor\libs\libpng-1.6.39\
f:\NonOfMyBusiness\scantailor\libs\Qt\
f:\NonOfMyBusiness\scantailor\libs\qt-some-path-5.6.3\
f:\NonOfMyBusiness\scantailor\libs\scantailor-libs-build-master\
f:\NonOfMyBusiness\scantailor\libs\tiff-4.2.0\
f:\NonOfMyBusiness\scantailor\libs\zlib-1.2.11\

Вот выхлоп cmake

F:\NonOfMyBusiness\scantailor\scantailor-advanced-master>cmake -G "NMake Makefiles" -D CMAKE_BUILD_TYPE=Release -B ./build .
-- The C compiler identification is MSVC 19.29.30147.0
-- The CXX compiler identification is MSVC 19.29.30147.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - 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: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found JPEG: F:/NonOfMyBusiness/scantailor/libs/jpeg-9e/stage/lib/libjpeg.lib (found version "90")
-- Found ZLIB: F:/NonOfMyBusiness/scantailor/libs/zlib-1.2.11/stage/lib/zdll.lib (found version "1.2.11")
-- Found PNG: F:/NonOfMyBusiness/scantailor/libs/libpng-1.6.39/stage/lib/libpng.lib (found version "1.6.39")
CMake Error at G:/Program Files/CMake/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)
Call Stack (most recent call first):
  G:/Program Files/CMake/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  G:/Program Files/CMake/share/cmake-3.26/Modules/FindTIFF.cmake:124 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:156 (find_package)

-- Configuring incomplete, errors occurred!

F:\NonOfMyBusiness\scantailor\scantailor-advanced-master>cmake -G "NMake Makefiles" -D CMAKE_BUILD_TYPE=Release -B ./build .
CMake Error at G:/Program Files/CMake/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)
Call Stack (most recent call first):
  G:/Program Files/CMake/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  G:/Program Files/CMake/share/cmake-3.26/Modules/FindTIFF.cmake:124 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:156 (find_package)

-- Configuring incomplete, errors occurred!
plzombie commented 1 year ago

Вот конкретно артефакты сборки

f:\NonOfMyBusiness\scantailor\libs\tiff-4.2.0\stage\lib\libtiff.exp
f:\NonOfMyBusiness\scantailor\libs\tiff-4.2.0\stage\lib\libtiff.lib

Всё есть, как видишь

plzombie commented 1 year ago

Так. Тупой cmake не может отличить файл от папки

//Prefix where tiff is installed
TIFF_INSTALL_PREFIX:PATH=F:/NonOfMyBusiness/scantailor/libs/tiff-4.2.0.zip
zvezdochiot commented 1 year ago

@plzombie say:

Всё есть, как видишь

scantailor-advanced-t/build$ grep -r tiff *
CMakeCache.txt:TIFF_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libtiff.so
CMakeCache.txt:FIND_PACKAGE_MESSAGE_DETAILS_TIFF:INTERNAL=[/usr/lib/x86_64-linux-gnu/libtiff.so][/usr/include/x86_64-linux-gnu][v4.2.0()]
src/core/tests/CMakeFiles/core_tests.dir/link.txt:/usr/bin/c++  -Wall -Wextra -Wpedantic -Werror=return-type -Wno-unused -O3 -DNDEBUG CMakeFiles/core_tests.dir/core_tests_autogen/mocs_compilation.cpp.o CMakeFiles/core_tests.dir/main.cpp.o CMakeFiles/core_tests.dir/TestContentSpanFinder.cpp.o CMakeFiles/core_tests.dir/TestSmartFilenameOrdering.cpp.o -o ../../../core_tests  ../libcore.a /usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.74.0 /usr/lib/x86_64-linux-gnu/libboost_prg_exec_monitor.so.1.74.0 ../zones/libzones.a ../filters/fix_orientation/libfix_orientation.a ../filters/page_split/libpage_split.a ../filters/deskew/libdeskew.a ../filters/select_content/libselect_content.a ../filters/page_layout/libpage_layout.a ../filters/output/liboutput.a ../interaction/libinteraction.a ../libcore.a ../zones/libzones.a ../filters/fix_orientation/libfix_orientation.a ../filters/page_split/libpage_split.a ../filters/deskew/libdeskew.a ../filters/select_content/libselect_content.a ../filters/page_layout/libpage_layout.a ../filters/output/liboutput.a ../interaction/libinteraction.a /usr/lib/x86_64-linux-gnu/libtiff.so /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Svg.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.2 ../../dewarping/libdewarping.a ../../imageproc/libimageproc.a ../../math/libmath.a ../../foundation/libfoundation.a /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.2 -pthread 
src/core/tests/CMakeFiles/core_tests.dir/build.make:core_tests: /usr/lib/x86_64-linux-gnu/libtiff.so
src/app/CMakeFiles/scantailor.dir/link.txt:/usr/bin/c++  -Wall -Wextra -Wpedantic -Werror=return-type -Wno-unused -O3 -DNDEBUG CMakeFiles/scantailor.dir/scantailor_autogen/mocs_compilation.cpp.o CMakeFiles/scantailor.dir/RelinkablePathVisualization.cpp.o CMakeFiles/scantailor.dir/RelinkingModel.cpp.o CMakeFiles/scantailor.dir/RelinkingSortingModel.cpp.o CMakeFiles/scantailor.dir/RelinkingListView.cpp.o CMakeFiles/scantailor.dir/RelinkingDialog.cpp.o CMakeFiles/scantailor.dir/SettingsDialog.cpp.o CMakeFiles/scantailor.dir/FixDpiDialog.cpp.o CMakeFiles/scantailor.dir/LoadFilesStatusDialog.cpp.o CMakeFiles/scantailor.dir/ProjectCreationContext.cpp.o CMakeFiles/scantailor.dir/ProjectOpeningContext.cpp.o CMakeFiles/scantailor.dir/OutOfMemoryDialog.cpp.o CMakeFiles/scantailor.dir/ThumbnailSequence.cpp.o CMakeFiles/scantailor.dir/ProjectFilesDialog.cpp.o CMakeFiles/scantailor.dir/NewOpenProjectPanel.cpp.o CMakeFiles/scantailor.dir/SystemLoadWidget.cpp.o CMakeFiles/scantailor.dir/MainWindow.cpp.o CMakeFiles/scantailor.dir/main.cpp.o CMakeFiles/scantailor.dir/StatusBarPanel.cpp.o CMakeFiles/scantailor.dir/DefaultParamsDialog.cpp.o CMakeFiles/scantailor.dir/scantailor_autogen/UKIBSY7YGX/qrc_resources.cpp.o CMakeFiles/scantailor.dir/scantailor_autogen/GQQMFSSK5H/qrc_dark_scheme.cpp.o CMakeFiles/scantailor.dir/scantailor_autogen/L44T22TW2P/qrc_light_scheme.cpp.o -o ../../scantailor  ../core/libcore.a ../core/zones/libzones.a ../core/filters/fix_orientation/libfix_orientation.a ../core/filters/page_split/libpage_split.a ../core/filters/deskew/libdeskew.a ../core/filters/select_content/libselect_content.a ../core/filters/page_layout/libpage_layout.a ../core/filters/output/liboutput.a ../core/interaction/libinteraction.a ../core/libcore.a ../core/zones/libzones.a ../core/filters/fix_orientation/libfix_orientation.a ../core/filters/page_split/libpage_split.a ../core/filters/deskew/libdeskew.a ../core/filters/select_content/libselect_content.a ../core/filters/page_layout/libpage_layout.a ../core/filters/output/liboutput.a ../core/interaction/libinteraction.a /usr/lib/x86_64-linux-gnu/libtiff.so /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Svg.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.2 ../dewarping/libdewarping.a ../imageproc/libimageproc.a ../math/libmath.a ../foundation/libfoundation.a /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5.15.2 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.2 -pthread                                                                                                                                              
src/app/CMakeFiles/scantailor.dir/build.make:scantailor: /usr/lib/x86_64-linux-gnu/libtiff.so
scantailor-advanced-t/build$ grep -r TIFF *
CMakeCache.txt:TIFF_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu
CMakeCache.txt:TIFF_LIBRARY_DEBUG:FILEPATH=TIFF_LIBRARY_DEBUG-NOTFOUND
CMakeCache.txt:TIFF_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libtiff.so
CMakeCache.txt:core_LIB_DEPENDS:STATIC=general;TIFF::TIFF;general;PNG::PNG;general;ZLIB::ZLIB;general;JPEG::JPEG;general;Qt5::Core;general;Qt5::Gui;general;Qt5::Widgets;general;Qt5::Xml;general;Qt5::Network;general;Qt5::OpenGL;general;Qt5::Svg;general;imageproc;general;zones;general;fix_orientation;general;page_split;general;deskew;general;select_content;general;page_layout;general;output;                                                                                                                                                                          
CMakeCache.txt://Details about finding TIFF
CMakeCache.txt:FIND_PACKAGE_MESSAGE_DETAILS_TIFF:INTERNAL=[/usr/lib/x86_64-linux-gnu/libtiff.so][/usr/include/x86_64-linux-gnu][v4.2.0()]
CMakeCache.txt://ADVANCED property for variable: TIFF_INCLUDE_DIR
CMakeCache.txt:TIFF_INCLUDE_DIR-ADVANCED:INTERNAL=1
CMakeCache.txt://ADVANCED property for variable: TIFF_LIBRARY_DEBUG
CMakeCache.txt:TIFF_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
CMakeCache.txt://ADVANCED property for variable: TIFF_LIBRARY_RELEASE
CMakeCache.txt:TIFF_LIBRARY_RELEASE-ADVANCED:INTERNAL=1
CMakeFiles/Makefile.cmake:  "/usr/share/cmake-3.18/Modules/FindTIFF.cmake"
plzombie commented 1 year ago

Так, сумел создать мэйкфайл. Ашипки при компиляции:

F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\TowardsLineTracer.cpp(148): error C2039: "sqrt": не является членом "std".

Куда-нибудь после

#include <cassert>

Необходимо добавить

#include <cmath>

Вот список варнингов

F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\foundation\Proximity.cpp(31): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\math\PolylineIntersector.cpp(90): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\imageproc\Posterizer.cpp(48): warning C4267: аргумент: преобразование из "size_t" в "int"; возможна потеря данных
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\imageproc\Posterizer.cpp(182): warning C4267: аргумент: преобразование из "size_t" в "int"; возможна потеря данных
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(9): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(162): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(169): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(299): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(314): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DetectVertContentBounds.cpp(11): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DetectVertContentBounds.cpp(250): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DetectVertContentBounds.cpp(268): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DetectVertContentBounds.cpp(405): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\TextLineTracer.cpp(443): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\CylindricalSurfaceDewarper.cpp(344): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\CylindricalSurfaceDewarper.cpp(367): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\filters\output\DewarpingView.cpp(217): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\filters\page_split\ImageView.cpp(212): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\filters\page_split\ImageView.cpp(244): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\filters\page_split\ImageView.cpp(290): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\filters\page_split\ImageView.cpp(309): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\filters\page_split\PageLayout.cpp(117): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\filters\page_split\PageLayout.cpp(354): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\filters\page_split\PageLayoutAdapter.cpp(16): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\filters\page_split\PageLayoutAdapter.cpp(35): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\filters\page_split\PageLayoutAdapter.cpp(71): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\filters\page_split\PageLayoutAdapter.cpp(114): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\interaction\ZoomHandler.cpp(56): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\Application.cpp(61): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\RelinkablePath.cpp(15): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\BackgroundTask.h(30): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\core\BackgroundTask.h(38): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\app\RelinkablePathVisualization.cpp(56): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\app\MainWindow.cpp(2084): warning C4267: аргумент: преобразование из "size_t" в "int"; возможна потеря данных

Про непредвиденные лексемы за директивой препроцессора, требуется newline. Там есть код вида

#if QT_VERSION_MAJOR == 5 and QT_VERSION_MINOR < 14
  segment.intersect(perpendicular, &intersection);
#else
  segment.intersects(perpendicular, &intersection);
#endif

А должен быть

#if QT_VERSION_MAJOR == 5 && QT_VERSION_MINOR < 14
  segment.intersect(perpendicular, &intersection);
#else
  segment.intersects(perpendicular, &intersection);
#endif

Так как and не поддерживается (вижуалстудией как минимум)

zvezdochiot commented 1 year ago

@plzombie say:

Необходимо добавить

Так добавь. Хуже то точно не будет. ;)

@plzombie say:

Так как and не поддерживается

Форми коммит. Про варнинги - забей.

В https://github.com/ImageProcessing-ElectronicPublications/scantailor-advanced/releases/tag/v1.0.18 добавь сборку с суффиксом epbd, в описании релиза укажи себя, как сборщика и ссылку на данный issue.

plzombie commented 1 year ago

Scantailor-Advanced-1.0.18.zip Вот бинарники. Только не знаю, зачем ты заставлял меня это компилировать, если у тебя уже есть там сборка для Qt6 x64

zvezdochiot commented 1 year ago

@plzombie say:

зачем ты заставлял меня это компилировать,

Так ты мою мастер ветку скомпилил? Тогда смотри https://github.com/ScanTailor-Advanced/scantailor-advanced/pull/48 . В "этом" различие. Я как дурак в одну харю тестами нового порога занимаюсь: http://publ.lib.ru/cgi/forum/YaBB.pl?num=1505152856/538#530

plzombie commented 1 year ago

Твою мастер ветку. Можешь написать, куда тыкать, чтобы добраться до фильтров бинаризации? У меня там только поворот всякий, margins

zvezdochiot commented 1 year ago

@plzombie say:

куда тыкать

Это на последнем этапе: Output. По умолчанию режим BW, порог Otsu. Так вот помимо Otsu есть Sauvola и Wolf (aka Chistian), а от меня теперь EdgePlus и BlurDiv.

PS: На форуме ссылку на релиз завтра опубликую, чтоб "свежачок" был. ;)

zvezdochiot commented 1 year ago

:information_source: https://github.com/ImageProcessing-ElectronicPublications/scantailor-advanced/releases/tag/v1.0.18

plzombie commented 1 year ago

Я там немного сборку подправил, часть файлов отсутствовала

zvezdochiot commented 1 year ago

Привет @plzombie .

Звиняюсь за беспокойство. Ежели будет возможность, сборку текущего (https://github.com/ImageProcessing-ElectronicPublications/scantailor-advanced/commit/37ba7648a0354b7d5baa50047372101eeec5565c) состояния: epdbta не сделаешь? Просто я ещё один регулятор к порогам прикрутил (смотри https://github.com/ScanTailor-Advanced/scantailor-advanced/issues/59). Мелочь, но пороги теперь регулируются почти что шикарно.

PS: Все твои замечания, сделанные ранее, вроде как в https://github.com/ImageProcessing-ElectronicPublications/scantailor-advanced/commit/794faa96d0203486c6fd96e94a400f061ca65cad пофиксил. Но может ещё что то всплывёт. Ежели так, то можешь вносить правки от себя.

plzombie commented 1 year ago

F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\imageproc\Posterizer.cpp(48): warning C4267: аргумент: преобразование из "size_t" в "int"; возможна потеря данных F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\imageproc\Posterizer.cpp(182): warning C4267: аргумент: преобразование из "size_t" в "int"; возможна потеря данных

F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(9): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(165): error C2065: QRandomGenerator: необъявленный идентификатор F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(165): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "prng" F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(165): error C3861: prng: идентификатор не найден F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(173): error C2065: prng: необъявленный идентификатор F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(174): error C2065: prng: необъявленный идентификатор F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(299): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline F:\NonOfMyBusiness\scantailor\scantailor-advanced-master\src\dewarping\DistortionModelBuilder.cpp(314): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline

plzombie commented 1 year ago

Сейчас пофикшу, пришлю файлики

plzombie commented 1 year ago

scantailor-advanced_37ba764+patch-qt5_win64_epdb.zip

plzombie commented 1 year ago

1.zip - патчи в исходники

zvezdochiot commented 1 year ago

Привет @plzombie .

Принял. Спсб. Буду разбираться.

PS: Для справки: суффикс мода к релизу: epdbta (сам всё поменяю, чисто для сведения).

zvezdochiot commented 1 year ago

Hi @plzombie .

Вопрос тут на форуме возник (http://forum.ru-board.com/topic.cgi?forum=5&topic=32945&start=3460#1). Я копнул архив, а там реально файлов *.qm в транслятион нема. Заместо них *.ts. У тебя какие то проблемы с компиляцией были или путаница какая то возникла? На всякий привожу пример команды компиляции у себя (Qt5):

scantailor_ru.qm: ../src/translations/scantailor_ru.ts
         /usr/lib/qt5/bin/lrelease ../src/translations/scantailor_ru.ts -qm scantailor_ru.qm

Я просто не уверен, что мои файлы подойдут виндовской версии.

PS: Свои файлы переводов прилагаю: scantailor-advanced_1.0.18-deb11epbdta-translations.zip

plzombie commented 1 year ago

Привет. Файлики были. Но в чужой сборке я видел только .ts в папке translations, поэтому оставил так. Позже перезалью с qm

zvezdochiot commented 1 year ago

Hi @plzombie .

Спсб. Как перезальёшь, кастани меня. Хочу сравнить файлы винды и линя.

PS: Интересно, а оригинальный установщик куда их тогда забрасывает?

zvezdochiot commented 1 year ago

Hi @plzombie .

На всякий случай. Согласно тестам форумчанина (http://forum.ru-board.com/topic.cgi?forum=5&topic=32945&start=3460#5) файлы из оригинальной сборки: https://github.com/ImageProcessing-ElectronicPublications/scantailor-advanced/releases/download/v1.0.18/ScanTailor-Advanced-1.0.18_III.x64.zip подходят.

plzombie commented 1 year ago

@zvezdochiot держи scantailor-advanced_37ba764+patch-qt5_win64_epdb.zip

plzombie commented 1 year ago

У меня немного другие файлы получились, отличаются на пару байт

zvezdochiot commented 1 year ago

@plzombie say:

У меня немного другие файлы получились, отличаются на пару байт

Но ST запускается нормально? Никаких бзиков и прочей ерунды?

plzombie commented 1 year ago

С теми из оригинальной сборки тоже запускается

zvezdochiot commented 1 year ago

Перезалил: https://github.com/ImageProcessing-ElectronicPublications/scantailor-advanced/releases/download/v1.0.18/scantailor-advanced_1.0.18-qt5_win64_epdbta.zip

zvezdochiot commented 1 year ago

Hi @plzombie .

Мои правки вошли в мейнстрим: https://github.com/ScanTailor-Advanced/scantailor-advanced/commit/b0788fc5055ab8f7f7a6b5d727dd13eea1006212 . Надеюсь скоро будет официальный релиз. За моды к 1.0.18 премного благодарен. Такие вот дела.

PS: На этом наконец "проблема" с релизами завершена.

zvezdochiot commented 1 year ago

Hi @plzombie .

Не было печали, да черти подкачали.

Можешь дополнить релиз 1.0.19 сборкой на Qt5? А то официальная сборка на Qt6 в Win7 не пашет.

Запрос в оффрепу уже сделал: https://github.com/ScanTailor-Advanced/scantailor-advanced/issues/66

plzombie commented 1 year ago

scantailor-advanced_1.0.19-qt5_win64.zip держи

plzombie commented 1 year ago

Заодно актуальный скрипт для сборки под виндой

REM Next is a path to vs env
REM "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"

rmdir /S /Q build
mkdir build
cd build

cmake -G "NMake Makefiles" -D CMAKE_BUILD_TYPE=Release ..

nmake

cd ..

pause
plzombie commented 1 year ago

А заодно структуру папки libs, которую надо создать параллельно папке с исходниками

Boost\
boost_1_82_0\
jpeg-9e\
libpng-1.6.39\
Qt\
scantailor-libs-build-master\
tiff-4.2.0\
zlib-1.2.11\
zvezdochiot commented 1 year ago

@plzombie say;

держи

Премного благодарен. Ru.Board : Scan Tailor (часть 2)