On Tue, Mar 05, 2019 at 06:11:31AM +0100, Jeremie Courreges-Anglas wrote: > > webkitgtk4 fails to build on sparc64 and powerpc. > > http://build-failures.rhaalovely.net//sparc64/2019-02-03/www/webkitgtk4.log > http://build-failures.rhaalovely.net/powerpc/2019-02-04/www/webkitgtk4.log > > With the diff below I can successfully build the port on sparc64. > Rationale for the diff: > - patches/patch-Source_WTF_wtf_Platform_h: sparc64 MD code doesn't > expose enough registers to use the HAVE_MACHINE_CONTEXT code path. > - patches/patch-Source_JavaScriptCore_runtime_MachineContext_h: see above > - patches/patch-Source_WTF_wtf_RAMSize_cpp: Linux-only method to get the > amount of ram, use sysctl(2) instead. > - patches/patch-Source_WebCore_platform_graphics_FontSelectionAlgorithm_h: > std::min/std::max from libestdc++ aren't annotated with "constexpr" > yet so using them in a "constexpr" function fails. This workaround > shouldn't be needed with lang/gcc/8. > - Makefile: I doubt that webkit's JIT works on sh... While here, switch > to https HOMEPAGE/MASTER_SITES. > > I haven't tested runtime yet but intend to do so in the next days. The > original motivation is to unlock a bunch of ports:
OK > > http://build-failures.rhaalovely.net//sparc64/2019-02-03/summary.log > > --8<-- > ritchie ~$ grep -c webkitgtk4 summary.log > 114 > ritchie ~$ wc -l summary.log > 296 summary.log > -->8-- > > The diff could also fix powerpc (cc Charlene). > > ok? > > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/www/webkitgtk4/Makefile,v > retrieving revision 1.95 > diff -u -p -r1.95 Makefile > --- Makefile 2 Mar 2019 17:08:51 -0000 1.95 > +++ Makefile 5 Mar 2019 04:53:07 -0000 > @@ -13,6 +13,7 @@ PORTROACH = limitw:1,even > COMMENT = GTK+ port of the WebKit rendering engine > > V = 2.22.7 > +REVISION = 0 > DISTNAME = webkitgtk-${V} > PKGNAME = webkitgtk4-${V} > EXTRACT_SUFX = .tar.xz > @@ -25,7 +26,7 @@ SHARED_LIBS += webkit2gtk-${API} > > CATEGORIES = www > > -HOMEPAGE = http://webkitgtk.org/ > +HOMEPAGE = https://webkitgtk.org/ > > MAINTAINER = Antoine Jacoutot <[email protected]> > > @@ -42,7 +43,7 @@ WANTLIB += icui18n icuuc intl jpeg m not > WANTLIB += png16 secret-1 soup-2.4 sqlite3 tasn1 webp webpdemux > WANTLIB += woff2dec xml2 xslt z > > -MASTER_SITES = http://webkitgtk.org/releases/ > +MASTER_SITES = https://webkitgtk.org/releases/ > > MODULES = devel/cmake \ > lang/python \ > @@ -91,8 +92,7 @@ CONFIGURE_ARGS += -DENABLE_PLUGIN_PROCES > # sync with Source/JavaScriptCore/assembler/MacroAssembler.h > .if ${MACHINE_ARCH} != "aarch64" && ${MACHINE_ARCH} != "amd64" && \ > ${MACHINE_ARCH} != "arm" && ${MACHINE_ARCH} != "i386" && \ > - ${MACHINE_ARCH} != "mips64" && ${MACHINE_ARCH} != "mips64el" && \ > - ${MACHINE_ARCH} != "sh" > + ${MACHINE_ARCH} != "mips64" && ${MACHINE_ARCH} != "mips64el" > # #error "The MacroAssembler is not supported on this platform." > CONFIGURE_ARGS += -DENABLE_JIT=OFF > CONFIGURE_ARGS += -DENABLE_LLINT_C_LOOP=ON > Index: patches/patch-Source_JavaScriptCore_runtime_MachineContext_h > =================================================================== > RCS file: > /cvs/ports/www/webkitgtk4/patches/patch-Source_JavaScriptCore_runtime_MachineContext_h,v > retrieving revision 1.4 > diff -u -p -r1.4 patch-Source_JavaScriptCore_runtime_MachineContext_h > --- patches/patch-Source_JavaScriptCore_runtime_MachineContext_h 4 Sep > 2018 07:12:47 -0000 1.4 > +++ patches/patch-Source_JavaScriptCore_runtime_MachineContext_h 5 Mar > 2019 04:53:07 -0000 > @@ -3,7 +3,7 @@ $OpenBSD: patch-Source_JavaScriptCore_ru > Index: Source/JavaScriptCore/runtime/MachineContext.h > --- Source/JavaScriptCore/runtime/MachineContext.h.orig > +++ Source/JavaScriptCore/runtime/MachineContext.h > -@@ -188,6 +188,24 @@ static inline void*& stackPointerImpl(mcontext_t& mach > +@@ -188,6 +188,22 @@ static inline void*& stackPointerImpl(mcontext_t& mach > #error Unknown Architecture > #endif > > @@ -19,8 +19,6 @@ Index: Source/JavaScriptCore/runtime/Mac > + return reinterpret_cast<void*&>((uintptr_t&) machineContext.sc_sp); > +#elif CPU(MIPS) > + return reinterpret_cast<void*&>((uintptr_t&) > machineContext.mc_regs[29]); > -+#elif CPU(SPARC64) > -+ return reinterpret_cast<void*&>((uintptr_t&) machineContext.mc_rsp); > +#else > +#error Unknown Architecture > +#endif > @@ -28,7 +26,7 @@ Index: Source/JavaScriptCore/runtime/Mac > #elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) > > #if CPU(X86) > -@@ -335,6 +353,24 @@ static inline void*& framePointerImpl(mcontext_t& mach > +@@ -335,6 +351,22 @@ static inline void*& framePointerImpl(mcontext_t& mach > #error Unknown Architecture > #endif > > @@ -44,8 +42,6 @@ Index: Source/JavaScriptCore/runtime/Mac > + return reinterpret_cast<void*&>((uintptr_t&) machineContext.sc_x[29]); > +#elif CPU(MIPS) > + return reinterpret_cast<void*&>((uintptr_t&) > machineContext.mc_regs[30]); > -+#elif CPU(SPARC64) > -+ return reinterpret_cast<void*&>((uintptr_t&) machineContext.mc_rbp); > +#else > +#error Unknown Architecture > +#endif > @@ -53,7 +49,7 @@ Index: Source/JavaScriptCore/runtime/Mac > #elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) > > // The following sequence depends on glibc's sys/ucontext.h. > -@@ -482,6 +518,24 @@ static inline void*& instructionPointerImpl(mcontext_t > +@@ -482,6 +514,22 @@ static inline void*& instructionPointerImpl(mcontext_t > #error Unknown Architecture > #endif > > @@ -69,8 +65,6 @@ Index: Source/JavaScriptCore/runtime/Mac > + return reinterpret_cast<void*&>((uintptr_t&) machineContext.sc_elr); > +#elif CPU(MIPS) > + return reinterpret_cast<void*&>((uintptr_t&) machineContext.mc_pc); > -+#elif CPU(SPARC64) > -+ return reinterpret_cast<void*&>((uintptr_t&) machineContext.mc_rip); > +#else > +#error Unknown Architecture > +#endif > @@ -78,7 +72,7 @@ Index: Source/JavaScriptCore/runtime/Mac > #elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) > > // The following sequence depends on glibc's sys/ucontext.h. > -@@ -639,6 +693,24 @@ inline void*& argumentPointer<1>(mcontext_t& machineCo > +@@ -639,6 +687,22 @@ inline void*& argumentPointer<1>(mcontext_t& machineCo > #error Unknown Architecture > #endif > > @@ -94,8 +88,6 @@ Index: Source/JavaScriptCore/runtime/Mac > + return reinterpret_cast<void*&>((uintptr_t&) machineContext.sc_x[1]); > +#elif CPU(MIPS) > + return reinterpret_cast<void*&>((uintptr_t&) machineContext.mc_regs[5]); > -+#elif CPU(SPARC64) > -+ return reinterpret_cast<void*&>((uintptr_t&) machineContext.mc_rsi); > +#else > +#error Unknown Architecture > +#endif > @@ -103,10 +95,12 @@ Index: Source/JavaScriptCore/runtime/Mac > #elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) > > // The following sequence depends on glibc's sys/ucontext.h. > -@@ -752,6 +824,24 @@ inline void*& llintInstructionPointer(mcontext_t& mach > +@@ -750,6 +814,22 @@ inline void*& llintInstructionPointer(mcontext_t& mach > + return reinterpret_cast<void*&>((uintptr_t&) > machineContext.__gregs[_REG_R8]); > + #elif CPU(ARM64) > return reinterpret_cast<void*&>((uintptr_t&) > machineContext.mc_gpregs.gp_x[4]); > - #elif CPU(MIPS) > - return reinterpret_cast<void*&>((uintptr_t&) > machineContext.mc_regs[12]); > ++#elif CPU(MIPS) > ++ return reinterpret_cast<void*&>((uintptr_t&) > machineContext.mc_regs[12]); > +#else > +#error Unknown Architecture > +#endif > @@ -121,10 +115,6 @@ Index: Source/JavaScriptCore/runtime/Mac > + return reinterpret_cast<void*&>((uintptr_t&) > machineContext.__gregs[_REG_R8]); > +#elif CPU(ARM64) > + return reinterpret_cast<void*&>((uintptr_t&) machineContext.sc_x[4]); > -+#elif CPU(MIPS) > -+ return reinterpret_cast<void*&>((uintptr_t&) > machineContext.mc_regs[12]); > -+#elif CPU(SPARC64) > -+ return reinterpret_cast<void*&>((uintptr_t&) machineContext.mc_r8); > + #elif CPU(MIPS) > + return reinterpret_cast<void*&>((uintptr_t&) > machineContext.mc_regs[12]); > #else > - #error Unknown Architecture > - #endif > Index: patches/patch-Source_WTF_wtf_Platform_h > =================================================================== > RCS file: /cvs/ports/www/webkitgtk4/patches/patch-Source_WTF_wtf_Platform_h,v > retrieving revision 1.13 > diff -u -p -r1.13 patch-Source_WTF_wtf_Platform_h > --- patches/patch-Source_WTF_wtf_Platform_h 4 Sep 2018 07:12:47 -0000 > 1.13 > +++ patches/patch-Source_WTF_wtf_Platform_h 5 Mar 2019 04:53:07 -0000 > @@ -33,7 +33,7 @@ Index: Source/WTF/wtf/Platform.h > #endif > > -#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__GLIBC__) || > defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || > CPU(MIPS))) > -+#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || OS(OPENBSD) || > defined(__GLIBC__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || > CPU(ARM) || CPU(ARM64) || CPU(MIPS) || CPU(SPARC64))) > ++#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || OS(OPENBSD) || > defined(__GLIBC__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || > CPU(ARM) || CPU(ARM64) || CPU(MIPS))) > #define HAVE_MACHINE_CONTEXT 1 > #endif > > Index: patches/patch-Source_WTF_wtf_RAMSize_cpp > =================================================================== > RCS file: patches/patch-Source_WTF_wtf_RAMSize_cpp > diff -N patches/patch-Source_WTF_wtf_RAMSize_cpp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-Source_WTF_wtf_RAMSize_cpp 5 Mar 2019 04:53:07 -0000 > @@ -0,0 +1,34 @@ > +$OpenBSD$ > + > +Index: Source/WTF/wtf/RAMSize.cpp > +--- Source/WTF/wtf/RAMSize.cpp.orig > ++++ Source/WTF/wtf/RAMSize.cpp > +@@ -32,8 +32,10 @@ > + #if OS(WINDOWS) > + #include <windows.h> > + #elif defined(USE_SYSTEM_MALLOC) && USE_SYSTEM_MALLOC > +-#if OS(UNIX) > +-#include <sys/sysinfo.h> > ++#if OS(OPENBSD) > ++#include <sys/sysctl.h> > ++#elif OS(UNIX) > ++#include <sysinfo.h> > + #endif // OS(UNIX) > + #else > + #include <bmalloc/bmalloc.h> > +@@ -55,7 +57,14 @@ static size_t computeRAMSize() > + return ramSizeGuess; > + return status.ullTotalPhys; > + #elif defined(USE_SYSTEM_MALLOC) && USE_SYSTEM_MALLOC > +-#if OS(UNIX) > ++#if OS(OPENBSD) > ++ int mib[] = { CTL_HW, HW_USERMEM64 }; > ++ int64_t mem; > ++ size_t len = sizeof(mem); > ++ if (sysctl(mib, 2, &mem, &len, NULL, 0) == -1) > ++ return 512 * MB; // guess > ++ return mem; > ++#elif OS(UNIX) > + struct sysinfo si; > + sysinfo(&si); > + return si.totalram * si.mem_unit; > Index: patches/patch-Source_WebCore_platform_graphics_FontSelectionAlgorithm_h > =================================================================== > RCS file: > patches/patch-Source_WebCore_platform_graphics_FontSelectionAlgorithm_h > diff -N > patches/patch-Source_WebCore_platform_graphics_FontSelectionAlgorithm_h > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-Source_WebCore_platform_graphics_FontSelectionAlgorithm_h > 5 Mar 2019 04:53:07 -0000 > @@ -0,0 +1,32 @@ > +$OpenBSD$ > + > +XXX libstdc++ from gcc-4.9.4 doesn't yet decorate std::min/std::max > +with constexpr > + > +Index: Source/WebCore/platform/graphics/FontSelectionAlgorithm.h > +--- Source/WebCore/platform/graphics/FontSelectionAlgorithm.h.orig > ++++ Source/WebCore/platform/graphics/FontSelectionAlgorithm.h > +@@ -50,7 +50,11 @@ class FontSelectionValue { (public) > + explicit constexpr FontSelectionValue(float); > + > + // Precision can be lost, but value will be clamped to the > representable range. > ++#if defined(__GLIBCXX__) && __GLIBCXX__ <= 20160726L > ++ static inline FontSelectionValue clampFloat(float); > ++#else > + static constexpr FontSelectionValue clampFloat(float); > ++#endif > + > + // Since floats have 23 mantissa bits, every value can be represented > losslessly. > + constexpr operator float() const; > +@@ -101,7 +105,11 @@ constexpr FontSelectionValue FontSelectionValue::minim > + return { std::numeric_limits<BackingType>::min(), RawTag::RawTag }; > + } > + > ++#if defined(__GLIBCXX__) && __GLIBCXX__ <= 20160726L > ++inline FontSelectionValue FontSelectionValue::clampFloat(float value) > ++#else > + constexpr FontSelectionValue FontSelectionValue::clampFloat(float value) > ++#endif > + { > + return FontSelectionValue { std::max<float>(minimumValue(), > std::min<float>(value, maximumValue())) }; > + } > > > -- > jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE > -- Antoine
