diff --git a/gjs-1.52.3.tar.xz b/gjs-1.52.3.tar.xz deleted file mode 100644 index 2bf1e82..0000000 --- a/gjs-1.52.3.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce21d8a83f6077b011b8834c4936281be65b2b62387f0745c3eb9adf780996fc -size 626512 diff --git a/gjs-1.54.1.tar.xz b/gjs-1.54.1.tar.xz new file mode 100644 index 0000000..f342efb --- /dev/null +++ b/gjs-1.54.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b197fe5812a0449f73f7a93ac85a4ee4941916bcf071ea39a67ddd231dc868bc +size 648276 diff --git a/gjs-Add-API-to-force-GC-schedule.patch b/gjs-Add-API-to-force-GC-schedule.patch deleted file mode 100644 index c99e29c..0000000 --- a/gjs-Add-API-to-force-GC-schedule.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 090298512b12e76929bf8bd14dccbfd355f78dce Mon Sep 17 00:00:00 2001 -From: Georges Basile Stavracas Neto -Date: Fri, 30 Mar 2018 21:37:37 -0300 -Subject: [PATCH] context: Add API to force GC schedule - -There are situations where we cannot run the -GC right away, but we also cannot ignore the -need of running it. - -For those cases, add a new private function -that forces GC to happen on idle. ---- - gjs/context-private.h | 2 ++ - gjs/context.cpp | 29 +++++++++++++++++++++++++---- - 2 files changed, 27 insertions(+), 4 deletions(-) - -diff --git a/gjs/context-private.h b/gjs/context-private.h -index 6dbe669..c45c8d0 100644 ---- a/gjs/context-private.h -+++ b/gjs/context-private.h -@@ -36,6 +36,8 @@ bool _gjs_context_destroying (GjsContext *js_context); - - void _gjs_context_schedule_gc_if_needed (GjsContext *js_context); - -+void _gjs_context_schedule_gc (GjsContext *js_context); -+ - void _gjs_context_exit(GjsContext *js_context, - uint8_t exit_code); - -diff --git a/gjs/context.cpp b/gjs/context.cpp -index c509943..77d7eaa 100644 ---- a/gjs/context.cpp -+++ b/gjs/context.cpp -@@ -90,6 +90,7 @@ struct _GjsContext { - uint8_t exit_code; - - guint auto_gc_id; -+ bool force_gc; - - std::array const_strings; - -@@ -592,22 +593,42 @@ trigger_gc_if_needed (gpointer user_data) - { - GjsContext *js_context = GJS_CONTEXT(user_data); - js_context->auto_gc_id = 0; -- gjs_gc_if_needed(js_context->context); -+ -+ if (js_context->force_gc) -+ JS_GC(js_context->context); -+ else -+ gjs_gc_if_needed(js_context->context); -+ - return G_SOURCE_REMOVE; - } - --void --_gjs_context_schedule_gc_if_needed (GjsContext *js_context) -+ -+static void -+_gjs_context_schedule_gc_internal (GjsContext *js_context, -+ bool force_gc) - { - if (js_context->auto_gc_id > 0) -- return; -+ g_source_remove(js_context->auto_gc_id); - -+ js_context->force_gc = force_gc; - js_context->auto_gc_id = g_idle_add_full(G_PRIORITY_LOW, - trigger_gc_if_needed, - js_context, NULL); - } - - void -+_gjs_context_schedule_gc (GjsContext *js_context) -+{ -+ _gjs_context_schedule_gc_internal(js_context, true); -+} -+ -+void -+_gjs_context_schedule_gc_if_needed (GjsContext *js_context) -+{ -+ _gjs_context_schedule_gc_internal(js_context, false); -+} -+ -+void - _gjs_context_exit(GjsContext *js_context, - uint8_t exit_code) - { --- -libgit2 0.27.0 - diff --git a/gjs-Queue-forced-GC.patch b/gjs-Queue-forced-GC.patch deleted file mode 100644 index 14c48d5..0000000 --- a/gjs-Queue-forced-GC.patch +++ /dev/null @@ -1,123 +0,0 @@ -From e9e969553866b0dd29e78b41c0e372569405f46c Mon Sep 17 00:00:00 2001 -From: Georges Basile Stavracas Neto -Date: Wed, 28 Mar 2018 19:21:52 -0300 -Subject: [PATCH] object: Queue a forced GC when toggling down - -During a GC, the collector asks each object which other -objects that it wants to hold on to so if there's an entire -section of the heap graph that's not connected to anything -else, and not reachable from the root set, then it can be -trashed all at once. - -GObjects, however, don't work like that, there's only a -reference count but no notion of who owns the reference so, -a JS object that's proxying a GObject is unconditionally held -alive as long as the GObject has >1 references. - -Since we cannot know how many more wrapped GObjects are going -be marked for garbage collection after the owner is destroyed, -always queue a garbage collection when a toggle reference goes -down. - -Issue: #140 ---- - gi/object.cpp | 22 ++++++++++++++++++++++ - gjs/context-private.h | 2 +- - gjs/context.cpp | 14 ++++++++------ - 3 files changed, 31 insertions(+), 7 deletions(-) - -diff --git a/gi/object.cpp b/gi/object.cpp -index 3fdfced..606a918 100644 ---- a/gi/object.cpp -+++ b/gi/object.cpp -@@ -1001,8 +1001,30 @@ handle_toggle_down(GObject *gobj) - * collected by the GC - */ - if (priv->keep_alive.rooted()) { -+ GjsContext *context; -+ - gjs_debug_lifecycle(GJS_DEBUG_GOBJECT, "Unrooting object"); - priv->keep_alive.switch_to_unrooted(); -+ -+ /* During a GC, the collector asks each object which other -+ * objects that it wants to hold on to so if there's an entire -+ * section of the heap graph that's not connected to anything -+ * else, and not reachable from the root set, then it can be -+ * trashed all at once. -+ * -+ * GObjects, however, don't work like that, there's only a -+ * reference count but no notion of who owns the reference so, -+ * a JS object that's proxying a GObject is unconditionally held -+ * alive as long as the GObject has >1 references. -+ * -+ * Since we cannot know how many more wrapped GObjects are going -+ * be marked for garbage collection after the owner is destroyed, -+ * always queue a garbage collection when a toggle reference goes -+ * down. -+ */ -+ context = gjs_context_get_current(); -+ if (!_gjs_context_destroying(context)) -+ _gjs_context_schedule_gc(context); - } - } - -diff --git a/gjs/context-private.h b/gjs/context-private.h -index c45c8d0..49c0cf9 100644 ---- a/gjs/context-private.h -+++ b/gjs/context-private.h -@@ -36,7 +36,7 @@ bool _gjs_context_destroying (GjsContext *js_context); - - void _gjs_context_schedule_gc_if_needed (GjsContext *js_context); - --void _gjs_context_schedule_gc (GjsContext *js_context); -+void _gjs_context_schedule_gc(GjsContext *js_context); - - void _gjs_context_exit(GjsContext *js_context, - uint8_t exit_code); -diff --git a/gjs/context.cpp b/gjs/context.cpp -index 77d7eaa..a2ce34a 100644 ---- a/gjs/context.cpp -+++ b/gjs/context.cpp -@@ -599,31 +599,33 @@ trigger_gc_if_needed (gpointer user_data) - else - gjs_gc_if_needed(js_context->context); - -+ js_context->force_gc = false; -+ - return G_SOURCE_REMOVE; - } - - - static void --_gjs_context_schedule_gc_internal (GjsContext *js_context, -- bool force_gc) -+_gjs_context_schedule_gc_internal(GjsContext *js_context, -+ bool force_gc) - { - if (js_context->auto_gc_id > 0) -- g_source_remove(js_context->auto_gc_id); -+ return; - -- js_context->force_gc = force_gc; -+ js_context->force_gc |= force_gc; - js_context->auto_gc_id = g_idle_add_full(G_PRIORITY_LOW, - trigger_gc_if_needed, - js_context, NULL); - } - - void --_gjs_context_schedule_gc (GjsContext *js_context) -+_gjs_context_schedule_gc(GjsContext *js_context) - { - _gjs_context_schedule_gc_internal(js_context, true); - } - - void --_gjs_context_schedule_gc_if_needed (GjsContext *js_context) -+_gjs_context_schedule_gc_if_needed(GjsContext *js_context) - { - _gjs_context_schedule_gc_internal(js_context, false); - } --- -libgit2 0.27.0 - diff --git a/gjs-ensure-force_gc-flag-use.patch b/gjs-ensure-force_gc-flag-use.patch deleted file mode 100644 index 50ef0a7..0000000 --- a/gjs-ensure-force_gc-flag-use.patch +++ /dev/null @@ -1,35 +0,0 @@ -From c0420db97ea574afe80664d3835995fba0c1e47b Mon Sep 17 00:00:00 2001 -From: Carlos Garnacho -Date: Wed, 25 Apr 2018 13:39:12 +0200 -Subject: [PATCH] context: Ensure force_gc flag is not lost if the idle is scheduled - -If the first caller that triggers the idle happens to be non-forcing, -all later forcing calls would be ignored. - -https://gitlab.gnome.org/GNOME/gjs/issues/150 - -Closes: #150 ---- - gjs/context.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/gjs/context.cpp b/gjs/context.cpp -index a2ce34a..e66a9f8 100644 ---- a/gjs/context.cpp -+++ b/gjs/context.cpp -@@ -609,10 +609,11 @@ static void - _gjs_context_schedule_gc_internal(GjsContext *js_context, - bool force_gc) - { -+ js_context->force_gc |= force_gc; -+ - if (js_context->auto_gc_id > 0) - return; - -- js_context->force_gc |= force_gc; - js_context->auto_gc_id = g_idle_add_full(G_PRIORITY_LOW, - trigger_gc_if_needed, - js_context, NULL); --- -libgit2 0.27.0 - diff --git a/gjs.changes b/gjs.changes index 11f4a66..6e09d17 100644 --- a/gjs.changes +++ b/gjs.changes @@ -1,3 +1,121 @@ +------------------------------------------------------------------- +Wed Sep 26 18:02:49 UTC 2018 - bjorn.lie@gmail.com + +- Update to version 1.54.1: + + legacy: Ensure generated GType names are valid. + + Fix GJS profiler with MozJS 60. + + Regression with DBus proxies. + +------------------------------------------------------------------- +Sun Sep 9 07:16:38 UTC 2018 - antoine.belvire@opensuse.org + +- Update to version 1.54.0: + + Compatibility fix for byte arrays: the legacy toString() + behaviour of byte arrays returned from GObject-introspected + functions is now restored. If you use the functionality, a + warning will be logged asking you to upgrade your code + (glgo#GNOME/gjs#227). + +------------------------------------------------------------------- +Fri Aug 31 03:31:25 UTC 2018 - luc14n0@linuxmail.org + +- Update to version 1.53.92: + + Technology preview of a GNOME 3.32 feature: native Promises for + GIO-style asynchronous operations. Since this is a technology + preview, we do not guarantee API stability with the version + coming in GNOME 3.32. These APIs are marked with underscores to + emphasize that they are not stable yet. Use them at your own + risk. + + Closed bugs and merge requests: + - Added promisify to GJS GIO overrides (glgo#GNOME/gjs!225). + - Temporary fix for Gio.File.prototype (glgo#GNOME/gjs!226). +- Changes from version 1.53.91: + + Closed bugs and merge requests: + - Fix example eslint errors; + - Fix more "lost" GInterface properties. +- Changes from version 1.53.90: + + GJS includes a simple debugger now. + + New API for programs that embed GJS: + gjs_context_setup_debugger_console(). + + New JavaScript features! This version of GJS is based on + SpiderMonkey 60, an upgrade from the previous ESR (Extended + Support Release) of SpiderMonkey 52. + + Fixed bugs: glgo#GNOME/gjs#178, glgo#GNOME/gjs#179, + glgo#GNOME/gjs#185, glgo#GNOME/gjs#110, CWE-126 + (glgo#GNOME/gjs#174), glgo#GNOME/gjs#149, glgo#GNOME/gjs#132, + glgo#GNOME/gjs#161, glgo#GNOME/gjs#5, glgo#GNOME/gjs#186. +- Changes from version 1.53.4: + + Refactored the way GObject properties are accessed. This should + be a bit more efficient, as property info (GParamSpec) is now + cached for every object type. There may still be some + regressions from this; please be on the lookout so we can fix + them in the next release. + + The memory usage for each object instance has been reduced, + resulting in several dozens of megabytes less memory usage in + GNOME Shell. + + Fixed bugs: glgo#GNOME/gjs#160, glgo#GNOME/gjs#24, + glgo#GNOME/gjs#173, glgo#GNOME/gjs#165, glgo#GNOME/gjs#171, + glgo#GNOME/gjs#177, glgo#GNOME/gjs#172, glgo#GNOME/gjs#182. +- Changes from version 1.53.3: + + Closed bugs and merge requests: + - Adding multiple ESLint rules for spacing. + - Various maintenance. +- Add pkgconfig(mozjs-60) BuildRequires while dropping its + predecessor pkgconfig(mozjs-52) and mozjs52-devel to reflect + upstream changes. +- Conditionalize the use of systemtap/dtrace: they are currently + failing. + +------------------------------------------------------------------- +Sun Jul 8 01:53:03 UTC 2018 - luc14n0@linuxmail.org + +- Update to version 1.53.3: + + Adding multiple ESLint rules for spacing. + + Various small fixes. + +------------------------------------------------------------------- +Sun Jul 8 01:53:02 UTC 2018 - luc14n0@linuxmail.org + +- Update to version 1.53.2: + + The `Template` parameter passed to `GObject.registerClass()` + now accepts file:/// URIs as well as resource:/// URIs and byte + arrays. + + New API: `gjs_get_js_version()` returns a string identifying + the version of the underlying SpiderMonkey JS engine. The + interpreter executable has also gained a `--jsversion` argument + which will print this string. + + Several fixes for memory efficiency and performance. + + Fixed bugs: + - Reduce memory overhead of g_object_weak_ref() + (glgo#GNOME/gjs#144). + - Use compacting GC on RSS size growth (glgo#GNOME/gjs#151). + - Segfault on enumeration of GjSFileImporter properties when a + searchpath entry contains a symlink. + +------------------------------------------------------------------- +Sun Jul 8 01:53:01 UTC 2018 - luc14n0@linuxmail.org + +- Update to version 1.53.1: + + Improvements to garbage collection performance. + + Now, when building a class from a UI template file signals + defined in the UI template file will be automatically + connected. + + Fixed bugs: + - Tweener: Add min/max properties; + - `ARGV` encoding issues (glgo#GNOME/gjs#22); + - Make GC much more aggressive (glgo#GNOME/gjs#62); + - Queue GC when a GObject reference is toggled down + (glgo#GNOME/gjs#140); + - overrides: support Gtk template callbacks; + - Ensure not to miss the force_gc flag (glgo#GNOME/gjs#150). +- Append LGPL-2.0-or-later to the License tag to conform to due + source code licenses. And set LPGL-2.0-or-later License tag for + libgjs library subpackage. +- Drop fixed upstream patches: + + gjs-Add-API-to-force-GC-schedule.patch and + + gjs-Queue-forced-GC.patch. + + gjs-ensure-force_gc-flag-use.patch. + ------------------------------------------------------------------- Thu Jul 5 20:00:00 UTC 2018 - bjorn.lie@gmail.com @@ -198,7 +316,7 @@ Tue Oct 31 22:54:17 UTC 2017 - luc14n0@linuxmail.org + Minor bugfixes. - Update Url to https://wiki.gnome.org/Projects/Gjs: current Gjs' project web page. -- Alignment BuildRequires with configure: +- Align BuildRequires with configure: + Add pkgconfig(*): cairo-gobject, gio-2.0, gobject-2.0 and gthread-2.0. + Drop pkgconfig(libmozjs-52) and libxml2-tools. diff --git a/gjs.spec b/gjs.spec index 41e1845..869aace 100644 --- a/gjs.spec +++ b/gjs.spec @@ -12,26 +12,23 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # +# TODO: systemtap/dtrace is currently (1.53.91) failing, when +# https://gitlab.gnome.org/GNOME/gjs/issues/196 gets fixed and released, +# remove all conditional macros and enable systemtap. +%bcond_with systemtap Name: gjs -Version: 1.52.3 +Version: 1.54.1 Release: 0 Summary: JavaScript bindings based on gobject-introspection and Mozilla -License: MIT +License: MIT AND LGPL-2.0-or-later Group: Development/Libraries/GNOME URL: https://wiki.gnome.org/Projects/Gjs -Source0: http://download.gnome.org/sources/gjs/1.52/%{name}-%{version}.tar.xz -# PATCH-FIX-UPSTREAM gjs-Add-API-to-force-GC-schedule.patch -- context: Add API to force GC schedule -Patch0: gjs-Add-API-to-force-GC-schedule.patch -# PATCH-FIX-UPSTREAM gjs-Queue-forced-GC.patch -- object: Queue a forced GC when toggling down -Patch1: gjs-Queue-forced-GC.patch -# PATCH-FIX-UPSTREAM gjs-ensure-force_gc-flag-use.patch -- context: Ensure force_gc flag is not lost if the idle is scheduled -Patch2: gjs-ensure-force_gc-flag-use.patch +Source0: http://download.gnome.org/sources/gjs/1.54/%{name}-%{version}.tar.xz BuildRequires: gcc-c++ -BuildRequires: mozjs52-devel BuildRequires: pkgconfig BuildRequires: python BuildRequires: readline-devel @@ -47,7 +44,7 @@ BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.53.4 BuildRequires: pkgconfig(gthread-2.0) >= 2.50.0 BuildRequires: pkgconfig(gtk+-3.0) >= 3.20 BuildRequires: pkgconfig(libffi) -#BuildRequires: pkgconfig(mozjs-52) +BuildRequires: pkgconfig(mozjs-60) Requires: libgjs0 = %{version} ExcludeArch: s390 @@ -57,6 +54,7 @@ Mozilla SpiderMonkey JavaScript engine. %package -n libgjs0 Summary: JavaScript bindings based on gobject-introspection and Mozilla +License: LGPL-2.0-or-later Group: System/Libraries Provides: libgjs-0 = %{version} Obsoletes: libgjs-0 < %{version} @@ -68,6 +66,7 @@ Mozilla SpiderMonkey JavaScript engine. %package -n typelib-1_0-GjsPrivate-1_0 Summary: Introspection bindings for the GJS library # The tyeplib was renamed in gnome 3.6, to reflect it is a private lib. +License: MIT AND LGPL-2.0-or-later Group: System/Libraries Obsoletes: typelib-1_0-GjsDBus-1_0 < %{version} @@ -77,6 +76,7 @@ Mozilla SpiderMonkey JavaScript engine. %package -n libgjs-devel Summary: Development files for the GJS library +License: MIT AND LGPL-2.0-or-later Group: Development/Libraries/GNOME Requires: %{name} = %{version} Requires: libgjs0 = %{version} @@ -94,7 +94,7 @@ Mozilla SpiderMonkey JavaScript engine. %build %configure \ --disable-static \ - --enable-systemtap + --%{?with_systemtap:enable}%{!?with_systemtap:disable}-systemtap make %{?_smp_mflags} %install @@ -124,6 +124,8 @@ find %{buildroot} -type f -name "*.la" -delete -print %{_libdir}/*.so %{_libdir}/pkgconfig/*.pc %{_datadir}/%{name}-1.0/ +%if %{with systemtap} %{_datadir}/systemtap/tapset/*.stp +%endif %changelog