# Maintainer: graysky # Contributor: Levente Polyak # Contributor: Giovanni Scafora # Contributor: Sarah Hay # Contributor: Martin Sandsmark pkgbase=vlc-rpi pkgname=(vlc-rpi libvlc-rpi) _pkgname=vlc _vlcver=3.0.21 # optional fixup version including hyphen _vlcfixupver= pkgver=$_vlcver${_vlcfixupver//-/.r} pkgrel=4 pkgdesc='Multi-platform MPEG, VCD/DVD, and DivX player with hw accel for RPi 3 and above' url=https://www.videolan.org/vlc/ arch=(aarch64 armv7h) license=( GPL-2.0-or-later LGPL-2.1-or-later ) makedepends=( a52dec aalib abseil-cpp alsa-lib aom aribb24 aribb25 avahi bash cairo dav1d dbus faad2 ffmpeg-rpi flac fluidsynth fontconfig freetype2 fribidi gcc-libs gdk-pixbuf2 glib2 glibc gnutls gst-plugins-base-libs gtk3 harfbuzz hicolor-icon-theme jack libarchive libass libavc1394 libbluray libcaca libdca libdc1394 libdvbpsi libdvdcss libdvdnav libdvdread libglvnd libgme libgoom2 libjpeg-turbo libkate libmad libmatroska libmicrodns libmodplug libmpcdec libmpeg2 libmtp libnotify libnfs libogg libomxil-bellagio libpng libproxy libpulse librsvg libsamplerate libsecret libshout libsoxr libssh2 libtar libtheora libtiger libupnp libva libvorbis libvpx libx11 libxcb libxinerama libxml2 libxpm lirc live-media lua mesa mpg123 opus pcsclite projectm protobuf qt5-base qt5-svg qt5-x11extras sdl_image smbclient speex srt systemd-libs twolame vcdimager wayland wayland-protocols x264 x265 xcb-util-keysyms xosd zlib zvbi ) makedepends_aarch64=(taglib) options=(!emptydirs) source=( https://download.videolan.org/$_pkgname/$_vlcver/$_pkgname-$_vlcver$_vlcfixupver.tar.xz{,.asc} update-vlc-plugin-cache.hook taglib-2.patch 99-vlc.rules vlc.config.txt # credit to jc and RPi-Distro maintainers for this work, see: # https://github.com/jc-kynesim/vlc.git and https://github.com/RPi-Distro/vlc/tree/bookworm-rpt/debian/patches 0001-vlc-live-media-2021.patch 0002-test-3.0.21-rpi_2.patch ) sha256sums=('24dbbe1d7dfaeea0994d5def0bbde200177347136dbfe573f5b6a4cee25afbb0' 'SKIP' 'b98043683dd90d3f5a3f501212dfc629839b661100de5ac79fd30cb7b4a06f13' 'db41f3a11d4df28251f1baaf41bc0913227ff1e77680e43d7efa172e6ae1cc29' '61125ab0da600d813f1aebd8445fcf03e176389cfb8aa28591f8225a13043089' '48da04f8f649952b99320b955854498853141411050d6e5583b835a244644137' '753517a8b88c5950d516f0fe57a3ef169e0665ba7817d4b8d9976c666829a291' '616833e99372317d9a1e1a73254ee48f71a803eb13e8dd04db158e7c3db0eb5c') validpgpkeys=('65F7C6B4206BD057A7EB73787180713BE58D1ADC') # VideoLAN Release Signing Key prepare() { cd $_pkgname-$_vlcver sed -e 's:truetype/ttf-dejavu:TTF:g' -i modules/visualization/projectm.cpp sed -e 's|-Werror-implicit-function-declaration||g' -i configure sed 's|whoami|echo builduser|g' -i configure sed 's|hostname -f|echo arch|g' -i configure local src for src in "${source[@]}"; do src="${src%%::*}" src="${src##*/}" [[ $src = *.patch ]] || continue echo "Applying patch $src..." patch -Np1 < "../$src" done autoreconf -vf } build() { local configure_options=( --enable-omxil --enable-omxil-vout --enable-rpi-omxil ) # Build errors on armv7h are centered around taglib even with # the Arch patch so build without taglib for armv7h. if [[ $CARCH == "aarch64" ]]; then configure_options+=( --enable-taglib ) elif [[ $CARCH == "armv7h" ]]; then configure_options+=( --disable-taglib ) fi configure_options+=( --disable-chromaprint --disable-fdkaac --disable-libgcrypt --disable-libplacebo --disable-opencv --disable-rpath --disable-schroedinger --disable-update-check --enable-a52 --enable-aa --enable-alsa --enable-aom --enable-archive --enable-aribsub --enable-aribcam --enable-avahi --enable-avcodec --enable-avformat --enable-bluray --enable-caca --enable-chromecast --enable-dav1d --enable-dc1394 --enable-dca --enable-dv1394 --enable-dvbpsi --enable-dvdnav --enable-dvdread --enable-faad --enable-flac --enable-fluidsynth --enable-fontconfig --enable-freetype --enable-fribidi --enable-gnutls --enable-gme --enable-goom --enable-gst-decode --enable-harfbuzz --enable-jack --enable-jpeg --enable-kate --enable-kwallet --enable-libass --enable-libmpeg2 --enable-libtar --enable-libva --enable-libxml2 --enable-lirc --enable-live555 --enable-mad --enable-matroska --enable-mod --enable-mpc --enable-mpg123 --enable-microdns --enable-mtp --enable-ncurses --enable-nfs --enable-nls --enable-notify --enable-ogg --enable-oggspots --enable-opus --enable-png --enable-postproc --enable-projectm --enable-pulse --enable-qt --enable-realrtsp --enable-samplerate --enable-sdl-image --enable-secret --enable-sftp --enable-shout --enable-skins2 --enable-smbclient --enable-soxr --enable-speex --enable-srt --enable-svg --enable-svgdec --enable-tiger --enable-twolame --enable-upnp --enable-vdpau --enable-vlc --enable-vorbis --enable-vpx --enable-wayland --enable-x264 --enable-x265 --enable-zvbi --prefix=/usr --sysconfdir=/etc --with-kde-solid=/usr/share/solid/actions/ ) cd $_pkgname-$_vlcver export CFLAGS+=" -I/usr/include/samba-4.0 -ffat-lto-objects -I/usr/include/ffmpeg-rpi -Wno-incompatible-pointer-types" export CPPFLAGS+=" -I/usr/include/samba-4.0" export CXXFLAGS+=" -std=c++17 -I/usr/include/ffmpeg-rpi" export PKG_CONFIG_PATH="/usr/lib/ffmpeg-rpi/pkgconfig" export LUAC=/usr/bin/luac export LUA_LIBS="$(pkg-config --libs lua)" export RCC=/usr/bin/rcc-qt5 export PKG_CONFIG_PATH="/usr/lib/ffmpeg-rpi/pkgconfig/:$PKG_CONFIG_PATH" ./configure "${configure_options[@]}" # prevent excessive overlinking due to libtool sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool make } _pick() { local p="$1" f d; shift for f; do d="$srcdir/$p/${f#$pkgdir/}" mkdir -p "$(dirname "$d")" mv "$f" "$d" rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")" done } package_vlc-rpi() { depends=( libomxil-bellagio a52dec abseil-cpp aribb24 bash cairo dbus faad2 ffmpeg-rpi fontconfig freetype2 fribidi gcc-libs gdk-pixbuf2 glib2 glibc gnutls harfbuzz hicolor-icon-theme libarchive libdca libdvbpsi libglvnd libidn libmad libmatroska libmpcdec libmpeg2 libproxy libsecret libtar libupnp libva libvlc-rpi libx11 libxcb libxinerama libxml2 libxpm lua qt5-base qt5-svg qt5-x11extras taglib wayland xcb-util-keysyms zlib ) optdepends=( 'aalib: ASCII art video output' 'alsa-lib: ALSA audio output' 'aom: AOM AV1 codec' 'aribb25: aribcam support' 'avahi: service discovery using bonjour protocol' 'dav1d: dav1d AV1 decoder' 'flac: Free Lossless Audio Codec plugin' 'fluidsynth: FluidSynth based MIDI playback plugin' 'gnu-free-fonts: subtitle font' 'gst-plugins-base-libs: for libgst plugins' 'gstreamer: for libgst plugins' 'gtk3: notification plugin' 'jack: jack audio server' 'kwallet: kwallet keystore' 'libass: Subtitle support' 'libavc1394: devices using the 1394ta AV/C' 'libbluray: Blu-Ray video input' 'libcaca: colored ASCII art video output' 'libcdio: audio CD playback' 'libdc1394: IEEE 1394 access plugin' 'libdvdcss: decoding encrypted DVDs' 'libdvdnav: DVD with navigation input module' 'libdvdread: DVD input module' 'libgme: Game Music Emu plugin' 'libgoom2: Goom visualization' 'libjpeg-turbo: JPEG support' 'libkate: Kate codec' 'libmodplug: MOD output plugin' 'libmicrodns: mDNS services discovery (chromecast etc)' 'libmtp: MTP devices discovery' 'libnfs: NFS access' 'libnotify: notification plugin' 'libogg: Ogg and OggSpots codec' 'libpng: PNG support' 'libpulse: PulseAudio audio output' 'libraw1394: IEEE 1394 access plugin' 'librsvg: SVG plugin' 'libsamplerate: audio Resampler' 'libshout: shoutcast/icecast output plugin' 'libsoxr: SoX audio Resampler' 'libssh2: sftp access' 'libtheora: theora codec' 'libtiger: Tiger rendering for Kate streams' 'libva-intel-driver: video backend intel' 'libva-vdpau-driver: vdpau backend nvidia' 'libvorbis: Vorbis decoder/encoder' 'libvpx: VP8 and VP9 codec' 'lirc: lirc control' 'live-media: streaming over RTSP' 'lua-socket: http interface' 'mpg123: mpg123 codec' 'ncurses: ncurses interface' 'opus: opus codec' 'pcsclite: aribcam support' 'projectm: ProjectM visualisation' 'protobuf: chromecast streaming' 'sdl12-compat: SDL image support' 'sdl_image: SDL image support' 'smbclient: SMB access plugin' 'speex: Speex codec' 'speexdsp: Speex codec' 'srt: SRT input/output plugin' 'systemd-libs: udev services discovery' 'ttf-dejavu: subtitle font' 'twolame: TwoLAME mpeg2 encoder plugin' 'vcdimager: navigate VCD with libvcdinfo' 'x264: H264 encoding' 'x265: HEVC/H.265 encoder' 'zvbi: VBI/Teletext/webcam/v4l2 capture/decoding' ) provides=(vlc) conflicts=(vlc vlc-plugin) replaces=(vlc-plugin) cd $_pkgname-$_vlcver make DESTDIR="$pkgdir" install ( cd "$pkgdir" _pick lib$pkgname usr/include _pick lib$pkgname usr/lib/libvlc* _pick lib$pkgname usr/lib/pkgconfig/libvlc.pc ) for res in 16 32 48 128 256; do install -Dm 644 share/icons/${res}x$res/vlc.png -t "$pkgdir/usr/share/icons/hicolor/${res}x$res/apps/" done install -Dm 644 ../update-vlc-plugin-cache.hook -t "$pkgdir/usr/share/libalpm/hooks/" # setup video drivers install -Dm0644 "$srcdir/vlc.config.txt" "$pkgdir/boot/vlc.config.txt" # set permissions necessary for accelerated video playback install -Dm0644 "$srcdir/99-vlc.rules" "$pkgdir/usr/lib/udev/rules.d/99-vlc.rules" } package_libvlc-rpi() { pkgdesc+=" - library" provides=(libvlc) conflicts=(libvlc) depends=( dbus gcc-libs glibc ) mv -v $pkgname/* "$pkgdir" } # vim: ts=2 sw=2 et: