diff options
author | PA4WDH | 2021-07-13 19:47:04 +0200 |
---|---|---|
committer | PA4WDH | 2021-07-13 19:47:04 +0200 |
commit | 5884c94b1f92c00406d137c9f308c098e5268a59 (patch) | |
tree | 8483f1da04bf5cbed41220bafcffa502cae95eaa | |
download | unmatched-patchwork-5884c94b1f92c00406d137c9f308c098e5268a59.tar.gz unmatched-patchwork-5884c94b1f92c00406d137c9f308c098e5268a59.tar.bz2 unmatched-patchwork-5884c94b1f92c00406d137c9f308c098e5268a59.zip |
Initial commit
39 files changed, 2657 insertions, 0 deletions
diff --git a/README.html b/README.html new file mode 100644 index 0000000..2a6e140 --- /dev/null +++ b/README.html @@ -0,0 +1,71 @@ +<h1>Unmatched Patchwork</h1> +<p> + This is an overlay voor the Gentoo Linux distribution, it is intended for + owners of the <a href="https://www.sifive.com/boards/hifive-unmatched">SiFive + HiFive Unmatched RISC-V PC</a>. +</p> +<h2>Why this overlay?</h2> +<p> + Running Gentoo Linux on the Unmatched requires some modifications to some + packages. Some are specific to this specific board, others are for RISC-V in + general. +</p> +<p> + Instead of keeping all those patches for myself I decided to share and hope it + will help someone else too. This is actually the first overlay I'm sharing, so + feedback is appreciated. You're quite likely to find me on the + <a href="https://forums.gentoo.org">Gentoo forums</a> or the + <a href="https://forums.sifive.com">SiFive forums</a>. +</p> +<h2>What is in this overlay?</h2> +<p> + This overlay contains a few packages: +</p> +<ul> + <li>media-video/mplayer: mplayer with a patch for it's configure script to accept RISC-V</li> + <li>sys-apps/sysvinit: sysvinit patched so that the "reboot" command does the + same als "halt" because the Unmatched can't rebooti and will be stuck + if you do</li> + <li>sys-boot/grub: Grub with patches to allow loading linux</li> + <li>sys-boot/opensbi: OpenSBI with patches from SiFive</li> + <li>sys-boot/u-boot: u-boot with patches from SiFive. Also has USE flags to + set the CPU Frequency and prioritize EFI booting (required for grub)</li> + <li>sys-kernel/sifive-sources: gentoo-sources with patches from SiFive</li> +</ul> +<h2>How to use this overlay?</h2> +<p> + First you'll have to clone this overlay on a place you like. A common place + these days is <b>/var/db/repos</b>. So cd into that direcoty and use + <b>git clone https://code.pa4wdh.nl.eu.org/gentoo/unmatched-patchwork</b>, + this will create a directory called unmatched-patchwork with the overlay in + it. +</p> +<p> + Next you have to make portage aware of the repo, for that you'll have to + create a config file under <b>/etc/portage/repos.conf</b>. Create a file + called <b>unmatched-patchwork.conf</b> and give it these contents: +</p> +<pre> +[unmatched-patchwork] +location = /var/db/repos/unmatched-patchwork +sync-type = git +sync-uri = https://code.pa4wdh.nl.eu.org/gentoo/unmatched-patchwork +</pre> +<p> + If you placed the overlay on a different place than <b>/var/db/repos</b> make + sure to adapt the <b>location</b> line to your needs. +</p> +<h2>What can i do with this?</h2> +<p> + For me booting with grub has great value, it allows me to boot different + kernels via it's menu. This allows me to experiment with different kernel + versions and configurations, and i don't run into problems if it somehow + doesn't boot. +</p> +<p> + Mplayer is my favorite media player and is nice to get quick results. Even + if you don't have a GPU you can test video with aalib :-). +</p> +<p> + Have fun! +</p> diff --git a/media-video/mplayer/Manifest b/media-video/mplayer/Manifest new file mode 100644 index 0000000..2c97459 --- /dev/null +++ b/media-video/mplayer/Manifest @@ -0,0 +1,11 @@ +AUX configure-riscv.patch 328 BLAKE2B 048b569b8e93ec6f09d3fcf9858736e42da71cd04be71edfd604ad93380c819c3036a37b899db2d8e66faa3cb818c675b61152ec3c54c3de226f59175d8d373f SHA512 795199a484b652b25cd07dc096bf37d4337ea8fe3075cab3ca6b721f8a0326dd6a173b74103b9a6fb09d1d2ff5b74b31ec223c850ac6e8720bacff53e1a641c4 +AUX dump_ffmpeg.sh 2529 BLAKE2B 2c945fcf0b430d74c85557f82497dbc4a2a8308ecb34c86e42cc3c6a5eed20496691839355c068ccabf6d20d11d62035231aa208341a1ce9affc44b3e30acfde SHA512 12c15efa5cdb99eac92ff808fa56c6137343cca48b73d5875a7a6b08cf36ebeda5022eb3bae0ba567ff9031d2a0f3b5dbe69ee191ae8ecf48b98a779504df66c +AUX ffmpeg44.patch 517 BLAKE2B 432b42b5e89707739768b83332e17eb16008fd636a14e57ea8cef73aaac057e4a33ea1071ff7d1ef56c106a35b297cf9106ccb5ffab383f23e1a98cf451c021d SHA512 95eaa2a524d6b12b87e5f1548fc0565904f6478bce5353da5fbe6892e25da595376c25bfbfd4030b267b9adb2850b1a2c7a3b2f41a19091f4fd35535140865db +AUX mplayer-1.3-CVE-2016-4352.patch 617 BLAKE2B 57f85be46230fa0576c6569bafc8c65f24b0a59d3b083c06d2e14fe176505567feca5024bafd73fb1b48960ea95a4705132ed6e2166a31aabcd1e34fc41e3803 SHA512 654bfa8368a02669ba249aa0c1a605f285d4d967b7038285df0ba7b83cd034ac3aff933a564fd6f33c7a153267be19d9eb517a52c8f4b53a6f81b6b2c5558512 +AUX prepare_mplayer.sh 757 BLAKE2B 5de1cb4b17628dd5443f98a20717f8ed028a76446104a471a669b1c7ed7a5b76a8e86203f436240312ac4814a0ba7dba7856bb4f3723da850188a3003aae8bbb SHA512 0add0707e15d58cee331fc82f884a44b29908c503f9ddcbb63dc01e237e2f457f599bae8644ce49f1af2cc7b3183529364ce30e6748889355c17cb96cecee71a +DIST MPlayer-1.4.tar.xz 15054920 BLAKE2B 4777cb31a32d62c393778c581c1913fbf355a36cbe6bcf6f426c90c2c8c70123e8aed4d01faf52ee6b1fba3c49e11fa13185f81ae8582f90c901b90955a1f42b SHA512 8ef71cad187d8c8f81c837279bd3a421b440c892d3347a667670b21c954007e35cf0d15828f0901f347b9c1b053e8da4bc7f0fb6de34382d1e463074923d7b34 +DIST font-arial-cp1250.tar.bz2 249705 BLAKE2B eb4366a110d917dc975b8add168ab43b1e8a0db7342647f69f5421fc1170719015c97ffa770e89892cbb4cee8e5b2fb74a4772c8f6cbef9606ee12c3746d78c9 SHA512 4f77ff5ceb8ec6e5d9f8f34d8950a6a6276d1fd5a947772fcbdb6554988b1ea665c12b82f45164f91fb7bd08000cb4afc26fa35beb4c760464160e22b9b8c340 +DIST font-arial-iso-8859-1.tar.bz2 234242 BLAKE2B 0671854e1a257d27b502affb59de681942a93990d3ac2575bbf1a6dd9eef026969f2f9ce4e9c11a68ea3d8aed48063f826a1e153f7468437a39791672c92a5d0 SHA512 a1d03b6f09c48f48b7733f3bc0402ceab239a9abf88b860d852ea9fe69b4da690208a79d6f29d30204f5b37becf10672e8e8c0bfef201846d80ec54df617d029 +DIST font-arial-iso-8859-2.tar.bz2 222208 BLAKE2B 94b1a04672bf9b4b20a0e6981591e761f751bd637deddcb801855296c525bf3b5e8feb1cb11cef282c0269f2c963ded22846089076e7e6763f258b8a932af454 SHA512 5671e628303fd816f64a51ad10e2f4dd9c3dc1b34c379a2ecf489b83931db7af668aaa4e00e96a00cacd63ed98daeae6b6a4d5925edfb06fc98d3a923f70257d +EBUILD mplayer-1.4-r1.ebuild 16739 BLAKE2B a3c13ce9f73c024ba31d642034bde1c194f4f9c9e43ca3993a7ab86493f34e30f77fa6e0eea595e0a4e2697f3911d96f64814fe402d90e9c2d00aadf5a361ac3 SHA512 a0092afc167366e69f9667a47b45dd195cee76410aa03db10a38385408779a7283220c2907a4c91b5902349b9b5ac95e3ee37680766463241ca48f6c2790ccbf +MISC metadata.xml 2463 BLAKE2B 74bd1f6f4d85fb5b55b3cfd6ca6350a9c4c6baf52c8cced69b7d37b84b5f5f154038e8c81c14ddc57d34037cabe3d638c49994c9bea7bba87852f792fa766aae SHA512 3fa8f536d01cb7fae5f4c56d2f66949cd4a237fabec8f2eb2941a436e0319e6c04652e97747384bd106ad6d9a31f1e14b605e47a73b3829cb0b7f37ab745ce88 diff --git a/media-video/mplayer/files/configure-riscv.patch b/media-video/mplayer/files/configure-riscv.patch new file mode 100644 index 0000000..debec44 --- /dev/null +++ b/media-video/mplayer/files/configure-riscv.patch @@ -0,0 +1,10 @@ +--- MPlayer-1.4/configure 2018-12-15 16:38:24.000000000 +0100 ++++ MPlayer-1.4-mod/configure 2021-06-19 20:41:00.735402324 +0200 +@@ -1761,6 +1761,7 @@ + nios2) host_arch=nios2 ;; + vax) host_arch=vax ;; + xtensa*) host_arch=xtensa ;; ++ riscv*) host_arch=generic ;; + *) host_arch=UNKNOWN ;; + esac + } diff --git a/media-video/mplayer/files/dump_ffmpeg.sh b/media-video/mplayer/files/dump_ffmpeg.sh new file mode 100644 index 0000000..885946d --- /dev/null +++ b/media-video/mplayer/files/dump_ffmpeg.sh @@ -0,0 +1,74 @@ +#!/bin/sh + +FFMPEG_DIR=ffmpeg +FFMPEG_MOVED_DIR=ffmpeg_removed +SYSTEM_FFMPEG_DIR=${EPREFIX}/usr/include + +# Move directories + +[ -d "${FFMPEG_DIR}" ] && mv "${FFMPEG_DIR}" "${FFMPEG_MOVED_DIR}" +[ -d "${FFMPEG_MOVED_DIR}" ] || exit 1 +[ -d "${FFMPEG_DIR}" ] || mkdir "${FFMPEG_DIR}" + +# Keep required files and check them + +SANITIZED_REGEXP='^\#[[:space:]]*include.*\".*[.]h\"' +sanitize_includes() { + sed -e "s/^\#[[:space:]]*include.*\"config[.]h\"/#include <config.h>/" \ + -e "s/^\#[[:space:]]*include.*\"\(libav.*\/.*[.]h\)\"/#include \<\1\>/" \ + -e "/${SANITIZED_REGEXP}/{s:\"\(.*\)\":\<${2}\/\1\>:}" ${1} +} + +check_sanitized_includes() { + grep -q "${SANITIZED_REGEXP}" $1 +} + +get_header_deps() { + grep "^#[[:space:]]*include.*\<libav.*[.]h\>" ${1} | \ + sed -e "s/^#[[:space:]]*include.*\<\(libav.*[.]h\)\>/\1/" | \ + tr -d '<>' | tr '\n' ' ' +} + +check_header_deps() { + for i ; do + printf "Checking for the presence of ${i}...\n" + if [ ! -f "${SYSTEM_FFMPEG_DIR}/${i}" -a ! -f "${FFMPEG_DIR}/${i}" ] ; then + printf "Header depends on ${i}\n" + printf "... but that file cannot be found, aborting\n" + exit 1 + fi + done +} + +move_file() { + mydir="$(dirname $1)" + printf "Moving and checking file: ${1}\n" + [ -d "${FFMPEG_DIR}/${mydir}" ] || mkdir -p "${FFMPEG_DIR}/${mydir}" + if [ ! -f "${FFMPEG_DIR}/${1}" ] ; then + sanitize_includes "${FFMPEG_MOVED_DIR}/${1}" ${mydir} > "${FFMPEG_DIR}/${1}" + fi + if $(check_sanitized_includes "${FFMPEG_DIR}/${1}") ; then + printf "Error, found non sanitized file in ffmpeg:\n" + printf "${FFMPEG_DIR}/${1}\n" + printf "Please report it at bugs.gentoo.org\n" + exit 1 + fi + if [ "${1%.h}" != "${1}" ] ; then + mydeps=$(get_header_deps "${FFMPEG_DIR}/${1}") + check_header_deps ${mydeps} + fi +} + +# HEADERS (order matters for the consistency checks: leaves come first) +FILES="libavutil/wchar_filename.h libavformat/os_support.h libavformat/internal.h libavutil/x86/asm.h" +# Files that are sed'ed but not compiled, used to check for availability of +# some codecs +FILES="${FILES} libavcodec/allcodecs.c libavformat/allformats.c libavfilter/allfilters.c" + +for i in ${FILES} ; do + move_file $i +done + +rm -rf "${FFMPEG_MOVED_DIR}" + +exit 0 diff --git a/media-video/mplayer/files/ffmpeg44.patch b/media-video/mplayer/files/ffmpeg44.patch new file mode 100644 index 0000000..99d5407 --- /dev/null +++ b/media-video/mplayer/files/ffmpeg44.patch @@ -0,0 +1,12 @@ +Index: MPlayer-1.4/libmpcodecs/ad_spdif.c +=================================================================== +--- MPlayer-1.4.orig/libmpcodecs/ad_spdif.c ++++ MPlayer-1.4/libmpcodecs/ad_spdif.c +@@ -300,7 +300,6 @@ static void uninit(sh_audio_t *sh) + av_freep(&lavf_ctx->pb); + if (lavf_ctx->streams) { + av_freep(&lavf_ctx->streams[0]->codec); +- av_freep(&lavf_ctx->streams[0]->info); + av_freep(&lavf_ctx->streams[0]); + } + av_freep(&lavf_ctx->streams); diff --git a/media-video/mplayer/files/mplayer-1.3-CVE-2016-4352.patch b/media-video/mplayer/files/mplayer-1.3-CVE-2016-4352.patch new file mode 100644 index 0000000..4eabf8b --- /dev/null +++ b/media-video/mplayer/files/mplayer-1.3-CVE-2016-4352.patch @@ -0,0 +1,24 @@ +https://trac.mplayerhq.hu/ticket/2295 + +r37857 + +--- old/libmpdemux/demux_gif.c ++++ new/libmpdemux/demux_gif.c +@@ -304,6 +304,17 @@ + return NULL; + } + ++ // Validate image size, most code in this demuxer assumes w*h <= INT_MAX ++ if ((int64_t)gif->SWidth * gif->SHeight > INT_MAX) { ++ mp_msg(MSGT_DEMUX, MSGL_ERR, ++ "[demux_gif] Unsupported picture size %dx%d.\n", gif->SWidth, ++ gif->SHeight); ++ if (DGifCloseFile(gif) == GIF_ERROR) ++ print_gif_error(NULL); ++ free(priv); ++ return NULL; ++ } ++ + // create a new video stream header + sh_video = new_sh_video(demuxer, 0); + diff --git a/media-video/mplayer/files/prepare_mplayer.sh b/media-video/mplayer/files/prepare_mplayer.sh new file mode 100644 index 0000000..57d4742 --- /dev/null +++ b/media-video/mplayer/files/prepare_mplayer.sh @@ -0,0 +1,25 @@ +#!/bin/sh +VERSION=$(date +%Y%m%d) +PACKAGE="mplayer-1.2_pre${VERSION}" +DUMP_FFMPEG="$(dirname $0)/dump_ffmpeg.sh" + +svn checkout svn://svn.mplayerhq.hu/mplayer/trunk ${PACKAGE} + +pushd ${PACKAGE} > /dev/null + # ffmpeg is in git now so no svn external anymore + rm -rf ffmpeg + git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg/ + sh "$DUMP_FFMPEG" + STORE_VERSION=$(LC_ALL=C svn info 2> /dev/null | grep Revision | cut -d' ' -f2) + printf "$STORE_VERSION" > snapshot_version +popd > /dev/null + +find "${PACKAGE}" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf +find "${PACKAGE}" -type d -name '.git' -prune -print0 | xargs -0 rm -rf + +tar cJf ${PACKAGE}.tar.xz ${PACKAGE} +rm -rf ${PACKAGE}/ + +echo "Tarball: \"${PACKAGE}.tar.xz\"" + +echo "** all done **" diff --git a/media-video/mplayer/metadata.xml b/media-video/mplayer/metadata.xml new file mode 100644 index 0000000..11e093c --- /dev/null +++ b/media-video/mplayer/metadata.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>media-video@gentoo.org</email> + </maintainer> + <use> + <flag name="bl">Blinkenlights video output</flag> + <flag name="bluray">Enable playback of Blu-ray filesystems</flag> + <flag name="bs2b">Enable Bauer stereophonic-to-binaural headphone filter</flag> + <flag name="cdio">Use libcdio for CD support (instead of cdparanoia)</flag> + <flag name="cdparanoia">Enable cdparanoia (audio CD ripper) support</flag> + <flag name="cpudetection">Enables runtime CPU detection (useful for binpkgs, compatibility on other CPUs)</flag> + <flag name="dvdnav">Use forked libdvdnav, navigate menus in GUIs</flag> + <flag name="enca">Enables support for charset discovery and conversion</flag> + <flag name="faac">Use external faac library for AAC encoding</flag> + <flag name="faad">Use external faad library for AAC decoding</flag> + <flag name="libmpeg2">Build support for mpeg2 over media-libs/libmpeg2 rather than using ffmpeg.</flag> + <flag name="live">Enables live.com streaming media support</flag> + <flag name="md5sum">Enables md5sum video output</flag> + <flag name="mng">MNG input support</flag> + <flag name="network">Enables network streaming support</flag> + <flag name="osdmenu">Enables support for on-screen display (OSD) menus</flag> + <flag name="pnm">Add PNM video output option, to create PPM/PGM/PGMYUV images</flag> + <flag name="pvr">Enable Video4Linux2 MPEG PVR</flag> + <flag name="radio">Enable V4L2 radio interface and support</flag> + <flag name="rar">Enable Unique RAR File Library</flag> + <flag name="rtc">Enables usage of the linux real time clock. The alternative is software emulation of rtc</flag> + <flag name="rtmp">Enables RTMPDump Streaming Media support</flag> + <flag name="shm">Enable support for shm</flag> + <flag name="tga">Enables Targa video output</flag> + <flag name="toolame">Enable toolame MPEG-2 encoding</flag> + <flag name="tremor">Enable internal support for Vorbis</flag> + <flag name="twolame">Enable twolame MPEG-2 encoding</flag> + <flag name="vcd">Enables VCD support</flag> + <flag name="vidix">Support for vidix video output</flag> + <flag name="yuv4mpeg">Enables yuv4mpeg video output</flag> + <flag name="zoran">Enables ZR360[56]7/ZR36060 video output</flag> + </use> +</pkgmetadata> diff --git a/media-video/mplayer/mplayer-1.4-r1.ebuild b/media-video/mplayer/mplayer-1.4-r1.ebuild new file mode 100644 index 0000000..6724af6 --- /dev/null +++ b/media-video/mplayer/mplayer-1.4-r1.ebuild @@ -0,0 +1,609 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +EGIT_REPO_URI="https://git.ffmpeg.org/ffmpeg.git" +ESVN_REPO_URI="svn://svn.mplayerhq.hu/mplayer/trunk" +[[ ${PV} = *9999* ]] && SVN_ECLASS="subversion git-r3" + +inherit toolchain-funcs flag-o-matic ${SVN_ECLASS} + +IUSE="cpu_flags_x86_3dnow cpu_flags_x86_3dnowext a52 aalib +alsa altivec aqua bidi bl bluray +bs2b cddb +cdio cdparanoia cpudetection debug dga +doc dts dv dvb +dvd +dvdnav +enca +encode faac faad fbcon +ftp ggi gsm +iconv ipv6 jack joystick jpeg kernel_linux ladspa ++libass libcaca libmpeg2 lirc live lzo mad md5sum cpu_flags_x86_mmx cpu_flags_x86_mmxext mng mp3 nas ++network openal opengl +osdmenu oss png pnm pulseaudio pvr +radio rar rtc rtmp samba selinux +shm sdl speex cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_ssse3 +tga theora tremor +truetype toolame twolame +unicode v4l vcd vdpau vidix +vorbis +X x264 xinerama +xscreensaver +xv xvid yuv4mpeg zoran" + +VIDEO_CARDS="mga" +for x in ${VIDEO_CARDS}; do + IUSE+=" video_cards_${x}" +done + +FONT_URI=" + mirror://mplayer/releases/fonts/font-arial-iso-8859-1.tar.bz2 + mirror://mplayer/releases/fonts/font-arial-iso-8859-2.tar.bz2 + mirror://mplayer/releases/fonts/font-arial-cp1250.tar.bz2 +" +if [[ ${PV} == *9999* ]]; then + RELEASE_URI="" +elif [ "${PV%_rc*}" = "${PV}" -a "${PV%_pre*}" = "${PV}" ]; then + MY_P="MPlayer-${PV}" + S="${WORKDIR}/${MY_P}" + RELEASE_URI="mirror://mplayer/releases/${MY_P}.tar.xz" +else + RELEASE_URI="mirror://gentoo/${P}.tar.xz" +fi +SRC_URI="${RELEASE_URI} + !truetype? ( ${FONT_URI} )" + +DESCRIPTION="Media Player for Linux" +HOMEPAGE="http://www.mplayerhq.hu/" + +FONT_RDEPS=" + virtual/ttf-fonts + media-libs/fontconfig + >=media-libs/freetype-2.2.1:2 +" +X_RDEPS=" + x11-libs/libXext + x11-libs/libXxf86vm +" +# Rar: althrought -gpl version is nice, it cant do most functions normal rars can +# nemesi? ( net-libs/libnemesi ) +# mplayer relies on private APIs in giflib that have been removed: +# https://sourceforge.net/p/giflib/bugs/132/ +RDEPEND+=" + sys-libs/ncurses:0= + app-arch/bzip2 + sys-libs/zlib + >=media-video/ffmpeg-4.0:0=[vdpau?] + a52? ( media-libs/a52dec ) + aalib? ( media-libs/aalib ) + alsa? ( media-libs/alsa-lib ) + bidi? ( dev-libs/fribidi ) + bluray? ( >=media-libs/libbluray-0.2.1:= ) + bs2b? ( media-libs/libbs2b ) + cdio? ( dev-libs/libcdio:0= dev-libs/libcdio-paranoia ) + cdparanoia? ( !cdio? ( media-sound/cdparanoia ) ) + dga? ( x11-libs/libXxf86dga ) + dts? ( media-libs/libdca ) + dv? ( media-libs/libdv ) + dvd? ( >=media-libs/libdvdread-4.1.3:0= ) + dvdnav? ( >=media-libs/libdvdnav-4.1.3:0= ) + encode? ( + !twolame? ( toolame? ( media-sound/toolame ) ) + twolame? ( media-sound/twolame ) + faac? ( media-libs/faac ) + mp3? ( media-sound/lame ) + x264? ( >=media-libs/x264-0.0.20100423:= ) + xvid? ( media-libs/xvid ) + ) + enca? ( app-i18n/enca ) + faad? ( media-libs/faad2 ) + ggi? ( media-libs/libggi media-libs/libggiwmh ) + gsm? ( media-sound/gsm ) + iconv? ( virtual/libiconv ) + jack? ( virtual/jack ) + jpeg? ( virtual/jpeg:0 ) + ladspa? ( media-libs/ladspa-sdk ) + libass? ( >=media-libs/libass-0.9.10:= ) + libcaca? ( media-libs/libcaca ) + libmpeg2? ( media-libs/libmpeg2 ) + lirc? ( app-misc/lirc ) + live? ( media-plugins/live ) + lzo? ( >=dev-libs/lzo-2 ) + mad? ( media-libs/libmad ) + mng? ( media-libs/libmng:= ) + mp3? ( media-sound/mpg123 ) + nas? ( media-libs/nas ) + openal? ( media-libs/openal ) + opengl? ( virtual/opengl ) + png? ( media-libs/libpng:0= ) + pnm? ( media-libs/netpbm ) + pulseaudio? ( media-sound/pulseaudio ) + rar? ( + || ( + app-arch/unrar + app-arch/rar + ) + ) + rtmp? ( media-video/rtmpdump ) + samba? ( net-fs/samba ) + sdl? ( media-libs/libsdl ) + speex? ( media-libs/speex ) + theora? ( media-libs/libtheora[encode?] ) + tremor? ( media-libs/tremor ) + truetype? ( ${FONT_RDEPS} ) + vdpau? ( x11-libs/libvdpau ) + vorbis? ( !tremor? ( media-libs/libvorbis ) ) + X? ( ${X_RDEPS} ) + xinerama? ( x11-libs/libXinerama ) + xscreensaver? ( x11-libs/libXScrnSaver ) + xv? ( x11-libs/libXv ) +" + +ASM_DEP="dev-lang/yasm" +DEPEND="${RDEPEND} + virtual/pkgconfig + dga? ( x11-base/xorg-proto ) + dvb? ( virtual/linuxtv-dvb-headers ) + X? ( x11-base/xorg-proto ) + xinerama? ( x11-base/xorg-proto ) + xscreensaver? ( x11-base/xorg-proto ) + amd64? ( ${ASM_DEP} ) + doc? ( + dev-libs/libxslt app-text/docbook-xml-dtd + app-text/docbook-xsl-stylesheets + ) + x86? ( ${ASM_DEP} ) + x86-fbsd? ( ${ASM_DEP} ) +" +RDEPEND+=" + selinux? ( sec-policy/selinux-mplayer ) +" + +SLOT="0" +LICENSE="GPL-2" +if [[ ${PV} != *9999* ]]; then + KEYWORDS="~alpha amd64 arm ~hppa ~ia64 ppc ppc64 ~sparc x86" +fi + +# faac codecs are nonfree +# libcdio support: prefer libcdio over cdparanoia and don't check for cddb w/cdio +# dvd navigation requires dvd read support +# ass and freetype font require iconv and ass requires freetype fonts +# unicode transformations are usefull only with iconv +# radio requires oss or alsa backend +REQUIRED_USE=" + dga? ( X ) + dvdnav? ( dvd ) + enca? ( iconv ) + ggi? ( X ) + libass? ( truetype ) + opengl? ( X ) + osdmenu? ( X ) + truetype? ( iconv ) + vdpau? ( X ) + vidix? ( X ) + xinerama? ( X ) + xscreensaver? ( X ) + xv? ( X )" +RESTRICT="faac? ( bindist )" + +pkg_setup() { + if [[ ${PV} == *9999* ]]; then + elog + elog "This is a live ebuild which installs the latest from upstream's" + elog "subversion repository, and is unsupported by Gentoo." + elog "Everything but bugs in the ebuild itself will be ignored." + elog + fi + + if use cpudetection; then + ewarn + ewarn "You've enabled the cpudetection flag. This feature is" + ewarn "included mainly for people who want to use the same" + ewarn "binary on another system with a different CPU architecture." + ewarn "MPlayer will already detect your CPU settings by default at" + ewarn "buildtime; this flag is used for runtime detection." + ewarn "You won't need this turned on if you are only building" + ewarn "mplayer for this system. Also, if your compile fails, try" + ewarn "disabling this use flag." + fi +} + +src_unpack() { + if [[ ${PV} = *9999* ]]; then + subversion_src_unpack + cd "${WORKDIR}" + rm -rf "${WORKDIR}/${P}/ffmpeg/" + ( EGIT_CHECKOUT_DIR="${WORKDIR}/${P}/ffmpeg/" git-r3_src_unpack ) + else + unpack ${A} + fi + + if [[ ${PV} = *9999* ]] || [[ "${PV%_rc*}" = "${PV}" ]]; then + cd "${S}" + cp "${FILESDIR}/dump_ffmpeg.sh" . || die + chmod +x dump_ffmpeg.sh + ./dump_ffmpeg.sh || die + fi + + if ! use truetype; then + unpack font-arial-iso-8859-1.tar.bz2 \ + font-arial-iso-8859-2.tar.bz2 \ + font-arial-cp1250.tar.bz2 + fi +} + +src_prepare() { + default + + local svf=snapshot_version + if [[ ${PV} = *9999* ]]; then + # Set SVN version manually + subversion_wc_info + printf "${ESVN_WC_REVISION}" > $svf + else + eapply "${FILESDIR}"/${PN}-1.3-CVE-2016-4352.patch + fi + eapply "${FILESDIR}"/ffmpeg44.patch + if [ ! -f VERSION ] ; then + [ -f "$svf" ] || die "Missing ${svf}. Did you generate your snapshot with prepare_mplayer.sh?" + local sv=$(<$svf) + printf "SVN-r${sv} (Gentoo)" > VERSION + fi + + # fix path to bash executable in configure scripts + sed -i -e "1c\#!${EPREFIX}/bin/bash" configure version.sh || die + + # Use sane default for >=virtual/udev-197 + sed -i -e '/default_dvd_device/s:/dev/dvd:/dev/cdrom:' configure || die + + # Patch the configure script for the RISC-V architecture + epatch "${FILESDIR}/configure-riscv.patch" +} + +src_configure() { + local myconf="" + local uses i + + # set LINGUAS + [[ -n $LINGUAS ]] && LINGUAS="${LINGUAS/da/dk}" + [[ -n $LINGUAS ]] && LINGUAS="${LINGUAS/zh/zh_CN}" #482968 + + # mplayer ebuild uses "use foo || --disable-foo" to forcibly disable + # compilation in almost every situation. The reason for this is + # because if --enable is used, it will force the build of that option, + # regardless of whether the dependency is available or not. + + ################### + #Optional features# + ################### + # disable svga since we don't want it + # disable arts since we don't have kde3 + # always disable internal ass + # disable opus and ilbc since it only controls support in internal + # ffmpeg which we do not use + myconf+=" + --disable-arts + --disable-ass-internal + --disable-directfb + --disable-kai + --disable-libilbc + --disable-libnut + --disable-libopus + --disable-svga --disable-svgalib_helper + --disable-xvmc + $(use_enable network networking) + $(use_enable joystick) + " + uses="bl bluray enca ftp rtc vcd" # nemesi <- not working with in-tree ebuild + myconf+=" --disable-nemesi" # nemesi automagic disable + for i in ${uses}; do + use ${i} || myconf+=" --disable-${i}" + done + use bidi || myconf+=" --disable-fribidi" + use ipv6 || myconf+=" --disable-inet6" + use libass || myconf+=" --disable-ass" + use rar || myconf+=" --disable-unrarexec" + use samba || myconf+=" --disable-smb" + use lirc || myconf+=" --disable-lirc --disable-lircc --disable-apple-ir" + + # libcdio support: prefer libcdio over cdparanoia + # don't check for cddb w/cdio + if use cdio; then + myconf+=" --disable-cdparanoia" + else + myconf+=" --disable-libcdio" + use cdparanoia || myconf+=" --disable-cdparanoia" + use cddb || myconf+=" --disable-cddb" + fi + + ################################ + # DVD read, navigation support # + ################################ + # + # dvdread - accessing a DVD + # dvdnav - navigation of menus + use dvd || myconf+=" --disable-dvdread" + use dvdnav || myconf+=" --disable-dvdnav" + + ############# + # Subtitles # + ############# + # + # SRT/ASS/SSA (subtitles) requires freetype support + # freetype support requires iconv + # iconv optionally can use unicode + use truetype || myconf+=" --disable-freetype" + use iconv || myconf+=" --disable-iconv --charset=noconv" + use iconv && use unicode && myconf+=" --charset=UTF-8" + + ##################################### + # DVB / Video4Linux / Radio support # + ##################################### + myconf+=" --disable-tv-bsdbt848" + # broken upstream, won't work with recent kernels + myconf+=" --disable-ivtv" + # gone since linux-headers-2.6.38 + myconf+=" --disable-tv-v4l1" + if { use dvb || use v4l || use pvr || use radio; }; then + u |