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
