Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package 0ad for openSUSE:Factory checked in 
at 2026-03-02 17:37:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/0ad (Old)
 and      /work/SRC/openSUSE:Factory/.0ad.new.29461 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "0ad"

Mon Mar  2 17:37:01 2026 rev:21 rq:1335657 version:0.28.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/0ad/0ad.changes  2025-09-20 22:04:43.508293529 
+0200
+++ /work/SRC/openSUSE:Factory/.0ad.new.29461/0ad.changes       2026-03-02 
17:37:07.715336836 +0100
@@ -1,0 +2,21 @@
+Thu Feb 26 22:08:37 UTC 2026 - Aaron Puchert <[email protected]>
+
+- Update to 0.28.0:
+  * Gendered Civilians
+  * Direct Font Rendering
+  * Support for JavaScript Modules
+  * New Game-Setup Options
+  * Lobby improvements
+  * Engine upgrades and updated platform support
+  * New quotes and tips
+  * Various balancing improvements
+- See https://play0ad.com/new-release-0-a-d-release-28-boiorix/ for
+  more details.
+- This updates SpiderMonkey to version 128 (from 115), but mozjs128
+  has already been dropped from Factory. Since upstream intends to
+  switch to version 140 anyway, we add 0002-Use-mozjs-140.patch
+  and 0003-Adapt-JS-API-to-ESR-140.patch so that we can already
+  build this version with mozjs140.
+- Drop obsolete 0002-remove-boost-system-library.patch.
+
+-------------------------------------------------------------------

Old:
----
  0002-remove-boost-system-library.patch
  0ad-0.27.1-unix-build.tar.xz

New:
----
  0002-Use-mozjs-140.patch
  0003-Adapt-JS-API-to-ESR-140.patch
  0ad-0.28.0-unix-build.tar.xz

----------(Old B)----------
  Old:  build this version with mozjs140.
- Drop obsolete 0002-remove-boost-system-library.patch.
----------(Old E)----------

----------(New B)----------
  New:  has already been dropped from Factory. Since upstream intends to
  switch to version 140 anyway, we add 0002-Use-mozjs-140.patch
  and 0003-Adapt-JS-API-to-ESR-140.patch so that we can already
  New:  switch to version 140 anyway, we add 0002-Use-mozjs-140.patch
  and 0003-Adapt-JS-API-to-ESR-140.patch so that we can already
  build this version with mozjs140.
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ 0ad.spec ++++++
--- /var/tmp/diff_new_pack.i5g9xh/_old  2026-03-02 17:37:10.695461117 +0100
+++ /var/tmp/diff_new_pack.i5g9xh/_new  2026-03-02 17:37:10.699461284 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package 0ad
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -34,7 +34,7 @@
 %endif
 
 Name:           0ad
-Version:        0.27.1
+Version:        0.28.0
 Release:        0
 Summary:        A real-time strategy game of ancient warfare
 License:        BSD-3-Clause AND CC-BY-SA-3.0 AND GPL-2.0-or-later AND 
LGPL-3.0-or-later AND MIT AND ISC AND MPL-2.0
@@ -44,8 +44,15 @@
 Source1:        premake-disable-rpath.patch
 Source100:      0ad-rpmlintrc
 Patch1:         0001-Enable-building-on-arbitrary-architectures.patch
+%if 0%{?suse_version} > 1600
+# Some of the following patches are from in-progress work to port to mozjs140:
+# https://gitea.wildfiregames.com/Itms/0ad/commits/branch/spidermonkey-esr140.
+# Pared down version of 
https://gitea.wildfiregames.com/Itms/0ad/commit/b9fa6bb71792969b2baa26959b130ce0b957578a
+Patch2:         0002-Use-mozjs-140.patch
+# From 
https://gitea.wildfiregames.com/Itms/0ad/commit/2635c9064f5127b52147a302fad0946be5ff9ec1.patch
+Patch3:         0003-Adapt-JS-API-to-ESR-140.patch
+%endif
 %if 0%{?suse_version} >= 1600
-Patch2:         0002-remove-boost-system-library.patch
 BuildRequires:  boost-devel >= 1.69.0
 %endif
 BuildRequires:  cmake
@@ -78,13 +85,16 @@
 BuildRequires:  nvidia-texture-tools >= 2.1
 %endif
 %if %{with system_mozjs}
-#FIXME: Depends on source/scriptinterface/ScriptTypes.h
-BuildRequires:  pkgconfig(mozjs-115)
+%if 0%{?suse_version} > 1600
+BuildRequires:  pkgconfig(mozjs-140)
+%else
+BuildRequires:  pkgconfig(mozjs-128)
+%endif
 %else
 BuildRequires:  cargo
 BuildRequires:  rust
 %endif
-ExclusiveArch:  aarch64 %{arm} %{ix86} loongarch64 riscv64 x86_64
+ExclusiveArch:  aarch64 %{arm} %{ix86} loongarch64 riscv64 x86_64 ppc ppc64
 
 %description
 0 A.D. (pronounced "zero ey-dee") is a real-time strategy (RTS) game
@@ -124,6 +134,8 @@
 #define PLATFORM_ARCHITECTURE "RISCV64"
 #define PLATFORM_ARCHITECTURE "loongarch64"
 #define PLATFORM_ARCHITECTURE "e2k"
+#define PLATFORM_ARCHITECTURE "ppc64"
+#define PLATFORM_ARCHITECTURE "ppc"
 END
 
 build/workspaces/update-workspaces.sh \

++++++ 0002-Use-mozjs-140.patch ++++++
diff --git a/build/premake/extern_libs5.lua b/build/premake/extern_libs5.lua
index b9fdd70..d732f15 100644
--- a/build/premake/extern_libs5.lua
+++ b/build/premake/extern_libs5.lua
@@ -641,7 +641,7 @@ extern_lib_defs = {
 
                        if _OPTIONS["with-system-mozjs"] then
                                if not _OPTIONS["android"] then
-                                       
pkgconfig.add_includes_after("mozjs-128")
+                                       
pkgconfig.add_includes_after("mozjs-140")
                                end
                        else
                                filter "Debug"
@@ -657,7 +657,7 @@ extern_lib_defs = {
                                if _OPTIONS["android"] then
                                        links { "mozjs-128" }
                                else
-                                       pkgconfig.add_links("mozjs-128")
+                                       pkgconfig.add_links("mozjs-140")
                                end
                        else
                                filter { "Debug" }
diff --git a/build/premake/premake5.lua b/build/premake/premake5.lua
index 357b08f..8b1630a 100644
--- a/build/premake/premake5.lua
+++ b/build/premake/premake5.lua
@@ -165,7 +165,7 @@ end
 -- The pc file doesn't specify the required -DDEBUG needed in that case
 local mozjs_is_debug_build = false
 if _OPTIONS["with-system-mozjs"] then
-       local _, errorCode = os.outputof(cc .. " $(pkg-config mozjs-128 
--cflags) ./tests/mozdebug.c -o /dev/null")
+       local _, errorCode = os.outputof(cc .. " $(pkg-config mozjs-140 
--cflags) ./tests/mozdebug.c -o /dev/null")
        if errorCode ~= 0 then
                mozjs_is_debug_build = true
        end

++++++ 0003-Adapt-JS-API-to-ESR-140.patch ++++++
>From 2635c9064f5127b52147a302fad0946be5ff9ec1 Mon Sep 17 00:00:00 2001
From: Itms <[email protected]>
Date: Wed, 3 Sep 2025 12:03:53 +0200
Subject: [PATCH] Adapt JS API to ESR 140

---
 source/gui/ObjectBases/IGUIObject.cpp          | 3 ++-
 source/scriptinterface/Promises.cpp            | 5 +++--
 source/scriptinterface/Promises.h              | 2 +-
 source/scriptinterface/ScriptContext.cpp       | 2 +-
 source/scriptinterface/ScriptEngine.h          | 2 +-
 source/scriptinterface/ScriptInterface.cpp     | 3 ++-
 source/simulation2/scripting/ScriptComponent.h | 4 ++--
 source/simulation2/system/InterfaceScripted.h  | 6 +++---
 8 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/source/gui/ObjectBases/IGUIObject.cpp 
b/source/gui/ObjectBases/IGUIObject.cpp
index ea20d2262d..aaa6b5995f 100644
--- a/source/gui/ObjectBases/IGUIObject.cpp
+++ b/source/gui/ObjectBases/IGUIObject.cpp
@@ -39,6 +39,7 @@
 #include <js/ComparisonOperators.h>
 #include <js/CompilationAndEvaluation.h>
 #include <js/CompileOptions.h>
+#include <js/EnvironmentChain.h>
 #include <js/GCAPI.h>
 #include <js/GCVector.h>
 #include <js/SourceText.h>
@@ -339,7 +340,7 @@ void IGUIObject::RegisterScriptHandler(const CStr& 
eventName, const CStr& Code,
 
        JS::SourceText<mozilla::Utf8Unit> src;
        ENSURE(src.init(rq.cx, Code.c_str(), Code.length(), 
JS::SourceOwnership::Borrowed));
-       JS::RootedObjectVector emptyScopeChain(rq.cx);
+       JS::EnvironmentChain emptyScopeChain{ rq.cx, JS::SupportUnscopables::No 
};
        JS::RootedFunction func(rq.cx, JS::CompileFunction(rq.cx, 
emptyScopeChain, options, buf, paramCount, paramNames, src));
        if (func == nullptr)
        {
diff --git a/source/scriptinterface/Promises.cpp 
b/source/scriptinterface/Promises.cpp
index 303ab2678d..30777260dc 100644
--- a/source/scriptinterface/Promises.cpp
+++ b/source/scriptinterface/Promises.cpp
@@ -69,9 +69,10 @@ void JobQueue::runJobs(JSContext*)
        }
 }
 
-JSObject* JobQueue::getIncumbentGlobal(JSContext* cx)
+bool JobQueue::getHostDefinedData(JSContext* cx, JS::MutableHandle<JSObject*> 
data) const
 {
-       return JS::CurrentGlobalOrNull(cx);
+       data.set(JS::CurrentGlobalOrNull(cx));
+       return true;
 }
 
 bool JobQueue::enqueuePromiseJob(JSContext* cx, JS::HandleObject, 
JS::HandleObject job, JS::HandleObject,
diff --git a/source/scriptinterface/Promises.h 
b/source/scriptinterface/Promises.h
index 4403e09797..b2e3cbe86a 100644
--- a/source/scriptinterface/Promises.h
+++ b/source/scriptinterface/Promises.h
@@ -40,7 +40,7 @@ public:
        void runJobs(JSContext*) final;
 
 private:
-       JSObject* getIncumbentGlobal(JSContext* cx) final;
+       bool getHostDefinedData(JSContext* cx, JS::MutableHandle<JSObject*> 
data) const final;
 
        bool enqueuePromiseJob(JSContext* cx, JS::HandleObject, 
JS::HandleObject job, JS::HandleObject,
                JS::HandleObject) final;
diff --git a/source/scriptinterface/ScriptContext.cpp 
b/source/scriptinterface/ScriptContext.cpp
index 19cce2733d..77e264a24f 100644
--- a/source/scriptinterface/ScriptContext.cpp
+++ b/source/scriptinterface/ScriptContext.cpp
@@ -259,7 +259,7 @@ void ScriptContext::MaybeIncrementalGC()
 #endif
 
                // There is a tradeoff between this time and the number of 
frames we must run GCs on, but overall we should prioritize smooth framerates.
-               const js::SliceBudget GCSliceTimeBudget = 
js::SliceBudget(js::TimeBudget(6)); // Milliseconds an incremental slice is 
allowed to run. SM respects this fairly well.
+               const JS::SliceBudget GCSliceTimeBudget = 
JS::SliceBudget(JS::TimeBudget(6)); // Milliseconds an incremental slice is 
allowed to run. SM respects this fairly well.
 
                PrepareZonesForIncrementalGC();
                if (!JS::IsIncrementalGCInProgress(m_cx))
diff --git a/source/scriptinterface/ScriptEngine.h 
b/source/scriptinterface/ScriptEngine.h
index 5a8f65f5ca..d954942883 100644
--- a/source/scriptinterface/ScriptEngine.h
+++ b/source/scriptinterface/ScriptEngine.h
@@ -24,7 +24,7 @@
 #include <js/Initialization.h>
 #include <list>
 
-#if MOZJS_MAJOR_VERSION != 128
+#if MOZJS_MAJOR_VERSION != 140
 #error Your compiler is trying to use an incorrect major version of the \
 SpiderMonkey library. The SpiderMonkey API is subject to changes, and the \
 game will not build with the selected version of the library. Make sure \
diff --git a/source/scriptinterface/ScriptInterface.cpp 
b/source/scriptinterface/ScriptInterface.cpp
index 0ca2a0e2ab..869a4cfb06 100644
--- a/source/scriptinterface/ScriptInterface.cpp
+++ b/source/scriptinterface/ScriptInterface.cpp
@@ -43,6 +43,7 @@
 #include <js/ComparisonOperators.h>
 #include <js/CompilationAndEvaluation.h>
 #include <js/CompileOptions.h>
+#include <js/EnvironmentChain.h>
 #include <js/GCVector.h>
 #include <js/GlobalObject.h>
 #include <js/PropertyAndElement.h>
@@ -666,7 +667,7 @@ bool ScriptInterface::LoadScript(const VfsPath& filename, 
const std::string& cod
 
        JS::SourceText<mozilla::Utf8Unit> src;
        ENSURE(src.init(rq.cx, code.c_str(), code.length(), 
JS::SourceOwnership::Borrowed));
-       JS::RootedObjectVector emptyScopeChain(rq.cx);
+       JS::EnvironmentChain emptyScopeChain{ rq.cx, JS::SupportUnscopables::No 
};
        JS::RootedFunction func(rq.cx, JS::CompileFunction(rq.cx, 
emptyScopeChain, options, NULL, 0, NULL, src));
        if (func == nullptr)
        {
diff --git a/source/simulation2/scripting/ScriptComponent.h 
b/source/simulation2/scripting/ScriptComponent.h
index e05f574f87..001d84ad98 100644
--- a/source/simulation2/scripting/ScriptComponent.h
+++ b/source/simulation2/scripting/ScriptComponent.h
@@ -37,8 +37,8 @@ class CComponentTypeScript
 public:
        CComponentTypeScript(const ScriptInterface& scriptInterface, 
JS::HandleValue instance);
 
-       JS::HandleValue GetInstance() const { return 
JS::HandleValue::fromMarkedLocation(m_Instance.address()); }
-       JS::MutableHandleValue GetMutInstance() { return 
JS::MutableHandleValue::fromMarkedLocation(const_cast<JS::Value*>(m_Instance.address()));
 }
+       JS::HandleValue GetInstance() const { return 
JS::HandleValue::fromMarkedLocation(m_Instance.unsafeAddress()); }
+       JS::MutableHandleValue GetMutInstance() { return 
JS::MutableHandleValue::fromMarkedLocation(const_cast<JS::Value*>(m_Instance.unsafeAddress()));
 }
        static void Trace(JSTracer* trc, void* data);
 
        void Init(CComponentManager& cmpMgr, const CParamNode& paramNode, 
entity_id_t ent);
diff --git a/source/simulation2/system/InterfaceScripted.h 
b/source/simulation2/system/InterfaceScripted.h
index 8068384b70..f7a6dc10c2 100644
--- a/source/simulation2/system/InterfaceScripted.h
+++ b/source/simulation2/system/InterfaceScripted.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2024 Wildfire Games.
+/* Copyright (C) 2025 Wildfire Games.
  * This file is part of 0 A.D.
  *
  * 0 A.D. is free software: you can redistribute it and/or modify
@@ -46,7 +46,7 @@
        JS::HandleValue ICmp##iname::GetJSInstance() const \
        { \
                if (m_CachedInstance) \
-                       return 
JS::HandleValue::fromMarkedLocation(m_CachedInstance.address()); \
+                       return 
JS::HandleValue::fromMarkedLocation(m_CachedInstance.unsafeAddress()); \
                \
                const ScriptInterface& si = 
GetSimContext().GetScriptInterface(); \
                ScriptRequest rq(si); \
@@ -55,7 +55,7 @@
                m_CachedInstance.setObject(*obj); \
                \
                
GetSimContext().GetComponentManager().RegisterTrace(GetEntityId(), 
m_CachedInstance); \
-               return 
JS::HandleValue::fromMarkedLocation(m_CachedInstance.address()); \
+               return 
JS::HandleValue::fromMarkedLocation(m_CachedInstance.unsafeAddress()); \
        } \
        void RegisterComponentInterface_##iname(ScriptInterface& 
scriptInterface) { \
                ICmp##iname::InterfaceInit(scriptInterface); \

++++++ 0ad-0.27.1-unix-build.tar.xz -> 0ad-0.28.0-unix-build.tar.xz ++++++
/work/SRC/openSUSE:Factory/0ad/0ad-0.27.1-unix-build.tar.xz 
/work/SRC/openSUSE:Factory/.0ad.new.29461/0ad-0.28.0-unix-build.tar.xz differ: 
char 15, line 1

Reply via email to