public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: media-video/vlc/, media-video/vlc/files/
Date: Wed, 08 Jan 2025 08:22:06 +0000 (UTC)	[thread overview]
Message-ID: <1736324482.c299fc3514a283058ff66ac580e1d7d26bd968db.sam@gentoo> (raw)

commit:     c299fc3514a283058ff66ac580e1d7d26bd968db
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Jan  8 08:21:15 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jan  8 08:21:22 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c299fc35

media-video/vlc: fix parallel make issue w/ USE=vdpau

Thanks to Tom for finding the fixes.

Closes: https://bugs.gentoo.org/946178
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-video/vlc/files/vlc-3.0.2.1-vdpau.patch | 174 ++++++++++++++++++++++++++
 media-video/vlc/vlc-3.0.21-r1.ebuild          |   3 +-
 media-video/vlc/vlc-3.0.21-r2.ebuild          |   3 +-
 3 files changed, 178 insertions(+), 2 deletions(-)

diff --git a/media-video/vlc/files/vlc-3.0.2.1-vdpau.patch b/media-video/vlc/files/vlc-3.0.2.1-vdpau.patch
new file mode 100644
index 000000000000..884c1fcd1eb2
--- /dev/null
+++ b/media-video/vlc/files/vlc-3.0.2.1-vdpau.patch
@@ -0,0 +1,174 @@
+https://bugs.gentoo.org/946178
+https://code.videolan.org/videolan/vlc/-/issues/28374
+https://code.videolan.org/videolan/vlc/-/merge_requests/6454
+https://code.videolan.org/videolan/vlc/-/merge_requests/6496
+
+From 056d7349a559cb63b456505bb11c08a4910452aa Mon Sep 17 00:00:00 2001
+From: Alexandre Janniaux <ajanni@videolabs.io>
+Date: Sun, 1 Dec 2024 06:25:29 +0100
+Subject: [PATCH] Makefile.am: enforce pkglib dependency order for install
+
+During installation, no dependencies existed between the targets being
+installed and the targets being relinked against the installed version,
+which made the following race condition:
+
+    ../doltlibtool   --mode=install /usr/bin/install -c   libvlc_pipewire.la libvlc_pulse.la libvlc_vdpau.la libvlc_xcb_events.la '/builds/videolan/vlc/vlc-4.0.0-dev/_inst/lib/vlc'
+    libtool: install: (cd /builds/videolan/vlc/vlc-4.0.0-dev/_build/sub/modules; /bin/bash "/builds/videolan/vlc/vlc-4.0.0-dev/_build/sub/modules/../libtool"  --silent --tag CC --mode=relink gcc -g -O2 -pthread -Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond -Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros -pipe -Werror=missing-field-initializers -Werror=format -Werror=incompatible-pointer-types -Werror=restrict -Werror=int-conversion -Werror=implicit-int -Werror=return-mismatch -Werror=declaration-missing-parameter-type -fvisibility=hidden -fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range -funroll-loops -fstack-protector-strong -avoid-version -module -export-symbols-regex "^vlc_entry" -shrext .so -no-undefined ../compat/libcompa
 t.la ../src/libvlccore.la -Wl,-z,defs -o libvdpau_instance_plugin.la -rpath /builds/videolan/vlc/vlc-4.0.0-dev/_inst/lib/vlc/plugins/vdpau hw/vdpau/libvdpau_instance_plugin_la-device.lo libvlc_vdpau.la -lSM -lICE -lX11 -lanl )
