Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package nodejs-electron for openSUSE:Factory checked in at 2023-10-02 20:06:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nodejs-electron (Old) and /work/SRC/openSUSE:Factory/.nodejs-electron.new.28202 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nodejs-electron" Mon Oct 2 20:06:36 2023 rev:80 rq:1114636 version:25.8.4 Changes: -------- --- /work/SRC/openSUSE:Factory/nodejs-electron/nodejs-electron.changes 2023-10-01 21:23:07.674429202 +0200 +++ /work/SRC/openSUSE:Factory/.nodejs-electron.new.28202/nodejs-electron.changes 2023-10-02 20:09:06.848517639 +0200 @@ -1,0 +2,12 @@ +Sun Oct 1 16:22:35 UTC 2023 - Bruno Pitrus <brunopit...@hotmail.com> + +- Add backported swiftshader-llvm17.patch to fix ftbfs on arm64 +- Drop 647d3d2.patch no longer relevant + +------------------------------------------------------------------- +Sat Sep 30 16:09:25 UTC 2023 - Bruno Pitrus <brunopit...@hotmail.com> + +- Disable chromium-ffmpeg-first-dts.patch on openSUSE as it breaks playback of some videos and is no longer needed. + * In its place add chromium-94-ffmpeg-roll.patch for Leap only. + +------------------------------------------------------------------- Old: ---- 647d3d2.patch New: ---- chromium-94-ffmpeg-roll.patch swiftshader-llvm17.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nodejs-electron.spec ++++++ --- /var/tmp/diff_new_pack.p1Ia5c/_old 2023-10-02 20:09:16.076849516 +0200 +++ /var/tmp/diff_new_pack.p1Ia5c/_new 2023-10-02 20:09:16.076849516 +0200 @@ -288,7 +288,15 @@ # PATCHES to fix interaction with third-party software Patch2004: chromium-gcc11.patch Patch2010: chromium-93-ffmpeg-4.4.patch + +#Since ffmpeg 5, there is no longer first_dts member in AVFormat. Chromium upstream (and Tumbleweed) patches ffmpeg to add a av_stream_get_first_dts function. +#This workaround is only used on Fedora. It is known to break some H264 videos produced by Apple® iPhone⢠camera. Further testing is needed. +#Upstream ref: https://chromium-review.googlesource.com/c/chromium/src/+/3525614 Patch2011: chromium-ffmpeg-first-dts.patch +#This patch is only for Leap which uses ffmpeg 4. It makes chromium use the old api and does not work with ffmpeg 5. +Patch2012: chromium-94-ffmpeg-roll.patch +#Tumbleweed needs neither of these. + # Fixe builds with older clang versions that do not allow # nomerge attributes on declaration. Otherwise, the following error # is produced: @@ -327,8 +335,6 @@ Patch3096: remove-date-reproducible-builds.patch Patch3106: vulkan_memory_allocator-vk_mem_alloc-missing-snprintf.patch Patch3121: services-network-optional-explicit-constructor.patch -# PATCH-FIX-UPSTREAM - https://swiftshader-review.googlesource.com/c/SwiftShader/+/70328 -Patch3201: 647d3d2.patch Patch3202: mojom-python3.12-imp.patch # https://src.fedoraproject.org/rpms/qt6-qtwebengine/blob/rawhide/f/Partial-migration-from-imp-to-importlib.patch Patch3203: Partial-migration-from-imp-to-importlib.patch @@ -341,6 +347,8 @@ Patch3210: electron_api_app-GetPathConstant-non-constexpr.patch # https://github.com/electron/electron/pull/40032 Patch3211: build-without-extensions.patch +Patch3212: swiftshader-llvm17.patch + %if %{with clang} BuildRequires: clang @@ -397,7 +405,7 @@ BuildRequires: lld %endif %if %{with swiftshader} && %{without subzero} -BuildRequires: llvm-devel +BuildRequires: llvm-devel >= 16 %endif BuildRequires: memory-constraints %if %{with mold} @@ -665,10 +673,16 @@ patch -R -p1 < %PATCH1054 %endif -%if %{without ffmpeg_5} +%if %{with ffmpeg_5} +patch -R -p1 < %PATCH2012 +%else patch -R -p1 < %SOURCE400 %endif +%if 0%{?suse_version} +patch -R -p1 < %PATCH2011 +%endif + %if %{without harfbuzz_5} patch -R -p1 < %SOURCE415 patch -R -p1 < %SOURCE416 ++++++ chromium-94-ffmpeg-roll.patch ++++++ diff --git a/build/linux/unbundle/ffmpeg.gn b/build/linux/unbundle/ffmpeg.gn index 16e20744706..6a079b32221 100644 --- a/build/linux/unbundle/ffmpeg.gn +++ b/build/linux/unbundle/ffmpeg.gn @@ -12,6 +12,7 @@ pkg_config("system_ffmpeg") { "libavformat", "libavutil", ] + defines = [ "av_stream_get_first_dts(stream)=stream->first_dts" ] } buildflag_header("ffmpeg_features") { ++++++ swiftshader-llvm17.patch ++++++ >From 9fbca2df22a8e71e3116a576e26cf9b3d7915c08 Mon Sep 17 00:00:00 2001 From: Ben Clayton <bclay...@google.com> Date: Mon, 24 Jul 2023 18:15:26 +0100 Subject: [PATCH] LLVMReactor: Support LLVM 17+ Change-Id: I9263c16450f0cd68ce472f8735cefc9de0dc0d53 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/72128 Tested-by: Ben Clayton <bclay...@google.com> Commit-Queue: Ben Clayton <bclay...@google.com> Reviewed-by: Geoff Lang <geoffl...@google.com> Reviewed-by: Shahbaz Youssefi <syouss...@google.com> Presubmit-Ready: Ben Clayton <bclay...@google.com> Kokoro-Result: kokoro <noreply+kok...@google.com> --- src/Reactor/LLVMJIT.cpp | 33 +++++++++++++++++++------ src/Reactor/LLVMReactor.cpp | 49 ++++++++++++++----------------------- 2 files changed, 44 insertions(+), 38 deletions(-) diff --git a/src/Reactor/LLVMJIT.cpp b/src/Reactor/LLVMJIT.cpp index 07dc65440c..0f61e07a11 100644 --- a/third_party/swiftshader/src/Reactor/LLVMJIT.cpp +++ b/third_party/swiftshader/src/Reactor/LLVMJIT.cpp @@ -258,8 +258,12 @@ JITGlobals *JITGlobals::get() #endif // Reactor's MemorySanitizer support depends on intercepting __emutls_get_address calls. +#if LLVM_VERSION_MAJOR < 17 ASSERT(!__has_feature(memory_sanitizer) || (jitTargetMachineBuilder.getOptions().ExplicitEmulatedTLS && jitTargetMachineBuilder.getOptions().EmulatedTLS)); +#else + ASSERT(!__has_feature(memory_sanitizer) || jitTargetMachineBuilder.getOptions().EmulatedTLS); +#endif auto dataLayout = jitTargetMachineBuilder.getDefaultDataLayoutForTarget(); ASSERT_MSG(dataLayout, "JITTargetMachineBuilder::getDefaultDataLayoutForTarget() failed"); @@ -660,13 +664,25 @@ class ExternalSymbolGenerator : public llvm::orc::JITDylib::DefinitionGenerator auto unmangled = *name; #endif +#if LLVM_VERSION_MAJOR < 17 + auto toSymbol = [](void *ptr) { + return llvm::JITEvaluatedSymbol( + static_cast<llvm::JITTargetAddress>(reinterpret_cast<uintptr_t>(ptr)), + llvm::JITSymbolFlags::Exported); + }; +#else + auto toSymbol = [](void *ptr) { + return llvm::orc::ExecutorSymbolDef{ + llvm::orc::ExecutorAddr(reinterpret_cast<uintptr_t>(ptr)), + llvm::JITSymbolFlags::Exported, + }; + }; +#endif + auto it = resolver.functions.find(unmangled.str()); if(it != resolver.functions.end()) { - symbols[name] = llvm::JITEvaluatedSymbol( - static_cast<llvm::JITTargetAddress>(reinterpret_cast<uintptr_t>(it->second)), - llvm::JITSymbolFlags::Exported); - + symbols[name] = toSymbol(it->second); continue; } @@ -681,10 +697,7 @@ class ExternalSymbolGenerator : public llvm::orc::JITDylib::DefinitionGenerator if(address) { - symbols[name] = llvm::JITEvaluatedSymbol( - static_cast<llvm::JITTargetAddress>(reinterpret_cast<uintptr_t>(address)), - llvm::JITSymbolFlags::Exported); - + symbols[name] = toSymbol(address); continue; } #endif @@ -866,7 +879,11 @@ class JITRoutine : public rr::Routine } else // Successful compilation { +#if LLVM_VERSION_MAJOR < 17 addresses[i] = reinterpret_cast<void *>(static_cast<intptr_t>(symbol->getAddress())); +#else + addresses[i] = reinterpret_cast<void *>(static_cast<intptr_t>(symbol->getAddress().getValue())); +#endif } } diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp index fde64762df..aa4aaaa49a 100644 --- a/third_party/swiftshader/src/Reactor/LLVMReactor.cpp +++ b/third_party/swiftshader/src/Reactor/LLVMReactor.cpp @@ -68,6 +68,15 @@ llvm::llvm_shutdown_obj llvmShutdownObj; // for destructing objects at exit. See crbug.com/1074222 thread_local rr::JITBuilder *jit = nullptr; +auto getNumElements(llvm::FixedVectorType *vec) +{ +#if LLVM_VERSION_MAJOR >= 11 + return vec->getElementCount(); +#else + return vec->getNumElements(); +#endif +} + llvm::Value *lowerPAVG(llvm::Value *x, llvm::Value *y) { llvm::VectorType *ty = llvm::cast<llvm::VectorType>(x->getType()); @@ -142,13 +151,8 @@ llvm::Value *lowerPCMP(llvm::ICmpInst::Predicate pred, llvm::Value *x, llvm::Constant *one; if(llvm::FixedVectorType *vectorTy = llvm::dyn_cast<llvm::FixedVectorType>(ty)) { - one = llvm::ConstantVector::getSplat( -#if LLVM_VERSION_MAJOR >= 11 - vectorTy->getElementCount(), -#else - vectorTy->getNumElements(), -#endif - llvm::ConstantFP::get(vectorTy->getElementType(), 1)); + one = llvm::ConstantVector::getSplat(getNumElements(vectorTy), + llvm::ConstantFP::get(vectorTy->getElementType(), 1)); } else { @@ -165,39 +169,24 @@ llvm::Value *lowerPCMP(llvm::ICmpInst::Predicate pred, llvm::Value *x, [[maybe_unused]] llvm::Value *lowerVectorShl(llvm::Value *x, uint64_t scalarY) { llvm::FixedVectorType *ty = llvm::cast<llvm::FixedVectorType>(x->getType()); - llvm::Value *y = llvm::ConstantVector::getSplat( -#if LLVM_VERSION_MAJOR >= 11 - ty->getElementCount(), -#else - ty->getNumElements(), -#endif - llvm::ConstantInt::get(ty->getElementType(), scalarY)); + llvm::Value *y = llvm::ConstantVector::getSplat(getNumElements(ty), + llvm::ConstantInt::get(ty->getElementType(), scalarY)); return jit->builder->CreateShl(x, y); } [[maybe_unused]] llvm::Value *lowerVectorAShr(llvm::Value *x, uint64_t scalarY) { llvm::FixedVectorType *ty = llvm::cast<llvm::FixedVectorType>(x->getType()); - llvm::Value *y = llvm::ConstantVector::getSplat( -#if LLVM_VERSION_MAJOR >= 11 - ty->getElementCount(), -#else - ty->getNumElements(), -#endif - llvm::ConstantInt::get(ty->getElementType(), scalarY)); + llvm::Value *y = llvm::ConstantVector::getSplat(getNumElements(ty), + llvm::ConstantInt::get(ty->getElementType(), scalarY)); return jit->builder->CreateAShr(x, y); } [[maybe_unused]] llvm::Value *lowerVectorLShr(llvm::Value *x, uint64_t scalarY) { llvm::FixedVectorType *ty = llvm::cast<llvm::FixedVectorType>(x->getType()); - llvm::Value *y = llvm::ConstantVector::getSplat( -#if LLVM_VERSION_MAJOR >= 11 - ty->getElementCount(), -#else - ty->getNumElements(), -#endif - llvm::ConstantInt::get(ty->getElementType(), scalarY)); + llvm::Value *y = llvm::ConstantVector::getSplat(getNumElements(ty), + llvm::ConstantInt::get(ty->getElementType(), scalarY)); return jit->builder->CreateLShr(x, y); }