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 (4096 bits) server-digest SHA256) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 9A00015813A for ; Wed, 08 Jan 2025 08:22:10 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id C9FDEE07D7; Wed, 08 Jan 2025 08:22:09 +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 A8E9BE07D7 for ; Wed, 08 Jan 2025 08:22: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 93AD033FEF1 for ; Wed, 08 Jan 2025 08:22:08 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 7FAC4AED for ; Wed, 08 Jan 2025 08:22:06 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1736324482.c299fc3514a283058ff66ac580e1d7d26bd968db.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: media-video/vlc/, media-video/vlc/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: media-video/vlc/files/vlc-3.0.2.1-vdpau.patch media-video/vlc/vlc-3.0.21-r1.ebuild media-video/vlc/vlc-3.0.21-r2.ebuild X-VCS-Directories: media-video/vlc/ media-video/vlc/files/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: c299fc3514a283058ff66ac580e1d7d26bd968db X-VCS-Branch: master Date: Wed, 08 Jan 2025 08:22: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: 903b5b34-3e09-4f23-9417-e2287e4163ca X-Archives-Hash: 0b1c2b0df29116f254356506ee5ba03a commit: c299fc3514a283058ff66ac580e1d7d26bd968db Author: Sam James gentoo org> AuthorDate: Wed Jan 8 08:21:15 2025 +0000 Commit: Sam James gentoo 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 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 +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 +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 )