Bug 252957

Summary: audio/pulseaudio: update the port to 14.2
Product: Ports & Packages Reporter: Matthias Apitz <guru>
Component: Individual Port(s)Assignee: freebsd-desktop (Team) <desktop>
Status: Closed FIXED    
Severity: Affects Some People CC: david, diizzy, fluffy, guru, kbowling, meta, pi, rhurlin, tcberner
Priority: --- Flags: tcberner: maintainer-feedback+
Version: Latest   
Hardware: Any   
OS: Any   
URL: https://github.com/freebsd/freebsd-ports-kde/tree/pulseaudio-14
Attachments:
Description Flags
output of: svn diff audio/pulseaudio
none
new patch, output off: svn diff audio/pulseaudio
none
new patch, fixed pkg-plist issue, output of: svn diff audio/pulseaudio
none
patch with corrected pkg-plist rhurlin: maintainer-approval+

Description Matthias Apitz 2021-01-23 22:47:03 UTC
The current port is based on the upstream version 13.0 from 2019-09-13 and should be updated to 14.2 from 2021-01-16. I will attach a 'svn diff audio/pulseaudio'.
Comment 1 Matthias Apitz 2021-01-23 22:50:28 UTC
Created attachment 221857 [details]
output of: svn diff audio/pulseaudio
Comment 2 Daniel Engberg freebsd_committer freebsd_triage 2021-01-23 23:31:28 UTC
PORTVERSION --> DISTVERSION
See Porters Handbook, "Table 5.2. Package Naming Examples"

PORTREVISION should be removed
MASTER_SITES=http://freedesktop.org/software/pulseaudio/releases/ shoud be https://freedesktop.org/software/pulseaudio/releases/ (redirects)

CPPFLAGS + LDFLAGS should be replaced by USES= localbase:ldflags

Can you have a look at converting this port to using meson instead?

Does it pass poudriere?
Comment 3 Matthias Apitz 2021-01-24 09:08:06 UTC
The original (svn head) ports Makefile has set --disable-udev which leads to not compiling the module module-udev-detect.so. After deleting this line in the Makefile, the module compiles fine but says on

pacmd load-module module-udev-detect

in /var/log/messages:

