Open LigH-de opened 2 years ago
64bit has the same issue:
After disabled rist
and svthevc
and tesseract
in ffmpeg_options.txt
, got build finished.
#--enable-librist
#--enable-libsvthevc
#--enable-libtesseract
current media-autobuild_suite.ini
:
[compiler list]
arch=3
license2=5
standalone=1
vpx2=2
aom=1
rav1e=1
dav1d=1
libavif=1
jpegxl=1
x2643=4
x2652=5
other265=1
svthevc=2
xvc=1
vvc=1
svtav1=2
svtvp9=1
flac=1
fdkaac=1
faac=2
exhale=1
mediainfo=1
soxB=1
ffmpegB2=4
ffmpegUpdate=1
ffmpegChoice=1
mp4box=1
rtmpdump=1
mplayer2=2
mpv=1
vlc=2
bmx=1
curl=4
ffmbc=2
cyanrip2=2
ripgrep=1
jq=1
jo=2
dssim=1
avs2=1
CC=1
cores=40
deleteSource=1
strip=1
pack=2
logging=1
updateSuite=1
timeStamp=1
ccache=2
noMintty=1
P.S. Added -lws2_32
in Libs:
in tesseract.pc
not working
I have the exact issue. But the solution would be to temporarily exclude tesseract from FFmpeg (my method worked (I swear it's now past the configure error)).
In ffmpeg_options.txt, put a hashtag symbol before the configure key "--enable-libtesseract", like so:
While Tesseract does do a little in FFmpeg (not only it's for capturing text from images), it can produce a compile error due to some bug in the script itself (for some reason, the FFmpeg configure can't detect that component using pkg-config (I guess))...
Try to add -lws2_32
in Libs
keyword in tesseract.pc file.
But will the suite think that this file's gone, and that it needs recompiling? If it isn't, then I'll try that.
I was just guessing from the error logs. I assume if tesseract.pc is present tesseract project will not be rebuilt.
Is there a sort of "integrity" checks included in the suite?
From a quick glance, I can not see any integrity check. Strictly speaking, git itself does the check for source files but not compiled/generated files.
I was just guessing from the error logs. I assume if tesseract.pc is present tesseract project will not be rebuilt.
As I wrote: I already removed tesseract.pc once to force rebuilding this, but it was not sufficient as its content will not have changed.
I may try that again if I can discover how to let the configuration add this parameter on its own during a forced rebuild. There may be a way to include it in the media-suite_compile.sh script...
Another way to force a rebuild would be removing local##/lib/libtesseract.[l]a or build/tesseract-git/ completely; but that may regenerate tesseract.pc without custom edits. It needs to be injected in its generation process.
PS: It will probably have to get added in this range, lines 552 ff.:
sed -i -e 's|Libs.private.*|& -lstdc++|' \
-e 's|Requires.private.*|& libarchive iconv libtiff-4|' tesseract.pc.in
case $CC in
*gcc) sed -i -e 's|Libs.private.*|& -fopenmp -lgomp|' tesseract.pc.in ;;
*clang) sed -i -e 's|Libs.private.*|& -fopenmp=libomp|' tesseract.pc.in ;;
esac
I am just not sure whether it should go to Libs:
(requiring a new sed
command) or would be allowed in Libs.private:
as well (may just be included in an existing one).
PPS: No, I tried in two different ways, adding -lws2_32
did not change the reported error for me. The reason seems to be elsewhere.
Seems to be an issue with the latest libarchive version in msys2. Downgrading it and recompiling tesseract allowed the configure script test for libtesseract to succeed and ffmpeg to compile successfully.
I don't have time right now to dig into what changed in msys2 upstream and why (or how to fix it), but the pkgconfig file for libarchive went from this (old version, working):
Libs.private: -lregex -lexpat -llzma -lzstd -llz4 -lb2 -lbz2 -lz -lbcrypt
to this (new version, not working):
Libs.private: -lcrypto -lregex -lexpat -llzma -lzstd -llz4 -lb2 -lbz2 -lz -lbcrypt
Seems like libcrypto got added to the list of lib dependencies without also adding libcrypto's dependencies. For reference, libcrypto's pkgconfig:
Libs.private: -lws2_32 -lgdi32 -lcrypt32
You might be able to add the additional libs to libarchive's pkgconfig instead of downgrading as a temp workaround, but I haven't tested to see if that works.
Seems like libcrypto got added to the list of lib dependencies without also adding libcrypto's dependencies
It was added for this issue https://github.com/msys2/MINGW-packages/issues/11157. Programs are compiled here statically. Libs.private should mention the libraries instead of linker flags. I can try to discuss that in msys2.
Libs.private should mention the libraries instead of linker flags. I can try to discuss that in msys2.
I thought that was the purpose of Requires.private, no? Isn't Libs.private correct for linker flags? It's been ages since I had to deal with this kind of stuff, though, so I'm probably wrong, but just curious. Either way, thanks for following up on this.
I thought that was the purpose of Requires.private, no?
Opps, you're right. I shall try to discuss this with upstream.
Can anyone verify if adding the following line in libarchive.pc file fixes this issue?
Requires.private: iconv libssl libcrypto
Going to test, but will take a while, MSYS2 just has new updates... Oh, wait. MABS is not building libarchive.
Oh, wait. MABS is not building libarchive.
It is not required to build libarchive for this test. When you hit the tesseract error before compiling ffmpeg just add that line in libarchive.pc. Then rerun the MABS build as usual.
This would then be in /msys64/mingw##/lib/pkgconfig/ ... OK, testing.
Yes, configuring ffmpeg finished this way.
Yes, configuring ffmpeg finished this way.
Worked for me as well. I rebuilt tesseract as well and see a more exhaustive list of linker flags in its newly generated tesseract.pc pkgconfig file, so the additional requirements are definitely propagating to dependent projects. For reference:
Old:
Libs: -L${libdir} -ltesseract -L<omitted local path> -larchive -lregex -lexpat -llzma -lzstd -llz4 -lb2 -lbz2 -lz -lbcrypt
New:
Libs: -L${libdir} -ltesseract -L<omitted local path> -larchive -lcrypto -lregex -lexpat -llzma -lzstd -llz4 -lb2 -lbz2 -lz -lbcrypt -L<omitted local path> -liconv -lssl -L<omitted local path> -lcrypto -lws2_32 -lgdi32 -lcrypt32
Patch sent in upstream https://github.com/libarchive/libarchive/pull/1723
@Biswa96 could we include that commit inside the MINGW-package for libarchive?
I already removed local32/lib/pkgconfig/tesseract.pc to force reinstallation. Current content:
logs.zip