git: 4dd7526ead66 - main - www/firefox-esr: expose PipeWire support after c58401d4dda5

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Sun, 21 Nov 2021 02:39:40 UTC
The branch main has been updated by jbeich:

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

commit 4dd7526ead6681463d6744d5f5d1940cb2fad551
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2021-11-21 01:02:32 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2021-11-21 02:39:12 +0000

    www/firefox-esr: expose PipeWire support after c58401d4dda5
    
    Should work on wlroots-based compositors. For example,
    
      # pkg install firefox sway pam_xdg xdg-desktop-portal-wlr xdg-desktop-portal
      # sysrc seatd_enable=YES
      # service seatd start
      # echo 'session optional pam_xdg.so notroot runtime' >>/etc/pam.d/system
      $ exit # log out to pick up XDG_RUNTIME_DIR
      <new login>
      $ export XDG_CURRENT_DESKTOP=sway
      $ export MOZ_ENABLE_WAYLAND=1
      $ dbus-daemon --session --fork --address=unix:runtime=yes
      $ sway
      <GUI session>
      $ dbus-update-activation-environment --all
      $ daemon -f pipewire
      $ firefox https://mozilla.github.io/webrtc-landing/gum_test.html
      <click on "Screen Capture">
      <select "Use operating system settings">
      <click on "Allow" button>
      <select via cursor the desired screen (output display)>
      <notice the screen mirrored on the web page>
---
 mail/thunderbird/Makefile               |   1 +
 mail/thunderbird/files/patch-bug1676134 | 122 ++++++++++++++++++++++++++++++++
 www/firefox-esr/Makefile                |   1 +
 www/firefox-esr/files/patch-bug1676134  | 122 ++++++++++++++++++++++++++++++++
 4 files changed, 246 insertions(+)

diff --git a/mail/thunderbird/Makefile b/mail/thunderbird/Makefile
index 48253c6bb14b..bae0618640e9 100644
--- a/mail/thunderbird/Makefile
+++ b/mail/thunderbird/Makefile
@@ -2,6 +2,7 @@
 
 PORTNAME=	thunderbird
 DISTVERSION=	91.3.2
+PORTREVISION=	1
 CATEGORIES=	mail news net-im
 MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
 		MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source
diff --git a/mail/thunderbird/files/patch-bug1676134 b/mail/thunderbird/files/patch-bug1676134
new file mode 100644
index 000000000000..9abd1a03c7a4
--- /dev/null
+++ b/mail/thunderbird/files/patch-bug1676134
@@ -0,0 +1,122 @@
+Enable Pipewire on BSDs
+
+diff --git third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
+index a0e116195e0e..cbe27e94108b 100644
+--- third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
++++ third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
+@@ -87,8 +87,13 @@ if CONFIG["OS_TARGET"] == "DragonFly":
+     DEFINES["USE_X11"] = "1"
+     DEFINES["WEBRTC_BSD"] = True
+     DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["WEBRTC_USE_PIPEWIRE"] = True
+     DEFINES["_FILE_OFFSET_BITS"] = "64"
+ 
++    LOCAL_INCLUDES += [
++        "/third_party/pipewire/"
++    ]
++
+     OS_LIBS += [
+         "X11",
+         "X11-xcb",
+@@ -103,11 +108,14 @@ if CONFIG["OS_TARGET"] == "DragonFly":
+     ]
+ 
+     UNIFIED_SOURCES += [
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",
+@@ -124,8 +132,13 @@ if CONFIG["OS_TARGET"] == "FreeBSD":
+     DEFINES["USE_X11"] = "1"
+     DEFINES["WEBRTC_BSD"] = True
+     DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["WEBRTC_USE_PIPEWIRE"] = True
+     DEFINES["_FILE_OFFSET_BITS"] = "64"
+ 
++    LOCAL_INCLUDES += [
++        "/third_party/pipewire/"
++    ]
++
+     OS_LIBS += [
+         "X11",
+         "X11-xcb",
+@@ -140,11 +153,14 @@ if CONFIG["OS_TARGET"] == "FreeBSD":
+     ]
+ 
+     UNIFIED_SOURCES += [
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",
+@@ -200,8 +216,13 @@ if CONFIG["OS_TARGET"] == "NetBSD":
+     DEFINES["USE_X11"] = "1"
+     DEFINES["WEBRTC_BSD"] = True
+     DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["WEBRTC_USE_PIPEWIRE"] = True
+     DEFINES["_FILE_OFFSET_BITS"] = "64"
+ 
++    LOCAL_INCLUDES += [
++        "/third_party/pipewire/"
++    ]
++
+     OS_LIBS += [
+         "X11",
+         "X11-xcb",
+@@ -216,11 +237,14 @@ if CONFIG["OS_TARGET"] == "NetBSD":
+     ]
+ 
+     UNIFIED_SOURCES += [
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",
+@@ -237,8 +261,13 @@ if CONFIG["OS_TARGET"] == "OpenBSD":
+     DEFINES["USE_X11"] = "1"
+     DEFINES["WEBRTC_BSD"] = True
+     DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["WEBRTC_USE_PIPEWIRE"] = True
+     DEFINES["_FILE_OFFSET_BITS"] = "64"
+ 
++    LOCAL_INCLUDES += [
++        "/third_party/pipewire/"
++    ]
++
+     OS_LIBS += [
+         "X11",
+         "X11-xcb",
+@@ -253,11 +282,14 @@ if CONFIG["OS_TARGET"] == "OpenBSD":
+     ]
+ 
+     UNIFIED_SOURCES += [
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",
diff --git a/www/firefox-esr/Makefile b/www/firefox-esr/Makefile
index 70132b426528..ad9339a46b0f 100644
--- a/www/firefox-esr/Makefile
+++ b/www/firefox-esr/Makefile
@@ -2,6 +2,7 @@
 
 PORTNAME=	firefox
 DISTVERSION=	91.3.0
+PORTREVISION=	1
 PORTEPOCH=	1
 CATEGORIES=	www
 MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}esr/source \
diff --git a/www/firefox-esr/files/patch-bug1676134 b/www/firefox-esr/files/patch-bug1676134
new file mode 100644
index 000000000000..9abd1a03c7a4
--- /dev/null
+++ b/www/firefox-esr/files/patch-bug1676134
@@ -0,0 +1,122 @@
+Enable Pipewire on BSDs
+
+diff --git third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
+index a0e116195e0e..cbe27e94108b 100644
+--- third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
++++ third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
+@@ -87,8 +87,13 @@ if CONFIG["OS_TARGET"] == "DragonFly":
+     DEFINES["USE_X11"] = "1"
+     DEFINES["WEBRTC_BSD"] = True
+     DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["WEBRTC_USE_PIPEWIRE"] = True
+     DEFINES["_FILE_OFFSET_BITS"] = "64"
+ 
++    LOCAL_INCLUDES += [
++        "/third_party/pipewire/"
++    ]
++
+     OS_LIBS += [
+         "X11",
+         "X11-xcb",
+@@ -103,11 +108,14 @@ if CONFIG["OS_TARGET"] == "DragonFly":
+     ]
+ 
+     UNIFIED_SOURCES += [
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",
+@@ -124,8 +132,13 @@ if CONFIG["OS_TARGET"] == "FreeBSD":
+     DEFINES["USE_X11"] = "1"
+     DEFINES["WEBRTC_BSD"] = True
+     DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["WEBRTC_USE_PIPEWIRE"] = True
+     DEFINES["_FILE_OFFSET_BITS"] = "64"
+ 
++    LOCAL_INCLUDES += [
++        "/third_party/pipewire/"
++    ]
++
+     OS_LIBS += [
+         "X11",
+         "X11-xcb",
+@@ -140,11 +153,14 @@ if CONFIG["OS_TARGET"] == "FreeBSD":
+     ]
+ 
+     UNIFIED_SOURCES += [
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",
+@@ -200,8 +216,13 @@ if CONFIG["OS_TARGET"] == "NetBSD":
+     DEFINES["USE_X11"] = "1"
+     DEFINES["WEBRTC_BSD"] = True
+     DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["WEBRTC_USE_PIPEWIRE"] = True
+     DEFINES["_FILE_OFFSET_BITS"] = "64"
+ 
++    LOCAL_INCLUDES += [
++        "/third_party/pipewire/"
++    ]
++
+     OS_LIBS += [
+         "X11",
+         "X11-xcb",
+@@ -216,11 +237,14 @@ if CONFIG["OS_TARGET"] == "NetBSD":
+     ]
+ 
+     UNIFIED_SOURCES += [
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",
+@@ -237,8 +261,13 @@ if CONFIG["OS_TARGET"] == "OpenBSD":
+     DEFINES["USE_X11"] = "1"
+     DEFINES["WEBRTC_BSD"] = True
+     DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["WEBRTC_USE_PIPEWIRE"] = True
+     DEFINES["_FILE_OFFSET_BITS"] = "64"
+ 
++    LOCAL_INCLUDES += [
++        "/third_party/pipewire/"
++    ]
++
+     OS_LIBS += [
+         "X11",
+         "X11-xcb",
+@@ -253,11 +282,14 @@ if CONFIG["OS_TARGET"] == "OpenBSD":
+     ]
+ 
+     UNIFIED_SOURCES += [
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
++        "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
+         "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",