From c5de939a20d467a220ab7cc2e14f0db17b2112f1 Mon Sep 17 00:00:00 2001 From: B Stack Date: Thu, 20 Aug 2020 06:56:39 -0400 Subject: WIP: add initial de-gtkifying from Gord This does not compile and fails out because of missing file bin/gtk2/libmozgtk.so --- ...re-horizontal-scrollbars-are-not-too-tall.patch | 23 ++ .../patches/UXP-eliminate-need-for-GTK-2.patch | 295 +++++++++++++++++++++ ...bject-files-before-shared-library-linking.patch | 39 +++ newmoon/debian/patches/series | 3 + 4 files changed, 360 insertions(+) create mode 100644 newmoon/debian/patches/UXP-GTK-3-interface-Ensure-horizontal-scrollbars-are-not-too-tall.patch create mode 100644 newmoon/debian/patches/UXP-eliminate-need-for-GTK-2.patch create mode 100644 newmoon/debian/patches/UXP-strip-object-files-before-shared-library-linking.patch diff --git a/newmoon/debian/patches/UXP-GTK-3-interface-Ensure-horizontal-scrollbars-are-not-too-tall.patch b/newmoon/debian/patches/UXP-GTK-3-interface-Ensure-horizontal-scrollbars-are-not-too-tall.patch new file mode 100644 index 0000000..0c06d85 --- /dev/null +++ b/newmoon/debian/patches/UXP-GTK-3-interface-Ensure-horizontal-scrollbars-are-not-too-tall.patch @@ -0,0 +1,23 @@ +# This patch was created by Gordon N. Squash. +# +# When applied, this patch corrects a long-standing bug in UXP and sizes +# horizontal scrollbars correctly in the GTK+ 3 user interface backend to UXP. +# +# This patch is stable. It does not adversely affect UXP in any way -- in +# fact, its application is beneficial, as far as the author can tell. +# +# WARNING! This is not an official patch in any way, shape or form! Do not +# contact the original authors of UXP for support of this patch! +# +diff -uprN palemoon-28.12.0-original/platform/widget/gtk/nsNativeThemeGTK.cpp palemoon-28.12.0-patched/platform/widget/gtk/nsNativeThemeGTK.cpp +--- palemoon-28.12.0-original/platform/widget/gtk/nsNativeThemeGTK.cpp 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/widget/gtk/nsNativeThemeGTK.cpp 2020-08-06 15:43:22.876133836 -0400 +@@ -1438,7 +1438,7 @@ nsNativeThemeGTK::GetMinimumWidgetSize(n + { + if (gtk_check_version(3,20,0) == nullptr) { + moz_gtk_get_widget_min_size(MOZ_GTK_SCROLLBAR_BUTTON, +- &(aResult->width), &(aResult->height)); ++ &(aResult->height), &(aResult->width)); + } else { + MozGtkScrollbarMetrics metrics; + moz_gtk_get_scrollbar_metrics(&metrics); diff --git a/newmoon/debian/patches/UXP-eliminate-need-for-GTK-2.patch b/newmoon/debian/patches/UXP-eliminate-need-for-GTK-2.patch new file mode 100644 index 0000000..7eaffa9 --- /dev/null +++ b/newmoon/debian/patches/UXP-eliminate-need-for-GTK-2.patch @@ -0,0 +1,295 @@ +# This patch was created by Gordon N. Squash. +# +# This patch can be used to eliminate the Unified XUL Platform's need for both +# GTK+ 2 and GTK+ 3, even when you are compiling UXP only to use GTK+ 3. +# +# This patch is still highly experimental. The author of this patch has not +# yet encountered any issues with this patch, but there are no guarantees. +# +# WARNING! This is not an official patch in any way, shape or form! Do not +# contact the original authors of UXP for support of this patch! +# +diff -uprN palemoon-28.12.0-original/platform/config/recurse.mk palemoon-28.12.0-patched/platform/config/recurse.mk +--- palemoon-28.12.0-original/platform/config/recurse.mk 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/config/recurse.mk 2020-08-19 13:12:24.228334662 -0400 +@@ -161,9 +161,9 @@ endif + + # Interdependencies that moz.build world don't know about yet for compilation. + # Note some others are hardcoded or "guessed" in recursivemake.py and emitter.py +-ifeq ($(MOZ_WIDGET_TOOLKIT),gtk3) +-toolkit/library/target: widget/gtk/mozgtk/gtk3/target +-endif ++#ifeq ($(MOZ_WIDGET_TOOLKIT),gtk3) ++#toolkit/library/target: widget/gtk/mozgtk/gtk3/target ++#endif + ifdef MOZ_LDAP_XPCOM + ldap/target: config/external/nss/target mozglue/build/target + toolkit/library/target: ldap/target +diff -uprN palemoon-28.12.0-original/platform/dom/ipc/moz.build palemoon-28.12.0-patched/platform/dom/ipc/moz.build +--- palemoon-28.12.0-original/platform/dom/ipc/moz.build 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/dom/ipc/moz.build 2020-08-19 11:20:54.768059475 -0400 +@@ -114,6 +114,7 @@ LOCAL_INCLUDES += [ + '/dom/workers', + '/embedding/components/printingui/ipc', + '/extensions/cookie', ++ '/extensions/spellcheck/hunspell/glue', + '/extensions/spellcheck/src', + '/gfx/2d', + '/hal/sandbox', +diff -uprN palemoon-28.12.0-original/platform/dom/plugins/ipc/moz.build palemoon-28.12.0-patched/platform/dom/plugins/ipc/moz.build +--- palemoon-28.12.0-original/platform/dom/plugins/ipc/moz.build 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/dom/plugins/ipc/moz.build 2020-08-18 14:55:40.548143359 -0400 +@@ -121,11 +121,7 @@ LOCAL_INCLUDES += [ + + DEFINES['FORCE_PR_LOG'] = True + +-if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'gtk3': +- CXXFLAGS += CONFIG['TK_CFLAGS'] +-else: +- # Force build against gtk+2 for struct offsets and such. +- CXXFLAGS += CONFIG['MOZ_GTK2_CFLAGS'] ++CXXFLAGS += CONFIG['TK_CFLAGS'] + + CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] + +diff -uprN palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginInstanceChild.cpp palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginInstanceChild.cpp +--- palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginInstanceChild.cpp 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginInstanceChild.cpp 2020-08-19 12:33:46.736239327 -0400 +@@ -52,7 +52,9 @@ + #include + #include + #include ++#if MOZ_WIDGET_GTK == 2 + #include "gtk2xtbin.h" ++#endif + + #elif defined(OS_WIN) + +@@ -152,7 +154,7 @@ + , mAsyncInvalidateTask(0) + , mCachedWindowActor(nullptr) + , mCachedElementActor(nullptr) +-#ifdef MOZ_WIDGET_GTK ++#if MOZ_WIDGET_GTK == 2 + , mXEmbed(false) + #endif // MOZ_WIDGET_GTK + #if defined(OS_WIN) +@@ -201,7 +203,7 @@ + #if defined(MOZ_X11) && defined(XP_UNIX) && !defined(XP_MACOSX) + mWindow.ws_info = &mWsInfo; + memset(&mWsInfo, 0, sizeof(mWsInfo)); +-#ifdef MOZ_WIDGET_GTK ++#if MOZ_WIDGET_GTK == 2 + mWsInfo.display = nullptr; + mXtClient.top_widget = nullptr; + #else +@@ -610,7 +612,7 @@ + return NPERR_GENERIC_ERROR; + + NPWindowType newWindowType = windowed ? NPWindowTypeWindow : NPWindowTypeDrawable; +-#ifdef MOZ_WIDGET_GTK ++#if MOZ_WIDGET_GTK == 2 + if (mWindow.type != newWindowType && mWsInfo.display) { + // plugin type has been changed but we already have a valid display + // so update it for the recent plugin mode +@@ -1202,7 +1204,7 @@ + aWindow.x, aWindow.y, + aWindow.width, aWindow.height)); + +-#ifdef MOZ_WIDGET_GTK ++#if MOZ_WIDGET_GTK == 2 + if (mXEmbed) { + mWindow.window = reinterpret_cast(aWindow.window); + } +@@ -1231,7 +1233,7 @@ + if (!mWindow.window) + return; + +-#ifdef MOZ_WIDGET_GTK ++#if MOZ_WIDGET_GTK == 2 + if (mXtClient.top_widget) { + xt_client_unrealize(&mXtClient); + xt_client_destroy(&mXtClient); +@@ -1313,7 +1315,7 @@ + CreateWindow(aWindow); + } + +-#ifdef MOZ_WIDGET_GTK ++#if MOZ_WIDGET_GTK == 2 + if (mXEmbed && gtk_check_version(2,18,7) != nullptr) { // older + if (aWindow.type == NPWindowTypeWindow) { + GdkWindow* socket_window = gdk_window_lookup(static_cast(aWindow.window)); +@@ -1439,7 +1441,7 @@ + bool + PluginInstanceChild::Initialize() + { +-#ifdef MOZ_WIDGET_GTK ++#if MOZ_WIDGET_GTK == 2 + NPError rv; + + if (mWsInfo.display) { +@@ -4650,7 +4652,7 @@ + + mPendingAsyncCalls.Clear(); + +-#ifdef MOZ_WIDGET_GTK ++#if MOZ_WIDGET_GTK == 2 + if (mWindow.type == NPWindowTypeWindow && !mXEmbed) { + xt_client_xloop_destroy(); + } +diff -uprN palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginInstanceChild.h palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginInstanceChild.h +--- palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginInstanceChild.h 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginInstanceChild.h 2020-08-19 11:51:36.556135241 -0400 +@@ -35,7 +35,7 @@ + + #include + +-#ifdef MOZ_WIDGET_GTK ++#if MOZ_WIDGET_GTK == 2 + #include "gtk2xtbin.h" + #endif + +@@ -458,7 +458,7 @@ private: + + #if defined(MOZ_X11) && defined(XP_UNIX) && !defined(XP_MACOSX) + NPSetWindowCallbackStruct mWsInfo; +-#ifdef MOZ_WIDGET_GTK ++#if MOZ_WIDGET_GTK == 2 + bool mXEmbed; + XtClient mXtClient; + #endif +diff -uprN palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginModuleChild.cpp palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginModuleChild.cpp +--- palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginModuleChild.cpp 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginModuleChild.cpp 2020-08-19 12:52:01.880284378 -0400 +@@ -13,6 +13,7 @@ + + #ifdef MOZ_WIDGET_GTK + #include ++#include + #endif + + #include "nsIFile.h" +@@ -1094,7 +1095,7 @@ _getvalue(NPP aNPP, + case NPNVSupportsWindowless: + *(NPBool*)aValue = PluginModuleChild::GetChrome()->Settings().supportsWindowless(); + return NPERR_NO_ERROR; +-#if defined(MOZ_WIDGET_GTK) ++#if MOZ_WIDGET_GTK == 2 + case NPNVxDisplay: { + if (aNPP) { + return InstCast(aNPP)->NPN_GetValue(aVariable, aValue); +diff -uprN palemoon-28.12.0-original/platform/dom/plugins/test/testplugin/testplugin.mozbuild palemoon-28.12.0-patched/platform/dom/plugins/test/testplugin/testplugin.mozbuild +--- palemoon-28.12.0-original/platform/dom/plugins/test/testplugin/testplugin.mozbuild 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/dom/plugins/test/testplugin/testplugin.mozbuild 2020-08-18 14:56:31.168144491 -0400 +@@ -49,13 +49,20 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wind + if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa' and '64' in CONFIG['OS_TEST']: + OS_LIBS += ['-framework Carbon'] + +-if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): ++if CONFIG['MOZ_WIDGET_TOOLKIT'] in 'gtk2': + CXXFLAGS += CONFIG['MOZ_GTK2_CFLAGS'] + CFLAGS += CONFIG['MOZ_GTK2_CFLAGS'] + OS_LIBS += CONFIG['MOZ_GTK2_LIBS'] + OS_LIBS += CONFIG['XLDFLAGS'] + OS_LIBS += CONFIG['XLIBS'] + OS_LIBS += CONFIG['XEXT_LIBS'] ++elif CONFIG['MOZ_WIDGET_TOOLKIT'] in 'gtk3': ++ CXXFLAGS += CONFIG['MOZ_GTK3_CFLAGS'] ++ CFLAGS += CONFIG['MOZ_GTK3_CFLAGS'] ++ OS_LIBS += CONFIG['MOZ_GTK3_LIBS'] ++ OS_LIBS += CONFIG['XLDFLAGS'] ++ OS_LIBS += CONFIG['XLIBS'] ++ OS_LIBS += CONFIG['XEXT_LIBS'] + + if CONFIG['_MSC_VER']: + # This is intended as a temporary hack to support building with VS2015. +diff -uprN palemoon-28.12.0-original/platform/old-configure.in palemoon-28.12.0-patched/platform/old-configure.in +--- palemoon-28.12.0-original/platform/old-configure.in 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/old-configure.in 2020-08-18 14:54:27.952141735 -0400 +@@ -2324,8 +2324,6 @@ if test "$COMPILE_ENVIRONMENT"; then + fi + if test "$MOZ_WIDGET_TOOLKIT" = gtk2; then + GLIB_VERSION_MAX_ALLOWED=$GLIB_VERSION_MIN_REQUIRED +- fi +- if test "$MOZ_ENABLE_GTK"; then + if test "$MOZ_X11"; then + GDK_PACKAGES=gdk-x11-2.0 + fi +@@ -2334,8 +2332,6 @@ if test "$COMPILE_ENVIRONMENT"; then + + PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 $GDK_PACKAGES) + MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS" +- fi +- if test "$MOZ_WIDGET_TOOLKIT" = gtk2; then + TK_CFLAGS=$MOZ_GTK2_CFLAGS + TK_LIBS=$MOZ_GTK2_LIBS + fi +diff -uprN palemoon-28.12.0-original/platform/toolkit/library/moz.build palemoon-28.12.0-patched/platform/toolkit/library/moz.build +--- palemoon-28.12.0-original/platform/toolkit/library/moz.build 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/toolkit/library/moz.build 2020-08-19 14:14:17.820487430 -0400 +@@ -117,10 +117,10 @@ if CONFIG['USE_ICU']: + 'icu', + ] + +-if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': +- USE_LIBS += [ +- 'mozgtk_stub', +- ] ++#if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': ++# USE_LIBS += [ ++# 'mozgtk_stub', ++# ] + + if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT'] or \ + CONFIG['MOZ_TREE_FREETYPE']: +@@ -231,16 +231,18 @@ if CONFIG['MOZ_ENABLE_DBUS']: + OS_LIBS += CONFIG['MOZ_DBUS_GLIB_LIBS'] + + if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: +- if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': +- OS_LIBS += [l for l in CONFIG['TK_LIBS'] +- if l not in ('-lgtk-3', '-lgdk-3')] +- else: +- OS_LIBS += CONFIG['TK_LIBS'] ++# if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': ++# OS_LIBS += [l for l in CONFIG['TK_LIBS'] ++# if l not in ('-lgtk-3', '-lgdk-3')] ++# else: ++# OS_LIBS += CONFIG['TK_LIBS'] ++ OS_LIBS += CONFIG['TK_LIBS'] + OS_LIBS += CONFIG['XLDFLAGS'] + OS_LIBS += CONFIG['XLIBS'] + OS_LIBS += CONFIG['XEXT_LIBS'] + OS_LIBS += CONFIG['MOZ_PANGO_LIBS'] +- OS_LIBS += CONFIG['XT_LIBS'] ++ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk2': ++ OS_LIBS += CONFIG['XT_LIBS'] + OS_LIBS += [ + 'gthread-2.0', + ] +diff -uprN palemoon-28.12.0-original/platform/widget/gtk/moz.build palemoon-28.12.0-patched/platform/widget/gtk/moz.build +--- palemoon-28.12.0-original/platform/widget/gtk/moz.build 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/widget/gtk/moz.build 2020-08-19 12:31:16.304233138 -0400 +@@ -4,8 +4,8 @@ + # License, v. 2.0. If a copy of the MPL was not distributed with this + # file, You can obtain one at http://mozilla.org/MPL/2.0/. + +-if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': +- DIRS += ['mozgtk'] ++#if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': ++# DIRS += ['mozgtk'] + + EXPORTS += [ + 'mozcontainer.h', +diff -uprN palemoon-28.12.0-original/platform/widget/moz.build palemoon-28.12.0-patched/platform/widget/moz.build +--- palemoon-28.12.0-original/platform/widget/moz.build 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/widget/moz.build 2020-08-18 15:01:26.856151106 -0400 +@@ -53,7 +53,7 @@ if toolkit in ('cocoa', 'gtk2', 'gtk3'): + if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: + DIRS += ['gtk'] + +- if CONFIG['MOZ_X11']: ++ if CONFIG['MOZ_X11'] and CONFIG['MOZ_WIDGET_TOOKIT'] == 'gtk2': + DIRS += ['gtkxtbin'] + + XPIDL_SOURCES += [ diff --git a/newmoon/debian/patches/UXP-strip-object-files-before-shared-library-linking.patch b/newmoon/debian/patches/UXP-strip-object-files-before-shared-library-linking.patch new file mode 100644 index 0000000..ee6f1a0 --- /dev/null +++ b/newmoon/debian/patches/UXP-strip-object-files-before-shared-library-linking.patch @@ -0,0 +1,39 @@ +# This patch was created by Gordon N. Squash. +# +# This patch, when applied, strips unneeded symbols from object files which +# are about to be linked into a library built as part of the Unified XUL +# Platform. This is useful to reduce memory consumption during the actual +# linking process; the author of this patch has noted that stripping component +# object files before linking into a UXP library often means the linker uses +# less than a tenth of the memory that it normally would. The author has +# also noted that with this patch applied, the linking process takes about a +# tenth as long as it normally would. +# +# As far as the author can tell, this patch does not break UXP in any way. +# +# WARNING! This is not an official patch in any way, shape or form! Do not +# contact the original authors of UXP for support of this patch! +# +diff -uprN palemoon-28.12.0-original/platform/config/rules.mk palemoon-28.12.0-patched/platform/config/rules.mk +--- palemoon-28.12.0-original/platform/config/rules.mk 2020-07-30 05:37:13.000000000 -0400 ++++ palemoon-28.12.0-patched/platform/config/rules.mk 2020-08-19 14:02:28.300458242 -0400 +@@ -776,9 +776,19 @@ ifdef DTRACE_LIB_DEPENDENT + ifndef XP_MACOSX + dtrace -x nolibs -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS)) + endif ++ifdef ENABLE_STRIP ++ifneq ($(strip $(STATIC_LIBS)),) ++ $(EXPAND_LIBS_EXEC) -- $(STRIP) --strip-unneeded $(STATIC_LIBS) ++endif # $(STATIC_LIBS) != "" ++endif # ENABLE_STRIP + $(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(MOZILLA_PROBE_LIBS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(EXTRA_LIBS) $(OS_LIBS) $(SHLIB_LDENDFILE) + @$(RM) $(DTRACE_PROBE_OBJ) + else # ! DTRACE_LIB_DEPENDENT ++ifdef ENABLE_STRIP ++ifneq ($(strip $(STATIC_LIBS)),) ++ $(EXPAND_LIBS_EXEC) -- $(STRIP) --strip-unneeded $(STATIC_LIBS) ++endif # $(STATIC_LIBS) != "" ++endif # ENABLE_STRIP + $(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(EXTRA_LIBS) $(OS_LIBS) $(SHLIB_LDENDFILE) + endif # DTRACE_LIB_DEPENDENT + $(call CHECK_BINARY,$@) diff --git a/newmoon/debian/patches/series b/newmoon/debian/patches/series index 33659d1..0922dcc 100644 --- a/newmoon/debian/patches/series +++ b/newmoon/debian/patches/series @@ -2,3 +2,6 @@ small-icons.patch bgstack15-newmoon.patch pm-devuan.patch vendor.patch +UXP-eliminate-need-for-GTK-2.patch +UXP-GTK-3-interface-Ensure-horizontal-scrollbars-are-not-too-tall.patch +UXP-strip-object-files-before-shared-library-linking.patch -- cgit