[SOLVED] XBMC 9.11 on Slackware64 13.1 compilation problems
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.
XBMC 9.11 on Slackware64 13.1 compilation problems
Hi!
I am trying to install XBMC 9.11 on my Slackware64 13.1 machine and experience some major problems. I am trying to install from the Slackbuild script.
I installed absolutely all pre-requisites and all packages necessary to run XBMC. All of them compiled & installed without a single glitch. All from Slackbuilds.org
Now to the XBMC problem, I followed the instructions at the Slackbuild page that says:
Quote:
...a52dec (aka liba52) libass and python (all available
at slackbuilds.org or included in Slackware). Look inside the slackbuild for additional information to turn these options on.
So I went inside the xbmc.Slackbuild script and looked around to finally change a few things to benefit from all the installed options. In the section ENABLE_OPTS I modified as follows:
but after a while, the compilation ended up with (truncated to save space):
Code:
/usr/include/libavutil/common.h: In function 'int32_t av_clipl_int32(int64_t)':
/usr/include/libavutil/common.h:154: error: 'UINT64_C' was not declared in this scope
In file included from cores/VideoRenderers/LinuxRendererGL.h:10,
from cores/VideoRenderers/RenderManager.h:26,
from GUIWindowSettingsScreenCalibration.cpp:28:
cores/VideoRenderers/../ffmpeg/DllAvCodec.h: In member function 'virtual int DllAvCodec::avcodec_decode_video(AVCodecContext*, AVFrame*, int*, uint8_t*, int)':
cores/VideoRenderers/../ffmpeg/DllAvCodec.h:115: warning: 'int avcodec_decode_video(AVCodecContext*, AVFrame*, int*, const uint8_t*, int)' is deprecated (declared at /usr/include/libavcodec/avcodec.h:3452)
cores/VideoRenderers/../ffmpeg/DllAvCodec.h:115: warning: 'int avcodec_decode_video(AVCodecContext*, AVFrame*, int*, const uint8_t*, int)' is deprecated (declared at /usr/include/libavcodec/avcodec.h:3452)
cores/VideoRenderers/../ffmpeg/DllAvCodec.h: In member function 'virtual int DllAvCodec::avcodec_decode_audio2(AVCodecContext*, int16_t*, int*, uint8_t*, int)':
cores/VideoRenderers/../ffmpeg/DllAvCodec.h:116: warning: 'int avcodec_decode_audio2(AVCodecContext*, int16_t*, int*, const uint8_t*, int)' is deprecated (declared at /usr/include/libavcodec/avcodec.h:3390)
cores/VideoRenderers/../ffmpeg/DllAvCodec.h:116: warning: 'int avcodec_decode_audio2(AVCodecContext*, int16_t*, int*, const uint8_t*, int)' is deprecated (declared at /usr/include/libavcodec/avcodec.h:3390)
cores/VideoRenderers/../ffmpeg/DllAvCodec.h: In member function 'virtual int DllAvCodec::avcodec_decode_subtitle(AVCodecContext*, AVSubtitle*, int*, const uint8_t*, int)':
cores/VideoRenderers/../ffmpeg/DllAvCodec.h:117: warning: 'int avcodec_decode_subtitle(AVCodecContext*, AVSubtitle*, int*, const uint8_t*, int)' is deprecated (declared at /usr/include/libavcodec/avcodec.h:3500)
cores/VideoRenderers/../ffmpeg/DllAvCodec.h:117: warning: 'int avcodec_decode_subtitle(AVCodecContext*, AVSubtitle*, int*, const uint8_t*, int)' is deprecated (declared at /usr/include/libavcodec/avcodec.h:3500)
cores/VideoRenderers/../ffmpeg/DllAvCodec.h: In member function 'virtual int DllAvCodec::av_parser_parse(AVCodecParserContext*, AVCodecContext*, uint8_t**, int*, const uint8_t*, int, int64_t, int64_t)':
cores/VideoRenderers/../ffmpeg/DllAvCodec.h:126: warning: 'int av_parser_parse(AVCodecParserContext*, AVCodecContext*, uint8_t**, int*, const uint8_t*, int, int64_t, int64_t)' is deprecated (declared at /usr/include/libavcodec/avcodec.h:3753)
cores/VideoRenderers/../ffmpeg/DllAvCodec.h:126: warning: 'int av_parser_parse(AVCodecParserContext*, AVCodecContext*, uint8_t**, int*, const uint8_t*, int, int64_t, int64_t)' is deprecated (declared at /usr/include/libavcodec/avcodec.h:3753)
make[1]: *** [GUIWindowSettingsScreenCalibration.o] Error 1
make[1]: Leaving directory `/tmp/SBo/xbmc-9.11/xbmc'
make: *** [xbmc/xbmc.a] Error 2
bash-4.1#
Build with the internal ffmpeg, not external. ffmpeg constantly changes their api among other things, and many programs can have difficulties building against a newer ffmpeg with code updates.
--disable-external-ffmpeg
Xbmc 9.11 came out quite a while ago compared to recent ffmpeg releases.
#!/bin/sh
# Slackware build script for XBMC
# Copyright 2009-2010 Larry Hajali <larryhaja[at]gmail[dot]com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=xbmc
VERSION=${VERSION:-9.11}
ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC -march=native -mtune=native"
LIBDIRSUFFIX="64"
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
# Let's get rid of the lsb_release dependency.
sed -i 's|/usr/bin/lsb_release -d|/bin/cat /etc/slackware-version|' \
xbmc/utils/SystemInfo.cpp
# Fix a hardcoded python2.5 install path in the EventClients Makefile.
PYVER=$(python -c 'import sys; print sys.version[:3]')
sed -i "s|lib/python2.5|lib${LIBDIRSUFFIX}/python${PYVER}|g" \
tools/EventClients/Makefile
# Patch to use XBMC's jpegint.h because of a missing header file in Slackware.
# Fix lib64 compatibility.
patch -p1 < $CWD/patches/jpegint_h.patch
patch -p1 < $CWD/patches/xbmc-lib64.patch
# Fixes from upstream not included in stable release.
patch -p0 < $CWD/patches/fix-wrapper_c.patch
patch -p0 < $CWD/patches/xbmc-9.11-wavpack.patch
patch -Np1 --verbose < $CWD/patches/libpng14.patch
# Create configure scripts.
[ ! -x bootstrap ] && chmod +x bootstrap
./bootstrap
# XBMC doesn't use a consistent --libdir so we need to provide
# some missing includes.
EXTRA_INCLUDES="\
-I/usr/lib${LIBDIRSUFFIX}/dbus-1.0/include \
-I/usr/lib${LIBDIRSUFFIX}/glib-2.0/include"
# Here are some additional flags that can be manually added to configure
# so XBMC will use system libraries instead of shipped libraries.
# --enable-external-ffmpeg * to use system ffmpeg
# --enable-external-liba52 * to use system liba52 library
# comes with a52dec
# --enable-external-libdts * to use system DTS Coherent Acoustics decoder
# also known as libdca
# --enable-external-libmpeg2 * to use system mpeg-2 and mpeg-1 decoder
# --enable-external-libass * to use system subtitle renderer
# --enable-external-libraries * to enable all optional system libraries
CFLAGS="$SLKCFLAGS $EXTRA_INCLUDES" \
CXXFLAGS="$SLKCFLAGS $EXTRA_INCLUDES" \
./configure \
--prefix=/usr \
--enable-vdpau \
--enable-xrandr \
--enable-ccache \
--disable-debug \
--enable-gl \
--disable-pulse \
--enable-faac \
--enable-dvdcss \
--enable-mid \
--disable-avahi \
--enable-joystick \
--enable-goom \
--enable-external-liba52 \
--enable-external-libdts \
--enable-external-libmpeg2 \
--disable-external-libass \
--enable-external-libogg \
--enable-external-libwavpack \
--disable-external-ffmpeg \
--build=$ARCH-slackware-linux
make -j7
# Wii controller usage. Default is no.
if ! [ "${USE_WII:-no}" = "no" ]; then
make eventclients prefix=$PKG/usr installdir=/usr WII_EXTRA_OPTS="-DCWIID_OLD"
fi
make prefix=$PKG/usr install
# Fix executable permissions.
chmod 0755 $PKG/usr/bin/*
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
# Install manpages.
mkdir -p $PKG/usr/man/man1
install -m 0644 \
docs/manpages/{diskmounter,runXBMC,xbmc.bin,xbmc,xbmc-standalone,xbmc-send,setAlsaVolumes,installXBMC}.1 \
$PKG/usr/man/man1
if ! [ "${USE_WII:-no}" = "no" ]; then
install -m 0644 docs/manpages/{xbmc-j2meremote,xbmc-ps3remote,xbmc-wiiremote}.1 \
$PKG/usr/man/man1
fi
gzip -9 $PKG/usr/man/man?/*.?
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
copying.txt keymapping.txt LICENSE.GPL README.linux tools/EventClients/README.txt \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
rm -f $PKG/usr/share/xbmc/{README.linux,LICENSE.GPL,*.txt}
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz}
I noticed several discrepancies between your script and mine. I believe all minor stuff. I modified the options to be like yours and I commented the option lines:
and I got past the last error. Now it gives a new error:
Code:
./xbmc.SlackBuild: line 152: --build=x86_64-slackware-linux: command not found
Here's my script:
Code:
#!/bin/sh
# Slackware build script for XBMC
# Copyright 2009-2010 Larry Hajali <larryhaja[at]gmail[dot]com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=xbmc
VERSION=${VERSION:-9.11}
ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
#if [ -z "$ARCH" ]; then
# case "$( uname -m )" in
# i?86) ARCH=i486 ;;
# arm*) ARCH=arm ;;
# *) ARCH=$( uname -m ) ;;
# esac
#fi
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
# Let's get rid of the lsb_release dependency.
sed -i 's|/usr/bin/lsb_release -d|/bin/cat /etc/slackware-version|' \
xbmc/utils/SystemInfo.cpp
# Fix a hardcoded python2.5 install path in the EventClients Makefile.
PYVER=$(python -c 'import sys; print sys.version[:3]')
sed -i "s|lib/python2.5|lib${LIBDIRSUFFIX}/python${PYVER}|g" \
tools/EventClients/Makefile
# Patch to use XBMC's jpegint.h because of a missing header file in Slackware.
# Fix lib64 compatibility.
patch -p1 < $CWD/patches/jpegint_h.patch
patch -p1 < $CWD/patches/xbmc-lib64.patch
# Fixes from upstream not included in stable release.
patch -p0 < $CWD/patches/fix-wrapper_c.patch
patch -p0 < $CWD/patches/xbmc-9.11-wavpack.patch
patch -p1 < $CWD/patches/xbmc-9.11-libpng14.patch
patch -p1 < $CWD/patches/xbmc-9.11-use-cdio-system-headers-on-non-win32.patch
# Create configure scripts.
[ ! -x bootstrap ] && chmod +x bootstrap
./bootstrap
# XBMC doesn't use a consistent --libdir so we need to provide
# some missing includes.
EXTRA_INCLUDES="\
-I/usr/lib${LIBDIRSUFFIX}/dbus-1.0/include \
-I/usr/lib${LIBDIRSUFFIX}/glib-2.0/include \
-I/usr/include/SDL"
# Here are some additional flags that can be manually added to configure
# so XBMC will use system libraries instead of shipped libraries.
# --enable-external-ffmpeg * to use system ffmpeg
# --enable-external-liba52 * to use system liba52 library
# comes with a52dec
# --enable-external-libdts * to use system DTS Coherent Acoustics decoder
# also known as libdca
# --enable-external-libmpeg2 * to use system mpeg-2 and mpeg-1 decoder
# --enable-external-libass * to use system subtitle renderer
# --enable-external-python * to use system python
# --enable-external-libraries * to enable all optional system libraries
#ENABLE_OPTS="\
# --enable-external-libogg \
# --enable-external-libwavpack"
[ "${EXT_FFMPEG:-no}" == "yes" ] && ENABLE_OPTS="$ENABLE_OPTS --enable-external-ffmpeg" \
SLKCFLAGS="$SLKCFLAGS -D__STDC_CONSTANT_MACROS" # Workaround for ffmpeg 0.6+
[ "${EXT_A52DEC:-no}" == "yes" ] && ENABLE_OPTS="$ENABLE_OPTS --enable-external-liba52"
[ "${EXT_DTS:-no}" == "yes" ] && ENABLE_OPTS="$ENABLE_OPTS --enable-external-libdts"
[ "${EXT_MPEG2:-no}" == "yes" ] && ENABLE_OPTS="$ENABLE_OPTS --enable-external-libmpeg2"
[ "${EXT_ASS:-no}" == "yes" ] && ENABLE_OPTS="$ENABLE_OPTS --enable-external-libass"
[ "${EXT_PYTHON:-no}" == "yes" ] && ENABLE_OPTS="$ENABLE_OPTS --enable-external-python"
[ "${EXT_ALL:-no}" == "yes" ] && ENABLE_OPTS="--enable-external-libraries" \
SLKCFLAGS="$SLKCFLAGS -D__STDC_CONSTANT_MACROS" # Workaround for ffmpeg 0.6+
CFLAGS="$SLKCFLAGS $EXTRA_INCLUDES" \
CXXFLAGS="$SLKCFLAGS $EXTRA_INCLUDES" \
./configure \
--prefix=/usr \
--enable-vdpau \
--enable-xrandr \
--enable-ccache \
--disable-debug \
--enable-gl \
--enable-faac \
--enable-dvdcss \
--enable-mid \
--enable-avahi \
--enable-joystick \
--enable-goom \
--enable-external-liba52 \
--enable-external-libdts \
--enable-external-libmpeg2 \
--enable-external-libass \
--enable-external-libogg \
--enable-external-libwavpack \
--enable-external-ffmpeg \
# --enable-external-python \
# --enable-external-libraries \
--build=$ARCH-slackware-linux
make -j7
# Wii controller usage. Default is no.
if ! [ "${USE_WII:-no}" = "no" ]; then
make eventclients prefix=$PKG/usr installdir=/usr WII_EXTRA_OPTS="-DCWIID_OLD"
fi
make install install-livedatas prefix=$PKG/usr
# Fix executable permissions.
chmod 0755 $PKG/usr/bin/*
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
# Install manpages.
mkdir -p $PKG/usr/man/man1
install -m 0644 \
docs/manpages/{diskmounter,runXBMC,xbmc.bin,xbmc,xbmc-standalone,xbmc-send,setAlsaVolumes,installXBMC}.1 \
$PKG/usr/man/man1
if ! [ "${USE_WII:-no}" = "no" ]; then
install -m 0644 docs/manpages/{xbmc-j2meremote,xbmc-ps3remote,xbmc-wiiremote}.1 \
$PKG/usr/man/man1
fi
gzip -9 $PKG/usr/man/man?/*.?
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
copying.txt keymapping.txt LICENSE.GPL README.linux tools/EventClients/README.txt \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
rm -f $PKG/usr/share/xbmc/{README.linux,LICENSE.GPL,*.txt}
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
and I got past the last error. Now it gives a new error:
Remove these lines from the configure section this is why you get that error. It's reading the --build= as a separate command instead of being part of the configure options
There's nothing wrong with the one from SlackBuilds.org, you just need to correctly enable/disable external libraries. Just built it myself without external ffmpeg, and everything works fine.
Last edited by disturbed1; 11-23-2010 at 07:54 PM.
We use XBMC on our HTPCs in combination with MythTV. I like XBMC's Movie and Music interface better along with it's built in UPnP support. If only they had better integration with MythTV for TV playback. A new release of XBMC should be coming soon with better MythTV support, right now it works when you manually enter myth://$BACKEND_IP as a source. Commercial skip doesn't work, and the recorded show listing is a little awkward.
In term of installation, I marked this thread as solved because it is installed and running..
Now I will have to solve my bugs and learn how to use XBMC...
One thing I am looking to solve right away is a playback problem with HD content (namely I tried with avatar ripped as mkv). I might be opening a new thread for this one... I immediately noticed three major problems: light flickering, colors are all over the place and some refresh problems, like horizontal sharp bars...rather difficult to explain.
XBMC also creates a crash log in my home folder. It seems that fglrx is the root cause...
We use all Nvidia hardware with VDPAU playback. Allows even a cheap Celeron e1400 (2.0 dual core) to playback 1080P h264 streams without using more than 10% CPU. Plus VDPAU has hardware IVTC, deinterlacing, color correction, noise filtering, and resizing - which makes our 1080i TV shows look beautiful
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.