m-ab-s / media-autobuild_suite

This Windows Batchscript helps setup a Mingw-w64 compiler environment for building ffmpeg and other media tools under Windows.
GNU General Public License v3.0
1.51k stars 262 forks source link

librist: meson ERROR: Unknown options: "disable_json" #2476

Closed LigH-de closed 1 year ago

LigH-de commented 1 year ago

ab-suite.meson.log

CPPFLAGS: -D_FORTIFY_SOURCE=2 -D__USE_MINGW_ANSI_STDIO=1
CFLAGS: -fstack-protector-strong -mtune=generic -O2 -pipe -mthreads
CXXFLAGS: -fstack-protector-strong -mtune=generic -O2 -pipe -mthreads
LDFLAGS: -pipe -static-libgcc -fstack-protector-strong -static-libstdc++
meson setup .. --default-library=static --buildtype=release --prefix=/local32 --backend=ninja --bindir=bin-global -Dhave_mingw_pthreads=true -Dtest=false -Ddisable_json=true
The Meson build system
Version: 1.1.1
Source dir: G:/MABS/build/librist-git
Build dir: G:/MABS/build/librist-git/build-32bit
Build type: native build

../meson.build:6:0: ERROR: Unknown options: "disable_json"

A full log can be found at G:/MABS/build/librist-git/build-32bit/meson-logs/meson-log.txt

logs.zip

LigH-de commented 1 year ago

Unfortunately it does not build well when disable_json is commented out.

logs.zip

The library builds but tools fail; may it be possible that building tools can be skipped?

There is an option in meson_options.txt: option('built_tools', type: 'boolean', value: true) - could be tested. Also there is an option option('builtin_cjson', type: 'boolean', value: false) - I wonder if it might be an alternative to disable_json?

LigH-de commented 1 year ago

I see that "-Dbuilt_tools=false" is added when standalone tools are disabled in general.

So I will instead test

 if enabled librist && do_vcs "$SOURCE_REPO_LIBRIST"; then
     do_patch "https://raw.githubusercontent.com/m-ab-s/mabs-patches/master/librist/0001-Workaround-fixes-for-cJSON-symbol-collision.patch" am
     do_uninstall include/librist "${_check[@]}"
-    extracommands=("-Ddisable_json=true")
+    extracommands=("-Dbuiltin_cjson=false")
     [[ $standalone = y ]] || extracommands+=("-Dbuilt_tools=false")
     do_mesoninstall global -Dhave_mingw_pthreads=true -Dtest=false "${extracommands[@]}"
     do_checkIfExist
 fi

OK, not the "unknown option" error, but failing with a different message.

logs.zip

../tools/srp_shared.c: In function 'user_verifier_lookup':
../tools/srp_shared.c:156:28: error: 'struct _stat32' has no member named 'st_mtim'; did you mean 'st_mtime'?
  156 |         *generation = (buf.st_mtim.tv_sec << 32) | buf.st_mtim.tv_nsec;
      |                            ^~~~~~~
      |                            st_mtime
../tools/srp_shared.c:156:56: error: 'struct _stat32' has no member named 'st_mtim'; did you mean 'st_mtime'?
  156 |         *generation = (buf.st_mtim.tv_sec << 32) | buf.st_mtim.tv_nsec;
      |                                                        ^~~~~~~
      |                                                        st_mtime

videolan rist issue 162

LigH-de commented 1 year ago

Missed this:

┌ librist git  ........................................ [Recently updated]
0001-Workaround-fixes-for-cJSON-symbol-collision.patch
    Patch could not be applied with `git am`. Continuing without patching.

Guess it needs a rebase.

BTW: What is the syntax to add a commit hash to the git URL of librist to downgrade to an earlier version, to be able to build the rest in the meantime?

media-suite_deps.sh SOURCE_REPO_LIBRIST=https://code.videolan.org/rist/librist.git ??? c917e970be95658411e249f6e4e7fc1eeea6fe99

LigH-de commented 1 year ago

I tried SOURCE_REPO_LIBRIST=https://code.videolan.org/rist/librist.git#commit=c917e970 or SOURCE_REPO_LIBRIST=https://code.videolan.org/rist/librist.git#commit=c917e970be95658411e249f6e4e7fc1eeea6fe99 but it did not work:

  Running git clone for librist...
fatal: Not a valid object name 
  Running git update for librist...

So I must have misunderstood the implementation and syntax of do_vcs().

OliverMD15 commented 1 year ago

Ran into the same problem just now logs.zip

03:43:19 ┌ librist git  .............................. [Recently updated]
0001-Workaround-fixes-for-cJSON-symbol-collision.patch
        Patch could not be applied with `git am`. Continuing without patching.
