sy6sy2 / xbmc

Kodi is an award-winning free and open source home theater/media center software and entertainment hub for digital media. With its beautiful interface and powerful skinning engine, it's available for Android, BSD, Linux, macOS, iOS and Windows.
https://kodi.tv/
Other
6 stars 1 forks source link

Binary add-ons build errors #27

Open sy6sy2 opened 5 years ago

sy6sy2 commented 5 years ago

An issue to list each binary addon that fail to build

Built successfully:

phunkyfish commented 5 years ago

I have built all the pvr addons without issue.

phunkyfish commented 5 years ago

@Fuzzard I don’t understand why you have PVR build issues.

sy6sy2 commented 5 years ago

Question: How to build binary addons from scratch without removing dependencies? The make -C tools/depends/target/binary-addons clean do not seems to clear everything for me.

fuzzard commented 5 years ago

https://paste.ubuntu.com/p/yjR68bDVhx/

Its because they arent being built for arm64 phunky. check the PR i put in for binary addons. in the 2 cmkae includes, they werent udpated to accomodate tvos. Kambala had it half done in his branch, but none of it was done in Sylvains.

Try that PR (https://github.com/SylvainCecchetto/xbmc/pull/28) and then build. If you could then do a full kodi build and deploy to an ATV, im hoping you will then have pvr.demo available.

Need to confirm if im on the right track before i worry about the build failures. In theory the sucessful ones should be brought into the build and show as available on the real hardware, but i may have missed a cmake file somewhere else.

The build failures may just be due to an incorrect cflag or something, so i wouldnt worry too much yet. Can compare against other types that use arm64 architecture if we can confirm addons are being included with current changes. But priority is getting something as simple as pvr.demo to be built and available.

phunkyfish commented 5 years ago

Thanks!

@SylvainCecchetto you can run this command to clear the binary addons for a fresh run:

rm tools/depends/target/binary-addons/.installed-appletvos*

Then just run the binary addons build again.

fuzzard commented 5 years ago

have added a clean/distclean PR #31 to the binary-addons make file. works ok in my testing, give it a try

sy6sy2 commented 5 years ago

Merged. Thank you!

sy6sy2 commented 5 years ago

I tried from scratch and updated the description checkboxes according to what I get in $KODI/addons after make -C tools/depends/target/binary-addons.

Failed here:

Scanning dependencies of target visualization.spectrum
[ 60%] Creating directories for 'visualization.spectrum'
[ 60%] No download step for 'visualization.spectrum'
[ 60%] No patch step for 'visualization.spectrum'
[ 60%] No update step for 'visualization.spectrum'
[ 60%] Performing configure step for 'visualization.spectrum'
-- The C compiler identification is AppleClang 10.0.1.10010046
-- The CXX compiler identification is AppleClang 10.0.1.10010046
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Checking to see if CXX compiler accepts flag -flto
-- Checking to see if CXX compiler accepts flag -flto - yes
-- Found PkgConfig: /Users/Shared/xbmc-depends/x86_64-darwin18.5.0-native/bin/pkg-config (found version "0.28")
-- Checking for module 'glesv2'
--   No package 'glesv2' found
-- Could NOT find OpenGLES2 (missing: OPENGLES2_egl_LIBRARY)
CMake Error at CMakeLists.txt:70 (message):
  No rendering API found.  Bailing

-- Configuring incomplete, errors occurred!
See also "/Users/sylvain/Kodi_dev/kodi/tools/depends/target/binary-addons/appletvos12.2_arm64-target-debug/visualization.spectrum-prefix/src/visualization.spectrum-build/CMakeFiles/CMakeOutput.log".
make[4]: *** [visualization.spectrum-prefix/src/visualization.spectrum-stamp/visualization.spectrum-configure] Error 1
make[3]: *** [CMakeFiles/visualization.spectrum.dir/all] Error 2
make[2]: *** [CMakeFiles/visualization.spectrum.dir/rule] Error 2
make[1]: *** [visualization.spectrum] Error 2
touch .installed-appletvos12.2_arm64-target-debug

(Maybe it's better to wait until the modifications of https://github.com/SylvainCecchetto/xbmc/issues/19#issuecomment-483669519 will be done before trying again?)

phunkyfish commented 5 years ago

Yes, I created to PR on an addon to solve this. Depending on the outcome of the Rechi/Memphiz review on os platform changes here may not be required.

phunkyfish commented 5 years ago

Some addons use os platform = ios

fuzzard commented 5 years ago

If we revert back to the single ios platform, there is a simple solution to that.

https://github.com/fuzzard/xbmc/commit/7c036b5027732ddc152f514f7e93364a69abce28

Check out the changes in /tools/depends/target/Toolchain.cmake.in for how it could be handled.

sy6sy2 commented 5 years ago

With ATV-PR-depends branch I was able to build all binary addons with make -C tools/depends/target/binary-addons command without any error.

But don't know if it is normal but some binary add-on are missing from the $KODI/addons directory like IPTVSimple.

phunkyfish commented 5 years ago

I don’t see iptvsimple either. I think once the cmake changes are made all the binary addons won’t build again 😉

fuzzard commented 5 years ago

kodi-platform - https://github.com/xbmc/kodi-platform/pull/29

the above fixes vfs.rar vfs.nfs pvr.zattoo pvr.wmc pvr.vuplus pvr.vdr.vnsi pvr.teleboy pvr.sledovanitv.cz pvr.pctv pvr.octonet pvr.nextpvr pvr.mediaportal.tvserver pvr.iptvsimple pvr.hts pvr.hdhomerun pvr.dvbviewer pvr.dvblink pvr.argustv

visualisation.spectrum - https://github.com/xbmc/visualization.spectrum/pull/26 game.libretro.mrboom - https://github.com/kodi-game/game.libretro.mrboom/pull/7 game.libretro.2048 - https://github.com/kodi-game/game.libretro.2048/pull/9

Still outstanding

these 3 are all find openssl failures from cmake. At a guess right now, the most likely fix would be to create a findOpenSSL.cmake file to hint towards sdk build root.

phunkyfish commented 5 years ago

And this one:

visualisation.waveform - https://github.com/xbmc/visualization.waveform/pull/20

With Open ssl it's built as part of kodi, why would the hint not be needed on other platforms?

fuzzard commented 5 years ago

no idea, havent had time to look into it yet. All i know is it fails to find openssl

fuzzard commented 5 years ago

Also required

https://github.com/xbmc/repo-binary-addons/pull/123 https://github.com/xbmc/repo-binary-addons/pull/124

phunkyfish commented 5 years ago

I added a feature to a pvr addon and ran into the same issue, I could get it to build locally adding some symlinks but never got it to build on jenkins. Would be interested in the solution.

fuzzard commented 5 years ago

https://github.com/xbmc/vfs.libarchive/pull/29 https://github.com/xbmc/vfs.sftp/pull/27

The final issue with the vfs plugins is kodi has a mirror of supposedly openssl 1.1.1, however this mirror does not have a commit https://github.com/openssl/openssl/commit/ca811248d838058c13236a6c3b688e0ac98c02c8 that is in the openssl 1.1.1 stable branch

This commit fixes the no fork error in apps/ocsp.c file

apps/ocsp.c:947:23: error: 'fork' is unavailable: not available on tvOS switch(fpid = fork()) { ^ ideally we want team kodi to update that mirror to a version that incorporates the current openssl 1.1.1-stable branch

phunkyfish commented 5 years ago

Nice find.

fuzzard commented 5 years ago

One final thing for vfs.sftp

Need to patch fork() and execv() out. Will need to PR the below to https://github.com/xbmc/vfs.sftp/tree/Leia/depends/common/libssh as a patch

--- socket.c    2019-05-25 20:27:38.000000000 +1000
+++ socket_tvos.c   2019-05-25 20:23:05.000000000 +1000
@@ -887,7 +887,7 @@
   dup2(out,2);
   close(in);
   close(out);
-  execv(args[0],(char * const *)args);
+//  execv(args[0],(char * const *)args);
   exit(1);
 }

@@ -920,7 +920,7 @@
   }

   SSH_LOG(SSH_LOG_PROTOCOL,"Executing proxycommand '%s'",command);
-  pid = fork();
+  pid = 1;
   if(pid == 0){
     ssh_execute_command(command,out_pipe[0],in_pipe[1]);
   }

Have a fully built binary addon tree after all of the above.

phunkyfish commented 5 years ago

Should that not be in the Matrix branch instead of Leia, or maybe it’s master for Matrix.

fuzzard commented 5 years ago

It's not a pr so doesn't matter right now

fuzzard commented 5 years ago

vfs.libarchive also needs some more changes. again around the fork issue. Wondering if it may be best to add a platform define for -DHAVE_FORK=0, as both openssl, libarchive look for that define natively to skip codepaths with fork usage.