SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Greetings. I am trying to build KODI 18 Leia from Git on a Slackware64 14.2 machine, and running into this compilation error:
Code:
error: /root/kodi/xbmc/cores/RetroPlayer/messages/savestate.fbs:16:0: error: underlying enum type must be integral
build/cores/RetroPlayer/messages/CMakeFiles/retroplayer_messages.dir/build.make:57: recipe for target 'build/cores/RetroPlayer/messages/savestate_generated.h' failed
Here is the code that the error refers to:
Code:
enum SaveType : uint8 {
Unknown,
Auto,
Manual
}
I have built it on a Slackware64-Current machine and this error does not occur, and have also built KODI 17 Krypton on the machine that building Leia on fails.
[ 43%] Building C++ header for savestate.fbs
error: /home/jbhansen/program-downloads/xbmc/xbmc/cores/RetroPlayer/messages/savestate.fbs:16:0: error: underlying enum type must be integral
build/cores/RetroPlayer/messages/CMakeFiles/retroplayer_messages.dir/build.make:57: recipe for target 'build/cores/RetroPlayer/messages/savestate_generated.h' failed
make[2]: *** [build/cores/RetroPlayer/messages/savestate_generated.h] Error 1
CMakeFiles/Makefile2:1394: recipe for target 'build/cores/RetroPlayer/messages/CMakeFiles/retroplayer_messages.dir/all' failed
make[1]: *** [build/cores/RetroPlayer/messages/CMakeFiles/retroplayer_messages.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
I'm thinking it is coming from flatbuffers as I was able to find that exact error message in its idl_parser.cpp file (line 1599).
Code:
// Specify the integer type underlying this enum.
ECHECK(ParseType(enum_def->underlying_type));
if (!IsInteger(enum_def->underlying_type.base_type) ||
IsBool(enum_def->underlying_type.base_type))
return Error("underlying enum type must be integral");
And after testing that theory by upgrading flatbuffers from 1.7.1 (that's on SBo) to 1.10.0 (the latest release on their github) and I am able to get through that section.
I just bumped the version and removed the line that runs the patch and it compiled and now kodi is proceeding with the compile.
Thanks bassmadrigal. I was using version 1.71 of flatbuffers, and come to find out, I had installed flatbuffers from Git on my Slackware64-Current machine, I believe because I could not get through the configure portion of the KODI build with 1.71 installed-it would give me an error message that it couldn't find it.
However, now I am stuck at the same place as you are with trying to build VAAPI.cpp.o
But running vainfo gives me the following (I am running from SSH, thus the reason for the "can't connect to X" message):
Code:
root@beauty:~/kodi-build# vainfo
error: can't connect to X server!
libva info: VA-API version 0.38.1
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_38
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.38 (libva 1.6.2)
vainfo: Driver version: Intel i965 driver for Intel(R) Ironlake Desktop - 1.6.2
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264Main : VAEntrypointVLD
VAProfileH264High : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
I will have to investigate some more when I get home from work.
I'm curious about this, you guys do SBo changing kodi to 18 or following their build from source guide?
Just to test the build, I'm just building it manually (I just won't run make install). If I end up installing it, I'd tweak the SlackBuild (or generate my own) so I have a Slackware package to install.
Well, I upgraded libva from 1.6.2 to 2.3.0 (grabbed the source from -current and rebuilt it on 14.2) and I was able to get past that error and then ran into another. This one I'm thinking is related to mesa and I'm not sure I want to tackle that project, since initial checks show that mesa requires at least an upgraded libdrm, and the last time I tried something like this, it required me upgrading almost all of X due to the dependency chain requiring newer versions.
But, after searching, you can disable vaapi using -DENABLE_VAAPI=OFF as a cmake option and complete the build (probably without updating libva, but I'm too lazy to downgrade and then rebuild it). However, if you're not using vdpau, this could have serious ramifications on video playback and CPU usage.
Anyway, the latest error without disabling vaapi is below:
Code:
[ 91%] Building CXX object build/cores/VideoPlayer/videorenderers/hwdec/CMakeFiles/videorenderers_hwdec.dir/VaapiEGL.cpp.o
/home/jbhansen/program-downloads/xbmc/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VaapiEGL.cpp: In static member function 'static bool VAAPI::CVaapi1Texture::TestInteropDeepColor(VADisplay, EGLDisplay)':
/home/jbhansen/program-downloads/xbmc/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VaapiEGL.cpp:442:34: error: 'DRM_FORMAT_GR1616' was not declared in this scope
EGL_LINUX_DRM_FOURCC_EXT, DRM_FORMAT_GR1616,
^
/home/jbhansen/program-downloads/xbmc/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VaapiEGL.cpp: In member function 'virtual bool VAAPI::CVaapi2Texture::Map(VAAPI::CVaapiRenderPicture*)':
/home/jbhansen/program-downloads/xbmc/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VaapiEGL.cpp:580:21: error: 'EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT' was not declared in this scope
attribs.Add({{EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, static_cast<EGLint>(object.drm_format_modifier)},
^
/home/jbhansen/program-downloads/xbmc/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VaapiEGL.cpp:581:10: error: 'EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT' was not declared in this scope
{EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, static_cast<EGLint>(object.drm_format_modifier >> 32)}});
^
/home/jbhansen/program-downloads/xbmc/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VaapiEGL.cpp:581:101: error: no matching function for call to 'CEGLAttributes<8ul>::Add(<brace-enclosed initializer list>)'
{EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, static_cast<EGLint>(object.drm_format_modifier >> 32)}});
^
In file included from /home/jbhansen/program-downloads/xbmc/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VaapiEGL.cpp:15:0:
/home/jbhansen/program-downloads/xbmc/xbmc/utils/EGLUtils.h:123:8: note: candidate: void CEGLAttributes<AttributeCount>::Add(const std::initializer_list<CEGLAttributes<AttributeCount>::EGLAttribute>&) [with long unsigned int AttributeCount = 8ul]
void Add(std::initializer_list<EGLAttribute> const& attributes)
^
/home/jbhansen/program-downloads/xbmc/xbmc/utils/EGLUtils.h:123:8: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const std::initializer_list<CEGLAttributes<8ul>::EGLAttribute>&'
In file included from /home/jbhansen/program-downloads/xbmc/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VaapiEGL.cpp:15:0:
/home/jbhansen/program-downloads/xbmc/xbmc/utils/EGLUtils.h:146:8: note: candidate: void CEGLAttributes<AttributeCount>::Add(const CEGLAttributes<AttributeCount>::EGLAttribute&) [with long unsigned int AttributeCount = 8ul]
void Add(EGLAttribute const& attribute)
^
/home/jbhansen/program-downloads/xbmc/xbmc/utils/EGLUtils.h:146:8: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const CEGLAttributes<8ul>::EGLAttribute&'
build/cores/VideoPlayer/videorenderers/hwdec/CMakeFiles/videorenderers_hwdec.dir/build.make:86: recipe for target 'build/cores/VideoPlayer/videorenderers/hwdec/CMakeFiles/videorenderers_hwdec.dir/VaapiEGL.cpp.o' failed
make[2]: *** [build/cores/VideoPlayer/videorenderers/hwdec/CMakeFiles/videorenderers_hwdec.dir/VaapiEGL.cpp.o] Error 1
CMakeFiles/Makefile2:10194: recipe for target 'build/cores/VideoPlayer/videorenderers/hwdec/CMakeFiles/videorenderers_hwdec.dir/all' failed
make[1]: *** [build/cores/VideoPlayer/videorenderers/hwdec/CMakeFiles/videorenderers_hwdec.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
But, after searching, you can disable vaapi using -DENABLE_VAAPI=OFF as a cmake option and complete the build (probably without updating libva, but I'm too lazy to downgrade and then rebuild it). However, if you're not using vdpau, this could have serious ramifications on video playback and CPU usage.
Yep, that's what I ended up finding as well, and it built and runs fine now. My machine is old enough that I had the VAAPI option in 17 disabled because if I remember correctly it produced green artifacts at the bottom of the screen during playback.
The only other problem I had was when I went to build the binary addons. Making them all didn't work whatsoever, but then when I tried to build the only one I needed, ie: pvr.nextpvr, it built and installed fine, but I couldn't enable it. Checking the KODI log, it was complaining it couldn't find the pvr.nextpvr.so.3.3.5 file. The installer had placed it in the $CMAKE_INSTALL_PREFIX/lib/kodi/addons/pvr.nextpvr directory, but I noticed that nearly everything else was installed under lib64, so I copied the directory structure there and then it worked fine.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.