summaryrefslogtreecommitdiffstats
path: root/multimedia/kodi/kodi.SlackBuild
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/kodi/kodi.SlackBuild')
-rw-r--r--multimedia/kodi/kodi.SlackBuild198
1 files changed, 115 insertions, 83 deletions
diff --git a/multimedia/kodi/kodi.SlackBuild b/multimedia/kodi/kodi.SlackBuild
index 33ff6e8af9..32e44e3afa 100644
--- a/multimedia/kodi/kodi.SlackBuild
+++ b/multimedia/kodi/kodi.SlackBuild
@@ -1,8 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for kodi
# Copyright 2009-2018 Larry Hajali <larryhaja[at]gmail[dot]com>
+# Copyright 2022-2024 Jeremy Hansen <jebrhansen+SBo@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,13 +23,25 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=kodi
SRCNAM=xbmc
-CODNAM=Krypton
-VERSION=${VERSION:-17.6}
-FFMPEGVER=${FFMPEGVER:-3.1.11}
+CODNAM=Omega
+VERSION=${VERSION:-21.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+# Versions used below
+crossguidVER=${crossguiVER:-ca1bf4b810e2d188d04cb6286f957008ee1b7681}
+libdvdcssVER=${libdvdcssVER:-1.4.3-Next-Nexus-Alpha2-2}
+libdvdnavVER=${libdvdnavVER:-6.1.1-Next-Nexus-Alpha2-2}
+libdvdreadVER=${libdvdreadVER:-6.1.3-Next-Nexus-Alpha2-2}
+groovyVER=${groovyVER:-4.0.16}
+comLangVER=${comLangVER:-3.14.0}
+comTextVER=${comTextVER:-1.11.0}
+ffmpegVER=${ffmpegVER:-6.0.1}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -38,23 +51,23 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -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
@@ -62,12 +75,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $SRCNAM-$VERSION-$CODNAM
+rm -rf $SRCNAM-$VERSION-$CODNAM $PRGNAM-build
tar xvf $CWD/$SRCNAM-$VERSION-$CODNAM.tar.gz
cd $SRCNAM-$VERSION-$CODNAM
-# Don't have the Makefile download ffmpeg during install.
-ln -s $CWD/FFmpeg-${FFMPEGVER}-${CODNAM}.tar.gz \
- tools/depends/target/ffmpeg/ffmpeg-${FFMPEGVER}-${CODNAM}-17.5.tar.gz
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -75,93 +85,115 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# No need to show Git: "Version" in a release build.
-sed -i '/Git:/s|.*| return GetVersionShort();|' $SRCNAM/utils/SystemInfo.cpp
-
-# Patch for Samba 4.0.
-patch -p1 < $CWD/patches/xbmc-Krypton-samba-4.0.patch
-
-# Fix static linking for Texturepacker. Thanks to Gentoo.
-# Issue: http://forum.kodi.tv/showthread.php?tid=220407
-patch -p0 < $CWD/patches/kodi-texturepacker.patch
-
-# The version of ffmpeg on SBo is too old to compile kodi.
-# Optional ffmpeg is still available but not turned on by
-# default.
-if [ "${FFMPEG:-no}" == "yes" ]; then
- OPT_DEPS="--with-ffmpeg=shared"
+# Autodetection of "optional" dependencies sucks. It does not work and
+# compilation will fail on each of these if not explicitly disabled.
+# Figured I'd implement my own autodetection instead of requiring
+# passing a bunch of annoying flags :)
+if pkg-config --exists avahi-core ; then AVAHI=ON; else AVAHI=OFF; fi
+if pkg-config --exists cwiid ; then CWIID=ON; else CWIID=OFF; fi
+if pkg-config --exists dav1d ; then DAV1D=ON; else DAV1D=OFF; fi
+if pkg-config --exists libmicrohttpd ; then WEBSERVER=ON; else WEBSERVER=OFF; fi
+if pkg-config --exists libcec ; then CEC=ON; else CEC=OFF; fi
+if pkg-config --exists libnfs ; then NFS=ON; else NFS=OFF; fi
+if pkg-config --exists lirc ; then LIRC=ON; else LIRC=OFF; fi
+if pkg-config --exists libudfread ; then UDFREAD=ON; else UDFREAD=OFF; fi
+if [ -f /usr/bin/shairplay ] ; then AIRPLAY=ON; else AIRPLAY=OFF; fi
+
+# Adding early support for wayland. Needs libraries/waylandpp from SBo.
+PLATFORM="x11 gbm"
+if pkg-config --exists wayland-client++; then PLATFORM="$PLATFORM wayland"; fi
+
+mkdir -p $TMP/$PRGNAM-build
+cd $TMP/$PRGNAM-build
+
+# 15.0's ffmpeg is not supported in Omega, you need at least ffmpeg 6.0
+# Default to using the internal version, but allow switching to external
+# for -current users or people who upgrade their stock ffmpeg.
+# Pass FFMPEG=external to enable external support.
+if [ "${FFMPEG}" == "external" ]; then
+ FFMPEG="OFF"
+ FFMPEGURL=""
else
- OPT_DEPS=""
+ FFMPEG="ON"
+ FFMPEGURL="-DFFMPEG_URL=$CWD/ffmpeg-$ffmpegVER.tar.gz"
fi
-# Build webserver. Requires libmicrohttpd.
-if [ "${WEBSERVER:-yes}" == "yes" ]; then
- OPT_DEPS="$OPT_DEPS --enable-webserver"
-else
- OPT_DEPS="$OPT_DEPS --disable-webserver"
-fi
-
-export PATH="$PATH:$PWD/tools/depends/native/JsonSchemaBuilder/bin"
-
-./bootstrap
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --disable-silent-rules \
- --enable-static=no \
- --disable-debug \
- --enable-gl \
- --enable-mid \
- --enable-alsa \
- --enable-texturepacker \
- --enable-pulse \
- $OPT_DEPS \
- --build=$ARCH-slackware-linux
-
-make VERBOSE=1
-
-# Wii controller usage. Default is no.
-if ! [ "${WII:-no}" = "no" ]; then
- make eventclients DESTDIR=$PKG WII_EXTRA_OPTS="-DCWIID_OLD"
- find $PKG/usr/lib${LIBDIRSUFFIX}/python* -iname "*\.py" -exec chmod 0644 '{}' \;
- # Create byte-compiled python files.
- python -m compileall $PKG/usr/lib${LIBDIRSUFFIX}/python*/site-packages/$PRGNAM 2>/dev/null
-fi
-
-make install DESTDIR=$PKG
-python -m compileall $PKG/usr/share/$PRGNAM/addons/service.xbmc.versioncheck
-
-install -m 0755 tools/TexturePacker/TexturePacker $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM
+# There doesn't seem to be a way to specify the url of these files
+# (eg -DGROOVY_URL didn't work for the first one). But if you place them
+# in the expected location, it won't try and download them.
+mkdir -p build/download
+cp -a $CWD/apache-groovy-binary-$groovyVER.zip \
+ $CWD/commons-lang3-$comLangVER-bin.tar.gz \
+ $CWD/commons-text-$comTextVER-bin.tar.gz \
+ build/download
+
+# Reasons for internal programs
+# (so I can remember in the future why we're using them)
+
+# Internal crossguid is recommended by upstream
+# Internal libdvd{css,nav,read} are required by kodi due to patches
+# Internal ffmpeg since 15.0's is too old
+
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_DOCDIR=/usr/doc/$PRGNAM-$VERSION \
+ -DAPP_RENDER_SYSTEM=gl \
+ -DCORE_PLATFORM_NAME="$PLATFORM" \
+ -DENABLE_INTERNAL_CROSSGUID=ON \
+ -DENABLE_INTERNAL_FFMPEG=$FFMPEG \
+ -DENABLE_AIRTUNES=$AIRPLAY \
+ -DENABLE_AVAHI=$AVAHI \
+ -DENABLE_CEC=$CEC \
+ -DENABLE_DAV1D=$DAV1D \
+ -DENABLE_EVENTCLIENTS=$CWIID \
+ -DENABLE_LIRCCLIENT=$LIRC \
+ -DENABLE_MICROHTTPD=$WEBSERVER \
+ -DENABLE_NFS=$NFS \
+ -DENABLE_UDFREAD=$UDFREAD \
+ -DCROSSGUID_URL=$CWD/crossguid-$crossguidVER.tar.gz \
+ -Dlibdvdcss_URL=$CWD/libdvdcss-$libdvdcssVER.tar.gz \
+ -Dlibdvdnav_URL=$CWD/libdvdnav-$libdvdnavVER.tar.gz \
+ -Dlibdvdread_URL=$CWD/libdvdread-$libdvdreadVER.tar.gz \
+ $FFMPEGURL \
+ -DCMAKE_BUILD_TYPE=Release ../$SRCNAM-$VERSION-$CODNAM
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
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.
+# Install manpages
mkdir -p $PKG/usr/man/man1
-for i in $PRGNAM.bin.1 $PRGNAM.1 $PRGNAM-standalone.1; do
- install -m 0644 docs/manpages/$i $PKG/usr/man/man1/$i
+for i in $PRGNAM{,.bin,-standalone,-TexturePacker}.1; do
+ install -m 0644 $SRCNAM-$VERSION-$CODNAM/docs/manpages/$i $PKG/usr/man/man1/$i
done
-if ! [ "${WII:-no}" = "no" ]; then
- for i in $PRGNAM-ps3remote.1 $PRGNAM-send.1 $PRGNAM-wiiremote.1; do
- install -m 0644 docs/manpages/$i $PKG/usr/man/man1/$i
+# Install Event Control manpages if enabled
+if [ $CWIID == "ON" ]; then
+ for i in $PRGNAM{-ps3remote,-wiiremote,-send}.1; do
+ install -m 0644 $SRCNAM-$VERSION-$CODNAM/docs/manpages/$i $PKG/usr/man/man1/$i
done
fi
-gzip -9 $PKG/usr/man/man?/*.?
-cp -a tools/EventClients/README.txt $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-# Final clean up.
-find $PKG \( -name "Makefile*" -o -name "*cmake*" -o -name "*\.in" \) -exec rm -f '{}' \;
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+(
+ cd $SRCNAM-$VERSION-$CODNAM
+ cp -a README.md privacy-policy.txt version.txt docs/MANIFESTO.md $PKG/usr/doc/$PRGNAM-$VERSION
+ if [ $CWIID == "ON" ]; then
+ cat tools/EventClients/README.txt > $PKG/usr/doc/$PRGNAM-$VERSION/Event-Client-README.txt
+ fi
+ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+)
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}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE