gjs/gjs.spec

143 lines
4.2 KiB
RPMSpec
Raw Normal View History

#
# spec file for package gjs
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%bcond_with profiling
Name: gjs
Version: 1.80.2
Release: 0
Summary: JavaScript bindings based on gobject-introspection and Mozilla
License: LGPL-2.0-or-later AND MIT
Group: Development/Libraries/GNOME
URL: https://wiki.gnome.org/Projects/Gjs
Source0: %{name}-%{version}.tar.zst
Accepting request 689942 from GNOME:Next - Update to version 3.32.0: + Stable release version bump. - Update to version 1.55.92: + Possible memory allocation/deallocation bug (possibly in js_free() in GJS). + cairo-context: Special-case 0-sized vector. + Add some more eslint rules. + NMake/libgjs-private: Export all the public symbols there. - Update to version 1.55.91: + The problem of freezing while running the tests using GCC's sanitizers was determined to be a bug in GCC, which was fixed in GCC 9.0.1. + Closed bugs and merge requests: - gnome-sound-recorder crashes deep inside libgjs. - Various maintenance. - wrapperutils: Define $gtype property as non-enumerable. - Update to version 1.55.90: + New JS API: It's now possible to call and implement DBus methods whose parameters or return types include file descriptor lists (type signature 'h'). This involves passing or receiving a Gio.UnixFDList instance along with the parameters or return values. + To call a method with a file descriptor list, pass the Gio.UnixFDList along with the rest of the parameters, in any order, the same way you would pass a Gio.Cancellable or async callback. + For return values, things are a little more complicated, in order to avoid breaking existing code. Previously, synchronously called DBus proxy methods would return an unpacked GVariant. Now, but only if called with a Gio.UnixFDList, they will return [unpacked GVariant, Gio.UnixFDList]. This does not break existing code because it was not possible to call a method with a Gio.UnixFDList before, and the return value is unchanged if not calling with a Gio.UnixFDList. This does mean, unfortunately, that if you have a method with an 'h' in its return signature but not in its argument signatures, you will have to call it with an empty FDList in order to receive an FDList with the return value, when calling synchronously. + On the DBus service side, when receiving a method call, we now pass the Gio.UnixFDList received from DBus to the called method. Previously, sync methods were passed the parameters, and async methods were passed the parameters plus the Gio.DBusInvocation object. Appending the Gio.UnixFDList to those parameters also should not break existing code. + See the new tests in installed-tests/js/testGDBus.js for examples of calling methods with FD lists. + We have observed on the CI server that GJS 1.55.90 will hang forever while running the test suite compiled with GCC 9.0.0 and configured with the --enable-asan and --enable-ubsan arguments. This should be addressed in one of the following 1.55.x releases. + Closed bugs and merge requests: - GDBus proxy overrides should support Gio.DBusProxy.call_with_unix_fd_list(). - Add regression tests for GObject vfuncs. - GjsPrivate: Sources should be C files. - build: Vendor last-good version of AX_CODE_COVERAGE. - Update to version 1.55.4: + Various maintenance. + Boxed copy constructor should not be called, split Boxed into prototype and instance structs. - Update to version 1.55.3: + Manually constructed ByteArray toString segfaults. + signals: Add _signalHandlerIsConnected method. + Various maintenance. - Changes from version 1.55.2: + Gnome-shell crashes on destroying cached param specs. + Various maintenance. + Auto pointers builder. + configure.ac: Update bug link. + SIGSEGV when exiting gnome-shell. + Fix build with --enable-dtrace and create CI job to ensure it doesn't break in the future. + Delay JSString-to-UTF8 conversion. + Annotate return values. + Fix a regression with GError toString(). + GType memleak fixes. + Atoms refactor. + Write a "Code Hospitable" README file. + object: Method lookup repeatedly traverses introspection. + Handler of GtkEditable::insert-text signal is not run. - Changes from version 1.55.1: + object: Implement newEnumerate hook for GObject. + Various maintenance. + ByteArray.toString should stop at null bytes. + Byte arrays that represent encoded strings should be 0-terminated. + context: Defer and therefore batch forced GC runs. + context: use timeout with seconds to schedule a gc trigger. + arg: Add special-case for byte arrays going to C. OBS-URL: https://build.opensuse.org/request/show/689942 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gjs?expand=0&rev=162
2019-04-06 20:29:57 +02:00
BuildRequires: /usr/bin/dbus-run-session
BuildRequires: c++_compiler
BuildRequires: git
BuildRequires: meson >= 0.54.0
BuildRequires: pkgconfig
BuildRequires: readline-devel
%if 0%{?sle_version} && 0%{?sle_version} <= 150500
BuildRequires: xorg-x11-Xvfb
%else
BuildRequires: xorg-x11-server-Xvfb
%endif
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(cairo-gobject)
BuildRequires: pkgconfig(cairo-xlib)
BuildRequires: pkgconfig(dbus-glib-1)
BuildRequires: pkgconfig(gio-2.0) >= 2.58.0
BuildRequires: pkgconfig(glib-2.0) >= 2.58.0
BuildRequires: pkgconfig(gobject-2.0) >= 2.58.0
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(gtk4)
BuildRequires: pkgconfig(libffi)
BuildRequires: pkgconfig(mozjs-115)
%if %{with profiling}
BuildRequires: pkgconfig(sysprof-capture-4)
%endif
Requires: libgjs0 = %{version}
ExcludeArch: s390
%description
This module contains JavaScript bindings based on gobject-introspection and the
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}
%description -n libgjs0
This module contains JavaScript bindings based on gobject-introspection and the
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: LGPL-2.0-or-later AND MIT
Group: System/Libraries
Obsoletes: typelib-1_0-GjsDBus-1_0 < %{version}
%description -n typelib-1_0-GjsPrivate-1_0
This module contains JavaScript bindings based on gobject-introspection and the
Mozilla SpiderMonkey JavaScript engine.
%package -n libgjs-devel
Summary: Development files for the GJS library
License: LGPL-2.0-or-later AND MIT
Group: Development/Libraries/GNOME
Requires: %{name} = %{version}
Requires: libgjs0 = %{version}
Requires: typelib-1_0-GjsPrivate-1_0 = %{version}
# Just a helper provides
Provides: gjs-devel = %{version}
%description -n libgjs-devel
This module contains JavaScript bindings based on gobject-introspection and the
Mozilla SpiderMonkey JavaScript engine.
%prep
%autosetup -p1
%build
%meson \
-Dinstalled_tests=false \
-Dprofiler=%{?with_profiling:enabled}%{!?with_profiling:disabled} \
%{nil}
%meson_build
%install
%meson_install
%check
export DISPLAY=:98
Xvfb :98 >& Xvfb.log & trap "kill $! || true" EXIT
sleep 10
%meson_test
%ldconfig_scriptlets -n libgjs0
%files
%license COPYING
%doc NEWS README.md
%{_bindir}/gjs
%{_bindir}/gjs-console
%files -n libgjs0
%license LICENSES/LGPL-2.0-or-later.txt
%{_libdir}/*.so.*
%files -n typelib-1_0-GjsPrivate-1_0
%dir %{_libdir}/gjs
%dir %{_libdir}/gjs/girepository-1.0/
%{_libdir}/gjs/girepository-1.0/GjsPrivate-1.0.typelib
%files -n libgjs-devel
%{_includedir}/*
%{_libdir}/*.so
%{_libdir}/pkgconfig/*.pc
%{_datadir}/%{name}-1.0/
%changelog