Open ilikenwf opened 2 years ago
I also had to adjust the version in addon.xml...but I'm running the git version of Nexus.
The issue here is that your Kodi source needs to be updated. You have pretty much undone a recent merge which had API changes (kodi:: -> kodi::addon::, was one of those).
I imagine that Arch will start to use the latest soon enough which just means undoing your patch.
I'm running the latest git version of Kodi itself - I may still have the -dev package that's older or something?
I'm running the latest git version of Kodi itself - I may still have the -dev package that's older or something?
If you were running the latest git version of kodi then the kodi::addon
namespace would have worked.
Note that the master branch of Kodi applies to the Nexus branch of the binary addons.
https://gist.github.com/daiaji/a21877de163585394f58902093ab3631
I also encountered a compilation error.
Please use a pastesite link instead of adding logs straight into the issue.
What changes did you need to make? Maybe submit them as a PR and I can review them.
After upgrading the version of binutils to 2.41, an error occurred:
src/libavcodec/x86/mathops.h:125: Error: operand type mismatch for `shr'
src/libavcodec/x86/mathops.h:125: Error: operand type mismatch for `shr'
src/libavcodec/x86/mathops.h:125: Error: operand type mismatch for `shr'
src/libavcodec/x86/mathops.h:125: Error: operand type mismatch for `shr'
I suspect that this patch needs to be applied to the FFmpeg used by inputstream.ffmpegdirect. However, I don't know how to do this, as the FindFFMPEG.cmake used by inputstream.ffmpegdirect is different from the FindFFMPEG.cmake used by xbmc itself.
It appears that whether it's xbmc itself or inputstream.ffmpegdirect, a patch for FFmpeg is required after the version of binutils exceeds 2.41. I believe this patch should be integrated into the repositories of both xbmc and inputstream.ffmpegdirect.
Frankly speaking, I'm utterly at a loss about what to do now. I've tried patching XBMC and altering FFmpeg, and redirected my download links locally, but damn it, CMake keeps downloading from https://github.com/FFmpeg/FFmpeg/archive/n4.4.tar.gz.
There should be arch packages to build this. Are there not?
For Linux platforms your system ffmpeg should be used. I.e. you should not need to build it.
https://github.com/daiaji/inputstream.ffmpegdirect/tree/fix The repair is completed, yet when compiling the AUR package, it appears that the patch, 04-Fixes-assembling-w-binutil-as-2.41.patch, isn't being applied for some unknown reason.
There should be arch packages to build this. Are there not?
For Linux platforms your system ffmpeg should be used. I.e. you should not need to build it.
Even with FFmpeg installed, the compilation script will still download and compile FFmpeg when compiling inputstream.ffmpegdirect.
But that’s my point, if the build for arch Linux was correctly configured it should use the system ffmpeg. As it’s not, something is not being set up correctly.
I’m afraid I’m not a Linux user so I don’t know what that might be.
ffmpeg -version
ffmpeg version n6.0 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 13.2.1 (GCC) 20230801
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-version3 --enable-vulkan
libavutil 58. 2.100 / 58. 2.100
libavcodec 60. 3.100 / 60. 3.100
libavformat 60. 3.100 / 60. 3.100
libavdevice 60. 1.100 / 60. 1.100
libavfilter 9. 3.100 / 9. 3.100
libswscale 7. 1.100 / 7. 1.100
libswresample 4. 10.100 / 4. 10.100
libpostproc 57. 1.100 / 57. 1.100
It seems that specifying the path of FFmpeg doesn't make much of a difference either. https://gist.github.com/daiaji/29d7319785eb52773d128d8150007e18
The path in pkgbuild is for ffmpeg 4.4. Why is it not 6.0?
Can I use 6.0?
usr/lib/
usr/lib/libavcodec.so
usr/lib/libavcodec.so.60
usr/lib/libavcodec.so.60.3.100
usr/lib/libavdevice.so
usr/lib/libavdevice.so.60
usr/lib/libavdevice.so.60.1.100
usr/lib/libavfilter.so
usr/lib/libavfilter.so.9
usr/lib/libavfilter.so.9.3.100
usr/lib/libavformat.so
usr/lib/libavformat.so.60
usr/lib/libavformat.so.60.3.100
usr/lib/libavutil.so
usr/lib/libavutil.so.58
usr/lib/libavutil.so.58.2.100
usr/lib/libpostproc.so
usr/lib/libpostproc.so.57
usr/lib/libpostproc.so.57.1.100
usr/lib/libswresample.so
usr/lib/libswresample.so.4
usr/lib/libswresample.so.4.10.100
usr/lib/libswscale.so
usr/lib/libswscale.so.7
usr/lib/libswscale.so.7.1.100
Ah, sorry. I see you are building Nexus and Omega. If arch is bleeding edge maybe try bleeding edge kodi 😉
Under what circumstances would the source code under https://github.com/xbmc/repo-binary-addons be compiled? This situation renders my modifications ineffective.
It depends how you are building the add-on. You can pass a path to a local clone of the repo. But if you build as as part of the xbmc build it will always download from that repo.
pkgname=kodi-addon-inputstream-ffmpegdirect
pkgver=20.5.0
pkgrel=1
pkgdesc="Inputstream ffmpegdirect kodi plugin"
_koditarget=Nexus
_gitname=inputstream.ffmpegdirect
_kodiver=20.0
mkdir -p "${_gitname}-${pkgver}-${_koditarget}/build"
cd "${_gitname}-${pkgver}-${_koditarget}/build"
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=/usr/lib/kodi \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=1 \
-DADDONS_TO_BUILD=${_gitname} \
-DADDONS_SRC_PREFIX=../.. \
../../xbmc-${_kodiver}-${_koditarget}/cmake/addons
make
}
The build command I used, for some reason, did not use my own modified code during the build.
But this is building kodi not building the addon itself. If you want to build using a local source from the addon you must use what’s in in the README:
Linux
git clone --branch master https://github.com/xbmc/xbmc.git
git clone https://github.com/xbmc/inputstream.ffmpegdirect.git
cd inputstream.ffmpegdirect && mkdir build && cd build
cmake -DADDONS_TO_BUILD=inputstream.ffmpegdirect -DADDON_SRC_PREFIX=../.. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../../xbmc/build/addons -DPACKAGE_ZIP=1 ../../xbmc/cmake/addons
make
The addon files will be placed in
../../xbmc/build/addons
so if you build Kodi from source and run itdirectly the addon will be available as a system addon.
It seems like the commands don't have any noticeable differences.
It seems that BUILD_SHARED_LIBS is necessary.
I just downgrade binutils, build, then you can update binutils again.
I had to roll a couple files back and adjust as below, not sure if this matters, as Arch uses bleeding edge packages sometimes...