+    libtool: install: /usr/bin/install -c .libs/libvlc_vdpau.so.0.0.0 /builds/videolan/vlc/vlc-4.0.0-dev/_inst/lib/vlc/libvlc_vdpau.so.0.0.0
+    /usr/bin/ld: cannot find -lvlc_vdpau: No such file or directory
+    libtool: install: (cd /builds/videolan/vlc/vlc-4.0.0-dev/_inst/lib/vlc && { ln -s -f libvlc_vdpau.so.0.0.0 libvlc_vdpau.so.0 || { rm -f libvlc_vdpau.so.0 && ln -s libvlc_vdpau.so.0.0.0 libvlc_vdpau.so.0; }; })
+    collect2: error: ld returned 1 exit status
+    libtool: install: (cd /builds/videolan/vlc/vlc-4.0.0-dev/_inst/lib/vlc && { ln -s -f libvlc_vdpau.so.0.0.0 libvlc_vdpau.so || { rm -f libvlc_vdpau.so && ln -s libvlc_vdpau.so.0.0.0 libvlc_vdpau.so; }; })
+    ----------------------------------------------------------------------
+    libtool:   error: error: relink 'libvdpau_instance_plugin.la' with the above command before installing it
+    libtool: install: /usr/bin/install -c .libs/libvlc_vdpau.lai /builds/videolan/vlc/vlc-4.0.0-dev/_inst/lib/vlc/libvlc_vdpau.la
+    make[6]: *** [Makefile:15527: install-vdpauLTLIBRARIES] Error 1
+
+Here, with the thread number, we have:
+ - (1) doltlibtool installing the pkglibs (install-exec-am).
+ - (2) in parallel, libtool relinking the vdpau instance plugin.
+ - (1) libtool starts to be called for "relinking" (which is only
+       installing there) with version 0.0.0.
+ - (2) libtool tried to run the linker but it failed because
+       libvlc_vdpau.so doesn't exist yet on the target prefix.
+ - (1) libtool .0.0.0 links to the major version shortcut .0 for
+       libvlc_vdpau.
+ - (1) libtool .0.0.0 links to the unversioned shortcut for
+       libvlc_vdpau.
+
+So the pkglibs were not installed before installing the plugins linking
+them and it was racy whether automake succeeded in installing vlc_vdpau
+before or not. This could apply to any pkglib being used from plugins.
+
+This patch ensure the pkglibs are installed before relinking the plugins
+for vpdau, same must be done for each other pkglib usage location.
+
+Note that install-vdpauLTLIBRARIES itself will install each target from
+vdpau_LTLIBRARIES serially in the order they are defined, so there would
+be no race inside the same LTLIBRARIES variables, but the different
+LTLIBRARIES variables are processed in parallel themselves.
+
+Fixes #28374
+---
+ modules/Makefile.am              | 1 +
+ modules/audio_output/Makefile.am | 3 +++
+ modules/hw/vdpau/Makefile.am     | 4 ++++
+ modules/video_output/Makefile.am | 3 +++
+ 4 files changed, 11 insertions(+)
+
+diff --git a/modules/Makefile.am b/modules/Makefile.am
+index d9940f95cbc8..3a41a6bbe456 100644
+--- a/modules/Makefile.am
++++ b/modules/Makefile.am
+@@ -1,3 +1,4 @@
++
+ noinst_LTLIBRARIES =
+ check_LTLIBRARIES =
+ pkglib_LTLIBRARIES =
+diff --git a/modules/audio_output/Makefile.am b/modules/audio_output/Makefile.am
+index 4c7957cdd153..8d48003e20b5 100644
+--- a/modules/audio_output/Makefile.am
++++ b/modules/audio_output/Makefile.am
+@@ -1,5 +1,8 @@
+ aoutdir = $(pluginsdir)/audio_output
+ aout_LTLIBRARIES =
++# Install the pkglib/pkglibexec first before relinking the modules.
++# This ensures libtool re-linking is not racy.
++install-aoutLTLIBRARIES: install-pkglibLTLIBRARIES
+ 
+ libvlc_android_audioformat_jni_la_SOURCES = \
+ 	audio_output/android/audioformat_jni.c \
+diff --git a/modules/hw/vdpau/Makefile.am b/modules/hw/vdpau/Makefile.am
+index ef3601209314..f195f712310b 100644
+--- a/modules/hw/vdpau/Makefile.am
++++ b/modules/hw/vdpau/Makefile.am
+@@ -1,4 +1,8 @@
+ vdpaudir = $(pluginsdir)/vdpau
++# Install the pkglib/pkglibexec first before relinking the modules.
++# This ensures libtool re-linking is not racy.
++install-vpdauLTLIBRARIES: install-pkglibLTLIBRARIES
++
+ 
+ libvlc_vdpau_la_SOURCES = hw/vdpau/vlc_vdpau.c hw/vdpau/vlc_vdpau.h
+ libvlc_vdpau_la_CFLAGS = $(VDPAU_CFLAGS)
+diff --git a/modules/video_output/Makefile.am b/modules/video_output/Makefile.am
+index ad959bc45ed5..bcbb892c4c93 100644
+--- a/modules/video_output/Makefile.am
++++ b/modules/video_output/Makefile.am
+@@ -1,5 +1,8 @@
+ voutdir = $(pluginsdir)/video_output
+ vout_LTLIBRARIES =
++# Install the pkglib/pkglibexec first before relinking the modules.
++# This ensures libtool re-linking is not racy.
++install-voutLTLIBRARIES: install-pkglibLTLIBRARIES
+ 
+ EXTRA_DIST += video_output/README
+ 
+-- 
+GitLab
+
+From 0b9f3f836f1c678e6d101f62545a8edaba16dcd0 Mon Sep 17 00:00:00 2001
+From: Alexandre Janniaux <ajanni@videolabs.io>
+Date: Sun, 8 Dec 2024 22:43:37 +0100
+Subject: [PATCH] Makefile.am: fix installation regression
+
+Automake doesn't generate automatic rules when a rule already exist in
+the file, except if it cannot detect it. Adding the
+`install-fooLTLIBRARIES: install-pkglibLTLIBRARIES` rule for audio
+outputs, video outputs and vdpau broke the installation.
+
+Adding `$(install-fooLTLIBRARIES): install-pkglibLTLIBRARIES` also makes
+automake unhappy because of the variable name looking suspiciously close
+to the target it generates, so a version without the dash is used for
+the variable name in the rule. With this, the install target is
+preserved but the dependency also exists in the output.
+---
+ modules/audio_output/Makefile.am | 3 ++-
+ modules/hw/vdpau/Makefile.am     | 3 ++-
+ modules/video_output/Makefile.am | 3 ++-
+ 3 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/modules/audio_output/Makefile.am b/modules/audio_output/Makefile.am
+index 8d48003e20b..c045a892c10 100644
+--- a/modules/audio_output/Makefile.am
++++ b/modules/audio_output/Makefile.am
+@@ -2,7 +2,8 @@ aoutdir = $(pluginsdir)/audio_output
+ aout_LTLIBRARIES =
+ # Install the pkglib/pkglibexec first before relinking the modules.
+ # This ensures libtool re-linking is not racy.
+-install-aoutLTLIBRARIES: install-pkglibLTLIBRARIES
++installaoutLTLIBRARIES = install-aoutLTLIBRARIES
++$(installaoutLTLIBRARIES): install-pkglibLTLIBRARIES
+ 
+ libvlc_android_audioformat_jni_la_SOURCES = \
+ 	audio_output/android/audioformat_jni.c \
+diff --git a/modules/hw/vdpau/Makefile.am b/modules/hw/vdpau/Makefile.am
+index f195f712310..1abdfa21a9b 100644
+--- a/modules/hw/vdpau/Makefile.am
++++ b/modules/hw/vdpau/Makefile.am
+@@ -1,7 +1,8 @@
+ vdpaudir = $(pluginsdir)/vdpau
+ # Install the pkglib/pkglibexec first before relinking the modules.
+ # This ensures libtool re-linking is not racy.
+-install-vpdauLTLIBRARIES: install-pkglibLTLIBRARIES
++installvpdauLTLIBRARIES = install-vdpauLTLIBRARIES
++$(installvpdauLTLIBRARIES): install-pkglibLTLIBRARIES
+ 
+ 
+ libvlc_vdpau_la_SOURCES = hw/vdpau/vlc_vdpau.c hw/vdpau/vlc_vdpau.h
+diff --git a/modules/video_output/Makefile.am b/modules/video_output/Makefile.am
+index bcbb892c4c9..844b0dd01c8 100644
+--- a/modules/video_output/Makefile.am
++++ b/modules/video_output/Makefile.am
+@@ -2,7 +2,8 @@ voutdir = $(pluginsdir)/video_output
+ vout_LTLIBRARIES =
+ # Install the pkglib/pkglibexec first before relinking the modules.
+ # This ensures libtool re-linking is not racy.
+-install-voutLTLIBRARIES: install-pkglibLTLIBRARIES
++installvoutLTLIBRARIES = install-voutLTLIBRARIES
++$(installvoutLTLIBRARIES): install-pkglibLTLIBRARIES
+ 
+ EXTRA_DIST += video_output/README
+ 
+-- 
+GitLab

