forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
media-libs/mlt: Fix assignment from incompatible pointer type
Closes: https://bugs.gentoo.org/936747 Signed-off-by: Brahmajit Das <[email protected]> Closes: gentoo#37746 Signed-off-by: Andreas Sturmlechner <[email protected]>
- Loading branch information
Showing
2 changed files
with
231 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
https://github.com/mltframework/mlt/pull/1009 | ||
From: Brahmajit Das <[email protected]> | ||
Date: Sat, 27 Jul 2024 14:51:47 +0000 | ||
Subject: [PATCH 1/1] Fix building on musl libc | ||
|
||
Not every Linux distribution uses GLibc, hence the code under | ||
``` | ||
\#if defined(__linux__) || defined(__GLIBC__) | ||
``` | ||
is not evaluated properly on non GLibc Linux distributions resulting in | ||
build errors such as: | ||
|
||
``` | ||
/var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/mlt_properties.c: In function 'mlt_properties_set_lcnumeric': | ||
/var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/mlt_properties.c:154:22: error: assignment to 'mlt_locale_t' {aka 'struct __locale_struct *'} from incompatible pointer type 'char *' [-Wincompatible-pointer-types] | ||
154 | list->locale = strdup(locale); | ||
| ^ | ||
/var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/mlt_properties.c: In function 'mlt_properties_get_lcnumeric': | ||
/var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/mlt_properties.c:186:16: error: assignment to 'const char *' from incompatible pointer type 'mlt_locale_t' {aka 'struct __locale_struct *'} [-Wincompatible-pointer-types] | ||
186 | result = list->locale; | ||
| ^ | ||
[11/173] /usr/bin/x86_64-pc-linux-musl-gcc -DPREFIX_DATA=\"/usr/share/mlt-7\" -DPREFIX_LIB=\"/usr/lib/mlt-7\" -Dmlt_EXPORTS -I/var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/.. -O2 -march=x86-64 -pipe -pipe -frecord-gcc-switches -fno-diagnostics-color -fmessage-length=0 -std=gnu11 -fPIC -mmmx -msse -msse2 -MD -MT src/framework/CMakeFiles/mlt.dir/mlt_property.c.o -MF src/framework/CMakeFiles/mlt.dir/mlt_property.c.o.d -o src/framework/CMakeFiles/mlt.dir/mlt_property.c.o -c /var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/mlt_property.c | ||
FAILED: src/framework/CMakeFiles/mlt.dir/mlt_property.c.o | ||
/usr/bin/x86_64-pc-linux-musl-gcc -DPREFIX_DATA=\"/usr/share/mlt-7\" -DPREFIX_LIB=\"/usr/lib/mlt-7\" -Dmlt_EXPORTS -I/var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/.. -O2 -march=x86-64 -pipe -pipe -frecord-gcc-switches -fno-diagnostics-color -fmessage-length=0 -std=gnu11 -fPIC -mmmx -msse -msse2 -MD -MT src/framework/CMakeFiles/mlt.dir/mlt_property.c.o -MF src/framework/CMakeFiles/mlt.dir/mlt_property.c.o.d -o src/framework/CMakeFiles/mlt.dir/mlt_property.c.o -c /var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/mlt_property.c | ||
/var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/mlt_property.c: In function 'time_clock_to_frames': | ||
/var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/mlt_property.c:331:31: error: passing argument 2 of 'setlocale' from incompatible pointer type [-Wincompatible-pointer-types] | ||
331 | setlocale(LC_NUMERIC, locale); | ||
| ^~~~~~ | ||
| | | ||
| mlt_locale_t {aka struct __locale_struct *} | ||
In file included from /var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/mlt_property.h:34, | ||
from /var/tmp/portage/media-libs/mlt-7.24.0/work/mlt-7.24.0/src/framework/mlt_property.c:28: | ||
/usr/include/locale.h:55:23: note: expected 'const char *' but argument is of type 'mlt_locale_t' {aka 'struct __locale_struct *'} | ||
55 | char *setlocale (int, const char *); | ||
``` | ||
|
||
Reported on Gentoo Linux with musl libc. | ||
Please refer bug: https://bugs.gentoo.org/936747 for more details. | ||
|
||
Signed-off-by: Brahmajit Das <[email protected]> | ||
--- a/src/framework/mlt_property.h | ||
+++ b/src/framework/mlt_property.h | ||
@@ -30,7 +30,7 @@ | ||
#include <sys/param.h> | ||
#endif | ||
|
||
-#if defined(__linux__) || defined(__GLIBC__) | ||
+#if defined(__GLIBC__) | ||
#include <locale.h> | ||
typedef locale_t mlt_locale_t; | ||
#elif defined(__APPLE__) || (defined(__FreeBSD_version) && __FreeBSD_version >= 900506) | ||
-- | ||
2.45.2 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,177 @@ | ||
# Copyright 1999-2024 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=8 | ||
|
||
PYTHON_COMPAT=( python3_{10..12} ) | ||
inherit python-single-r1 cmake flag-o-matic | ||
|
||
DESCRIPTION="Open source multimedia framework for television broadcasting" | ||
HOMEPAGE="https://www.mltframework.org/" | ||
SRC_URI="https://github.com/mltframework/${PN}/releases/download/v${PV}/${P}.tar.gz" | ||
|
||
LICENSE="GPL-3" | ||
SLOT="0/7" | ||
KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux" | ||
IUSE="debug ffmpeg frei0r gtk jack libsamplerate opencv opengl python qt5 qt6 rtaudio rubberband sdl test vdpau vidstab xine xml" | ||
|
||
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" | ||
|
||
# Needs unpackaged 'kwalify' | ||
RESTRICT="test" | ||
|
||
# rtaudio will use OSS on non linux OSes | ||
# Qt already needs FFTW/PLUS so let's just always have it on to ensure | ||
# MLT is useful: bug #603168. | ||
DEPEND=" | ||
>=media-libs/libebur128-1.2.2:= | ||
sci-libs/fftw:3.0= | ||
ffmpeg? ( media-video/ffmpeg:0=[vdpau?] ) | ||
frei0r? ( media-plugins/frei0r-plugins ) | ||
gtk? ( | ||
media-libs/libexif | ||
x11-libs/pango | ||
) | ||
jack? ( | ||
>=dev-libs/libxml2-2.5 | ||
media-libs/ladspa-sdk | ||
virtual/jack | ||
) | ||
libsamplerate? ( >=media-libs/libsamplerate-0.1.2 ) | ||
opencv? ( >=media-libs/opencv-4.5.1:=[contrib] ) | ||
opengl? ( | ||
media-libs/libglvnd | ||
media-video/movit | ||
) | ||
python? ( ${PYTHON_DEPS} ) | ||
qt5? ( | ||
dev-qt/qtcore:5 | ||
dev-qt/qtgui:5 | ||
dev-qt/qtnetwork:5 | ||
dev-qt/qtsvg:5 | ||
dev-qt/qtwidgets:5 | ||
dev-qt/qtxml:5 | ||
media-libs/libexif | ||
x11-libs/libX11 | ||
) | ||
qt6? ( | ||
dev-qt/qt5compat:6 | ||
dev-qt/qtbase:6[gui,network,opengl,widgets,xml] | ||
dev-qt/qtsvg:6 | ||
media-libs/libexif | ||
x11-libs/libX11 | ||
) | ||
rtaudio? ( | ||
>=media-libs/rtaudio-4.1.2 | ||
kernel_linux? ( media-libs/alsa-lib ) | ||
) | ||
rubberband? ( media-libs/rubberband ) | ||
sdl? ( | ||
media-libs/libsdl2[X,opengl,video] | ||
media-libs/sdl2-image | ||
) | ||
vidstab? ( media-libs/vidstab ) | ||
xine? ( >=media-libs/xine-lib-1.1.2_pre20060328-r7 ) | ||
xml? ( >=dev-libs/libxml2-2.5 ) | ||
" | ||
# java? ( >=virtual/jre-1.8:* ) | ||
# perl? ( dev-lang/perl ) | ||
# php? ( dev-lang/php ) | ||
# ruby? ( ${RUBY_DEPS} ) | ||
# sox? ( media-sound/sox ) | ||
# tcl? ( dev-lang/tcl:0= ) | ||
RDEPEND="${DEPEND}" | ||
BDEPEND=" | ||
virtual/pkgconfig | ||
python? ( >=dev-lang/swig-2.0 ) | ||
" | ||
|
||
DOCS=( AUTHORS NEWS README.md ) | ||
|
||
PATCHES=( | ||
# downstream | ||
"${FILESDIR}"/${PN}-6.10.0-swig-underlinking.patch | ||
"${FILESDIR}"/${PN}-6.22.1-no_lua_bdepend.patch | ||
"${FILESDIR}"/${PN}-7.0.1-cmake-symlink.patch | ||
"${FILESDIR}"/${PN}-7.24.0-musl-build-fix.patch | ||
) | ||
|
||
pkg_setup() { | ||
use python && python-single-r1_pkg_setup | ||
} | ||
|
||
src_prepare() { | ||
# Respect CFLAGS LDFLAGS when building shared libraries. Bug #308873 | ||
if use python; then | ||
sed -i "/mlt.so/s/ -lmlt++ /& ${CFLAGS} ${LDFLAGS} /" src/swig/python/build || die | ||
python_fix_shebang src/swig/python | ||
fi | ||
|
||
cmake_src_prepare | ||
} | ||
|
||
src_configure() { | ||
# Workaround for bug #919981 | ||
append-ldflags $(test-flags-CCLD -Wl,--undefined-version) | ||
|
||
local mycmakeargs=( | ||
-DCMAKE_SKIP_RPATH=ON | ||
-DCLANG_FORMAT=OFF | ||
-DGPL=ON | ||
-DGPL3=ON | ||
-DBUILD_TESTING=$(usex test) | ||
-DMOD_KDENLIVE=ON | ||
-DMOD_SDL1=OFF | ||
-DMOD_SDL2=$(usex sdl) | ||
-DMOD_AVFORMAT=$(usex ffmpeg) | ||
-DMOD_PLUS=ON | ||
-DMOD_FREI0R=$(usex frei0r) | ||
-DMOD_GDK=$(usex gtk) | ||
-DMOD_JACKRACK=$(usex jack) | ||
-DMOD_RESAMPLE=$(usex libsamplerate) | ||
-DMOD_OPENCV=$(usex opencv) | ||
-DMOD_SPATIALAUDIO=OFF # TODO: package libspatialaudio | ||
-DMOD_MOVIT=$(usex opengl) | ||
-DMOD_QT=$(usex qt5) | ||
-DMOD_GLAXNIMATE=$(usex qt5) | ||
-DMOD_QT6=$(usex qt6) | ||
-DMOD_GLAXNIMATE_QT6=$(usex qt6) | ||
-DMOD_RTAUDIO=$(usex rtaudio) | ||
-DMOD_RUBBERBAND=$(usex rubberband) | ||
-DMOD_VIDSTAB=$(usex vidstab) | ||
-DMOD_XINE=$(usex xine) | ||
-DMOD_XML=$(usex xml) | ||
-DMOD_SOX=OFF | ||
) | ||
|
||
# TODO: rework upstream CMake to allow controlling MMX/SSE/SSE2 | ||
# TODO: add swig language bindings? | ||
# see also https://www.mltframework.org/twiki/bin/view/MLT/ExtremeMakeover | ||
|
||
if use python; then | ||
mycmakeargs+=( | ||
-DSWIG_PYTHON=ON | ||
-DPython3_EXECUTABLE="${PYTHON}" | ||
) | ||
fi | ||
|
||
cmake_src_configure | ||
} | ||
|
||
src_install() { | ||
cmake_src_install | ||
|
||
insinto /usr/share/${PN} | ||
doins -r demo | ||
|
||
# | ||
# Install SWIG bindings | ||
# | ||
|
||
docinto swig | ||
|
||
if use python; then | ||
dodoc "${S}"/src/swig/python/play.py | ||
python_optimize | ||
fi | ||
} |