Date: Fri, 22 Mar 2024 20:44:31 GMT From: Jesper Schmitz Mouridsen <jsm@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: 860821402c33 - main - www/librewolf: Update to 123.0-1 Message-ID: <202403222044.42MKiVuv034367@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by jsm: URL: https://cgit.FreeBSD.org/ports/commit/?id=860821402c33fcba31564fbd99352783ce88994d commit 860821402c33fcba31564fbd99352783ce88994d Author: Jesper Schmitz Mouridsen <jsm@FreeBSD.org> AuthorDate: 2024-03-22 20:27:56 +0000 Commit: Jesper Schmitz Mouridsen <jsm@FreeBSD.org> CommitDate: 2024-03-22 20:43:17 +0000 www/librewolf: Update to 123.0-1 switch to unity-menubar from archlinux, since it is not currently maintained by upstream. PR: 277807 Approved by: freebsd@sysctl.cz (maintainer) --- www/librewolf/Makefile | 17 +- www/librewolf/distinfo | 8 +- www/librewolf/files/patch-bug1559213 | 37 +- www/librewolf/files/patch-bug1680982 | 388 - www/librewolf/files/patch-bug1874059 | 25 + www/librewolf/files/patch-bug1876366 | 188 + www/librewolf/files/patch-bug1878010 | 30 + www/librewolf/files/patch-bug847568 | 59 +- .../files/patch-dom_media_flac_FlacDecoder.cpp | 2 +- ...edia_webrtc_third__party__build_webrtc.mozbuild | 27 + www/librewolf/files/patch-libwebrtc-generated | 19245 +++++++++++-------- www/librewolf/files/patch-mozglue_misc_SSE.h | 2 +- www/librewolf/files/patch-rust-1.73.0 | 83 - ...oolkit_components_processtools_procinfo__bsd.c} | 0 www/librewolf/files/patch-toolkit_xre_glxtest.cpp | 17 - .../files/patch-toolkit_xre_nsXREDirProvider.cpp | 11 + www/librewolf/files/patch-wayland-proxy | 15 + www/librewolf/files/patch-widget_gtk_nsMenuBar.cpp | 11 - .../files/patch-widget_gtk_nsMenuObject.cpp | 66 - www/librewolf/files/unity-menubar.patch | 5268 +++++ 20 files changed, 16863 insertions(+), 8636 deletions(-) diff --git a/www/librewolf/Makefile b/www/librewolf/Makefile index 52946e156a5b..2ee7d4be13e4 100644 --- a/www/librewolf/Makefile +++ b/www/librewolf/Makefile @@ -1,13 +1,10 @@ PORTNAME= librewolf -DISTVERSION= 117.0.1-1 -PORTREVISION= 7 +DISTVERSION= 123.0.1-1 CATEGORIES= www wayland MASTER_SITES= https://gitlab.com/api/v4/projects/32320088/packages/generic/librewolf-source/${DISTVERSION:R}-1/ DISTNAME= ${PORTNAME}-${DISTVERSION:R}-1.source. EXTRACT_SUFX= tar.gz -PATCH_SITES= https://gitlab.com/librewolf-community/browser/source/-/raw/5a211f7bad8dcf188a96b408cc143082df8d30a8/ -PATCHFILES= patches/unity_kde/unity-menubar.patch?inline=false:-p1 MAINTAINER= freebsd@sysctl.cz COMMENT= Custom version of Firefox, focused on privacy, security and freedom WWW= https://librewolf.net/ @@ -16,20 +13,22 @@ LICENSE= MPL20 LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= nspr>=4.32:devel/nspr \ - nss>=3.84:security/nss \ - icu>=71.1:devel/icu \ + nss>=3.95:security/nss \ + icu>=73.1:devel/icu \ libevent>=2.1.8:devel/libevent \ - harfbuzz>=4.4.1:print/harfbuzz \ + harfbuzz>=8.3.0:print/harfbuzz \ graphite2>=1.3.14:graphics/graphite2 \ - png>=1.6.37:graphics/png \ + png>=1.6.39:graphics/png \ dav1d>=1.0.0:multimedia/dav1d \ - libvpx>=1.12.0:multimedia/libvpx \ + libvpx>=1.14.0:multimedia/libvpx \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \ v4l_compat>0:multimedia/v4l_compat \ autoconf2.13:devel/autoconf2.13 \ nasm:devel/nasm \ yasm:devel/yasm \ zip:archivers/zip +EXTRA_PATCHES= ${FILESDIR}/unity-menubar.patch:-p1 + .include "${.CURDIR}/../../www/firefox/Makefile.options" diff --git a/www/librewolf/distinfo b/www/librewolf/distinfo index ff9232ec3d47..fb7179e55c47 100644 --- a/www/librewolf/distinfo +++ b/www/librewolf/distinfo @@ -1,5 +1,3 @@ -TIMESTAMP = 1696616618 -SHA256 (librewolf-117.0-1.source.tar.gz) = 446e9479547dceda58cbcdc2f9f503539086ddb193c8b1206b7c736cd56e44c3 -SIZE (librewolf-117.0-1.source.tar.gz) = 903353725 -SHA256 (patches/unity_kde/unity-menubar.patch?inline=false) = ff6e224ed0eb3c9d4c3ae92acd9cd04d750e0bcc6be1fa64ccc1317abcc13711 -SIZE (patches/unity_kde/unity-menubar.patch?inline=false) = 163548 +TIMESTAMP = 1710878981 +SHA256 (librewolf-123.0-1.source.tar.gz) = e3209efbddd0c0a79bc62cb9c5cc57b816816bf32a24e8e476e07879c2791314 +SIZE (librewolf-123.0-1.source.tar.gz) = 965610712 diff --git a/www/librewolf/files/patch-bug1559213 b/www/librewolf/files/patch-bug1559213 index 516328d61aca..ae11fb38f989 100644 --- a/www/librewolf/files/patch-bug1559213 +++ b/www/librewolf/files/patch-bug1559213 @@ -11,10 +11,10 @@ Date: Thu Jun 13 11:53:00 2019 -0700 4 files changed, 34 insertions(+), 3 deletions(-) diff --git config/external/moz.build config/external/moz.build -index a0877c9d717e..5caa2036e0ec 100644 +index 2fc8df57992e..63d18e50a961 100644 --- config/external/moz.build +++ config/external/moz.build -@@ -45,8 +45,9 @@ if not CONFIG["MOZ_SYSTEM_LIBVPX"]: +@@ -40,8 +40,9 @@ if not CONFIG["MOZ_SYSTEM_LIBVPX"]: external_dirs += ["media/libvpx"] if CONFIG["MOZ_AV1"]: @@ -26,30 +26,11 @@ index a0877c9d717e..5caa2036e0ec 100644 if not CONFIG["MOZ_SYSTEM_PNG"]: external_dirs += ["media/libpng"] -diff --git config/system-headers.mozbuild config/system-headers.mozbuild -index d9489c8f15e4..4d2f15e18c1c 100644 ---- config/system-headers.mozbuild -+++ config/system-headers.mozbuild -@@ -1291,6 +1291,14 @@ if CONFIG['MOZ_ENABLE_LIBPROXY']: - 'proxy.h', - ] - -+if CONFIG['MOZ_SYSTEM_AV1']: -+ system_headers += [ -+ 'aom/aom_decoder.h', -+ 'aom/aomdx.h', -+ 'aom/aom_image.h', -+ 'dav1d/dav1d.h', -+ ] -+ - if CONFIG['MOZ_SYSTEM_LIBVPX']: - system_headers += [ - 'vpx_mem/vpx_mem.h', diff --git dom/media/platforms/moz.build dom/media/platforms/moz.build -index c71f22a22eee..efbd523b1225 100644 +index 5c6e25b3980b..ce99ebfb6d3f 100644 --- dom/media/platforms/moz.build +++ dom/media/platforms/moz.build -@@ -80,6 +80,11 @@ if CONFIG["MOZ_AV1"]: +@@ -81,6 +81,11 @@ if CONFIG["MOZ_AV1"]: "agnostic/AOMDecoder.cpp", "agnostic/DAV1DDecoder.cpp", ] @@ -62,10 +43,10 @@ index c71f22a22eee..efbd523b1225 100644 if CONFIG["MOZ_OMX"]: EXPORTS += [ diff --git media/ffvpx/libavcodec/moz.build media/ffvpx/libavcodec/moz.build -index 5675c28234a1..56344e5e4c98 100644 +index 761fc8cf4cd9..793a5b8697a8 100644 --- media/ffvpx/libavcodec/moz.build +++ media/ffvpx/libavcodec/moz.build -@@ -109,10 +109,14 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: +@@ -120,10 +120,14 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: 'vp9recon.c', 'vpx_rac.c', ] @@ -85,10 +66,10 @@ index 5675c28234a1..56344e5e4c98 100644 LOCAL_INCLUDES += ['/media/mozva'] SOURCES += [ diff --git toolkit/moz.configure toolkit/moz.configure -index 2e56fa46ce59..23e30935c4bc 100644 +index f93a5d64fec8..814357f4e979 100644 --- toolkit/moz.configure +++ toolkit/moz.configure -@@ -745,7 +745,23 @@ def av1(value): +@@ -744,7 +744,23 @@ def av1(value): return True @@ -113,7 +94,7 @@ index 2e56fa46ce59..23e30935c4bc 100644 def dav1d_asm(target): if target.cpu in ("aarch64", "x86", "x86_64"): return True -@@ -761,6 +777,7 @@ set_config("MOZ_DAV1D_ASM", dav1d_asm) +@@ -760,6 +776,7 @@ set_config("MOZ_DAV1D_ASM", dav1d_asm) set_define("MOZ_DAV1D_ASM", dav1d_asm) set_config("MOZ_AV1", av1) set_define("MOZ_AV1", av1) diff --git a/www/librewolf/files/patch-bug1680982 b/www/librewolf/files/patch-bug1680982 deleted file mode 100644 index c9fc2344bb44..000000000000 --- a/www/librewolf/files/patch-bug1680982 +++ /dev/null @@ -1,388 +0,0 @@ -commit 3204512f58a1 -Author: Greg V <greg@unrelenting.technology> -Date: Sun Dec 6 22:07:00 2020 +0000 - - Bug 1680982 - Use evdev instead of the Linux legacy joystick API for gamepads - - Using evdev is a prerequisite for adding rumble (haptic feedback) and LED support. - - - BTN_GAMEPAD semantic buttons are interpreted directly, - since all kernel drivers are supposed to use them correctly: - https://www.kernel.org/doc/html/latest/input/gamepad.html - - BTN_JOYSTICK legacy style numbered buttons use the model specific remappers - - we support even strange devices that combine both styles in one device - - the Linux gamepad module is enabled on FreeBSD and DragonFly, because - these kernels provide evdev, and libudev-devd provides enough of libudev - (evdev headers are provided by the devel/evdev-proto package) - - Differential Revision: https://phabricator.services.mozilla.com/D98868 ---- - dom/gamepad/linux/LinuxGamepad.cpp | 262 ++++++++++++++++++++++++++++++++----- - dom/gamepad/moz.build | 2 +- - 2 files changed, 229 insertions(+), 35 deletions(-) - -diff --git dom/gamepad/linux/LinuxGamepad.cpp dom/gamepad/linux/LinuxGamepad.cpp -index deee47b9d267..31f0aad7ae4a 100644 ---- dom/gamepad/linux/LinuxGamepad.cpp -+++ dom/gamepad/linux/LinuxGamepad.cpp -@@ -5,15 +5,16 @@ - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - - /* -- * LinuxGamepadService: A Linux backend for the GamepadService. -- * Derived from the kernel documentation at -- * http://www.kernel.org/doc/Documentation/input/joystick-api.txt -+ * LinuxGamepadService: An evdev backend for the GamepadService. -+ * -+ * Ref: https://www.kernel.org/doc/html/latest/input/gamepad.html - */ - #include <algorithm> -+#include <unordered_map> - #include <cstddef> - - #include <glib.h> --#include <linux/joystick.h> -+#include <linux/input.h> - #include <stdio.h> - #include <stdint.h> - #include <sys/ioctl.h> -@@ -21,10 +22,14 @@ - #include "nscore.h" - #include "mozilla/dom/GamepadHandle.h" - #include "mozilla/dom/GamepadPlatformService.h" -+#include "mozilla/dom/GamepadRemapping.h" - #include "mozilla/Tainting.h" - #include "mozilla/UniquePtr.h" - #include "udev.h" - -+#define LONG_BITS (sizeof(long) * 8) -+#define NLONGS(x) (((x) + LONG_BITS - 1) / LONG_BITS) -+ - namespace { - - using namespace mozilla::dom; -@@ -36,19 +41,29 @@ using mozilla::udev_list_entry; - using mozilla::udev_monitor; - using mozilla::UniquePtr; - --static const float kMaxAxisValue = 32767.0; --static const char kJoystickPath[] = "/dev/input/js"; -+static const char kEvdevPath[] = "/dev/input/event"; -+ -+static inline bool TestBit(const unsigned long* arr, int bit) { -+ return !!(arr[bit / LONG_BITS] & (1LL << (bit % LONG_BITS))); -+} -+ -+static inline double ScaleAxis(const input_absinfo& info, int value) { -+ return 2.0 * (value - info.minimum) / (double)(info.maximum - info.minimum) - -+ 1.0; -+} - - // TODO: should find a USB identifier for each device so we can - // provide something that persists across connect/disconnect cycles. --typedef struct { -+struct Gamepad { - GamepadHandle handle; -- guint source_id; -- int numAxes; -- int numButtons; -- char idstring[256]; -- char devpath[PATH_MAX]; --} Gamepad; -+ RefPtr<GamepadRemapper> remapper = nullptr; -+ guint source_id = UINT_MAX; -+ char idstring[256] = {0}; -+ char devpath[PATH_MAX] = {0}; -+ uint8_t key_map[KEY_MAX] = {0}; -+ uint8_t abs_map[ABS_MAX] = {0}; -+ std::unordered_map<uint16_t, input_absinfo> abs_info; -+}; - - class LinuxGamepadService { - public: -@@ -66,7 +81,7 @@ class LinuxGamepadService { - bool is_gamepad(struct udev_device* dev); - void ReadUdevChange(); - -- // handler for data from /dev/input/jsN -+ // handler for data from /dev/input/eventN - static gboolean OnGamepadData(GIOChannel* source, GIOCondition condition, - gpointer data); - -@@ -114,8 +129,14 @@ void LinuxGamepadService::AddDevice(struct udev_device* dev) { - g_io_channel_set_encoding(channel, nullptr, nullptr); - g_io_channel_set_buffered(channel, FALSE); - int fd = g_io_channel_unix_get_fd(channel); -+ -+ struct input_id id {}; -+ if (ioctl(fd, EVIOCGID, &id) == -1) { -+ return; -+ } -+ - char name[128]; -- if (ioctl(fd, JSIOCGNAME(sizeof(name)), &name) == -1) { -+ if (ioctl(fd, EVIOCGNAME(sizeof(name)), &name) == -1) { - strcpy(name, "unknown"); - } - const char* vendor_id = -@@ -131,20 +152,86 @@ void LinuxGamepadService::AddDevice(struct udev_device* dev) { - model_id = mUdev.udev_device_get_sysattr_value(parent, "id/product"); - } - } -+ if (!vendor_id && id.vendor != 0) { -+ vendor_id = (const char*)alloca(5); -+ snprintf((char*)vendor_id, 5, "%04x", id.vendor); -+ } -+ if (!model_id && id.product != 0) { -+ model_id = (const char*)alloca(5); -+ snprintf((char*)model_id, 5, "%04x", id.product); -+ } - snprintf(gamepad->idstring, sizeof(gamepad->idstring), "%s-%s-%s", - vendor_id ? vendor_id : "unknown", model_id ? model_id : "unknown", - name); - - char numAxes = 0, numButtons = 0; -- ioctl(fd, JSIOCGAXES, &numAxes); -- gamepad->numAxes = numAxes; -- ioctl(fd, JSIOCGBUTTONS, &numButtons); -- gamepad->numButtons = numButtons; -+ unsigned long key_bits[NLONGS(KEY_CNT)] = {0}; -+ unsigned long abs_bits[NLONGS(ABS_CNT)] = {0}; -+ ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(key_bits)), key_bits); -+ ioctl(fd, EVIOCGBIT(EV_ABS, sizeof(abs_bits)), abs_bits); -+ -+ /* Here, we try to support even strange cases where proper semantic -+ * BTN_GAMEPAD button are combined with arbitrary extra buttons. */ -+ for (uint16_t i = BTN_JOYSTICK; i < KEY_MAX; i++) { -+ /* Do not map semantic buttons, they are handled directly */ -+ if (i == BTN_GAMEPAD) { -+ i = BTN_THUMBR + 1; -+ continue; -+ } -+ if (i == BTN_DPAD_UP) { -+ i = BTN_DPAD_RIGHT + 1; -+ continue; -+ } -+ if (TestBit(key_bits, i)) { -+ gamepad->key_map[i] = numButtons++; -+ } -+ } -+ for (uint16_t i = 0; i < BTN_JOYSTICK; i++) { -+ if (TestBit(key_bits, i)) { -+ gamepad->key_map[i] = numButtons++; -+ } -+ } -+ for (uint16_t i = BTN_GAMEPAD; i <= BTN_THUMBR; i++) { -+ /* But if any semantic event exists, count them all */ -+ if (TestBit(key_bits, i)) { -+ numButtons += BUTTON_INDEX_COUNT; -+ break; -+ } -+ } -+ for (uint16_t i = 0; i < ABS_MAX; ++i) { -+ if (TestBit(abs_bits, i)) { -+ gamepad->abs_info.emplace(i, input_absinfo{}); -+ if (ioctl(fd, EVIOCGABS(i), &gamepad->abs_info[i]) < 0) { -+ continue; -+ } -+ if (gamepad->abs_info[i].minimum == gamepad->abs_info[i].maximum) { -+ gamepad->abs_info.erase(i); -+ continue; -+ } -+ gamepad->abs_map[i] = numAxes++; -+ } -+ } -+ -+ if (numAxes == 0) { -+ NS_WARNING("Gamepad with zero axes detected?"); -+ } -+ if (numButtons == 0) { -+ NS_WARNING("Gamepad with zero buttons detected?"); -+ } -+ -+ bool defaultRemapper = false; -+ RefPtr<GamepadRemapper> remapper = -+ GetGamepadRemapper(id.vendor, id.product, defaultRemapper); -+ MOZ_ASSERT(remapper); -+ remapper->SetAxisCount(numAxes); -+ remapper->SetButtonCount(numButtons); - - gamepad->handle = service->AddGamepad( -- gamepad->idstring, mozilla::dom::GamepadMappingType::_empty, -- mozilla::dom::GamepadHand::_empty, gamepad->numButtons, gamepad->numAxes, -- 0, 0, 0); // TODO: Bug 680289, implement gamepad haptics for Linux. -+ gamepad->idstring, remapper->GetMappingType(), GamepadHand::_empty, -+ remapper->GetButtonCount(), remapper->GetAxisCount(), 0, -+ remapper->GetLightIndicatorCount(), remapper->GetTouchEventCount()); -+ gamepad->remapper = remapper.forget(); -+ // TODO: Bug 680289, implement gamepad haptics for Linux. - // TODO: Bug 1523355, implement gamepad lighindicator and touch for Linux. - - gamepad->source_id = -@@ -257,7 +344,7 @@ bool LinuxGamepadService::is_gamepad(struct udev_device* dev) { - if (!devpath) { - return false; - } -- if (strncmp(kJoystickPath, devpath, sizeof(kJoystickPath) - 1) != 0) { -+ if (strncmp(kEvdevPath, devpath, sizeof(kEvdevPath) - 1) != 0) { - return false; - } - -@@ -292,7 +379,7 @@ gboolean LinuxGamepadService::OnGamepadData(GIOChannel* source, - if (condition & G_IO_ERR || condition & G_IO_HUP) return FALSE; - - while (true) { -- struct js_event event; -+ struct input_event event {}; - gsize count; - GError* err = nullptr; - if (g_io_channel_read_chars(source, (gchar*)&event, sizeof(event), &count, -@@ -301,18 +388,125 @@ gboolean LinuxGamepadService::OnGamepadData(GIOChannel* source, - break; - } - -- // TODO: store device state? -- if (event.type & JS_EVENT_INIT) { -- continue; -- } -- - switch (event.type) { -- case JS_EVENT_BUTTON: -- service->NewButtonEvent(gamepad->handle, event.number, !!event.value); -+ case EV_KEY: -+ switch (event.code) { -+ /* The gamepad events are meaningful, and according to -+ * https://www.kernel.org/doc/html/latest/input/gamepad.html -+ * "No other devices, that do not look/feel like a gamepad, shall -+ * report these events" */ -+ case BTN_SOUTH: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_PRIMARY, -+ !!event.value); -+ break; -+ case BTN_EAST: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_SECONDARY, -+ !!event.value); -+ break; -+ case BTN_NORTH: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_QUATERNARY, -+ !!event.value); -+ break; -+ case BTN_WEST: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_TERTIARY, -+ !!event.value); -+ break; -+ case BTN_TL: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_LEFT_SHOULDER, -+ !!event.value); -+ break; -+ case BTN_TR: -+ service->NewButtonEvent(gamepad->handle, -+ BUTTON_INDEX_RIGHT_SHOULDER, !!event.value); -+ break; -+ case BTN_TL2: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_LEFT_TRIGGER, -+ !!event.value); -+ break; -+ case BTN_TR2: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_RIGHT_TRIGGER, -+ !!event.value); -+ break; -+ case BTN_SELECT: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_BACK_SELECT, -+ !!event.value); -+ break; -+ case BTN_START: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_START, -+ !!event.value); -+ break; -+ case BTN_MODE: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_META, -+ !!event.value); -+ break; -+ case BTN_THUMBL: -+ service->NewButtonEvent( -+ gamepad->handle, BUTTON_INDEX_LEFT_THUMBSTICK, !!event.value); -+ break; -+ case BTN_THUMBR: -+ service->NewButtonEvent( -+ gamepad->handle, BUTTON_INDEX_RIGHT_THUMBSTICK, !!event.value); -+ break; -+ case BTN_DPAD_UP: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_DPAD_UP, -+ !!event.value); -+ break; -+ case BTN_DPAD_DOWN: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_DPAD_DOWN, -+ !!event.value); -+ break; -+ case BTN_DPAD_LEFT: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_DPAD_LEFT, -+ !!event.value); -+ break; -+ case BTN_DPAD_RIGHT: -+ service->NewButtonEvent(gamepad->handle, BUTTON_INDEX_DPAD_RIGHT, -+ !!event.value); -+ break; -+ default: -+ /* For non-gamepad events, this is the "anything goes" numbered -+ * handling that should be handled with remappers. */ -+ gamepad->remapper->RemapButtonEvent( -+ gamepad->handle, gamepad->key_map[event.code], !!event.value); -+ break; -+ } - break; -- case JS_EVENT_AXIS: -- service->NewAxisMoveEvent(gamepad->handle, event.number, -- ((float)event.value) / kMaxAxisValue); -+ case EV_ABS: -+ if (!gamepad->abs_info.count(event.code)) continue; -+ switch (event.code) { -+ case ABS_HAT0X: -+ service->NewButtonEvent( -+ gamepad->handle, BUTTON_INDEX_DPAD_LEFT, -+ AxisNegativeAsButton( -+ ScaleAxis(gamepad->abs_info[event.code], event.value))); -+ service->NewButtonEvent( -+ gamepad->handle, BUTTON_INDEX_DPAD_RIGHT, -+ AxisPositiveAsButton( -+ ScaleAxis(gamepad->abs_info[event.code], event.value))); -+ break; -+ case ABS_HAT0Y: -+ service->NewButtonEvent( -+ gamepad->handle, BUTTON_INDEX_DPAD_UP, -+ AxisNegativeAsButton( -+ ScaleAxis(gamepad->abs_info[event.code], event.value))); -+ service->NewButtonEvent( -+ gamepad->handle, BUTTON_INDEX_DPAD_DOWN, -+ AxisPositiveAsButton( -+ ScaleAxis(gamepad->abs_info[event.code], event.value))); -+ break; -+ case ABS_HAT1X: -+ case ABS_HAT1Y: -+ case ABS_HAT2X: -+ case ABS_HAT2Y: -+ case ABS_HAT3X: -+ case ABS_HAT3Y: -+ break; -+ default: -+ gamepad->remapper->RemapAxisMoveEvent( -+ gamepad->handle, gamepad->abs_map[event.code], -+ ScaleAxis(gamepad->abs_info[event.code], event.value)); -+ break; -+ } - break; - } - } -diff --git dom/gamepad/moz.build dom/gamepad/moz.build -index 5f55d5a95e96..544b7f927736 100644 ---- dom/gamepad/moz.build -+++ dom/gamepad/moz.build -@@ -59,7 +59,7 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows": - UNIFIED_SOURCES += ["windows/WindowsGamepad.cpp"] - elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android": - UNIFIED_SOURCES += ["android/AndroidGamepad.cpp"] --elif CONFIG["OS_ARCH"] == "Linux": -+elif CONFIG["OS_ARCH"] in ("Linux", "FreeBSD", "DragonFly"): - UNIFIED_SOURCES += ["linux/LinuxGamepad.cpp"] - else: - UNIFIED_SOURCES += ["fallback/FallbackGamepad.cpp"] diff --git a/www/librewolf/files/patch-bug1874059 b/www/librewolf/files/patch-bug1874059 new file mode 100644 index 000000000000..3fa954ef9def --- /dev/null +++ b/www/librewolf/files/patch-bug1874059 @@ -0,0 +1,25 @@ +commit 56c888446600991803fd92d668349101ad4bf160 +Author: Christoph Moench-Tegeder <cmt@burggraben.net> +Date: Tue Feb 6 22:51:27 2024 +0100 + + switch to -fvisibility flags + + this fixes linkage with llvm18 (which does not like the former + approach via the #pragma in gcc_hidden.h + + PR: 276746 + Submitted by: dim@ + +diff --git build/moz.configure/toolchain.configure build/moz.configure/toolchain.configure +index d08b748db250..4696f69153f6 100644 +--- build/moz.configure/toolchain.configure ++++ build/moz.configure/toolchain.configure +@@ -2186,7 +2186,7 @@ set_define("_LIBCPP_HIDE_FROM_ABI", libcxx_override_visibility.hide_from_abi) + @depends(target, build_environment) + def visibility_flags(target, env): + if target.os != "WINNT": +- if target.kernel == "Darwin": ++ if target.kernel == "Darwin" or target.kernel == "FreeBSD": + return ("-fvisibility=hidden", "-fvisibility-inlines-hidden") + return ( + "-I%s/system_wrappers" % os.path.join(env.dist), diff --git a/www/librewolf/files/patch-bug1876366 b/www/librewolf/files/patch-bug1876366 new file mode 100644 index 000000000000..a6f39ffabab8 --- /dev/null +++ b/www/librewolf/files/patch-bug1876366 @@ -0,0 +1,188 @@ +commit 54d21b7398dc1a8ff22a987c660d400347b144a9 +Author: Christoph Moench-Tegeder <cmt@burggraben.net> +Date: Sun Feb 11 19:11:15 2024 +0100 + + Bug 1876366: many X11 cursors stopped working + + revert switch to newer gdk interface, as it broke cursor shape + switching and living with the default cursor only is no fun. + + Revert "Bug 1872961 [Linux] Use pointer cursor for hyperlinks r=emilio" + + This reverts commit 0574d0cdc438e4b0ce588f1652af802a0357f255. + + Revert "Bug 1871863 - Port from GdkCursorType to gdk_cursor_new_from_name. r=rmader,stransky" + + This reverts commit 5dfa42970a9577f0ac4e0992d9ec58c691e9bef6. + +diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp +index a011dcc51fdb..28100db36d89 100644 +--- widget/gtk/nsWindow.cpp ++++ widget/gtk/nsWindow.cpp +@@ -7797,53 +7797,61 @@ static GdkCursor* get_gtk_cursor(nsCursor aCursor) { + + GdkDisplay* defaultDisplay = gdk_display_get_default(); + ++ // The strategy here is to use standard GDK cursors, and, if not available, ++ // load by standard name with gdk_cursor_new_from_name. ++ // Spec is here: http://www.freedesktop.org/wiki/Specifications/cursor-spec/ + switch (aCursor) { + case eCursor_standard: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "default"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_LEFT_PTR); + break; + case eCursor_wait: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "wait"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_WATCH); + break; + case eCursor_select: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "text"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_XTERM); + break; + case eCursor_hyperlink: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "pointer"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_HAND2); + break; + case eCursor_n_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "n-resize"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_TOP_SIDE); + break; + case eCursor_s_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "s-resize"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_BOTTOM_SIDE); + break; + case eCursor_w_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "w-resize"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_LEFT_SIDE); + break; + case eCursor_e_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "e-resize"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_RIGHT_SIDE); + break; + case eCursor_nw_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "nw-resize"); ++ gdkcursor = ++ gdk_cursor_new_for_display(defaultDisplay, GDK_TOP_LEFT_CORNER); + break; + case eCursor_se_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "se-resize"); ++ gdkcursor = ++ gdk_cursor_new_for_display(defaultDisplay, GDK_BOTTOM_RIGHT_CORNER); + break; + case eCursor_ne_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "ne-resize"); ++ gdkcursor = ++ gdk_cursor_new_for_display(defaultDisplay, GDK_TOP_RIGHT_CORNER); + break; + case eCursor_sw_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "sw-resize"); ++ gdkcursor = ++ gdk_cursor_new_for_display(defaultDisplay, GDK_BOTTOM_LEFT_CORNER); + break; + case eCursor_crosshair: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "crosshair"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_CROSSHAIR); + break; + case eCursor_move: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "move"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_FLEUR); + break; + case eCursor_help: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "help"); ++ gdkcursor = ++ gdk_cursor_new_for_display(defaultDisplay, GDK_QUESTION_ARROW); + break; +- case eCursor_copy: ++ case eCursor_copy: // CSS3 + gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "copy"); + if (!gdkcursor) newType = MOZ_CURSOR_COPY; + break; +@@ -7856,14 +7864,18 @@ static GdkCursor* get_gtk_cursor(nsCursor aCursor) { + if (!gdkcursor) newType = MOZ_CURSOR_CONTEXT_MENU; + break; + case eCursor_cell: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "cell"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_PLUS); + break; ++ // Those two aren’t standardized. Trying both KDE’s and GNOME’s names + case eCursor_grab: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "grab"); ++ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "openhand"); + if (!gdkcursor) newType = MOZ_CURSOR_HAND_GRAB; + break; + case eCursor_grabbing: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "grabbing"); ++ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "closedhand"); ++ if (!gdkcursor) { ++ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "grabbing"); ++ } + if (!gdkcursor) newType = MOZ_CURSOR_HAND_GRABBING; + break; + case eCursor_spinning: +@@ -7880,6 +7892,9 @@ static GdkCursor* get_gtk_cursor(nsCursor aCursor) { + break; + case eCursor_not_allowed: + gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "not-allowed"); ++ if (!gdkcursor) { // nonstandard, yet common ++ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "crossed_circle"); ++ } + if (!gdkcursor) newType = MOZ_CURSOR_NOT_ALLOWED; + break; + case eCursor_no_drop: +@@ -7900,35 +7915,46 @@ static GdkCursor* get_gtk_cursor(nsCursor aCursor) { + } + break; + case eCursor_all_scroll: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "move"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_FLEUR); + break; + case eCursor_nesw_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "nesw-resize"); ++ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "size_bdiag"); + if (!gdkcursor) newType = MOZ_CURSOR_NESW_RESIZE; + break; + case eCursor_nwse_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "nwse-resize"); ++ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "size_fdiag"); + if (!gdkcursor) newType = MOZ_CURSOR_NWSE_RESIZE; + break; + case eCursor_ns_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "ns-resize"); ++ gdkcursor = ++ gdk_cursor_new_for_display(defaultDisplay, GDK_SB_V_DOUBLE_ARROW); + break; + case eCursor_ew_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "ew-resize"); ++ gdkcursor = ++ gdk_cursor_new_for_display(defaultDisplay, GDK_SB_H_DOUBLE_ARROW); + break; ++ // Here, two better fitting cursors exist in some cursor themes. Try those ++ // first + case eCursor_row_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "row-resize"); ++ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "split_v"); ++ if (!gdkcursor) { ++ gdkcursor = ++ gdk_cursor_new_for_display(defaultDisplay, GDK_SB_V_DOUBLE_ARROW); ++ } + break; + case eCursor_col_resize: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "col-resize"); ++ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "split_h"); ++ if (!gdkcursor) { ++ gdkcursor = ++ gdk_cursor_new_for_display(defaultDisplay, GDK_SB_H_DOUBLE_ARROW); ++ } + break; + case eCursor_none: +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "none"); +- if (!gdkcursor) newType = MOZ_CURSOR_NONE; ++ newType = MOZ_CURSOR_NONE; + break; + default: + NS_ASSERTION(aCursor, "Invalid cursor type"); +- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "default"); ++ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_LEFT_PTR); + break; + } + diff --git a/www/librewolf/files/patch-bug1878010 b/www/librewolf/files/patch-bug1878010 new file mode 100644 index 000000000000..e247f2d95d7b --- /dev/null +++ b/www/librewolf/files/patch-bug1878010 @@ -0,0 +1,30 @@ +commit fa2a8be440397b623eab7a414c5685932176ef03 +Author: Andreas Pehrson <apehrson@mozilla.com> +Date: Fri Feb 2 18:43:54 2024 +0000 + + Bug 1878010 - Fix webrtc::VideoCaptureFactory for BSD. r=grulja,gaston,webrtc-reviewers,mjf + + Differential Revision: https://phabricator.services.mozilla.com/D200427 + +diff --git third_party/libwebrtc/modules/video_capture/video_capture_factory.cc third_party/libwebrtc/modules/video_capture/video_capture_factory.cc +index e085ac2df8a0..2790fbbe1cba 100644 +--- third_party/libwebrtc/modules/video_capture/video_capture_factory.cc ++++ third_party/libwebrtc/modules/video_capture/video_capture_factory.cc +@@ -24,7 +24,7 @@ rtc::scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( + const char* deviceUniqueIdUTF8) { + // This is only implemented on pure Linux and WEBRTC_LINUX is defined for + // Android as well +-#if !defined(WEBRTC_LINUX) || defined(WEBRTC_ANDROID) ++#if (!defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)) || defined(WEBRTC_ANDROID) + return nullptr; + #else + return videocapturemodule::VideoCaptureImpl::Create(options, +@@ -40,7 +40,7 @@ VideoCaptureModule::DeviceInfo* VideoCaptureFactory::CreateDeviceInfo( + VideoCaptureOptions* options) { + // This is only implemented on pure Linux and WEBRTC_LINUX is defined for + // Android as well +-#if !defined(WEBRTC_LINUX) || defined(WEBRTC_ANDROID) ++#if (!defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)) || defined(WEBRTC_ANDROID) + return nullptr; + #else + return videocapturemodule::VideoCaptureImpl::CreateDeviceInfo(options); diff --git a/www/librewolf/files/patch-bug847568 b/www/librewolf/files/patch-bug847568 index 2b3c5e14e99e..37619c17f883 100644 --- a/www/librewolf/files/patch-bug847568 +++ b/www/librewolf/files/patch-bug847568 @@ -1,11 +1,11 @@ # Allow building against system-wide graphite2/harfbuzz. diff --git config/system-headers.mozbuild config/system-headers.mozbuild -index a1b58eb..a0a0943 100644 +index 07d48e7f9748..a35804b443e5 100644 --- config/system-headers.mozbuild +++ config/system-headers.mozbuild -@@ -1289,6 +1289,19 @@ if CONFIG['MOZ_ENABLE_LIBPROXY']: - 'proxy.h', +@@ -1304,6 +1304,19 @@ if CONFIG["MOZ_ENABLE_LIBPROXY"]: + "proxy.h", ] +if CONFIG['MOZ_SYSTEM_GRAPHITE2']: @@ -21,14 +21,14 @@ index a1b58eb..a0a0943 100644 + 'harfbuzz/hb.h', + ] + - if CONFIG['MOZ_SYSTEM_LIBVPX']: + if CONFIG["MOZ_SYSTEM_ICU"]: system_headers += [ - 'vpx_mem/vpx_mem.h', + "unicode/calendar.h", diff --git dom/base/moz.build dom/base/moz.build -index d390adf..4508f19 100644 +index 26fe7e716da8..9015fc360402 100644 --- dom/base/moz.build +++ dom/base/moz.build -@@ -576,6 +576,9 @@ FINAL_LIBRARY = "xul" +@@ -608,6 +608,9 @@ FINAL_LIBRARY = "xul" if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"] @@ -40,7 +40,7 @@ index d390adf..4508f19 100644 script="gen-usecounters.py", diff --git gfx/graphite2/geckoextra/moz.build gfx/graphite2/geckoextra/moz.build new file mode 100644 -index 0000000..24e8d7a +index 000000000000..24e8d7a03274 --- /dev/null +++ gfx/graphite2/geckoextra/moz.build @@ -0,0 +1,21 @@ @@ -66,7 +66,7 @@ index 0000000..24e8d7a + +FINAL_LIBRARY = 'gkmedias' diff --git gfx/graphite2/moz-gr-update.sh gfx/graphite2/moz-gr-update.sh -index b91d9c1..a97e6eb 100755 +index b91d9c161cc7..a97e6eb20322 100755 --- gfx/graphite2/moz-gr-update.sh +++ gfx/graphite2/moz-gr-update.sh @@ -1,6 +1,7 @@ @@ -95,8 +95,9 @@ index b91d9c1..a97e6eb 100755 echo echo If gfx/graphite2/src/files.mk has changed, please make corresponding -diff --git gfx/harfbuzz/README-mozilla gfx/harfbuzz/README-mozilla -index 3180257..4587a3b 100644 +diff --git gfx/harfbuzz/README-mozilla.fbsd gfx/harfbuzz/README-mozilla.fbsd +new file mode 100644 +index 000000000000..2a10eb1e2b42 --- /dev/null +++ gfx/harfbuzz/README-mozilla.fbsd @@ -0,0 +1,4 @@ @@ -105,7 +106,7 @@ index 3180257..4587a3b 100644 +with checkout version or increment latest tag by one if it's not based +on upstream release. diff --git gfx/moz.build gfx/moz.build -index 4d6d63d..cd57b0c 100644 +index 56ea317bedfc..07dd7f66f1bc 100644 --- gfx/moz.build +++ gfx/moz.build @@ -10,6 +10,14 @@ with Files("**"): @@ -133,10 +134,10 @@ index 4d6d63d..cd57b0c 100644 "thebes", "ipc", diff --git gfx/skia/generate_mozbuild.py gfx/skia/generate_mozbuild.py -index 5e0fd17..860b80a 100755 +index c161d24df853..8c7dd395b371 100755 --- gfx/skia/generate_mozbuild.py +++ gfx/skia/generate_mozbuild.py -@@ -96,6 +96,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'): +@@ -91,6 +91,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'): '-Wno-unused-private-field', ] @@ -147,10 +148,10 @@ index 5e0fd17..860b80a 100755 LOCAL_INCLUDES += [ "/gfx/cairo/cairo/src", diff --git gfx/skia/moz.build gfx/skia/moz.build -index 524bd28..615c93b 100755 +index 83aa2957a938..0859316a1f09 100644 --- gfx/skia/moz.build +++ gfx/skia/moz.build -@@ -488,6 +488,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'): +@@ -601,6 +601,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'): '-Wno-unused-private-field', ] @@ -161,10 +162,10 @@ index 524bd28..615c93b 100755 LOCAL_INCLUDES += [ "/gfx/cairo/cairo/src", diff --git gfx/thebes/moz.build gfx/thebes/moz.build -index baa6f09..4f02a9e 100644 +index 97f02d59f51a..04c75cc7234d 100644 --- gfx/thebes/moz.build +++ gfx/thebes/moz.build -@@ -286,7 +286,13 @@ if CONFIG["MOZ_WAYLAND"]: +@@ -290,7 +290,13 @@ if CONFIG["MOZ_WAYLAND"]: LOCAL_INCLUDES += CONFIG["SKIA_INCLUDES"] @@ -177,13 +178,13 @@ index baa6f09..4f02a9e 100644 +if CONFIG["MOZ_SYSTEM_HARFBUZZ"]: + CXXFLAGS += CONFIG["MOZ_HARFBUZZ_CFLAGS"] - if CONFIG["CC_TYPE"] == "clang": - # Suppress warnings from Skia header files. + CXXFLAGS += ["-Werror=switch"] + diff --git intl/unicharutil/util/moz.build intl/unicharutil/util/moz.build -index 301eb9a..7cece5e 100644 +index 2bbd00415cae..f66bd37695d4 100644 --- intl/unicharutil/util/moz.build +++ intl/unicharutil/util/moz.build -@@ -25,6 +25,9 @@ UNIFIED_SOURCES += [ +@@ -24,6 +24,9 @@ UNIFIED_SOURCES += [ "nsUnicodeProperties.cpp", ] @@ -194,7 +195,7 @@ index 301eb9a..7cece5e 100644 GeneratedFile( diff --git netwerk/dns/moz.build netwerk/dns/moz.build -index f769e27..315bdd4 100644 +index 784a1631fba9..574e739e22a0 100644 --- netwerk/dns/moz.build +++ netwerk/dns/moz.build @@ -102,6 +102,9 @@ GeneratedFile( @@ -208,10 +209,10 @@ index f769e27..315bdd4 100644 LOCAL_INCLUDES += [ "/netwerk/base", diff --git old-configure.in old-configure.in *** 73952 LINES SKIPPED ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202403222044.42MKiVuv034367>