03:43:19 ├ Running meson...
Likely error (tail of the failed operation logfile):
meson setup .. --default-library=static --buildtype=rele
[logs.zip](https://github.com/m-ab-s/media-autobuild_suite/files/11973785/logs.zip)
ase --prefix=/local64 --backend=ninja --bindir=bin-global -Dhave_mingw_pthreads=true -Dtest=false -Ddisable_json=true
The Meson build system
Version: 1.1.1
Source dir: C:/Download/Media-Autobuild/build/librist-git
Build dir: C:/Download/Media-Autobuild/build/librist-git/build-64bit
Build type: native build

../meson.build:6:0: ERROR: Unknown options: "disable_json"
LigH-de commented 1 year ago

@1480c1 offered a patch upstream which is waiting for merge...

1480c1 commented 1 year ago

@LigH-de can you try using this branch to see if they compile? I won't have access to my laptop for a while so I cannot test atm

https://github.com/1480c1/media-autobuild_suite/tree/test_branch

LigH-de commented 1 year ago

Trying now ... 32 bit passed ... 64 bit too.

OliverMD15 commented 1 year ago

Can confirm, test_branch passed without any issues for me.

Matchstick001 commented 1 year ago

Ran into the same issue.... Is there any way out

21:10:32 ┌ librist git  .............................. [Recently updated]
0001-Workaround-fixes-for-cJSON-symbol-collision.patch
        Patch could not be applied with `git am`. Continuing without patching.
21:10:35 ├ Running meson...
Likely error (tail of the failed operation logfile):
meson setup .. --default-library=static --buildtype=release --prefix=/local64 --backend=ninja --bindir=bin-global -Dhave_mingw_pthreads=true -Dtest=false -Ddisable_json=true -Dbuilt_tools=false
The Meson build system
Version: 1.1.1
Source dir: C:/abbuild/build/librist-git
Build dir: C:/abbuild/build/librist-git/build-64bit
Build type: native build

../meson.build:6:0: ERROR: Unknown options: "disable_json"

A full log can be found at C:/abbuild/build/librist-git/build-64bit/meson-logs/meson-log.txt
meson failed. Check C:/abbuild/build/librist-git/build-64bit/ab-suite.meson.log
This is required for other packages, so this script will exit.
21:10:38   Creating diagnostics file...

logs.zip

LigH-de commented 1 year ago

There will be when @1480c1 returns to merge his test branch. Please read a few comments above yours.

Matchstick001 commented 1 year ago

I ran the test branch two times

First I got the error

ERROR: srt >= 1.3.0 not found using pkg-config

Then i substituted the srt-git with version 1.3.0 and again ran the test branch branch then I got this error

FFmpeg and related apps will depend on CUDA SDK to run!
14:57:29 ├ Compiling static FFmpeg...
14:57:31 ├ Running configure...
15:07:25 ├ Running make...
 Likely error (tail of the failed operation logfile):
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x4560): multiple definition of `cJSON_CreateFloatArray'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x36f0): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x46d0): multiple definition of `cJSON_CreateDoubleArray'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x37f0): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x4840): multiple definition of `cJSON_CreateStringArray'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x38e0): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x49b0): multiple definition of `cJSON_Duplicate'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x3a10): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x4b60): multiple definition of `cJSON_Minify'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x3ba0): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x5020): multiple definition of `cJSON_malloc'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x40): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/local64/lib/libSvtVp9Enc.a(EbEncHandle.c.obj):EbEncHandle.c:(.bss+0x240): multiple definition of `vpx_idct16x16_256_add'; C:/ffmpeg/local64/lib/libvpx.a(vpx_dsp_rtcd.c.o):vpx_dsp_rtcd.c:(.bss+0x240): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/local64/lib/libSvtVp9Enc.a(EbEncHandle.c.obj):EbEncHandle.c:(.bss+0x430): multiple definition of `vpx_comp_avg_pred'; C:/ffmpeg/local64/lib/libvpx.a(vpx_dsp_rtcd.c.o):vpx_dsp_rtcd.c:(.bss+0x598): first defined here
collect2.exe: error: ld returned 1 exit status
make: *** [/build/ffmpeg-git/Makefile:133: ffmpeg_g.exe] Error 1
make failed. Check C:/ffmpeg/build/ffmpeg-git/build-static-64bit/ab-suite.make.log
This is required for other packages, so this script will exit.
15:35:26   Creating diagnostics file...

logs.zip ab-suite.make.log— FFmpeg

LigH-de commented 1 year ago

I already mentioned in this issue that libSvtVp9 fails in this case. There is a separate patch which failed loading in the main branch, it seems to load in the test branch but does not compile correctly. So I disabled it in ffmpeg-options.txt for the time testing.

Having multiple definitions of cJSON with Vulkan is not one of my issues, but I am quite sure that using cJSON in librist was disabled in my workflow...

Matchstick001 commented 1 year ago

I already mentioned in this issue that libSvtVp9 fails in this case. There is a separate patch which failed loading in the main branch, it seems to load in the test branch but does not compile correctly. So I disabled it in ffmpeg-options.txt for the time testing.

I'm a rookie. Where can I find ffmpeg-options.txt I tried but didn't succeed.

LigH-de commented 1 year ago

This file is only created when you configure the suite so that you want to use a custom list of linked libraries, instead of the presets Light / Zeranoe / Full, that happens when you select 1 in this moment:

Choose ffmpeg and mpv optional libraries?
1 = Yes
2 = No (Light build)
3 = No (Mimic Zeranoe)
4 = No (All available external libs)

In the media-autobuild_suite.ini it is the option ffmpegChoice=1 (if ffmpeg-options.txt does not exist yet when you run the suite the next time, it will be generated according to your previous selection of libraries, then you will get a chance to edit it manually before the suite continues to build).

Matchstick001 commented 1 year ago

In the media-autobuild_suite.ini it is the option ffmpegChoice=1 (if ffmpeg-options.txt does not exist yet when you run the suite the next time, it will be generated according to your previous selection of libraries, then you will get a chance to edit it manually before the suite continues to build).

Thank You for your assistance... I followed you directions. I removed libsvtvp9, libvpx and vulkan from ffmpeg-options.txt but still it showing errors. I tried from both test branch and main build.

┌ ffmpeg git  .................................. [Files missing]
13:26:37 ├ Changing options to comply to nonfree...
FFmpeg and related apps will depend on CUDA SDK to run!
13:26:55 ├ Compiling static FFmpeg...
13:26:58 ├ Running uninstall...
13:26:58 ├ Running configure...
13:39:08 ├ Running make...
Likely error (tail of the failed operation logfile):
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x43f0): multiple definition of `cJSON_CreateObject'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x35c0): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x4430): multiple definition of `cJSON_CreateIntArray'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x3600): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x4560): multiple definition of `cJSON_CreateFloatArray'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x36f0): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x46d0): multiple definition of `cJSON_CreateDoubleArray'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x37f0): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x4840): multiple definition of `cJSON_CreateStringArray'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x38e0): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x49b0): multiple definition of `cJSON_Duplicate'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x3a10): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x4b60): multiple definition of `cJSON_Minify'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x3ba0): first defined here
C:/ffmpeg/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ffmpeg/msys64/mingw64/lib/libcjson.a(cJSON.c.obj):(.text+0x5020): multiple definition of `cJSON_malloc'; C:/ffmpeg/local64/lib/libvulkan.a(cJSON.c.obj):cJSON.c:(.text+0x40): first defined here
collect2.exe: error: ld returned 1 exit status
make: *** [/build/ffmpeg-git/Makefile:133: ffmpeg_g.exe] Error 1
make failed. Check C:/ffmpeg/build/ffmpeg-git/build-static-64bit/ab-suite.make.log
This is required for other packages, so this script will exit.
13:46:09   Creating diagnostics file...

Attach C:\ffmpeg\build\logs.zip to the GitHub issue.

ab-suite.make.log logs.zip ffmpeg_options.txt

LigH-de commented 1 year ago

Yesterday Gijs Peskens wrote:

I'll fix tonight. Indeed looks like a typo. Thx!

Hmm, not yet...

LigH-de commented 1 year ago

Compiling with librist worked for me today with the default suite sources. (Problems with libsvtvp9 are a different issue.)

@Matchstick001 - in case of despair, try to purge the directories containing the sources of the related projects below build. No guarantee anyway...

Matchstick001 commented 1 year ago

@LigH-de Yeah, it worked for me a day before yesterday with the default suite (btw I don't know how it worked I did many trials, substitutions of main branch as well test branch) I removed vpx, svtvp9... It got compiled with Vulkan, suddenly CUDA started giving me errors I reinstalled it and finally got succeeded after more than a week. BTW thanks for you assistance.

gizahNL commented 1 year ago

Yesterday Gijs Peskens wrote:

I'll fix tonight. Indeed looks like a typo. Thx!

Hmm, not yet...

Sorry :/ Very very busy with work & other commitments. @1480c1 is reworking his patch, I'll merge it when we get it.