diff options
author | Sam James <sam@gentoo.org> | 2023-12-05 13:40:45 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2023-12-05 13:40:56 +0000 |
commit | 03edc44ac03874e3a5f3a86658a8bb8cd25a8acd (patch) | |
tree | cc0962ee1fa0ff0fbe2822eeabbde84701aa9d95 /media-video | |
parent | dev-python/h5py: backport cython-3 patch (diff) | |
download | gentoo-03edc44ac03874e3a5f3a86658a8bb8cd25a8acd.tar.gz gentoo-03edc44ac03874e3a5f3a86658a8bb8cd25a8acd.tar.bz2 gentoo-03edc44ac03874e3a5f3a86658a8bb8cd25a8acd.zip |
media-video/vlc: backport modern c fixes
Closes: https://bugs.gentoo.org/919068
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'media-video')
-rw-r--r-- | media-video/vlc/files/vlc-3.0.20-c99.patch | 150 | ||||
-rw-r--r-- | media-video/vlc/vlc-3.0.20-r2.ebuild | 518 |
2 files changed, 668 insertions, 0 deletions
diff --git a/media-video/vlc/files/vlc-3.0.20-c99.patch b/media-video/vlc/files/vlc-3.0.20-c99.patch new file mode 100644 index 000000000000..135e1e6b9e5b --- /dev/null +++ b/media-video/vlc/files/vlc-3.0.20-c99.patch @@ -0,0 +1,150 @@ +https://bugs.gentoo.org/919068 +https://code.videolan.org/videolan/vlc/-/issues/28441 +https://code.videolan.org/videolan/vlc/-/merge_requests/4645 + +From 1e2918115ca2f5c4ffde00dc02ad89525714f6c2 Mon Sep 17 00:00:00 2001 +From: Thomas Guillem <thomas@gllm.fr> +Date: Tue, 5 Dec 2023 09:23:35 +0100 +Subject: [PATCH 1/5] input: fix incompatible-pointer-types assignment + +Fixes #28441 +--- a/src/input/input_internal.h ++++ b/src/input/input_internal.h +@@ -117,7 +117,7 @@ typedef struct input_thread_private_t + + /* Title infos FIXME multi-input (not easy) ? */ + int i_title; +- const input_title_t **title; ++ input_title_t * const *title; + + int i_title_offset; + int i_seekpoint_offset; +-- +GitLab + + +From adcf4e66e2ce2c382bb97957c91bfde040f4f3ca Mon Sep 17 00:00:00 2001 +From: Zhao Zhili <quinkblack@foxmail.com> +Date: Thu, 1 Mar 2018 14:25:59 +0800 +Subject: [PATCH 2/5] yadif: fix variable type + +Signed-off-by: Thomas Guillem <thomas@gllm.fr> +(cherry picked from commit 77b86f4452be4dbe0d56a9cd1b66da61b116da60) +Signed-off-by: Thomas Guillem <thomas@gllm.fr> +--- a/modules/video_filter/deinterlace/yadif.h ++++ b/modules/video_filter/deinterlace/yadif.h +@@ -140,10 +140,10 @@ static void yadif_filter_line_c(uint8_t *dst, uint8_t *prev, uint8_t *cur, uint8 + } + + static void yadif_filter_line_c_16bit(uint8_t *dst8, uint8_t *prev8, uint8_t *cur8, uint8_t *next8, int w, int prefs, int mrefs, int parity, int mode) { +- uint8_t *dst = (uint8_t *)dst8; +- uint8_t *prev = (uint8_t *)prev8; +- uint8_t *cur = (uint8_t *)cur8; +- uint8_t *next = (uint8_t *)next8; ++ uint16_t *dst = (uint16_t *)dst8; ++ uint16_t *prev = (uint16_t *)prev8; ++ uint16_t *cur = (uint16_t *)cur8; ++ uint16_t *next = (uint16_t *)next8; + int x; + uint16_t *prev2= parity ? prev : cur ; + uint16_t *next2= parity ? cur : next; +-- +GitLab + + +From 45198e5328ff2b2f4eb2fb76add0789fec26270f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net> +Date: Sun, 3 Mar 2019 09:59:10 +0200 +Subject: [PATCH 3/5] swscale: avoid invalid pointer conversion + +(cherry picked from commit ab00e6c59d42e05ab08893091783d8b5febc0058) +Signed-off-by: Thomas Guillem <thomas@gllm.fr> +--- a/modules/video_chroma/swscale.c ++++ b/modules/video_chroma/swscale.c +@@ -588,8 +588,9 @@ static void Convert( filter_t *p_filter, struct SwsContext *ctx, + { + filter_sys_t *p_sys = p_filter->p_sys; + uint8_t palette[AVPALETTE_SIZE]; +- uint8_t *src[4]; int src_stride[4]; +- uint8_t *dst[4]; int dst_stride[4]; ++ uint8_t *src[4], *dst[4]; ++ const uint8_t *csrc[4]; ++ int src_stride[4], dst_stride[4]; + + GetPixels( src, src_stride, p_sys->desc_in, &p_filter->fmt_in.video, + p_src, i_plane_count, b_swap_uvi ); +@@ -606,11 +607,14 @@ static void Convert( filter_t *p_filter, struct SwsContext *ctx, + GetPixels( dst, dst_stride, p_sys->desc_out, &p_filter->fmt_out.video, + p_dst, i_plane_count, b_swap_uvo ); + ++ for (size_t i = 0; i < ARRAY_SIZE(src); i++) ++ csrc[i] = src[i]; ++ + #if LIBSWSCALE_VERSION_INT >= ((0<<16)+(5<<8)+0) +- sws_scale( ctx, src, src_stride, 0, i_height, ++ sws_scale( ctx, csrc, src_stride, 0, i_height, + dst, dst_stride ); + #else +- sws_scale_ordered( ctx, src, src_stride, 0, i_height, ++ sws_scale_ordered( ctx, csrc, src_stride, 0, i_height, + dst, dst_stride ); + #endif + } +-- +GitLab + + +From 4431076ad4a21fdcabd3f7ef1d61c45891689b0c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net> +Date: Sun, 3 Mar 2019 17:20:04 +0200 +Subject: [PATCH 4/5] dynamicoverlay: fix variable shadowing + +(cherry picked from commit d42e05d6b2c061ae352c131d5aebf8c8d8aa6d35) +Signed-off-by: Thomas Guillem <thomas@gllm.fr> +--- a/modules/spu/dynamicoverlay/dynamicoverlay_commands.c ++++ b/modules/spu/dynamicoverlay/dynamicoverlay_commands.c +@@ -899,12 +899,11 @@ static const commanddesc_static_t p_commands[] = + void RegisterCommand( filter_t *p_filter ) + { + filter_sys_t *p_sys = (filter_sys_t*) p_filter->p_sys; +- size_t i_index = 0; + + p_sys->i_commands = ARRAY_SIZE(p_commands); + p_sys->pp_commands = (commanddesc_t **) calloc( p_sys->i_commands, sizeof(commanddesc_t*) ); + if( !p_sys->pp_commands ) return; +- for( i_index = 0; i_index < p_sys->i_commands; i_index ++ ) ++ for( size_t i_index = 0; i_index < p_sys->i_commands; i_index ++ ) + { + p_sys->pp_commands[i_index] = (commanddesc_t *) malloc( sizeof(commanddesc_t) ); + if( !p_sys->pp_commands[i_index] ) return; +-- +GitLab + + +From fda14fc7c013eb75291df10cc8b88336c51328ad Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net> +Date: Mon, 26 Feb 2018 20:43:03 +0200 +Subject: [PATCH 5/5] dynamicoverlay: fix memory corruption + +Font alpha is 8-bits, not 32-bits. + +(cherry picked from commit 6f14081af7325d334a53126c4eea52bc30fc08a0) +Signed-off-by: Thomas Guillem <thomas@gllm.fr> +--- a/modules/spu/dynamicoverlay/dynamicoverlay_commands.c ++++ b/modules/spu/dynamicoverlay/dynamicoverlay_commands.c +@@ -234,8 +234,12 @@ static int parser_SetTextAlpha( char *psz_command, char *psz_end, + skip_space( &psz_command ); + if( isdigit( (unsigned char)*psz_command ) ) + { +- if( parse_digit( &psz_command, &p_params->fontstyle.i_font_alpha ) == VLC_EGENERIC ) ++ int32_t value; ++ ++ if( parse_digit( &psz_command, &value ) == VLC_EGENERIC ) + return VLC_EGENERIC; ++ ++ p_params->fontstyle.i_font_alpha = value; + } + return VLC_SUCCESS; + } +-- +GitLab diff --git a/media-video/vlc/vlc-3.0.20-r2.ebuild b/media-video/vlc/vlc-3.0.20-r2.ebuild new file mode 100644 index 000000000000..b514804bc99c --- /dev/null +++ b/media-video/vlc/vlc-3.0.20-r2.ebuild @@ -0,0 +1,518 @@ +# Copyright 2000-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-{1..2} ) + +MY_PV="${PV/_/-}" +MY_PV="${MY_PV/-beta/-test}" +MY_P="${PN}-${MY_PV}" +if [[ ${PV} = *9999 ]] ; then + if [[ ${PV%.9999} != ${PV} ]] ; then + EGIT_BRANCH="3.0.x" + fi + EGIT_REPO_URI="https://code.videolan.org/videolan/vlc.git" + inherit git-r3 +else + if [[ ${MY_P} = ${P} ]] ; then + SRC_URI="https://download.videolan.org/pub/videolan/${PN}/${PV}/${P}.tar.xz" + else + SRC_URI="https://download.videolan.org/pub/videolan/testing/${MY_P}/${MY_P}.tar.xz" + fi + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv -sparc ~x86" +fi +inherit autotools flag-o-matic lua-single toolchain-funcs virtualx xdg + +DESCRIPTION="Media player and framework with support for most multimedia files and streaming" +HOMEPAGE="https://www.videolan.org/vlc/" + +LICENSE="LGPL-2.1 GPL-2" +SLOT="0/5-9" # vlc - vlccore + +IUSE="a52 alsa aom archive aribsub bidi bluray cddb chromaprint chromecast dav1d dbus + dc1394 debug directx dts +dvbpsi dvd +encode faad fdk +ffmpeg flac fluidsynth + fontconfig +gcrypt gme keyring gstreamer +gui ieee1394 jack jpeg kate + libass libcaca libnotify +libsamplerate libtar libtiger linsys lirc live lua + macosx-notifications mad matroska modplug mp3 mpeg mtp musepack ncurses nfs ogg + omxil optimisememory opus png projectm pulseaudio rdp run-as-root samba sdl-image + sftp shout sid skins soxr speex srt ssl svg taglib theora tremor truetype twolame + udev upnp vaapi v4l vdpau vnc vpx wayland +X x264 x265 xml zeroconf zvbi + cpu_flags_arm_neon cpu_flags_ppc_altivec cpu_flags_x86_mmx cpu_flags_x86_sse +" +REQUIRED_USE=" + chromecast? ( encode ) + directx? ( ffmpeg ) + fontconfig? ( truetype ) + libcaca? ( X ) + libtar? ( skins ) + libtiger? ( kate ) + lua? ( ${LUA_REQUIRED_USE} ) + skins? ( archive gui truetype X xml ) + ssl? ( gcrypt ) + vaapi? ( ffmpeg X ) + vdpau? ( ffmpeg X ) +" +BDEPEND=" + >=sys-devel/gettext-0.19.8 + virtual/pkgconfig + lua? ( ${LUA_DEPS} ) + amd64? ( dev-lang/yasm ) + wayland? ( dev-util/wayland-scanner ) + x86? ( dev-lang/yasm ) +" +# <ffmpeg-5 dep for USE="ffmpeg vaapi" for bug #864721 +RDEPEND=" + media-libs/libvorbis + net-dns/libidn:= + sys-libs/zlib + virtual/libintl + virtual/opengl + a52? ( media-libs/a52dec ) + alsa? ( media-libs/alsa-lib ) + aom? ( media-libs/libaom:= ) + archive? ( app-arch/libarchive:= ) + aribsub? ( media-libs/aribb24 ) + bidi? ( + dev-libs/fribidi + media-libs/freetype:2[harfbuzz] + media-libs/harfbuzz:= + virtual/ttf-fonts + ) + bluray? ( >=media-libs/libbluray-1.3.0:= ) + cddb? ( media-libs/libcddb ) + chromaprint? ( media-libs/chromaprint:= ) + chromecast? ( + >=dev-libs/protobuf-2.5.0:= + >=net-libs/libmicrodns-0.1.2:= + ) + dav1d? ( media-libs/dav1d:= ) + dbus? ( sys-apps/dbus ) + dc1394? ( + media-libs/libdc1394:2 + sys-libs/libraw1394 + ) + dts? ( media-libs/libdca ) + dvbpsi? ( >=media-libs/libdvbpsi-1.2.0:= ) + dvd? ( + >=media-libs/libdvdnav-6.1.1:= + >=media-libs/libdvdread-6.1.2:= + ) + faad? ( media-libs/faad2 ) + fdk? ( media-libs/fdk-aac:= ) + ffmpeg? ( >=media-video/ffmpeg-3.1.3:=[postproc,vaapi?,vdpau?] ) + flac? ( + media-libs/flac:= + media-libs/libogg + ) + fluidsynth? ( media-sound/fluidsynth:= ) + fontconfig? ( media-libs/fontconfig:1.0 ) + gcrypt? ( + dev-libs/libgcrypt:= + dev-libs/libgpg-error + ) + gme? ( media-libs/game-music-emu ) + keyring? ( app-crypt/libsecret ) + gstreamer? ( >=media-libs/gst-plugins-base-1.4.5:1.0 ) + gui? ( + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtsvg:5 + dev-qt/qtwidgets:5 + X? ( + dev-qt/qtx11extras:5 + x11-libs/libX11 + ) + ) + ieee1394? ( + sys-libs/libavc1394 + sys-libs/libraw1394 + ) + jack? ( virtual/jack ) + jpeg? ( media-libs/libjpeg-turbo:0 ) + kate? ( media-libs/libkate ) + libass? ( + media-libs/fontconfig:1.0 + media-libs/libass:= + ) + libcaca? ( media-libs/libcaca ) + libnotify? ( + dev-libs/glib:2 + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3 + x11-libs/libnotify + ) + libsamplerate? ( media-libs/libsamplerate ) + libtar? ( dev-libs/libtar ) + libtiger? ( media-libs/libtiger ) + linsys? ( media-libs/zvbi ) + lirc? ( app-misc/lirc ) + live? ( media-plugins/live:= ) + lua? ( ${LUA_DEPS} ) + mad? ( media-libs/libmad ) + matroska? ( + >=dev-libs/libebml-1.4.2:= + media-libs/libmatroska:= + ) + modplug? ( >=media-libs/libmodplug-0.8.9.0 ) + mp3? ( media-libs/libmpg123 ) + mpeg? ( media-libs/libmpeg2 ) + mtp? ( media-libs/libmtp:= ) + musepack? ( media-sound/musepack-tools ) + ncurses? ( sys-libs/ncurses:=[unicode(+)] ) + nfs? ( >=net-fs/libnfs-0.10.0:= ) + ogg? ( media-libs/libogg ) + opus? ( >=media-libs/opus-1.0.3 ) + png? ( media-libs/libpng:0= ) + projectm? ( + media-fonts/dejavu + >=media-libs/libprojectm-3.1.12:0= + ) + pulseaudio? ( media-libs/libpulse ) + rdp? ( >=net-misc/freerdp-2.0.0_rc0:=[client(+)] ) + samba? ( >=net-fs/samba-4.0.0:0[client,-debug(-)] ) + sdl-image? ( media-libs/sdl-image ) + sftp? ( net-libs/libssh2 ) + shout? ( media-libs/libshout ) + sid? ( media-libs/libsidplay:2 ) + skins? ( + x11-libs/libXext + x11-libs/libXinerama + x11-libs/libXpm + ) + soxr? ( >=media-libs/soxr-0.1.2 ) + speex? ( + >=media-libs/speex-1.2.0 + media-libs/speexdsp + ) + srt? ( >=net-libs/srt-1.4.2:= ) + ssl? ( net-libs/gnutls:= ) + svg? ( + gnome-base/librsvg:2 + x11-libs/cairo + ) + taglib? ( >=media-libs/taglib-1.9 ) + theora? ( media-libs/libtheora ) + tremor? ( media-libs/tremor ) + truetype? ( + media-libs/freetype:2 + virtual/ttf-fonts + !fontconfig? ( media-fonts/dejavu ) + ) + twolame? ( media-sound/twolame ) + udev? ( virtual/udev ) + upnp? ( net-libs/libupnp:=[ipv6(+)] ) + v4l? ( media-libs/libv4l:= ) + vaapi? ( + <media-video/ffmpeg-5 + media-libs/libva:=[drm(+),wayland?,X?] + ) + vdpau? ( x11-libs/libvdpau ) + vnc? ( net-libs/libvncserver ) + vpx? ( media-libs/libvpx:= ) + wayland? ( + >=dev-libs/wayland-1.15 + dev-libs/wayland-protocols + ) + X? ( + x11-libs/libX11 + x11-libs/libxcb + x11-libs/xcb-util + x11-libs/xcb-util-keysyms + ) + x264? ( >=media-libs/x264-0.0.20190214:= ) + x265? ( media-libs/x265:= ) + xml? ( dev-libs/libxml2:2 ) + zeroconf? ( net-dns/avahi[dbus] ) + zvbi? ( media-libs/zvbi ) +" +DEPEND="${RDEPEND} + X? ( x11-base/xorg-proto ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-2.1.0-fix-libtremor-libs.patch # build system + "${FILESDIR}"/${PN}-2.2.8-freerdp-2.patch # bug 590164 + "${FILESDIR}"/${PN}-3.0.6-fdk-aac-2.0.0.patch # bug 672290 + "${FILESDIR}"/${PN}-3.0.11.1-configure_lua_version.patch + "${FILESDIR}"/${PN}-3.0.18-drop-minizip-dep.patch + "${FILESDIR}"/${PN}-3.0.20-c99.patch +) + +DOCS=( AUTHORS THANKS NEWS README doc/fortunes.txt ) + +S="${WORKDIR}/${MY_P}" + +pkg_setup() { + if use lua; then + lua-single_pkg_setup + fi +} + +src_prepare() { + default + + # bug 608256 + xdg_environment_reset + + has_version 'net-libs/libupnp:1.8' && \ + eapply "${FILESDIR}"/${PN}-2.2.8-libupnp-slot-1.8.patch + + # Bootstrap when we are on a git checkout. + if [[ ${PV} = *9999 ]] ; then + ./bootstrap + fi + + # Make it build with libtool 1.5 + rm m4/lt* m4/libtool.m4 || die + + # We are not in a real git checkout due to the absence of a .git directory. + touch src/revision.txt || die + + # Don't use --started-from-file when not using dbus. + if ! use dbus ; then + sed -i 's/ --started-from-file//' share/vlc.desktop.in || die + fi + + # Disable running of vlc-cache-gen, we do that in pkg_postinst + sed -e "/test.*build.*host/s/\$(host)/nothanks/" \ + -i Makefile.am -i bin/Makefile.am || die "Failed to disable vlc-cache-gen" + + # Fix gettext version mismatch errors. + sed -i -e s/GETTEXT_VERSION/GETTEXT_REQUIRE_VERSION/ configure.ac || die + + eautoreconf + + # Disable automatic running of tests. + find . -name 'Makefile.in' -exec sed -i 's/\(..*\)check-TESTS/\1/' {} \; || die +} + +src_configure() { + local -x BUILDCC="$(tc-getBUILD_CC)" + + local myeconfargs=( + --disable-aa + --disable-optimizations + --disable-rpath + --disable-update-check + --enable-fast-install + --enable-screen + --enable-vcd + --enable-vlc + --enable-vorbis + $(use_enable a52) + $(use_enable alsa) + $(use_enable aom) + $(use_enable archive) + $(use_enable aribsub) + $(use_enable bidi fribidi) + $(use_enable bidi harfbuzz) + $(use_enable bluray) + $(use_enable cddb libcddb) + $(use_enable chromaprint) + $(use_enable chromecast) + $(use_enable chromecast microdns) + $(use_enable cpu_flags_arm_neon neon) + $(use_enable cpu_flags_ppc_altivec altivec) + $(use_enable cpu_flags_x86_mmx mmx) + $(use_enable cpu_flags_x86_sse sse) + $(use_enable dav1d) + $(use_enable dbus) + $(use_enable dbus kwallet) + $(use_enable dc1394) + $(use_enable debug) + $(use_enable directx) + $(use_enable directx d3d11va) + $(use_enable directx dxva2) + $(use_enable dts dca) + $(use_enable dvbpsi) + $(use_enable dvd dvdnav) + $(use_enable dvd dvdread) + $(use_enable encode sout) + $(use_enable encode vlm) + $(use_enable faad) + $(use_enable fdk fdkaac) + $(use_enable ffmpeg avcodec) + $(use_enable ffmpeg avformat) + $(use_enable ffmpeg postproc) + $(use_enable ffmpeg swscale) + $(use_enable flac) + $(use_enable fluidsynth) + $(use_enable fontconfig) + $(use_enable gcrypt libgcrypt) + $(use_enable gme) + $(use_enable keyring secret) + $(use_enable gstreamer gst-decode) + $(use_enable gui qt) + $(use_enable ieee1394 dv1394) + $(use_enable jack) + $(use_enable jpeg) + $(use_enable kate) + $(use_enable libass) + $(use_enable libcaca caca) + $(use_enable libnotify notify) + $(use_enable libsamplerate samplerate) + $(use_enable libtar) + $(use_enable libtiger tiger) + $(use_enable linsys) + $(use_enable lirc) + $(use_enable live live555) + $(use_enable lua) + $(use_enable macosx-notifications osx-notifications) + $(use_enable mad) + $(use_enable matroska) + $(use_enable modplug mod) + $(use_enable mp3 mpg123) + $(use_enable mpeg libmpeg2) + $(use_enable mtp) + $(use_enable musepack mpc) + $(use_enable ncurses) + $(use_enable nfs) + $(use_enable ogg) + $(use_enable omxil) + $(use_enable omxil omxil-vout) + $(use_enable optimisememory optimize-memory) + $(use_enable opus) + $(use_enable png) + $(use_enable projectm) + $(use_enable pulseaudio pulse) + $(use_enable rdp freerdp) + $(use_enable run-as-root) + $(use_enable samba smbclient) + $(use_enable sdl-image) + $(use_enable sftp) + $(use_enable shout) + $(use_enable sid) + $(use_enable skins skins2) + $(use_enable soxr) + $(use_enable speex) + $(use_enable srt) + $(use_enable ssl gnutls) + $(use_enable svg) + $(use_enable svg svgdec) + $(use_enable taglib) + $(use_enable theora) + $(use_enable tremor) + $(use_enable twolame) + $(use_enable udev) + $(use_enable upnp) + $(use_enable v4l v4l2) + $(use_enable vaapi libva) + $(use_enable vdpau) + $(use_enable vnc) + $(use_enable vpx) + $(use_enable wayland) + $(use_with X x) + $(use_enable X xcb) + $(use_enable X xvideo) + $(use_enable x264) + $(use_enable x264 x26410b) + $(use_enable x265) + $(use_enable xml libxml2) + $(use_enable zeroconf avahi) + $(use_enable zvbi) + $(use_enable !zvbi telx) + --with-kde-solid="${EPREFIX}"/usr/share/solid/actions + --disable-asdcp + --disable-coverage + --disable-cprof + --disable-crystalhd + --disable-decklink + --disable-gles2 + --disable-goom + --disable-kai + --disable-kva + --disable-libplacebo + --disable-maintainer-mode + --disable-merge-ffmpeg + --disable-mfx + --disable-mmal + --disable-opencv + --disable-opensles + --disable-oss + --disable-rpi-omxil + --disable-schroedinger + --disable-shine + --disable-sndio + --disable-spatialaudio + --disable-vsxu + --disable-wasapi + --disable-wma-fixed + ) + # ^ We don't have these disabled libraries in the Portage tree yet. + + # https://code.videolan.org/videolan/vlc/-/issues/17626 (bug #861143) + append-flags -fno-strict-aliasing + filter-lto + + # Compatibility fix for Samba 4. + use samba && append-cppflags "-I${ESYSROOT}/usr/include/samba-4.0" + + if use x86; then + # We need to disable -fstack-check if use >=gcc 4.8.0. bug #499996 + append-cflags $(test-flags-CC -fno-stack-check) + # Bug 569774 + replace-flags -Os -O2 + fi + + # FIXME: Needs libresid-builder from libsidplay:2 which is in another directory... + append-ldflags "-L${ESYSROOT}/usr/$(get_libdir)/sidplay/builders/" + + if use riscv; then + # bug #803473 + append-libs -latomic + fi + + if use truetype || use bidi; then + myeconfargs+=( --enable-freetype ) + else + myeconfargs+=( --disable-freetype ) + fi + + if use truetype || use projectm; then + local dejavu="${EPREFIX}/usr/share/fonts/dejavu/" + myeconfargs+=( + --with-default-font=${dejavu}/DejaVuSans.ttf + --with-default-font-family=Sans + --with-default-monospace-font=${dejavu}/DejaVuSansMono.ttf + --with-default-monospace-font-family=Monospace + ) + fi + + econf "${myeconfargs[@]}" + + # _FORTIFY_SOURCE is set to 2 in config.h, which is also the default value on Gentoo. + # Other values may break the build (bug 523144), so definition should not be removed. + # To prevent redefinition warnings, we undefine _FORTIFY_SOURCE at the start of config.h + sed -i '1i#undef _FORTIFY_SOURCE' config.h || die +} + +src_test() { + virtx emake check-TESTS +} + +src_install() { + default + find "${ED}" -name '*.la' -delete || die +} + +pkg_postinst() { + if [[ -z "${ROOT}" ]] && [[ -x "${EROOT}/usr/$(get_libdir)/vlc/vlc-cache-gen" ]] ; then + einfo "Running ${EPREFIX}/usr/$(get_libdir)/vlc/vlc-cache-gen on ${EROOT}/usr/$(get_libdir)/vlc/plugins/" + "${EPREFIX}/usr/$(get_libdir)/vlc/vlc-cache-gen" "${EROOT}/usr/$(get_libdir)/vlc/plugins/" + else + ewarn "We cannot run vlc-cache-gen (most likely ROOT != /)" + ewarn "Please run ${EPREFIX}/usr/$(get_libdir)/vlc/vlc-cache-gen manually" + ewarn "If you do not do it, vlc will take a long time to load." + fi + + xdg_pkg_postinst +} + +pkg_postrm() { + if [[ -e "${EROOT}"/usr/$(get_libdir)/vlc/plugins/plugins.dat ]]; then + rm "${EROOT}"/usr/$(get_libdir)/vlc/plugins/plugins.dat || die "Failed to rm plugins.dat" + fi + + xdg_pkg_postrm +} |