diff --git a/media-video/vlc/vlc-3.0.21-r1.ebuild b/media-video/vlc/vlc-3.0.21-r1.ebuild
index 9ca438fed821..d34fc239251f 100644
--- a/media-video/vlc/vlc-3.0.21-r1.ebuild
+++ b/media-video/vlc/vlc-3.0.21-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2000-2024 Gentoo Authors
+# Copyright 2000-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -234,6 +234,7 @@ PATCHES=(
 	"${FILESDIR}"/${PN}-3.0.18-drop-minizip-dep.patch
 	"${FILESDIR}"/${PN}-3.0.21-freerdp-2.patch # bug 919296, 590164
 	"${FILESDIR}"/${PN}-3.0.21-vaapi-without-ffmpeg4.patch # bug 864721, thx Fedora
+	"${FILESDIR}"/${PN}-3.0.2.1-vdpau.patch # bug 946178
 )
 
 DOCS=( AUTHORS THANKS NEWS README doc/fortunes.txt )

diff --git a/media-video/vlc/vlc-3.0.21-r2.ebuild b/media-video/vlc/vlc-3.0.21-r2.ebuild
index c675966604da..cc8ff0f5e827 100644
--- a/media-video/vlc/vlc-3.0.21-r2.ebuild
+++ b/media-video/vlc/vlc-3.0.21-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2000-2024 Gentoo Authors
+# Copyright 2000-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -219,6 +219,7 @@ PATCHES=(
 	"${FILESDIR}"/${PN}-3.0.21-freerdp-2.patch # bug 919296, 590164
 	"${WORKDIR}"/${P}-taglib2 # bug 938946, in 3.0.x branch
 	"${FILESDIR}"/${PN}-3.0.21-vaapi-without-ffmpeg4.patch # bug 864721, thx Fedora
+	"${FILESDIR}"/${PN}-3.0.2.1-vdpau.patch # bug 946178
 )
 
 DOCS=( AUTHORS THANKS NEWS README doc/fortunes.txt )


             reply	other threads:[~2025-01-08  8:22 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-08  8:22 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-03-21 22:43 [gentoo-commits] repo/gentoo:master commit in: media-video/vlc/, media-video/vlc/files/ Andreas Sturmlechner
2025-02-12 22:43 Andreas Sturmlechner
2025-01-15 20:31 Andreas Sturmlechner
2024-10-04 17:37 Andreas Sturmlechner
2024-07-03 14:26 Ben Kohler
2024-03-17  4:02 Sam James
2023-05-27  2:17 Sam James
2023-05-13 22:52 Sam James
2021-11-07 15:41 Andreas Sturmlechner
2021-08-31 19:06 Pacho Ramos
2021-06-22 18:43 Sam James
2021-04-23  8:09 Sergei Trofimovich
2019-08-01 15:34 Andreas Sturmlechner
2019-03-10  9:34 Andreas Sturmlechner
2019-02-27 22:20 Thomas Raschbacher
2019-02-24 18:01 Andreas Sturmlechner
2018-11-08 12:29 Andreas Sturmlechner
2018-03-18 20:21 Andreas Sturmlechner
2017-12-09 13:52 Andreas Sturmlechner
2017-08-29 19:40 Andreas Sturmlechner
2016-11-26 18:00 Michael Palimaka
2016-11-26 18:00 Michael Palimaka
2016-02-09  7:41 Lars Wendler
2015-10-28  1:43 Ian Delaney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1736324482.c299fc3514a283058ff66ac580e1d7d26bd968db.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox