diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a356143..db772c3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,7 +9,7 @@ jobs: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - runs-on: macos-13 + runs-on: macos-14 steps: - uses: actions/checkout@v4 with: diff --git a/github-brotli.patch b/github-brotli.patch index bd17af1..0c7a731 100644 --- a/github-brotli.patch +++ b/github-brotli.patch @@ -1,24 +1,24 @@ --- modulesets/gtk-osx.modules +++ modulesets/gtk-osx.modules -@@ -127,8 +127,9 @@ - then build harfbuzz without cairo because cairo requires - harfbuzz. +@@ -109,8 +109,9 @@ + path so none of the libraries that depend on it can link. Require + the install name to be an absolute path. --> + -+ cmakeargs="-DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE -DCMAKE_DISABLE_FIND_PACKAGE_BZip2=TRUE -D BUILD_SHARED_LIBS=true -D CMAKE_BUILD_TYPE=Release -DCMAKE_DISABLE_FIND_PACKAGE_BrotliDec=TRUE"> - - ++ cmakeargs='-DFT_DISABLE_HARFBUZZ=ON -DBUILD_SHARED_LIBS=true -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_NAME_DIR="${JHBUILD_PREFIX}/lib" -DCMAKE_DISABLE_FIND_PACKAGE_BrotliDec=TRUE'> + - + -+ cmakeargs="-DCMAKE_DISABLE_FIND_PACKAGE_BZip2=TRUE -D BUILD_SHARED_LIBS=true -D CMAKE_BUILD_TYPE=Release -DCMAKE_DISABLE_FIND_PACKAGE_BrotliDec=TRUE"> - - ++ cmakeargs='-DFT_REQUIRE_HARFBUZZ=ON -DBUILD_SHARED_LIBS=true -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_NAME_DIR="${JHBUILD_PREFIX}/lib" -DCMAKE_DISABLE_FIND_PACKAGE_BrotliDec=TRUE'> + - + - - - - - + - + - - - + + + - - - - - - - - - + - - + @@ -106,7 +85,6 @@ hash="sha256:63aede5c6d33b6d9b13511cd0be2cac046f2e70fd0a07aa9573a04a82783af96" repo="ftp.gnu.org" /> - @@ -119,53 +97,47 @@ - - - - - - - - - + mesonargs="-Dwith-system-libdir=/usr/lib -Dwith-system-includedir=/usr/include"> + + - + - + - + @@ -187,13 +157,11 @@ hash="sha256:e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995" repo="github" /> - + @@ -202,7 +170,6 @@ hash="sha256:fcf497688a1d531b192301bd09c55adefda5a662729a58eb8a895166e38ef219" repo="github" /> - - - + @@ -228,5 +194,4 @@ - diff --git a/modulesets/gtk-osx-bootstrap.modules b/modulesets/gtk-osx-bootstrap.modules index 49bd4be..252c1ee 100644 --- a/modulesets/gtk-osx-bootstrap.modules +++ b/modulesets/gtk-osx-bootstrap.modules @@ -2,11 +2,9 @@ - + - - - - - + + hash="sha256:e525fa6fdc3df33cec6b499111f44afa78ce50bf260158580dcf014015a21ba9" + repo="github-tarball" > + - - - + + - - - + @@ -76,19 +73,17 @@ - - + - + - @@ -97,5 +92,4 @@ - diff --git a/modulesets/gtk-osx-gstreamer.modules b/modulesets/gtk-osx-gstreamer.modules index 6e0ea8c..e84c772 100644 --- a/modulesets/gtk-osx-gstreamer.modules +++ b/modulesets/gtk-osx-gstreamer.modules @@ -2,11 +2,9 @@ - + - - - + - - - - + - - + - - - - + - - + - - + - - - + + - - + + + - + - - + @@ -115,18 +104,17 @@ - - + + - @@ -138,5 +126,4 @@ - diff --git a/modulesets/gtk-osx-gtkmm.modules b/modulesets/gtk-osx-gtkmm.modules index dc234b2..2b12014 100644 --- a/modulesets/gtk-osx-gtkmm.modules +++ b/modulesets/gtk-osx-gtkmm.modules @@ -2,33 +2,24 @@ - + - - - + - - - - + @@ -71,12 +59,12 @@ - - + hash="sha256:1b24c92624ae1275ccb57758175d35f7c39ad3342d8c0b4ba60f0d9849d2d08a"> + @@ -84,18 +72,16 @@ - - + - - + - - - - @@ -148,11 +130,10 @@ - - + @@ -161,5 +142,4 @@ - diff --git a/modulesets/gtk-osx-network.modules b/modulesets/gtk-osx-network.modules index 7bea8b9..2ba8534 100644 --- a/modulesets/gtk-osx-network.modules +++ b/modulesets/gtk-osx-network.modules @@ -2,11 +2,9 @@ - + - - + type="tarball" /> @@ -32,38 +27,33 @@ - + - + - + - - @@ -71,14 +61,13 @@ - - @@ -86,28 +75,26 @@ - - - - + - - @@ -117,65 +104,58 @@ - - - - + - - + + + - - - - - + - - + - - + @@ -183,57 +163,50 @@ - - + - - + - - - - - + - + autogen-sh="configure"> - - - + - - + @@ -274,39 +246,35 @@ - - - + - + cmakeargs='-DPORT=GTK -DENABLE_X11_TARGET=OFF -DENABLE_QUARTZ_TARGET=ON -DENABLE_MINIBROWSER=ON -DENABLE_INTROSPECTION=ON -DUSE_SYSTEMD=OFF -DENABLE_VIDEO=OFF -DENABLE_WEB_AUDIO=OFF -DENABLE_GEOLOCATION=OFF -DUSE_LIBNOTIFY=OFF -DUSE_LIBHYPHEN=OFF -DUSE_LIBSECRET=OFF -DENABLE_TOUCH_EVENTS=OFF -DUSE_OPENJPEG=OFF -DUSE_WOFF2=OFF -DUSE_WPE_RENDERER=OFF -DENABLE_GRAPHICS_CONTEXT_GL=OFF -DENABLE_GAMEPAD=OFF -DUSE_APPLE_ICU=NO -DCMAKE_CXX_FLAGS="-stdlib=libc++ -Wno-deprecated-declarations -Wno-unused-but-set-variable -Wno-deprecated-copy -Wno-missing-template-arg-list-after-template-kw" -DCMAKE_MACOSX_RPATH=OFF -DCMAKE_INSTALL_NAME_DIR="${JHBUILD_PREFIX}/lib"'> - --> @@ -337,5 +304,4 @@ - diff --git a/modulesets/gtk-osx-python.modules b/modulesets/gtk-osx-python.modules index af5117a..23c4de3 100644 --- a/modulesets/gtk-osx-python.modules +++ b/modulesets/gtk-osx-python.modules @@ -2,35 +2,26 @@ - + - - - - + @@ -39,30 +30,27 @@ - - - - + + + - + - - @@ -70,11 +58,10 @@ - - + @@ -82,33 +69,25 @@ - - - - + - - - - + + - - + diff --git a/modulesets/gtk-osx-random.modules b/modulesets/gtk-osx-random.modules index fbaa2e7..4334568 100644 --- a/modulesets/gtk-osx-random.modules +++ b/modulesets/gtk-osx-random.modules @@ -2,11 +2,9 @@ - + - - - + - - - - - - - - - - - - - + repo="itstool" /> - - - - + - - + - - - + + - - - + - https://www.sqlite.org/ - + autogen-template="%(srcdir)s/%(autogen-sh)s --prefix=%(prefix)s"> + + + + + + + + - + - + - - - @@ -228,7 +200,7 @@ - + @@ -246,51 +218,44 @@ - + + + + + + + + + + - + repo="ftp.gnu.org" /> - - - + + repo="iso-codes" + revision="v4.17.0" /> - - - - - - - - - - - - - + @@ -298,5 +263,4 @@ - diff --git a/modulesets/gtk-osx.modules b/modulesets/gtk-osx.modules index 25d58a9..80fba8a 100644 --- a/modulesets/gtk-osx.modules +++ b/modulesets/gtk-osx.modules @@ -3,11 +3,9 @@ - + - - - - @@ -41,42 +27,33 @@ type="tarball" /> - + - + - @@ -87,83 +64,77 @@ - - - - - - - - + + - - + + - - - + - - - + @@ -171,52 +142,46 @@ - - - + - - - + - - - - - + + @@ -225,26 +190,24 @@ - - + - + - - @@ -252,39 +215,31 @@ - - - - --> - - - - + mesonargs="-Dfontconfig=enabled -Dintrospection=enabled"> + - - - + - + - - @@ -310,13 +263,11 @@ - - - + - + + + + + @@ -346,7 +299,6 @@ - - - + mesonargs="-Dx11-backend=false -Dmedia-gstreamer=disabled -Dintrospection=enabled"> + @@ -372,48 +323,48 @@ - - - - + - - - + + + + + + + + + - - + - + - + - diff --git a/modulesets/patches/WebKit2Gtk3-2.32.0-misc-fixes.patch b/modulesets/patches/WebKit2Gtk3-2.32.0-misc-fixes.patch index ff03856..45dee94 100644 --- a/modulesets/patches/WebKit2Gtk3-2.32.0-misc-fixes.patch +++ b/modulesets/patches/WebKit2Gtk3-2.32.0-misc-fixes.patch @@ -45,3 +45,51 @@ } #endif +--- a/Source/WebCore/platform/LayoutUnit.h ++++ b/Source/WebCore/platform/LayoutUnit.h +@@ -83,7 +83,7 @@ + { + m_value = clampToInteger(value * kFixedPointDenominator); + } +- ++ LayoutUnit(const LayoutUnit& other) = default; + LayoutUnit& operator=(const LayoutUnit& other) = default; + LayoutUnit& operator=(const float& other) { return *this = LayoutUnit(other); } + + +--- a/Source/WebCore/xml/XSLStyleSheetLibxslt.cpp ++++ b/Source/WebCore/xml/XSLStyleSheetLibxslt.cpp +@@ -139,7 +139,8 @@ + if (frame && frame->page()) + console = &frame->page()->console(); + +- XMLDocumentParserScope scope(cachedResourceLoader(), XSLTProcessor::genericErrorFunc, XSLTProcessor::parseErrorFunc, console); ++ XMLDocumentParserScope scope(cachedResourceLoader(), XSLTProcessor::genericErrorFunc, ++ (xmlStructuredErrorFunc)XSLTProcessor::parseErrorFunc, console); + + auto upconvertedCharacters = StringView(string).upconvertedCharacters(); + const char* buffer = reinterpret_cast(upconvertedCharacters.get()); + +--- a/Source/WebCore/xml/XSLTProcessorLibxslt.cpp ++++ b/Source/WebCore/xml/XSLTProcessorLibxslt.cpp +@@ -130,7 +130,7 @@ + Frame* frame = globalProcessor->xslStylesheet()->ownerDocument()->frame(); + if (frame && frame->page()) + console = &frame->page()->console(); +- xmlSetStructuredErrorFunc(console, XSLTProcessor::parseErrorFunc); ++ xmlSetStructuredErrorFunc(console, (xmlStructuredErrorFunc)XSLTProcessor::parseErrorFunc); + xmlSetGenericErrorFunc(console, XSLTProcessor::genericErrorFunc); + + // We don't specify an encoding here. Neither Gecko nor WinIE respects + +--- a/Source/WTF/wtf/Platform.h ++++ b/Source/WTF/wtf/Platform.h +@@ -115,6 +115,7 @@ + /* ICU configuration. Some of these match ICU defaults on some platforms, but we would like them consistently set everywhere we build WebKit. */ + #define U_HIDE_DEPRECATED_API 1 + #define U_SHOW_CPLUSPLUS_API 0 ++#define U_SHOW_CPLUSPLUS_HEADER_API 0 + #ifdef __cplusplus + #define UCHAR_TYPE char16_t + #endif + diff --git a/modulesets/patches/glib-2.83.4-remove-osx-version-check.patch b/modulesets/patches/glib-2.83.4-remove-osx-version-check.patch new file mode 100644 index 0000000..3376fe5 --- /dev/null +++ b/modulesets/patches/glib-2.83.4-remove-osx-version-check.patch @@ -0,0 +1,13 @@ +--- a/meson.build ++++ b/meson.build +@@ -995,8 +995,8 @@ + add_languages('objc', native: false, required: true) + objcc = meson.get_compiler('objc') + if not objcc.compiles('''#include + #if MAC_OS_X_VERSION_MIN_REQUIRED < 101300 +- #error message "GLib requires macOS 10.13 or later." ++ // #error message "GLib requires macOS 10.13 or later." + #endif''', + name : 'macOS 10.13 or later') + error('GLib requires macOS 10.13 or later.') + diff --git a/modulesets/patches/gnutls-gnulib.patch b/modulesets/patches/gnutls-gnulib.patch index d464063..dcdb84c 100644 --- a/modulesets/patches/gnutls-gnulib.patch +++ b/modulesets/patches/gnutls-gnulib.patch @@ -1,12 +1,12 @@ --- a/src/gl/verify.h 2023-02-09 06:55:15.000000000 -0800 +++ b/src/gl/verify.h 2023-06-30 13:53:05.000000000 -0700 -@@ -213,7 +213,7 @@ +@@ -213,5 +213,5 @@ # define _GL_VERIFY(R, DIAGNOSTIC, ...) _Static_assert (R, DIAGNOSTIC) #else - # define _GL_VERIFY(R, DIAGNOSTIC, ...) \ -- extern int (*_GL_GENSYM (_gl_verify_function) (void)) \ -+ int (*_GL_GENSYM (_gl_verify_function) (void)) \ - [_GL_VERIFY_TRUE (R, DIAGNOSTIC)] - # if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) - # pragma GCC diagnostic ignored "-Wnested-externs" + # define _GL_VERIFY(R, DIAGNOSTIC, ...) \ +- extern int (*_GL_GENSYM (_gl_verify_function) (void)) \ ++ int (*_GL_GENSYM (_gl_verify_function) (void)) \ + [_GL_VERIFY_TRUE (R, DIAGNOSTIC)] +# if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) && !defined __clang__ +# pragma GCC diagnostic ignored "-Wnested-externs" diff --git a/modulesets/patches/gspell-1.14-enchant-resource-path.patch b/modulesets/patches/gspell-1.14-enchant-resource-path.patch new file mode 100644 index 0000000..fdf5529 --- /dev/null +++ b/modulesets/patches/gspell-1.14-enchant-resource-path.patch @@ -0,0 +1,82 @@ +From 94528397ba2cff5006a37b79e7cc4b25bf38265f Mon Sep 17 00:00:00 2001 +From: John Ralls +Date: Tue, 14 Jan 2025 15:48:56 -0800 +Subject: [PATCH] macOS: Set the bundle resource path for enchant. + +Otherwise it can't find its modules in an app bundle. +--- + gspell/gspell-language.c | 6 ++++++ + gspell/gspell-osx.c | 20 ++++++++++++++++---- + gspell/gspell-osx.h | 2 ++ + 3 files changed, 24 insertions(+), 4 deletions(-) + +diff --git a/gspell/gspell-language.c b/gspell/gspell-language.c +index 6754290..671e7fb 100644 +--- a/gspell/gspell-language.c ++++ b/gspell/gspell-language.c +@@ -89,6 +89,12 @@ gspell_language_get_available (void) + static GList *available_languages = NULL; + EnchantBroker *broker; + ++#ifdef __APPLE__ ++ gchar* resource_path = _gspell_osx_get_resource_path (); ++ if (resource_path) ++ enchant_set_prefix_dir (resource_path); ++#endif ++ + if (initialized) + { + return available_languages; +diff --git a/gspell/gspell-osx.c b/gspell/gspell-osx.c +index 7c791b0..87ccd21 100644 +--- a/gspell/gspell-osx.c ++++ b/gspell/gspell-osx.c +@@ -7,12 +7,10 @@ + #import + + gchar * +-_gspell_osx_get_preferred_spell_language () ++_gspell_osx_get_preferred_spell_language (void) + { + gchar *ret = NULL; +- NSAutoreleasePool *pool; +- +- pool = [[NSAutoreleasePool alloc] init]; ++ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + #if defined(MAC_OS_X_VERSION_10_5) && MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5 + NSArray *langs; +@@ -27,4 +25,18 @@ _gspell_osx_get_preferred_spell_language () + + [pool release]; + return ret; ++ ++} ++ ++gchar * ++_gspell_osx_get_resource_path (void) ++{ ++ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; ++ gchar *str = NULL; ++ NSString *path = [[NSBundle mainBundle] resourcePath]; ++ if (!path) ++ return NULL; ++ str = strdup ([path UTF8String]); ++ [pool release]; ++ return str; + } +diff --git a/gspell/gspell-osx.h b/gspell/gspell-osx.h +index ddb40ea..17fd536 100644 +--- a/gspell/gspell-osx.h ++++ b/gspell/gspell-osx.h +@@ -11,5 +11,7 @@ G_BEGIN_DECLS + + G_GNUC_INTERNAL + gchar * _gspell_osx_get_preferred_spell_language (void); ++G_GNUC_INTERNAL ++gchar * _gspell_osx_get_resource_path (void); + + G_END_DECLS +-- +2.39.5 (Apple Git-154) + diff --git a/modulesets/patches/gst-plugins-bad-missing-enum.patch b/modulesets/patches/gst-plugins-bad-missing-enum.patch new file mode 100644 index 0000000..78a0d62 --- /dev/null +++ b/modulesets/patches/gst-plugins-bad-missing-enum.patch @@ -0,0 +1,19 @@ +# https://code.videolan.org/videolan/vlc/-/merge_requests/1966/diffs +# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7157 +--- a/sys/applemedia/vtdec.c 2024-12-29 18:02:51 ++++ b/sys/applemedia/vtdec.c 2024-12-29 18:14:48 +@@ -76,6 +76,14 @@ + VTDEC_FRAME_FLAG_ERROR = (1 << 12), + }; + ++// Error enum values introduced in macOS 12 ++#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < 120000 ++enum ++{ ++ kVTVideoDecoderReferenceMissingErr = -17694 ++}; ++#endif ++ + static void gst_vtdec_finalize (GObject * object); + + static gboolean gst_vtdec_start (GstVideoDecoder * decoder); diff --git a/modulesets/patches/gtk-3.24.48-GtkNotebook-drag-operation-failed.patch b/modulesets/patches/gtk-3.24.48-GtkNotebook-drag-operation-failed.patch new file mode 100644 index 0000000..622e80f --- /dev/null +++ b/modulesets/patches/gtk-3.24.48-GtkNotebook-drag-operation-failed.patch @@ -0,0 +1,27 @@ +From cfb2ec3410fc3c640688e9d873ea942f232b317a Mon Sep 17 00:00:00 2001 +From: John Ralls +Date: Wed, 16 Apr 2025 11:25:35 -0400 +Subject: [PATCH 5/5] GtkNotebook: Set drag operation to None on drag_failed. + +Otherwise it's stuck on whatever the drag was and if that was +DRAG_OPERATION_DETACHED it stops the current tab being drawn because +of the test for that at the end of gtk_notebook_draw_tabs. +--- + gtk/gtknotebook.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c +index f51570e745..b90f689b6a 100644 +--- a/gtk/gtknotebook.c ++++ b/gtk/gtknotebook.c +@@ -3765,6 +3765,7 @@ gtk_notebook_drag_failed (GtkWidget *widget, + GtkNotebookPrivate *priv = notebook->priv; + + priv->rootwindow_drop = FALSE; ++ priv->operation = DRAG_OPERATION_NONE; + + if (result == GTK_DRAG_RESULT_NO_TARGET) + { +-- +2.39.5 (Apple Git-154) + diff --git a/modulesets/patches/gtk-3.24.48-check-all-dnd-windows.patch b/modulesets/patches/gtk-3.24.48-check-all-dnd-windows.patch new file mode 100644 index 0000000..f1cbf11 --- /dev/null +++ b/modulesets/patches/gtk-3.24.48-check-all-dnd-windows.patch @@ -0,0 +1,30 @@ +From 0bf87214125519671545e92b2fd1845f0a10faa1 Mon Sep 17 00:00:00 2001 +From: John Ralls +Date: Thu, 10 Apr 2025 12:05:37 -0400 +Subject: [PATCH] [quartz] Check all the windows not just the first one. + +--- + gdk/quartz/GdkQuartzNSWindow.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/gdk/quartz/GdkQuartzNSWindow.c b/gdk/quartz/GdkQuartzNSWindow.c +index b00175871f..eaefa76e09 100644 +--- a/gdk/quartz/GdkQuartzNSWindow.c ++++ b/gdk/quartz/GdkQuartzNSWindow.c +@@ -790,9 +790,10 @@ update_context_from_dragging_info (id sender) + wh = gdk_window_get_height (win); + + if (gx > wx && gy > wy && gx <= wx + ww && gy <= wy + wh) +- event->dnd.context->dest_window = g_object_ref (win); +- break; +- } ++ { ++ event->dnd.context->dest_window = g_object_ref (win); ++ break; ++ }} + } + + device = gdk_drag_context_get_device (_gdk_quartz_drag_source_context); +-- +2.39.5 (Apple Git-154) + diff --git a/modulesets/patches/gtk-3.24.48-fix-context-menus-non-Retina.patch b/modulesets/patches/gtk-3.24.48-fix-context-menus-non-Retina.patch new file mode 100644 index 0000000..edfb189 --- /dev/null +++ b/modulesets/patches/gtk-3.24.48-fix-context-menus-non-Retina.patch @@ -0,0 +1,34 @@ +From ae49ae3f657dc0086eca8873213cf9dcee953ab8 Mon Sep 17 00:00:00 2001 +From: John Ralls +Date: Thu, 12 Jun 2025 16:06:02 -0700 +Subject: [PATCH] [Quartz] Set the view's frame in a move for temp windows. + +Temp windows (context menus mostly) are created at 0,0 then moved to the +pointer location. When the move is from a Retina to a non-Retina monitor +the view needs to be redrawn at the new scale, but macOS doesn't recognize +that and the menu ends up truncated. Setting the frame on the view forces +the redraw. + +Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/7598 +--- + gdk/quartz/gdkwindow-quartz.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c +index 9a6aea9c6f..08e47dd089 100644 +--- a/gdk/quartz/gdkwindow-quartz.c ++++ b/gdk/quartz/gdkwindow-quartz.c +@@ -1393,6 +1393,10 @@ move_resize_window_internal (GdkWindow *window, + + frame_rect = [impl->toplevel frameRectForContentRect:content_rect]; + [impl->toplevel setFrame:frame_rect display:YES]; ++ ++ if (window->window_type == GDK_WINDOW_TEMP) ++ [impl->view setFrame:content_rect]; ++ + impl->cairo_surface = gdk_quartz_ref_cairo_surface (window); + cairo_surface_destroy (impl->cairo_surface); // Remove the extra reference + } +-- +2.39.5 (Apple Git-154) + diff --git a/modulesets/patches/gtk-3.24.48-fix-leaking-cairo-surface.patch b/modulesets/patches/gtk-3.24.48-fix-leaking-cairo-surface.patch new file mode 100644 index 0000000..5395f60 --- /dev/null +++ b/modulesets/patches/gtk-3.24.48-fix-leaking-cairo-surface.patch @@ -0,0 +1,25 @@ +From 6906f010aa5ae3fb0cfb3b6bed47e7bd4fa37e1b Mon Sep 17 00:00:00 2001 +From: John Ralls +Date: Mon, 17 Mar 2025 15:05:50 -0700 +Subject: [PATCH 2/5] [quartz] Fix leak of GdkWindowImplQuartz's cairo surface. + +--- + gdk/quartz/gdkwindow-quartz.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c +index 68c1ebd971..6a7527599d 100644 +--- a/gdk/quartz/gdkwindow-quartz.c ++++ b/gdk/quartz/gdkwindow-quartz.c +@@ -1126,6 +1126,8 @@ gdk_quartz_window_destroy (GdkWindow *window, + cairo_surface_finish (impl->cairo_surface); + cairo_surface_set_user_data (impl->cairo_surface, &gdk_quartz_cairo_key, + NULL, NULL); ++ if (cairo_surface_get_reference_count(impl->cairo_surface)) ++ cairo_surface_destroy(impl->cairo_surface); + impl->cairo_surface = NULL; + } + +-- +2.39.5 (Apple Git-154) + diff --git a/modulesets/patches/gtk-3.24.48-remove-redundant-NSView-calls.patch b/modulesets/patches/gtk-3.24.48-remove-redundant-NSView-calls.patch new file mode 100644 index 0000000..9f43053 --- /dev/null +++ b/modulesets/patches/gtk-3.24.48-remove-redundant-NSView-calls.patch @@ -0,0 +1,68 @@ +From 8fa5fccf15cae457fcbddf8f59602b44f06550e4 Mon Sep 17 00:00:00 2001 +From: John Ralls +Date: Mon, 17 Mar 2025 13:24:47 -0700 +Subject: [PATCH 1/5] [quartz] Remove redundant NSView calls + +macOS calls NSView setFrame: and posts the FraneDidChange notification +without being told, so these calls resulted in more than one +notification/execution for a single event. + +Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/7329 +--- + gdk/quartz/GdkQuartzNSWindow.c | 2 -- + gdk/quartz/gdkwindow-quartz.c | 8 -------- + 2 files changed, 10 deletions(-) + +diff --git a/gdk/quartz/GdkQuartzNSWindow.c b/gdk/quartz/GdkQuartzNSWindow.c +index b00175871f..77185149d8 100644 +--- a/gdk/quartz/GdkQuartzNSWindow.c ++++ b/gdk/quartz/GdkQuartzNSWindow.c +@@ -251,8 +251,6 @@ synthesize_configure_event(GdkWindow *window) + content_rect.origin.x = 0; + content_rect.origin.y = 0; + +- [[self contentView] setFrame:content_rect]; +- + /* Certain resize operations (e.g. going fullscreen), also move the + * origin of the window. + */ +diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c +index 5d6d522846..68c1ebd971 100644 +--- a/gdk/quartz/gdkwindow-quartz.c ++++ b/gdk/quartz/gdkwindow-quartz.c +@@ -993,10 +993,6 @@ _gdk_quartz_display_create_window_impl (GdkDisplay *display, + impl->view = [[GdkQuartzView alloc] initWithFrame:content_rect]; + [impl->view setGdkWindow:window]; + [impl->toplevel setContentView:impl->view]; +- [[NSNotificationCenter defaultCenter] addObserver: impl->toplevel +- selector: @selector (windowDidResize:) +- name: @"NSViewFrameDidChangeNotification" +- object: impl->view]; + } + break; + +@@ -1390,7 +1386,6 @@ move_resize_window_internal (GdkWindow *window, + content_rect = NSMakeRect (gx, gy, window->width, window->height); + + frame_rect = [impl->toplevel frameRectForContentRect:content_rect]; +- [impl->toplevel setFrame:frame_rect display:YES]; + impl->cairo_surface = gdk_quartz_ref_cairo_surface (window); + cairo_surface_destroy (impl->cairo_surface); // Remove the extra reference + } +@@ -1433,13 +1428,10 @@ move_resize_window_internal (GdkWindow *window, + by:delta]; + } + +- [impl->view setFrame:nsrect]; +- + gdk_quartz_window_set_needs_display_in_region (window, expose_region); + } + else + { +- [impl->view setFrame:nsrect]; + [impl->view setNeedsDisplay:YES]; + } + +-- +2.39.5 (Apple Git-154) + diff --git a/modulesets/patches/gtk-mac-integration-work-around-svg-locale-bug.patch b/modulesets/patches/gtk-mac-integration-work-around-svg-locale-bug.patch deleted file mode 100644 index 9f0be23..0000000 --- a/modulesets/patches/gtk-mac-integration-work-around-svg-locale-bug.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 9774a706d1d89abaaf3dfbd9522b28934cc29138 Mon Sep 17 00:00:00 2001 -From: John Ralls -Date: Sat, 18 Sep 2021 13:11:02 -0700 -Subject: [PATCH] Set C locale when creating a menu item. - -Works around macOS bug described in https://gitlab.gnome.org/GNOME/gtk-mac-integration/-/issues/14. ---- - src/GNSMenuItem.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/GNSMenuItem.c b/src/GNSMenuItem.c -index 48ec0d1..81d2547 100644 ---- a/src/GNSMenuItem.c -+++ b/src/GNSMenuItem.c -@@ -44,6 +44,7 @@ idle_call_activate (ClosureData *action) - - /* All menu items have the action "activate", which will be handled by this child class - */ -+ const char* locale = setlocale(LC_NUMERIC, "C"); - self = [ super initWithTitle: title action: @selector (activate: ) keyEquivalent: @"" ]; - - if (self) -@@ -58,6 +59,7 @@ idle_call_activate (ClosureData *action) - notUsed = NO; - g_weak_ref_set (&menuItem, GTK_MENU_ITEM (gtkmenuitem)); - } -+ setlocale(LC_NUMERIC, locale); - return self; - } - --- -2.30.1 (Apple Git-130) - diff --git a/modulesets/patches/librsvg-2.60.0-remove-osx-version-check.patch b/modulesets/patches/librsvg-2.60.0-remove-osx-version-check.patch new file mode 100644 index 0000000..a7fe000 --- /dev/null +++ b/modulesets/patches/librsvg-2.60.0-remove-osx-version-check.patch @@ -0,0 +1,12 @@ +--- a/meson.build ++++ b/meson.build +@@ -33,8 +33,8 @@ + # https://github.com/rust-lang/rust/pull/116319 + ret = cc.compiles('''#include + #include + #if !((TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101200L) || (TARGET_OS_IOS && __IPHONE_OS_VERSION_MIN_REQUIRED >= 100000L)) +-# error "https://gitlab.gnome.org/GNOME/librsvg/-/issues/1097" ++//# error "https://gitlab.gnome.org/GNOME/librsvg/-/issues/1097" + #endif''', + name: 'Targets at least macOS 10.12 or iOS 10', + ) diff --git a/modulesets/patches/librsvg-fix-symbol-link-argument.patch b/modulesets/patches/librsvg-fix-symbol-link-argument.patch new file mode 100644 index 0000000..b98486c --- /dev/null +++ b/modulesets/patches/librsvg-fix-symbol-link-argument.patch @@ -0,0 +1,44 @@ +From e18cadd81602fc7fc34fcc857cd8b610114260bd Mon Sep 17 00:00:00 2001 +From: "L. E. Segovia" +Date: Thu, 3 Jul 2025 13:47:10 -0300 +Subject: [PATCH] meson: Fix symbol link argument missing in non-Windows builds + +I forgot to fix this upstream; on the Meson port for FFmpeg we had tried a +similar approach, but it ended up being useless because link arguments will +actually run against the provided objects, unlike compiler arguments. Meson's +dummy executable will obviously lack the listed symbols. + +Fixes #1177 + +Part-of: +--- + rsvg/meson.build | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/rsvg/meson.build b/rsvg/meson.build +index f25912743..3de6fbed6 100644 +--- a/rsvg/meson.build ++++ b/rsvg/meson.build +@@ -170,6 +170,8 @@ version_script = meson.current_build_dir() / '@0@.def'.format(librsvg_pc) + + if host_system in ['darwin', 'ios'] + vflag = '-Wl,-exported_symbols_list,@0@'.format(version_script) ++elif host_system in ['windows', 'cygwin'] ++ vflag = [] + else + vflag = '-Wl,--version-script,@0@'.format(version_script) + endif +@@ -192,7 +194,9 @@ strip_link_args = cc.get_supported_link_arguments( + '-Wl,-Bsymbolic-functions', + ) + +-link_args = cc.get_supported_link_arguments([vflag]) + strip_link_args ++# The symbol list argument cannot be tested, as the dummy ++# executable Meson uses will lack the necessary functions. ++link_args = strip_link_args + vflag + + # Some systems, reportedly OpenBSD and macOS, refuse + # to create libraries without any object files. Compiling +-- +2.45.2 + diff --git a/modulesets/patches/librsvg-libpixbufloader-install-names.patch b/modulesets/patches/librsvg-libpixbufloader-install-names.patch new file mode 100644 index 0000000..9acbad3 --- /dev/null +++ b/modulesets/patches/librsvg-libpixbufloader-install-names.patch @@ -0,0 +1,25 @@ +--- a/gdk-pixbuf-loader/meson_install.py 2024-10-29 16:44:51 ++++ b/gdk-pixbuf-loader/meson_install.py 2025-04-03 15:10:45 +@@ -15,6 +16,22 @@ + + if __name__ == '__main__': + args = argparse.parse_args() ++ if sys.platform in ['darwin', 'ios']: ++ modulepath = Path(args.gdk_pixbuf_moduledir).resolve() ++ prefix = modulepath.parent.parent.parent ++ location = modulepath ++ if 'DESTDIR' in os.environ: ++ location = Path(os.environ['DESTDIR']) / modulepath.relative_to('/') ++ oldfilepath = location / 'libpixbufloader_svg.dylib' ++ newfilename = 'libpixbufloader-svg.so' ++ newfilepath = location / newfilename ++ installfilepath = modulepath / 'libpixbufloader-svg.so' ++ librsvgpath = prefix / 'librsvg-2.2.dylib' ++ os.rename(oldfilepath.as_posix(), newfilepath.as_posix()) ++ subprocess.run( ++ ['install_name_tool', '-id', installfilepath.as_posix(), newfilepath.as_posix()]) ++ subprocess.run( ++ ['install_name_tool', '-change', '@rpath/librsvg-2.2.dylib', librsvgpath.as_posix(), newfilepath.as_posix()]) + + cache_file: Path = args.gdk_pixbuf_cache_file + diff --git a/modulesets/patches/libtool-apple-sort.patch b/modulesets/patches/libtool-apple-sort.patch index 8c880ef..20937bd 100644 --- a/modulesets/patches/libtool-apple-sort.patch +++ b/modulesets/patches/libtool-apple-sort.patch @@ -1,29 +1,31 @@ --- a/Makefile.am 2015-01-20 07:34:33.000000000 -0800 +++ b/Makefile.am 2021-11-12 10:18:23.000000000 -0800 -@@ -416,8 +416,8 @@ +@@ -418,8 +418,8 @@ # files created in the build tree, so instead we regenerate the # manual pages if the sources for the build-tree files we want to # run have changed. -$(libtool_1): $(ltmain_sh) -- $(AM_V_GEN)$(update_mans) --help-option=--help-all libtool +- $(AM_V_GEN)$(update_mans) -n 'Provide generalized library-building support services' --help-option=--help-all libtool +#$(libtool_1): $(ltmain_sh) -+# $(AM_V_GEN)$(update_mans) --help-option=--help-all libtool ++# $(AM_V_GEN)$(update_mans) -n 'Provide generalized library-building support services' --help-option=--help-all libtool $(libtoolize_1): $(libtoolize_in) - $(AM_V_GEN)$(update_mans) libtoolize + $(AM_V_GEN)$(update_mans) -n 'Prepare a package to use libtool' libtoolize + --- s/Makefile.in 2015-02-15 08:14:14.000000000 -0800 +++ b/Makefile.in 2021-11-12 10:26:26.000000000 -0800 -@@ -2324,8 +2324,8 @@ +@@ -2427,8 +2427,8 @@ # files created in the build tree, so instead we regenerate the # manual pages if the sources for the build-tree files we want to # run have changed. -$(libtool_1): $(ltmain_sh) -- $(AM_V_GEN)$(update_mans) --help-option=--help-all libtool +- $(AM_V_GEN)$(update_mans) -n 'Provide generalized library-building support services' --help-option=--help-all libtool +#$(libtool_1): $(ltmain_sh) -+# $(AM_V_GEN)$(update_mans) --help-option=--help-all libtool ++# $(AM_V_GEN)$(update_mans) -n 'Provide generalized library-building support services' --help-option=--help-all libtool $(libtoolize_1): $(libtoolize_in) - $(AM_V_GEN)$(update_mans) libtoolize + $(AM_V_GEN)$(update_mans) -n 'Prepare a package to use libtool' libtoolize + --- a/build-aux/ltmain.in 2015-02-06 04:57:56.000000000 -0800 +++ b/build-aux/ltmain.in 2021-11-08 14:58:33.000000000 -0800 @@ -3188,7 +3188,7 @@ diff --git a/modulesets/patches/nasm-dont-install-docs.patch b/modulesets/patches/nasm-dont-install-docs.patch new file mode 100644 index 0000000..e9417e7 --- /dev/null +++ b/modulesets/patches/nasm-dont-install-docs.patch @@ -0,0 +1,14 @@ +--- a/Makefile.in 2024-04-17 09:48:27 ++++ n/Makefile.in 2025-04-21 16:15:43 +@@ -394,9 +394,6 @@ + install: $(PROGS) + $(MKDIR_P) $(DESTDIR)$(bindir) + $(INSTALL_PROGRAM) $(PROGS) $(DESTDIR)$(bindir)/ +- $(MKDIR_P) $(DESTDIR)$(mandir)/man1 +- $(INSTALL_DATA) $(srcdir)/nasm.1 $(DESTDIR)$(mandir)/man1/nasm.1 +- $(INSTALL_DATA) $(srcdir)/ndisasm.1 $(DESTDIR)$(mandir)/man1/ndisasm.1 + + clean: + for d in . $(SUBDIRS) $(XSUBDIRS); do \ + +Diff finished. Mon Apr 21 16:15:55 2025 diff --git a/modulesets/patches/pango-ct-font-fallback.patch b/modulesets/patches/pango-ct-font-fallback.patch deleted file mode 100644 index f0a872c..0000000 --- a/modulesets/patches/pango-ct-font-fallback.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff --git a/pango/pangocoretext-fontmap.c b/pango/pangocoretext-fontmap.c -index 7eb00113..983e6fcb 100644 ---- a/pango/pangocoretext-fontmap.c -+++ b/pango/pangocoretext-fontmap.c -@@ -1538,6 +1538,15 @@ pango_core_text_font_map_init (PangoCoreTextFontMap *ctfontmap) - g_hash_table_insert (ctfontmap->families, - g_utf8_casefold (family->family_name, -1), family); - } -+ /* Insert .AppleSystemUIFont because it isn't included in the result -+ * set from CTFontCollectionCreateFromAvailableFonts. If it's not -+ * included in the families fontset it can't be used to render text. -+ */ -+ family = g_object_new (PANGO_TYPE_CORE_TEXT_FAMILY, NULL); -+ family->family_name = g_strdup (".AppleSystemUIFont"); -+ g_hash_table_insert (ctfontmap->families, -+ g_utf8_casefold (family->family_name, -1), family); -+ - } - - static PangoFontFace * ---- a/pango/pangocoretext.c -+++ b/pango/pangocoretext.c -@@ -82,6 +82,7 @@ ct_font_descriptor_get_coverage (CTFontDescriptorRef desc) - const UInt8 *ptr, *plane_ptr; - const UInt32 plane_size = 8192; - PangoCoverage *coverage; -+ CFStringRef font_name; - - coverage = pango_coverage_new (); - -@@ -89,6 +90,13 @@ ct_font_descriptor_get_coverage (CTFontDescriptorRef desc) - if (!charset) - /* Return an empty coverage */ - return coverage; -+ /* .AppleSymbols Fallback's CTFontDescriptor has a host of members -+ * but the font appears to have no glyphs so return an empty -+ * coverage. -+ */ -+ font_name = (CFStringRef)CTFontDescriptorCopyAttribute(desc, kCTFontNameAttribute); -+ if (CFStringCompare(font_name, CFSTR(".AppleSymbolsFB"), 0) == kCFCompareEqualTo) -+ return coverage; - - bitmap = CFCharacterSetCreateBitmapRepresentation (kCFAllocatorDefault, - charset); diff --git a/modulesets/patches/sqlite3-install-name.patch b/modulesets/patches/sqlite3-install-name.patch new file mode 100644 index 0000000..e46715d --- /dev/null +++ b/modulesets/patches/sqlite3-install-name.patch @@ -0,0 +1,13 @@ +--- a/Makefile.in ++++ b/Makefile.in +@@ -148,7 +148,8 @@ + $(libsqlite3.SO): sqlite3.o + $(CC) -o $@ sqlite3.o $(LDFLAGS.shlib) \ + $(LDFLAGS) $(LDFLAGS.libsqlite3) \ +- $(LDFLAGS.libsqlite3.os-specific) $(LDFLAGS.libsqlite3.soname) ++ $(LDFLAGS.libsqlite3.os-specific) $(LDFLAGS.libsqlite3.soname) \ ++ -install_name ${JHBUILD_PREFIX}/lib/$@ + all: $(libsqlite3.SO) + + $(libsqlite3.LIB): sqlite3.o + diff --git a/modulesets/upstream-ref b/modulesets/upstream-ref index 492aea1..0ed1a87 100644 --- a/modulesets/upstream-ref +++ b/modulesets/upstream-ref @@ -1,5 +1,5 @@ -commit b0864c09e715b4964b6fb1f8228e9c939f3545d0 -Author: Fabian Wüthrich -Date: Fri Jul 19 23:27:52 2024 +0000 +commit 6216956ef73365a026b9fa7771e3077f0ea7fee6 +Author: John Ralls +Date: Mon Aug 4 12:24:37 2025 -0700 - Add install instructions to README + Update gcrypt, libgpg-error, and gnutls to the latest releases. diff --git a/pins.sh b/pins.sh index 706dec9..d208580 100644 --- a/pins.sh +++ b/pins.sh @@ -1,7 +1,7 @@ # https://gitlab.gnome.org/GNOME/gtk-osx/-/commits/master -# use latest commit (2024-07-24) -PIN_GTK_OSX_COMMIT='b0864c09' +# use latest commit (2025-08-04) +PIN_GTK_OSX_COMMIT='6216956e' # https://gitlab.gnome.org/GNOME/gtk-mac-bundler/-/commits/master -# use latest commit (2024-05-19) -PIN_GTK_MAC_BUNDLER_COMMIT='90443a1d' +# use latest commit (2025-03-20) +PIN_GTK_MAC_BUNDLER_COMMIT='774b5eaa'