Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

CentOS7 で KODI をビルドしてみた

CentOS って KODI のパッケージが存在しないみたいだね.ということで,試しにビルドしてみましたので,そのメモを.

使ったのは CentOS7 で GNOME と開発環境がインストールされている環境.

$ cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)

$ uname -a
Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

ビルド方法は基本的に https://kodi.wiki/view/HOW-TO:Compile_Kodi_on_Fedora/Red_Hat/CentOS で書いてある感じで大丈夫ですね.ただし,CentOS7 用に下記は若干書き換えてあるところもあります.

最初に rpmfusion 用の環境設定と必要なパッケージのインストール.

sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm

sudo yum -y install \
afpfs-ng-devel alsa-lib-devel autoconf autogen-libopts \
automake avahi-devel bluez-libs-devel boost-atomic boost-chrono \
boost-context boost-devel boost-filesystem boost-graph boost-iostreams \
boost-locale boost-math boost-program-options boost-python boost-random \
boost-regex boost-serialization boost-signals boost-test boost-timer \
boost-wave bzip2-devel cairo-devel cmake cpp dbus-devel enca-devel \
expat-devel faac-devel faad2-devel faad2-libs flac-devel \
fontconfig-devel freetype-devel fribidi-devel gcc gcc-c++ \
gettext-common-devel gettext-devel git glew-devel glib2-devel \
glibc-devel glibc-headers gl-manpages gnutls-c++ gnutls-devel gperf \
harfbuzz-devel jasper-devel java kernel-headers keyutils-libs-devel \
krb5-devel lame-devel lame-libs libass-devel libbluray-devel \
libcap-devel libcdio-devel libcom_err-devel libcrystalhd-devel libcurl-devel \
libdca-devel libdrm-devel libgcrypt-devel libGLEW libGLEWmx \
libgpg-error-devel libICE-devel libicu-devel libjpeg-turbo-devel \
libmad-devel libmicrohttpd-devel libmikmod libmms-devel \
libmodplug-devel libmp4v2 libmpc libmpeg2-devel libogg-devel \
libplist-devel libpng-devel librtmp-devel \
libsamplerate-devel libselinux-devel libsepol-devel libsmbclient-devel \
libSM-devel libssh-devel libstdc++-devel libtasn1-devel \
libtiff-devel libtool libusb-devel libusbx-devel libva-devel \
libvdpau-devel libverto-devel libvorbis-devel libX11-devel libXau-devel \
libxcb-devel libXdamage-devel libXext-devel libXfixes-devel libXft-devel \
libXi-devel libXinerama-devel libxml2-devel libXmu-devel libXrandr-devel \
libXrender-devel libXScrnSaver-devel libXt-devel libXtst-devel \
libXxf86vm-devel lzma-sdk457 lzo-devel lzo-minilzo m4 mariadb \
mariadb-devel mariadb-libs mesa-libEGL-devel mesa-libGL-devel \
mesa-libGLES-devel mesa-libGLU-devel openssl-devel \
p11-kit-devel pango-devel patch pcre-devel perl-autodie perl-B-Lint \
perl-Business-ISBN perl-Business-ISBN-Data perl-CGI perl-Class-ISA \
perl-Compress-Raw-Bzip2 perl-Compress-Raw-Zlib perl-CPAN perl-Data-Dumper \
perl-devel perl-Digest perl-Digest-MD5 perl-Digest-SHA perl-Encode-Locale \
perl-Error perl-ExtUtils-Install perl-ExtUtils-MakeMaker \
perl-ExtUtils-Manifest perl-ExtUtils-ParseXS perl-FCGI perl-File-CheckTree \
perl-File-Listing perl-Git perl-HTML-Parser perl-HTML-Tagset \
perl-HTTP-Cookies perl-HTTP-Daemon perl-HTTP-Date perl-HTTP-Message \
perl-HTTP-Negotiate perl-HTTP-Tiny perl-IO-Compress perl-IO-HTML \
perl-IO-Socket-IP perl-IO-Socket-SSL perl-libwww-perl perl-Locale-Codes \
perl-LWP-MediaTypes perl-Module-Pluggable perl-Net-HTTP perl-Net-LibIDN \
perl-Net-SSLeay perl-parent perl-Pod-Checker perl-Pod-LaTeX perl-podlators \
perl-Pod-Parser perl-Pod-Perldoc perl-Pod-Plainer perl-Pod-Usage \
perl-Sys-Syslog perl-TermReadKey perl-Test-Harness perl-Test-Simple \
perl-Text-ParseWords perl-Text-Soundex perl-Text-Unidecode perl-Thread-Queue \
perl-TimeDate perl-URI perl-WWW-RobotRules perl-XML-LibXML \
perl-XML-NamespaceSupport perl-XML-SAX perl-XML-SAX-Base physfs pixman-devel \
python-devel redhat-lsb redhat-lsb-core redhat-lsb-cxx redhat-lsb-desktop \
redhat-lsb-languages redhat-lsb-printing redhat-lsb-submod-multimedia \
redhat-lsb-submod-security SDL2-devel SDL2_image-devel \
SDL-devel SDL_gfx-devel SDL_image-devel SDL_mixer-devel SDL_net-devel \
SDL_Pango-devel SDL_sound-devel SDL-static SDL_ttf-devel \
spax sqlite-devel swig systemtap-sdt-devel taglib-devel \
tinyxml-devel tre-devel vala wavpack-devel xorg-x11-proto-devel \
xz-devel yajl-devel zlib-devel \
libxslt libxslt-devel yasm yasm-devel trousers trousers-devel doxygen