Jan 24 00:52:22 c720-r368166 pulseaudio[85187]: [(null)] ltdl-bind-now.c: No se pudo abrir el módulo /usr/local/lib/pulse-14.2/modules/module-udev-detect.so: /usr/local/lib/pulse-14.2/modules/module-udev-detect.so: Undefined symbol """

"inotify_init1" seems to be a Linux sys or function call not implemented in FreeBSD.
Comment 4 Tobias C. Berner freebsd_committer freebsd_triage 2021-01-24 09:11:28 UTC
(In reply to daniel.engberg.lists from comment #2)

Thanks a lot for the patch -- but converting it to meson too would be great :)
Comment 5 Matthias Apitz 2021-01-24 10:45:10 UTC
Created attachment 221870 [details]
new patch, output off: svn diff audio/pulseaudio

This patch:
1) cleans the raised issues in the Makefile
2) was tested in poudriere:
...
===>  Building package for pulseaudio-14.2
file sizes/checksums   [224]: ... done
packing files          [224]: ... done
packing directories      [0]: . done
===========================================================================
=>> Cleaning up wrkdir
===>  Cleaning for pulseaudio-14.2
build of audio/pulseaudio | pulseaudio-14.2 ended at Sun Jan 24 11:33:47 CET 2021
build time: 00:01:08

Re/ meson: I never used this, so I let this to MAINTAINER of the port.
Comment 6 Jan Beich freebsd_committer freebsd_triage 2021-01-31 11:22:58 UTC
Comment on attachment 221870 [details]
new patch, output off: svn diff audio/pulseaudio

> -WEBRTC_AEC_LIB_DEPENDS=	libwebrtc_audio_processing.so:audio/webrtc-audio-processing0
> +WEBRTC_AEC_LIB_DEPENDS=	libwebrtc_audio_processing.so:audio/webrtc-audio-processing

Why? Upstream hasn't switched yet, see https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/395

$ poudriere testport -j 122amd64 audio/pulseaudio
[...]
===>   pulseaudio-14.2 depends on shared library: libwebrtc_audio_processing.so - not found
===>   Installing existing package /packages/All/webrtc-audio-processing-1.0_1.txz
Installing webrtc-audio-processing-1.0_1...
`-- Installing abseil-20200923.3...
`-- Extracting abseil-20200923.3: .......... done
Extracting webrtc-audio-processing-1.0_1: .......... done
===>   pulseaudio-14.2 depends on shared library: libwebrtc_audio_processing.so - not found
*** Error code 1
Comment 7 Jan Beich freebsd_committer freebsd_triage 2021-01-31 11:24:30 UTC
$ make check-plist
[...]
====> Checking for pkg-plist issues (check-plist)
===> Parsing plist
===> Checking for items in STAGEDIR missing from pkg-plist
Error: Orphaned: share/locale/bg/LC_MESSAGES/pulseaudio.mo
Error: Orphaned: share/locale/kk/LC_MESSAGES/pulseaudio.mo
===> Checking for items in pkg-plist which are not in STAGEDIR
===> Error: Plist issues found.
*** Error code 1
Comment 8 Matthias Apitz 2021-01-31 11:44:45 UTC
(In reply to Jan Beich from comment #7)

the change re/ WEBRTC_AEC_LIB_DEPENDS was not introduced by me; before starting on the work of the update, I fetched the most recent version out of SVN:

root@c720-r368166:/usr/ports/audio/pulseaudio # svn info
Path: .
Working Copy Root Path: /usr/ports
URL: svn://svn.freebsd.org/ports/head/audio/pulseaudio
Relative URL: ^/head/audio/pulseaudio
Repository Root: svn://svn.freebsd.org/ports
Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
Revision: 562403
Node Kind: directory
Schedule: normal
Last Changed Author: jbeich
Last Changed Rev: 557409
Last Changed Date: 2020-12-10 03:42:18 +0100 (Thu, 10 Dec 2020)

root@c720-r368166:/usr/ports/audio/pulseaudio # grep WEBRTC_AEC_LIB_DEPENDS Makefile 
WEBRTC_AEC_LIB_DEPENDS=	libwebrtc_audio_processing.so:audio/webrtc-audio-processing
Comment 9 Matthias Apitz 2021-01-31 12:20:30 UTC
Created attachment 222036 [details]
new patch, fixed pkg-plist issue, output of: svn diff audio/pulseaudio
Comment 10 commit-hook freebsd_committer freebsd_triage 2021-04-12 23:10:33 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=6dd01d1520ee30194d0493c1dea31bc71a12151d

commit 6dd01d1520ee30194d0493c1dea31bc71a12151d
Author:     Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2021-04-12 22:50:11 +0000
Commit:     Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2021-04-12 23:09:54 +0000

    audio/pulseaudio: update the port to 14.2

    PR:             252957
    Reported by:    Matthias Apitz <guru@unixarea.de>
    Reviewed by:    daniel.engberg.lists@pyret.net
    Approved by:    tcberner (previous version)
    Obtained from:  https://github.com/freebsd/freebsd-ports-kde/tree/pulseaudio-14

 audio/pulseaudio/Makefile                           |  9 +++------
 audio/pulseaudio/distinfo                           |  4 ++--
 audio/pulseaudio/files/patch-src_pulsecore_atomic.h | 18 +++++++++---------
 audio/pulseaudio/pkg-plist                          |  6 ++++--
 4 files changed, 18 insertions(+), 19 deletions(-)
Comment 11 Kevin Bowling freebsd_committer freebsd_triage 2021-04-12 23:12:39 UTC
This is already a lot of change so I committed this with a minor correction to preserve the webrtc-audio-processing support to move things along and make sure the new version works well for everyone.  We can progress on cleanups/build changes with more commits :)
Comment 12 Koichiro Iwao freebsd_committer freebsd_triage 2021-04-13 02:45:11 UTC
You should really also take care of other audio/pulseaudio* ports when updating audio/pulseaudio. tobik always does so.

https://cgit.freebsd.org/ports/log/?id=7caef03e71c35489b8bb4c11d6ca9910eeb18f05&qt=grep&q=pulseaudio
Comment 13 Kevin Bowling freebsd_committer freebsd_triage 2021-04-13 04:33:00 UTC
(In reply to Koichiro Iwao from comment #12)
Can you explain which ports must be rev'd?  The history looks sporadic there for pulseaudio-module-xrdp and pulseaudio-module-sndio but what about others?  Internally upstream changed the soname so they do want to communicate the ABI bump.  I thought LIB_DEPENDS handles this in general for poudriere so I am curious what hazards I should look out for and what needs to be bumped.
Comment 14 Koichiro Iwao freebsd_committer freebsd_triage 2021-04-13 06:21:58 UTC
(In reply to Kevin Bowling from comment #13)
Formerly, there're so many PulseAudio module ports but I realized there're few ports -xrdp and -sndio now. So these two ports must be bumped at least. 


These ports install files into `pkg-config --variable=modlibexecdir libpulse` directory. It contains PulseAudio version like "/usr/local/lib/pulse-14.2/modules". PulseAudio looks up modules under "modulelibexecdir" directory so 
modules are installed under the old PulseAudio directory cannot be recognized by PulseAudio.

I think even the modules and new PulseAudio are ABI compatible, they must be rebuilt in order to install into the correct directory. If other ports install any files under version-specific directories, rebuild them too.
Comment 15 Rainer Hurling freebsd_committer freebsd_triage 2021-04-13 07:03:49 UTC
Created attachment 224074 [details]
patch with corrected pkg-plist

Building audio/pulseaudio outside of Poudriere and/or with non-default options set like ALSA, there are several problems.

The attached patch contains a renewed pkg-plist, which builds fine for me.

HTH,
Rainer
Comment 16 Dima Panov freebsd_committer freebsd_triage 2021-04-13 09:19:28 UTC
Reopen, port needs more love and package testing
Comment 17 david 2021-04-13 14:06:19 UTC
Thank you, Rainer: that patch allowed me to update from pulseaudio-13.0_2 to pulseaudio-14.2, with a ports tree at main-n541366-de9bd29d2b9b.

Prior to the patch, building the port was OK, but attempting to install it yielded:

===>  Installing for pulseaudio-14.2
===>   Registering installation for pulseaudio-14.2 as automatic
pkg-static: Unable to access file /common/ports/audio/pulseaudio/work/stage/usr/local/share/pulseaudio/alsa-mixer/paths/steelseries-arctis-5-output-chat.conf:No such file or directory
pkg-static: Unable to access file /common/ports/audio/pulseaudio/work/stage/usr/local/share/pulseaudio/alsa-mixer/paths/steelseries-arctis-5-output-game.conf:No such file or directory
pkg-static: Unable to access file /common/ports/audio/pulseaudio/work/stage/usr/local/share/pulseaudio/alsa-mixer/paths/steelseries-arctis-7-input.conf:No such file or directory
pkg-static: Unable to access file /common/ports/audio/pulseaudio/work/stage/usr/local/share/pulseaudio/alsa-mixer/paths/steelseries-arctis-7-output-mono.conf:No such file or directory
....
pkg-static: Unable to access file /common/ports/audio/pulseaudio/work/stage/usr/
local/share/pulseaudio/alsa-mixer/profile-sets/steelseries-arctis-5-usb-audio.co
nf:No such file or directory
pkg-static: Unable to access file /common/ports/audio/pulseaudio/work/stage/usr/
local/share/pulseaudio/alsa-mixer/profile-sets/steelseries-arctis-7-usb-audio.co
nf:No such file or directory
*** Error code 1
Comment 18 commit-hook freebsd_committer freebsd_triage 2021-04-13 15:55:44 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9b6915182bad2de2492d69e2578542740d6f4357

commit 9b6915182bad2de2492d69e2578542740d6f4357
Author:     Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2021-04-13 15:44:59 +0000
Commit:     Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2021-04-13 15:55:20 +0000

    audio/pulseaudio: fix build with ALSA option

    PR:             252957
    Reported by:    rhurlin, fluffy
    Tested by:      david@catwhisker.org
    Fixes:  6dd01d1520ee audio/pulseaudio: update the port to 14.2

 audio/pulseaudio/pkg-plist | 145 +++++++++++++++++++++++----------------------
 1 file changed, 73 insertions(+), 72 deletions(-)
Comment 19 commit-hook freebsd_committer freebsd_triage 2021-04-13 16:00:48 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=a6dc40c2effdd050b01ff937ac133015a55a385c

commit a6dc40c2effdd050b01ff937ac133015a55a385c
Author:     Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2021-04-13 15:58:08 +0000
Commit:     Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2021-04-13 16:00:17 +0000

    audio/pulseaudio-module-sndio: bump portrevision

    Force a rebuild for pulseaudio 14.2

    PR:             252957
    Reported by:    meta

 audio/pulseaudio-module-sndio/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Comment 20 Kevin Bowling freebsd_committer freebsd_triage 2021-04-13 16:01:26 UTC
Changes applied as above, thanks for the additional testing and fixes!