diff options
Diffstat (limited to 'multimedia/kodi/kodi.SlackBuild')
-rw-r--r-- | multimedia/kodi/kodi.SlackBuild | 198 |
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 |