PKGBUILDs/extra/vlc/PKGBUILD
2024-09-14 13:59:19 +00:00

441 lines
9.6 KiB
Bash

# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
# Contributor: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
# Contributor: Martin Sandsmark <martin.sandsmark@kde.org>
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - enable gles2
# - disable taglib on v7
pkgbase=vlc
pkgname=(vlc libvlc)
_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'
url=https://www.videolan.org/vlc/
arch=(x86_64)
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
ffmpeg4.4 # NOTE: switch to ffmpeg4.4, as ffmpeg >= 5 requires extensive changes disabling VAAPI (only supported with vlc >= 4)
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
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
taglib
twolame
vcdimager
wayland
wayland-protocols
x264
x265
xcb-util-keysyms
xosd
zlib
zvbi
)
options=(!emptydirs)
source=(
https://download.videolan.org/$pkgname/$_vlcver/$pkgname-$_vlcver$_vlcfixupver.tar.xz{,.asc}
update-vlc-plugin-cache.hook
taglib-2.patch
)
sha512sums=('cb1af76c8056648c331d7e6e0680d161ed1849eb635987504f45eae02531e9b432651034317fa7e02b0722905dfb9f0f5dad67b5924cc62edcaf0d173ac36aee'
'SKIP'
'b247510ffeadfd439a5dadd170c91900b6cdb05b5ca00d38b1a17c720ffe5a9f75a32e0cb1af5ebefdf1c23c5acc53513ed983a736e8fa30dd8fad237ef49dd3'
'ea0d1e1dfed16dac8f9027eb55d987dee59630568b9744ceb42bfa134ea9295252d83574f3d793a76a5be3b02661c1731ed366003b6b55b2d7f02fde70586ff3')
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() {
[[ $CARCH == "armv7h" ]] && taglib="--disable-taglib" || taglib="--enable-taglib"
local 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-gles2
--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
$taglib
--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 -Wno-incompatible-pointer-types"
export CPPFLAGS+=" -I/usr/include/samba-4.0"
export CXXFLAGS+=" -std=c++17"
export PKG_CONFIG_PATH="/usr/lib/ffmpeg4.4/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/ffmpeg4.4/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() {
depends=(
a52dec
abseil-cpp
aribb24
bash
cairo
dbus
faad2
ffmpeg4.4 # NOTE: switch to ffmpeg4.4, as ffmpeg >= 5 requires extensive changes disabling VAAPI (only supported with vlc >= 4)
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
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'
)
conflicts=(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/"
}
package_libvlc() {
pkgdesc+=" - library"
depends=(
dbus
gcc-libs
glibc
)
mv -v $pkgname/* "$pkgdir"
}
# vim: ts=2 sw=2 et: