summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormanu <manu@pkgsrc.org>2022-05-01 00:36:10 +0000
committermanu <manu@pkgsrc.org>2022-05-01 00:36:10 +0000
commit1ed89c1facdc7b06ac2325e5ffb1eca96485ca60 (patch)
treedc6e42d3cff1a5e778a62d15181aff87ed62e7b1
parentd038558cce9ef5e0c87f6f1ca3e9ac96ee47c8e4 (diff)
downloadpkgsrc-1ed89c1facdc7b06ac2325e5ffb1eca96485ca60.tar.gz
Let Articfox run on NetBSD PowerPC ports
This was tested on NetBSD-9.2/macppc Patches submitted upstream at https://github.com/wicknix/Arctic-Fox/pull/101
-rw-r--r--www/arcticfox/Makefile8
-rw-r--r--www/arcticfox/PLIST6
-rw-r--r--www/arcticfox/distinfo14
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_genstubs.pl18
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build29
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_arm_netbsd.cpp18
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_ppc_netbsd.cpp15
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_arm_netbsd.cpp55
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_netbsd_m68k.cpp56
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_linux.cpp20
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_netbsd.cpp57
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_netbsd.cpp56
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_openbsd.cpp56
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_xptcprivate.h29
-rw-r--r--www/arcticfox/patches/patch-xpcom_reflect_xptcall_xptcstubsdecl.inc18
15 files changed, 450 insertions, 5 deletions
diff --git a/www/arcticfox/Makefile b/www/arcticfox/Makefile
index a4456559c2c..fb698e6bbb3 100644
--- a/www/arcticfox/Makefile
+++ b/www/arcticfox/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.5 2022/04/18 19:12:16 adam Exp $
+# $NetBSD: Makefile,v 1.6 2022/05/01 00:36:10 manu Exp $
DISTNAME= arcticfox-39.0
PKGREVISION= 2
@@ -60,6 +60,11 @@ CONFIGURE_ARGS+= --with-system-zlib
TOOL_DEPENDS+= yasm>=1.1:../../devel/yasm
.endif
+PLIST_VARS+= nopowerpc
+.if ${MACHINE_ARCH} != "powerpc"
+PLIST.nopowerpc= yes
+.endif
+
CONFIGURE_DIRS= ${WRKDIR}/build
CONFIGURE_SCRIPT= ${WRKSRC}/configure
@@ -129,4 +134,5 @@ BUILDLINK_API_DEPENDS.libevent+= libevent>=1.1
.include "../../x11/libXt/buildlink3.mk"
.include "../../x11/pixman/buildlink3.mk"
#.include "../../mk/jpeg.buildlink3.mk"
+.include "../../mk/atomic64.mk"
.include "../../mk/bsd.pkg.mk"
diff --git a/www/arcticfox/PLIST b/www/arcticfox/PLIST
index c244f5a8d2e..1177c4de682 100644
--- a/www/arcticfox/PLIST
+++ b/www/arcticfox/PLIST
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.1 2022/02/05 20:51:07 nia Exp $
+@comment $NetBSD: PLIST,v 1.2 2022/05/01 00:36:10 manu Exp $
bin/arcticfox
include/${PKGNAME}/AbstractMediaDecoder.h
include/${PKGNAME}/ActiveLayerTracker.h
@@ -255,7 +255,7 @@ include/${PKGNAME}/SharedDecoderManager.h
include/${PKGNAME}/SharedSurface.h
include/${PKGNAME}/SharedSurfaceEGL.h
include/${PKGNAME}/SharedSurfaceGL.h
-include/${PKGNAME}/SkiaGLGlue.h
+${PLIST.nopowerpc}include/${PKGNAME}/SkiaGLGlue.h
include/${PKGNAME}/SoftwareVsyncSource.h
include/${PKGNAME}/SoftwareWebMVideoDecoder.h
include/${PKGNAME}/SourceBufferContentManager.h
@@ -2289,7 +2289,7 @@ include/${PKGNAME}/mozilla/gfx/DrawTargetTiled.h
include/${PKGNAME}/mozilla/gfx/Filters.h
include/${PKGNAME}/mozilla/gfx/Helpers.h
include/${PKGNAME}/mozilla/gfx/HelpersCairo.h
-include/${PKGNAME}/mozilla/gfx/HelpersSkia.h
+${PLIST.nopowerpc}include/${PKGNAME}/mozilla/gfx/HelpersSkia.h
include/${PKGNAME}/mozilla/gfx/Logging.h
include/${PKGNAME}/mozilla/gfx/Matrix.h
include/${PKGNAME}/mozilla/gfx/NumericTools.h
diff --git a/www/arcticfox/distinfo b/www/arcticfox/distinfo
index 9ebd75767af..cc4d3215190 100644
--- a/www/arcticfox/distinfo
+++ b/www/arcticfox/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.1 2022/02/05 20:51:07 nia Exp $
+$NetBSD: distinfo,v 1.2 2022/05/01 00:36:10 manu Exp $
BLAKE2s (arcticfox-39.0.tar.gz) = 87d8ae46ac9b5f0acebbad1962150804781f29fc9eb2bf1f77442624e4a4fea0
SHA512 (arcticfox-39.0.tar.gz) = 38fc4fa73c5c7d3ea692b2411580c519f6296622ea7f1cd86e784a3cc4d630a76ee699bb7f679a8dabd302c90bb4b7d786e853bed459b6e3b1efac59740db564
@@ -7,3 +7,15 @@ SHA1 (patch-configure.in) = a5c3c9534a776e61d761139161617ca6279db838
SHA1 (patch-ipc_chromium_src_base_message__pump__libevent.cc) = 38cf700d07d468526e16cfe63d434c4752da8cc5
SHA1 (patch-media_libcubeb_src_cubeb.c) = b3c4bd8146e2f7146baf1c2050260f7629cdb09a
SHA1 (patch-media_libcubeb_src_moz.build) = e98b39b6272b58d4183c526f36987ea239fadd5d
+SHA1 (patch-xpcom_reflect_xptcall_genstubs.pl) = f120ff2d52f6875505da477b12e32c40bbf005a2
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_moz.build) = 0c6b7851dce1d3554be6fa4d11032e7bc0d47b19
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_arm_netbsd.cpp) = a8f9e48088a09479fe510ca5be584ad71ecaa2f4
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_ppc_netbsd.cpp) = 42a82f3fe496b49afada33537b1b1d3dda2e5bf5
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs_arm_netbsd.cpp) = e576e939f7acb44bd7c0fc07d0dddf5bf745d6a6
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs_netbsd_m68k.cpp) = 47bc75f3991964b50f0b2bdb615004cbdcae145f
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_linux.cpp) = 60cb1b77d6737663ff4509ef00348ee32ba81e2d
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_netbsd.cpp) = 879f5d69d3c52a8ce6bea9373bd32f7c7762c03b
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_netbsd.cpp) = e8d15f754261c5e0f99b49b63ba01e339625eb59
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_openbsd.cpp) = ef5b28501ebc4e462998f2f28edd883353579789
+SHA1 (patch-xpcom_reflect_xptcall_xptcprivate.h) = 42d708c26969b6749fa14ed790c17dd96ca879d4
+SHA1 (patch-xpcom_reflect_xptcall_xptcstubsdecl.inc) = 0747a1b666494dec8d6005ade8cae8f33e6c928d
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_genstubs.pl b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_genstubs.pl
new file mode 100644
index 00000000000..a886025b0af
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_genstubs.pl
@@ -0,0 +1,18 @@
+$NetBSD: patch-xpcom_reflect_xptcall_genstubs.pl,v 1.1 2022/05/01 00:36:10 manu Exp $
+
+Bring NetBSD in line with other BSDs.
+Not sure abut the impact, but there is no reason to single it out
+
+--- xpcom/reflect/xptcall/genstubs.pl.orig 2022-04-18 02:30:50.477763337 +0000
++++ xpcom/reflect/xptcall/genstubs.pl 2022-04-17 05:04:03.346183732 +0000
+@@ -43,9 +43,9 @@
+ print OUTFILE "* 0 is QueryInterface\n";
+ print OUTFILE "* 1 is AddRef\n";
+ print OUTFILE "* 2 is Release\n";
+ print OUTFILE "*/\n";
+-print OUTFILE "#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__))\n";
++print OUTFILE "#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__) && !defined(__NetBSD__))\n";
+ for($i = 0; $i < $entry_count; $i++) {
+ print OUTFILE "NS_IMETHOD Stub",$i+3,"();\n";
+ }
+ print OUTFILE "#else\n";
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build
new file mode 100644
index 00000000000..98155cca2f6
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build
@@ -0,0 +1,29 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_moz.build,v 1.1 2022/05/01 00:36:10 manu Exp $
+
+- NetBSD/macppc reports OS_TEST as powerpc and not macppc
+- Use OpenBSD/powerpc MD stubs for NetBSD/powerpc
+
+--- xpcom/reflect/xptcall/md/unix/moz.build.orig 2022-04-18 02:30:50.487997116 +0000
++++ xpcom/reflect/xptcall/md/unix/moz.build 2022-04-23 01:07:48.540922360 +0000
+@@ -214,15 +214,16 @@
+ 'xptcstubs_asm_ppc64_linux.S',
+ 'xptcstubs_ppc64_linux.cpp',
+ ]
+
+-if CONFIG['OS_TEST'] in ('macppc', 'bebox', 'ofppc', 'prep', 'amigappc'):
++# OpenBSD/powerpc MD code is up to date and fits NetBSD
++if CONFIG['OS_TEST'] in ('powerpc', 'macppc', 'bebox', 'ofppc', 'prep', 'amigappc'):
+ if CONFIG['OS_ARCH'] == 'NetBSD':
+ SOURCES += [
+- 'xptcinvoke_asm_ppc_netbsd.s',
+- 'xptcinvoke_ppc_netbsd.cpp',
+- 'xptcstubs_asm_ppc_netbsd.s',
+- 'xptcstubs_ppc_netbsd.cpp',
++ 'xptcinvoke_asm_ppc_openbsd.S',
++ 'xptcinvoke_ppc_openbsd.cpp',
++ 'xptcstubs_asm_ppc_openbsd.S',
++ 'xptcstubs_ppc_openbsd.cpp',
+ ]
+
+ if CONFIG['OS_ARCH'] == 'OpenBSD' and CONFIG['OS_TEST'] == 'powerpc':
+ SOURCES += [
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_arm_netbsd.cpp b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_arm_netbsd.cpp
new file mode 100644
index 00000000000..1e0f944e5ed
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_arm_netbsd.cpp
@@ -0,0 +1,18 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_arm_netbsd.cpp,v 1.1 2022/05/01 00:36:10 manu Exp $
+
+Update to fit current code
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_arm_netbsd.cpp.orig 2022-04-18 02:30:50.498239249 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_arm_netbsd.cpp 2022-04-18 01:08:05.177311630 +0000
+@@ -100,9 +100,10 @@
+ uint32_t fn_count;
+ uint32_t fn_copy;
+ };
+
+-XPTC_PUBLIC_API(nsresult)
++
++EXPORT_XPCOM_API(nsresult)
+ XPTC_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
+ uint32_t paramCount, nsXPTCVariant* params)
+ {
+ uint32_t result;
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_ppc_netbsd.cpp b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_ppc_netbsd.cpp
new file mode 100644
index 00000000000..19f3a253e66
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_ppc_netbsd.cpp
@@ -0,0 +1,15 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke_ppc_netbsd.cpp,v 1.1 2022/05/01 00:36:11 manu Exp $
+
+Update to fit current code
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_netbsd.cpp.orig 2022-04-18 02:30:50.508558042 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_netbsd.cpp 2022-04-17 06:36:22.117064855 +0000
+@@ -109,7 +109,7 @@
+ }
+ }
+
+ extern "C"
+-XPTC_PUBLIC_API(nsresult)
++EXPORT_XPCOM_API(nsresult)
+ XPTC_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
+ uint32_t paramCount, nsXPTCVariant* params);
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_arm_netbsd.cpp b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_arm_netbsd.cpp
new file mode 100644
index 00000000000..35319633b50
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_arm_netbsd.cpp
@@ -0,0 +1,55 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs_arm_netbsd.cpp,v 1.1 2022/05/01 00:36:11 manu Exp $
+
+Update to fit current code
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_arm_netbsd.cpp.orig 2022-04-18 02:30:50.518733769 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_arm_netbsd.cpp 2022-04-18 01:57:51.824233012 +0000
+@@ -5,29 +5,28 @@
+
+ /* Implement shared vtbl methods. */
+
+ #include "xptcprivate.h"
++#include "xptiprivate.h"
+
+ nsresult ATTRIBUTE_USED
+ PrepareAndDispatch(nsXPTCStubBase* self, uint32_t methodIndex, uint32_t* args)
+ {
+ #define PARAM_BUFFER_COUNT 16
+
+ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
+ nsXPTCMiniVariant* dispatchParams = nullptr;
+- nsIInterfaceInfo* iface_info = nullptr;
+- const nsXPTMethodInfo* info;
++ const nsXPTMethodInfo* info = nullptr;
+ uint8_t paramCount;
+ uint8_t i;
+ nsresult result = NS_ERROR_FAILURE;
+
+ NS_ASSERTION(self,"no self");
+
+- self->GetInterfaceInfo(&iface_info);
+- NS_ASSERTION(iface_info,"no interface info");
+-
+- iface_info->GetMethodInfo(uint16_t(methodIndex), &info);
+- NS_ASSERTION(info,"no interface info");
++ self->mEntry->GetMethodInfo(uint16_t(methodIndex), &info);
++ NS_ASSERTION(info,"no method info");
++ if (!info)
++ return NS_ERROR_UNEXPECTED;
+
+ paramCount = info->GetParamCount();
+
+ // setup variant array pointer
+@@ -70,11 +69,9 @@
+ break;
+ }
+ }
+
+- result = self->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+-
+- NS_RELEASE(iface_info);
++ result = self->mOuter->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+
+ if(dispatchParams != paramBuffer)
+ delete [] dispatchParams;
+
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_netbsd_m68k.cpp b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_netbsd_m68k.cpp
new file mode 100644
index 00000000000..c9aabdc8921
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_netbsd_m68k.cpp
@@ -0,0 +1,56 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs_netbsd_m68k.cpp,v 1.1 2022/05/01 00:36:11 manu Exp $
+
+Update to fit current code
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_netbsd_m68k.cpp.orig 2022-04-18 02:30:50.528949644 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_netbsd_m68k.cpp 2022-04-18 01:58:14.671629551 +0000
+@@ -5,8 +5,9 @@
+
+ /* Implement shared vtbl methods. */
+
+ #include "xptcprivate.h"
++#include "xptiprivate.h"
+
+ #if !defined(__NetBSD__) || !defined(__m68k__)
+ #error This code is for NetBSD/m68k only
+ #endif
+@@ -18,21 +19,19 @@
+ #define PARAM_BUFFER_COUNT 16
+
+ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
+ nsXPTCMiniVariant* dispatchParams = nullptr;
+- nsIInterfaceInfo* iface_info = nullptr;
+- const nsXPTMethodInfo* info;
++ const nsXPTMethodInfo* info = nullptr;
+ uint8_t paramCount;
+ uint8_t i;
+ nsresult result = NS_ERROR_FAILURE;
+
+ NS_ASSERTION(self,"no self");
+
+- self->GetInterfaceInfo(&iface_info);
+- NS_ASSERTION(iface_info,"no interface info");
+-
+- iface_info->GetMethodInfo(uint16_t(methodIndex), &info);
+- NS_ASSERTION(info,"no interface info");
++ self->mEntry->GetMethodInfo(uint16_t(methodIndex), &info);
++ NS_ASSERTION(info,"no method info");
++ if (!info)
++ return NS_ERROR_UNEXPECTED;
+
+ paramCount = info->GetParamCount();
+
+ // setup variant array pointer
+@@ -79,11 +78,9 @@
+ break;
+ }
+ }
+
+- result = self->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+-
+- NS_RELEASE(iface_info);
++ result = self->mOuter->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+
+ if(dispatchParams != paramBuffer)
+ delete [] dispatchParams;
+
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_linux.cpp b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_linux.cpp
new file mode 100644
index 00000000000..7767fea2206
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_linux.cpp
@@ -0,0 +1,20 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_linux.cpp,v 1.1 2022/05/01 00:36:11 manu Exp $
+
+Update to fit current code
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_ppc_linux.cpp.orig 2022-04-18 02:30:50.539220748 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_ppc_linux.cpp 2022-04-18 01:42:03.669133784 +0000
+@@ -48,8 +48,13 @@
+ NS_ASSERTION(self,"no self");
+
+ self->mEntry->GetMethodInfo(uint16_t(methodIndex), &info);
+ NS_ASSERTION(info,"no method info");
++ if (!info)
++ return NS_ERROR_UNEXPECTED;
++
++ iface_info->GetMethodInfo(uint16_t(methodIndex), &info);
++ NS_ASSERTION(info,"no method info");
+ if (! info)
+ return NS_ERROR_UNEXPECTED;
+
+ paramCount = info->GetParamCount();
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_netbsd.cpp b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_netbsd.cpp
new file mode 100644
index 00000000000..e15cc2ef586
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_netbsd.cpp
@@ -0,0 +1,57 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs_ppc_netbsd.cpp,v 1.1 2022/05/01 00:36:11 manu Exp $
+
+Update to fit current code
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_ppc_netbsd.cpp.orig 2022-04-18 02:30:50.549401901 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_ppc_netbsd.cpp 2022-04-18 01:58:29.047568136 +0000
+@@ -5,8 +5,9 @@
+
+ // Implement shared vtbl methods.
+
+ #include "xptcprivate.h"
++#include "xptiprivate.h"
+
+ // The Linux/PPC ABI (aka PPC/SYSV ABI) passes the first 8 integral
+ // parameters and the first 8 floating point parameters in registers
+ // (r3-r10 and f1-f8), no stack space is allocated for these by the
+@@ -35,24 +36,18 @@
+ double *fprData)
+ {
+ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
+ nsXPTCMiniVariant* dispatchParams = nullptr;
+- nsIInterfaceInfo* iface_info = nullptr;
+- const nsXPTMethodInfo* info;
++ const nsXPTMethodInfo* info = nullptr;
+ uint32_t paramCount;
+ uint32_t i;
+ nsresult result = NS_ERROR_FAILURE;
+
+ NS_ASSERTION(self,"no self");
+
+- self->GetInterfaceInfo(&iface_info);
+- NS_ASSERTION(iface_info,"no interface info");
+- if (! iface_info)
+- return NS_ERROR_UNEXPECTED;
+-
+- iface_info->GetMethodInfo(uint16_t(methodIndex), &info);
++ self->mEntry->GetMethodInfo(uint16_t(methodIndex), &info);
+ NS_ASSERTION(info,"no method info");
+- if (! info)
++ if (!info)
+ return NS_ERROR_UNEXPECTED;
+
+ paramCount = info->GetParamCount();
+
+@@ -143,11 +138,9 @@
+ break;
+ }
+ }
+
+- result = self->CallMethod((uint16_t) methodIndex, info, dispatchParams);
+-
+- NS_RELEASE(iface_info);
++ result = self->mOuter->CallMethod((uint16_t) methodIndex, info, dispatchParams);
+
+ if (dispatchParams != paramBuffer)
+ delete [] dispatchParams;
+
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_netbsd.cpp b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_netbsd.cpp
new file mode 100644
index 00000000000..e458274937b
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_netbsd.cpp
@@ -0,0 +1,56 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_netbsd.cpp,v 1.1 2022/05/01 00:36:11 manu Exp $
+
+Update to fit current code
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_sparc_netbsd.cpp.orig 2022-04-18 02:30:50.559501293 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_sparc_netbsd.cpp 2022-04-18 01:58:41.453538297 +0000
+@@ -5,8 +5,9 @@
+
+ /* Implement shared vtbl methods. */
+
+ #include "xptcprivate.h"
++#include "xptiprivate.h"
+
+ #if defined(sparc) || defined(__sparc__)
+
+ extern "C" nsresult ATTRIBUTE_USED
+@@ -22,21 +23,19 @@
+ #define PARAM_BUFFER_COUNT 16
+
+ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
+ nsXPTCMiniVariant* dispatchParams = nullptr;
+- nsIInterfaceInfo* iface_info = nullptr;
+- const nsXPTMethodInfo* info;
++ const nsXPTMethodInfo* info = nullptr;
+ uint8_t paramCount;
+ uint8_t i;
+ nsresult result = NS_ERROR_FAILURE;
+
+ NS_ASSERTION(self,"no self");
+
+- self->GetInterfaceInfo(&iface_info);
+- NS_ASSERTION(iface_info,"no interface info");
+-
+- iface_info->GetMethodInfo(uint16_t(methodIndex), &info);
+- NS_ASSERTION(info,"no interface info");
++ self->mEntry->GetMethodInfo(uint16_t(methodIndex), &info);
++ NS_ASSERTION(info,"no method info");
++ if (!info)
++ return NS_ERROR_UNEXPECTED;
+
+ paramCount = info->GetParamCount();
+
+ // setup variant array pointer
+@@ -82,11 +81,9 @@
+ break;
+ }
+ }
+
+- result = self->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+-
+- NS_RELEASE(iface_info);
++ result = self->oMouter->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+
+ if(dispatchParams != paramBuffer)
+ delete [] dispatchParams;
+
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_openbsd.cpp b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_openbsd.cpp
new file mode 100644
index 00000000000..d191f1f0553
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_openbsd.cpp
@@ -0,0 +1,56 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs_sparc_openbsd.cpp,v 1.1 2022/05/01 00:36:11 manu Exp $
+
+Update to fit current code
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_sparc_openbsd.cpp.orig 2022-04-18 02:30:50.569629711 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_sparc_openbsd.cpp 2022-04-18 01:58:53.309449484 +0000
+@@ -5,8 +5,9 @@
+
+ /* Implement shared vtbl methods. */
+
+ #include "xptcprivate.h"
++#include "xptiprivate.h"
+
+ #if defined(sparc) || defined(__sparc__)
+
+ extern "C" nsresult ATTRIBUTE_USED
+@@ -22,21 +23,19 @@
+ #define PARAM_BUFFER_COUNT 16
+
+ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
+ nsXPTCMiniVariant* dispatchParams = nullptr;
+- nsIInterfaceInfo* iface_info = nullptr;
+- const nsXPTMethodInfo* info;
++ const nsXPTMethodInfo* info = nullptr;
+ uint8_t paramCount;
+ uint8_t i;
+ nsresult result = NS_ERROR_FAILURE;
+
+ NS_ASSERTION(self,"no self");
+
+- self->GetInterfaceInfo(&iface_info);
+- NS_ASSERTION(iface_info,"no interface info");
+-
+- iface_info->GetMethodInfo(uint16_t(methodIndex), &info);
+- NS_ASSERTION(info,"no interface info");
++ self->mEntry->GetMethodInfo(uint16_t(methodIndex), &info);
++ NS_ASSERTION(info,"no method info");
++ if (!info)
++ return NS_ERROR_UNEXPECTED;
+
+ paramCount = info->GetParamCount();
+
+ // setup variant array pointer
+@@ -85,11 +84,9 @@
+ break;
+ }
+ }
+
+- result = self->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+-
+- NS_RELEASE(iface_info);
++ result = self->mOuter->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+
+ if(dispatchParams != paramBuffer)
+ delete [] dispatchParams;
+
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_xptcprivate.h b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_xptcprivate.h
new file mode 100644
index 00000000000..c0fd5872412
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_xptcprivate.h
@@ -0,0 +1,29 @@
+$NetBSD: patch-xpcom_reflect_xptcall_xptcprivate.h,v 1.1 2022/05/01 00:36:11 manu Exp $
+
+Bring NetBSD in line with other BSDs.
+Not sure abut the impact, but there is no reason to single it out
+
+--- xpcom/reflect/xptcall/xptcprivate.h.orig 2022-04-18 02:30:50.579699047 +0000
++++ xpcom/reflect/xptcall/xptcprivate.h 2022-04-17 05:04:46.979926191 +0000
+@@ -13,9 +13,9 @@
+ #include "mozilla/Attributes.h"
+
+ class xptiInterfaceEntry;
+
+-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__))
++#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__) && !defined(__NetBSD__))
+ #define STUB_ENTRY(n) NS_IMETHOD Stub##n() = 0;
+ #else
+ #define STUB_ENTRY(n) NS_IMETHOD Stub##n(uint64_t,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t) = 0;
+ #endif
+@@ -30,9 +30,9 @@
+
+ #undef STUB_ENTRY
+ #undef SENTINEL_ENTRY
+
+-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__))
++#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__) && !defined(__NetBSD__))
+ #define STUB_ENTRY(n) NS_IMETHOD Stub##n() override;
+ #else
+ #define STUB_ENTRY(n) NS_IMETHOD Stub##n(uint64_t,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t,uint64_t) override;
+ #endif
diff --git a/www/arcticfox/patches/patch-xpcom_reflect_xptcall_xptcstubsdecl.inc b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_xptcstubsdecl.inc
new file mode 100644
index 00000000000..8e0f4330c9a
--- /dev/null
+++ b/www/arcticfox/patches/patch-xpcom_reflect_xptcall_xptcstubsdecl.inc
@@ -0,0 +1,18 @@
+$NetBSD: patch-xpcom_reflect_xptcall_xptcstubsdecl.inc,v 1.1 2022/05/01 00:36:11 manu Exp $
+
+Bring NetBSD in line with other BSDs.
+Not sure abut the impact, but there is no reason to single it out
+
+--- xpcom/reflect/xptcall/xptcstubsdecl.inc.orig 2022-04-18 02:30:50.590253192 +0000
++++ xpcom/reflect/xptcall/xptcstubsdecl.inc 2022-04-17 07:00:09.391086988 +0000
+@@ -7,9 +7,9 @@
+ * 0 is QueryInterface
+ * 1 is AddRef
+ * 2 is Release
+ */
+-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__))
++#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__) || !defined(__NetBSD__))
+ NS_IMETHOD Stub3();
+ NS_IMETHOD Stub4();
+ NS_IMETHOD Stub5();
+ NS_IMETHOD Stub6();