From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 3FFEF15808B for ; Tue, 1 Mar 2022 08:02:11 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 31EF2E07ED; Tue, 1 Mar 2022 08:02:10 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id B53BEE07ED for ; Tue, 1 Mar 2022 08:02:09 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 88D27343160 for ; Tue, 1 Mar 2022 08:02:08 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id DCC2E2B0 for ; Tue, 1 Mar 2022 08:02:06 +0000 (UTC) From: "Lars Wendler" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Lars Wendler" Message-ID: <1646121719.219f791f4599cf5ca3668cbbd9f5c95b20dac98c.polynomial-c@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: games-emulation/mgba/, games-emulation/mgba/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: games-emulation/mgba/files/mgba-0.9.3-ffmpeg5.patch games-emulation/mgba/mgba-0.9.3-r1.ebuild X-VCS-Directories: games-emulation/mgba/ games-emulation/mgba/files/ X-VCS-Committer: polynomial-c X-VCS-Committer-Name: Lars Wendler X-VCS-Revision: 219f791f4599cf5ca3668cbbd9f5c95b20dac98c X-VCS-Branch: master Date: Tue, 1 Mar 2022 08:02:06 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: cd779f2a-abbf-48f7-8be5-b54d9683e063 X-Archives-Hash: 4b8f43a514a6c1812b2bf07ea392ae8f commit: 219f791f4599cf5ca3668cbbd9f5c95b20dac98c Author: Lars Wendler gentoo org> AuthorDate: Tue Mar 1 08:01:28 2022 +0000 Commit: Lars Wendler gentoo org> CommitDate: Tue Mar 1 08:01:59 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=219f791f games-emulation/mgba: Revbump to fix compilation against ffmpeg-5 Closes: https://bugs.gentoo.org/834374 Signed-off-by: Lars Wendler gentoo.org> .../mgba/files/mgba-0.9.3-ffmpeg5.patch | 117 ++++++++++++++++++ games-emulation/mgba/mgba-0.9.3-r1.ebuild | 132 +++++++++++++++++++++ 2 files changed, 249 insertions(+) diff --git a/games-emulation/mgba/files/mgba-0.9.3-ffmpeg5.patch b/games-emulation/mgba/files/mgba-0.9.3-ffmpeg5.patch new file mode 100644 index 000000000000..cf4f6f56a2d4 --- /dev/null +++ b/games-emulation/mgba/files/mgba-0.9.3-ffmpeg5.patch @@ -0,0 +1,117 @@ +From cdc753516798882a805db1d2042dbce8313382bf Mon Sep 17 00:00:00 2001 +From: Ryan Tandy +Date: Thu, 3 Feb 2022 19:02:52 -0800 +Subject: [PATCH] FFmpeg: Support FFmpeg 5.0 + +--- + src/feature/ffmpeg/ffmpeg-decoder.c | 3 ++- + src/feature/ffmpeg/ffmpeg-encoder.c | 25 ++++++++++++++----------- + 2 files changed, 16 insertions(+), 12 deletions(-) + +diff --git a/src/feature/ffmpeg/ffmpeg-decoder.c b/src/feature/ffmpeg/ffmpeg-decoder.c +index c3bb6d1c5c..daa47fbf2c 100644 +--- a/src/feature/ffmpeg/ffmpeg-decoder.c ++++ b/src/feature/ffmpeg/ffmpeg-decoder.c +@@ -5,6 +5,7 @@ + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + #include "ffmpeg-decoder.h" + ++#include + #include + + void FFmpegDecoderInit(struct FFmpegDecoder* decoder) { +@@ -38,7 +39,7 @@ bool FFmpegDecoderOpen(struct FFmpegDecoder* decoder, const char* infile) { + #else + enum AVMediaType type = decoder->context->streams[i]->codec->codec_type; + #endif +- struct AVCodec* codec; ++ const struct AVCodec* codec; + struct AVCodecContext* context = NULL; + if (type == AVMEDIA_TYPE_VIDEO && decoder->videoStream < 0) { + decoder->video = avcodec_alloc_context3(NULL); +diff --git a/src/feature/ffmpeg/ffmpeg-encoder.c b/src/feature/ffmpeg/ffmpeg-encoder.c +index ad76ca57b2..be6bd3af5e 100644 +--- a/src/feature/ffmpeg/ffmpeg-encoder.c ++++ b/src/feature/ffmpeg/ffmpeg-encoder.c +@@ -12,6 +12,9 @@ + + #include + #include ++#if LIBAVCODEC_VERSION_MAJOR >= 58 ++#include ++#endif + + #include + #include +@@ -121,7 +124,7 @@ bool FFmpegEncoderSetAudio(struct FFmpegEncoder* encoder, const char* acodec, un + return true; + } + +- AVCodec* codec = avcodec_find_encoder_by_name(acodec); ++ const AVCodec* codec = avcodec_find_encoder_by_name(acodec); + if (!codec) { + return false; + } +@@ -193,7 +196,7 @@ bool FFmpegEncoderSetVideo(struct FFmpegEncoder* encoder, const char* vcodec, in + return true; + } + +- AVCodec* codec = avcodec_find_encoder_by_name(vcodec); ++ const AVCodec* codec = avcodec_find_encoder_by_name(vcodec); + if (!codec) { + return false; + } +@@ -213,7 +216,7 @@ bool FFmpegEncoderSetVideo(struct FFmpegEncoder* encoder, const char* vcodec, in + if (encoder->pixFormat == AV_PIX_FMT_NONE) { + return false; + } +- if (vbr < 0 && !av_opt_find(&codec->priv_class, "crf", NULL, 0, 0)) { ++ if (vbr < 0 && !av_opt_find((void*) &codec->priv_class, "crf", NULL, 0, 0)) { + return false; + } + encoder->videoCodec = vcodec; +@@ -223,7 +226,7 @@ bool FFmpegEncoderSetVideo(struct FFmpegEncoder* encoder, const char* vcodec, in + } + + bool FFmpegEncoderSetContainer(struct FFmpegEncoder* encoder, const char* container) { +- AVOutputFormat* oformat = av_guess_format(container, 0, 0); ++ const AVOutputFormat* oformat = av_guess_format(container, 0, 0); + if (!oformat) { + return false; + } +@@ -241,9 +244,9 @@ void FFmpegEncoderSetLooping(struct FFmpegEncoder* encoder, bool loop) { + } + + bool FFmpegEncoderVerifyContainer(struct FFmpegEncoder* encoder) { +- AVOutputFormat* oformat = av_guess_format(encoder->containerFormat, 0, 0); +- AVCodec* acodec = avcodec_find_encoder_by_name(encoder->audioCodec); +- AVCodec* vcodec = avcodec_find_encoder_by_name(encoder->videoCodec); ++ const AVOutputFormat* oformat = av_guess_format(encoder->containerFormat, 0, 0); ++ const AVCodec* acodec = avcodec_find_encoder_by_name(encoder->audioCodec); ++ const AVCodec* vcodec = avcodec_find_encoder_by_name(encoder->videoCodec); + if ((encoder->audioCodec && !acodec) || (encoder->videoCodec && !vcodec) || !oformat || (!acodec && !vcodec)) { + return false; + } +@@ -257,8 +260,8 @@ bool FFmpegEncoderVerifyContainer(struct FFmpegEncoder* encoder) { + } + + bool FFmpegEncoderOpen(struct FFmpegEncoder* encoder, const char* outfile) { +- AVCodec* acodec = avcodec_find_encoder_by_name(encoder->audioCodec); +- AVCodec* vcodec = avcodec_find_encoder_by_name(encoder->videoCodec); ++ const AVCodec* acodec = avcodec_find_encoder_by_name(encoder->audioCodec); ++ const AVCodec* vcodec = avcodec_find_encoder_by_name(encoder->videoCodec); + if ((encoder->audioCodec && !acodec) || (encoder->videoCodec && !vcodec) || !FFmpegEncoderVerifyContainer(encoder)) { + return false; + } +@@ -272,9 +275,9 @@ bool FFmpegEncoderOpen(struct FFmpegEncoder* encoder, const char* outfile) { + encoder->currentVideoFrame = 0; + encoder->skipResidue = 0; + +- AVOutputFormat* oformat = av_guess_format(encoder->containerFormat, 0, 0); ++ const AVOutputFormat* oformat = av_guess_format(encoder->containerFormat, 0, 0); + #ifndef USE_LIBAV +- avformat_alloc_output_context2(&encoder->context, oformat, 0, outfile); ++ avformat_alloc_output_context2(&encoder->context, (AVOutputFormat*) oformat, 0, outfile); + #else + encoder->context = avformat_alloc_context(); + strncpy(encoder->context->filename, outfile, sizeof(encoder->context->filename) - 1); diff --git a/games-emulation/mgba/mgba-0.9.3-r1.ebuild b/games-emulation/mgba/mgba-0.9.3-r1.ebuild new file mode 100644 index 000000000000..f2e1ddb6dd3b --- /dev/null +++ b/games-emulation/mgba/mgba-0.9.3-r1.ebuild @@ -0,0 +1,132 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake desktop xdg + +DESCRIPTION="Game Boy Advance emulator written in C" +HOMEPAGE="https://mgba.io" +if [[ "${PV}" == 9999 ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/mgba-emu/mgba.git" +else + MY_PV="${PV/_beta/-b}" + SRC_URI="https://github.com/${PN}-emu/${PN}/archive/${MY_PV}.tar.gz -> ${P}.tar.gz" + [[ "${PV}" == *_beta* ]] || \ + KEYWORDS="~amd64 ~arm64 ~x86" + S="${WORKDIR}/${PN}-${MY_PV}" +fi +LICENSE="MPL-2.0" +SLOT="0" +IUSE="debug discord elf ffmpeg gles2 gles3 opengl qt5 +sdl sqlite" +REQUIRED_USE="|| ( qt5 sdl ) + qt5? ( opengl )" + +RDEPEND=" + media-libs/libpng:0= + sys-libs/zlib[minizip] + debug? ( dev-libs/libedit ) + elf? ( dev-libs/elfutils ) + ffmpeg? ( media-video/ffmpeg:= ) + opengl? ( media-libs/libglvnd ) + qt5? ( + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtmultimedia:5 + dev-qt/qtwidgets:5 + opengl? ( dev-qt/qtopengl:5 ) + ) + sdl? ( media-libs/libsdl2[X,sound,joystick,video,opengl?] ) + sqlite? ( dev-db/sqlite:3 ) +" +DEPEND="${RDEPEND} + gles2? ( media-libs/libglvnd ) + gles3? ( media-libs/libglvnd ) +" + +PATCHES=( + "${FILESDIR}/${P}-ffmpeg5.patch" #834374 +) + +src_prepare() { + xdg_environment_reset + cmake_src_prepare + + # Get rid of any bundled stuff we don't want + local pkg + for pkg in libpng lzma sqlite3 zlib ; do + rm -r src/third-party/${pkg} || die + done +} + +src_configure() { + local mycmakeargs=( + -DCMAKE_SKIP_RPATH=ON + -DBUILD_GL="$(usex opengl)" + -DBUILD_GLES2="$(usex gles2)" + -DBUILD_GLES3="$(usex gles3)" + -DBUILD_PYTHON=OFF + -DBUILD_QT="$(usex qt5)" + -DBUILD_SDL="$(usex sdl)" + -DBUILD_SHARED=ON + # test suite fails to build (>=0.6.0) + -DBUILD_SUITE=OFF + -DBUILD_TEST=OFF + -DM_CORE_GB=ON + -DM_CORE_GBA=ON + -DUSE_DEBUGGERS="$(usex debug)" + -DUSE_DISCORD_RPC="$(usex discord)" + -DUSE_EDITLINE="$(usex debug)" + -DUSE_ELF="$(usex elf)" + -DUSE_EPOXY=OFF + -DUSE_FFMPEG="$(usex ffmpeg)" + -DUSE_GDB_STUB="$(usex debug)" + -DUSE_LIBZIP=OFF + -DUSE_LZMA=OFF + -DUSE_MINIZIP=ON + -DUSE_PNG=ON + -DUSE_SQLITE3="$(usex sqlite)" + -DUSE_ZLIB=ON + ) + cmake_src_configure +} + +src_compile() { + cmake_src_compile +} + +src_install() { + if use qt5 ; then + dobin ${BUILD_DIR}/qt/${PN}-qt + doman doc/${PN}-qt.6 + domenu res/${PN}-qt.desktop + for size in 16 24 32 48 64 96 128 256 ; do + newicon -s ${size} res/${PN}-${size}.png ${PN}.png + done + fi + if use sdl ; then + doman doc/${PN}.6 + newbin ${BUILD_DIR}/sdl/${PN} ${PN}-sdl + fi + + dolib.so ${BUILD_DIR}/lib${PN}.so* +} + +pkg_preinst() { + if use qt5 ; then + xdg_pkg_preinst + fi +} + +pkg_postinst() { + if use qt5 ; then + xdg_pkg_postinst + fi +} + +pkg_postrm() { + if use qt5 ; then + xdg_pkg_postrm + fi +}