ついでに lcms2 も.

sudo yum install lcms2-devel

これは必要なのかな?

sudo sed --in-place=.BAK 's#<\(afp_protocol\|libafpclient\).h>#<afpfs-ng/\1.h>#' /usr/include/afpfs-ng/afp.h

次,libnfs.

wget https://github.com/sahlberg/libnfs/archive/libnfs-2.0.0.tar.gz
tar xvf libnfs-2.0.0.tar.gz
cd libnfs-libnfs-2.0.0
./bootstrap
./configure
make
sudo make install
su -c 'echo /usr/local/lib > /etc/ld.so.conf.d/local-libs.conf'
sudo ldconfig
cd ..

rpm でインストールされる libcec が古過ぎるので自前でインストール.

wget https://github.com/Pulse-Eight/libcec/archive/libcec-4.0.2.tar.gz
tar xvf libcec-4.0.2.tar.gz
cd libcec-libcec-4.0.2
cmake .
make
sudo make install
cd ..

taglib も rpm は古過ぎるので.

https://github.com/taglib/taglib/archive/v1.11.1.tar.gz
tar xvf v1.11.1.tar.gz
cd taglib-1.11.1
cmake .
make
sudo make install
cd ..

で,KODI 本体のビルド.

wget https://github.com/xbmc/xbmc/archive/17.6-Krypton.tar.gz
tar xvf 17.6-Krypton.tar.gz
cd xbmc-17.6-Krypton

make -C tools/depends/native/JsonSchemaBuilder/
sudo cp tools/depends/native/JsonSchemaBuilder/bin/JsonSchemaBuilder /usr/local/bin
sudo chmod 775 /usr/local/bin/JsonSchemaBuilder

sudo yum install -y libuuid-devel
PREFIX="/usr/local"
sudo make -C ./tools/depends/target/crossguid PREFIX=${PREFIX}
export PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig"
export CFLAGS="$CFLAGS -I${PREFIX}/include"
export CXXFLAGS="$CFLAGS -I${PREFIX}/include"
export LDFLAGS="-L${PREFIX}/lib -lcrossguid -luuid"

./bootstrap
./configure --prefix=/opt/kodi

この状態で下記のような設定になってました.No の箇所をサポートさせたい場合には適宜必要なライブラリを追加する感じで.

------------------------
Kodi Configuration:
------------------------
Kodi Version: 17.6
git Rev.: Unknown
Debugging: Yes
Profiling: No
Optimization: Yes
SWIG Available: Yes
JRE Available: Yes
Doxygen Available: Yes
Crosscomp.: No
target ARCH:
target CPU:
OpenGL: Yes
ALSA: Yes
DBUS: Yes
VDPAU: Yes
VAAPI: Yes
OpenMax: No
X11: Yes
Bluray: No
XSLT scrapers: Yes
TexturePacker:No
MID Support: No
ccache: No
ALSA Support: Yes
PulseAudio: No
Google Test Framework Configured: Yes
Avahi: Yes
mDNSEmbedded: No
Non-free: Yes
MySQL: Yes
Webserver: Yes
libssh support: Yes
libsmbclient support: Yes
libnfs client support:Yes
AirPlay support: Yes
AirTunes support: No
UPnP support: Yes
Optical drive: Yes
libudev support: Yes
libusb support: No
libcec support: Yes
lcms2 support: Yes
libbluetooth support: Yes
libcap support: Yes
additional players: No
additional codecs: No
prefix: /opt/kodi
------------------------

ビルド&インストール

make
sudo make install

VMware 上の CentOS で上記の手順でビルドした後,/opt/kodi/bin/kodi を実行して,軽く動作確認したところ普通に動画再生は出来てる感じ.何かしら不具合があれば適宜インストールされているライブラリ等を調整する感じでお願いします.

以上,参考まで.