openSUSE Commits
Threads by month
- ----- 2024 -----
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
November 2022
- 1 participants
- 2423 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gdm for openSUSE:Factory checked in at 2022-11-01 13:40:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gdm (Old)
and /work/SRC/openSUSE:Factory/.gdm.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gdm"
Tue Nov 1 13:40:42 2022 rev:248 rq:1032387 version:43.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/gdm/gdm.changes 2022-10-16 16:09:14.514758381 +0200
+++ /work/SRC/openSUSE:Factory/.gdm.new.2275/gdm.changes 2022-11-01 13:40:46.315322723 +0100
@@ -1,0 +2,6 @@
+Mon Oct 31 06:19:21 UTC 2022 - Xiaoguang Wang <xiaoguang.wang(a)suse.com>
+
+- Update gdm-sysconfig-settings.patch: Fix gdm doesn't start
+ if /etc/sysconfig/displaymanager is missing (bsc#1204578).
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gdm-sysconfig-settings.patch ++++++
--- /var/tmp/diff_new_pack.HwsMP8/_old 2022-11-01 13:40:47.191327382 +0100
+++ /var/tmp/diff_new_pack.HwsMP8/_new 2022-11-01 13:40:47.195327403 +0100
@@ -2,7 +2,7 @@
===================================================================
--- /dev/null
+++ gdm-43.0/common/gdm-settings-system-backend.c
-@@ -0,0 +1,369 @@
+@@ -0,0 +1,372 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Hans Petter Jansson <hpj(a)copyleft.no>
@@ -368,6 +368,9 @@
+{
+ GObject *object;
+
++ if (!g_file_test ("/etc/sysconfig/displaymanager", G_FILE_TEST_IS_REGULAR))
++ return NULL;
++
+ object = g_object_new (GDM_TYPE_SETTINGS_SYSTEM_BACKEND, NULL);
+
+ return GDM_SETTINGS_BACKEND (object);
@@ -445,11 +448,13 @@
struct _GdmSettings
{
-@@ -198,6 +199,8 @@ gdm_settings_reload (GdmSettings *settin
+@@ -198,6 +199,10 @@ gdm_settings_reload (GdmSettings *settin
if (backend)
settings->backends = g_list_prepend (NULL, backend);
-+ settings->backends = g_list_prepend (settings->backends, gdm_settings_system_backend_new ());
++ backend = gdm_settings_system_backend_new ();
++ if (backend)
++ settings->backends = g_list_prepend (settings->backends, backend);
+
backend = gdm_settings_desktop_backend_new (GDM_RUNTIME_CONF);
if (backend)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gnome-shell for openSUSE:Factory checked in at 2022-11-01 13:40:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-shell (Old)
and /work/SRC/openSUSE:Factory/.gnome-shell.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-shell"
Tue Nov 1 13:40:39 2022 rev:227 rq:1032385 version:43.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-shell/gnome-shell.changes 2022-09-21 14:41:12.189550404 +0200
+++ /work/SRC/openSUSE:Factory/.gnome-shell.new.2275/gnome-shell.changes 2022-11-01 13:40:44.463312869 +0100
@@ -1,0 +2,7 @@
+Fri Oct 28 08:03:22 UTC 2022 - Milachew <milachew(a)mail.lv>
+
+- Add gnome-shell-disable-offline-update-dialog.patch :
+ Disable offline update suggestion before shutdown/reboot
+ in SLE and openSUSE Leap (bsc#944832).
+
+-------------------------------------------------------------------
New:
----
gnome-shell-disable-offline-update-dialog.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-shell.spec ++++++
--- /var/tmp/diff_new_pack.MlIBRj/_old 2022-11-01 13:40:45.259317104 +0100
+++ /var/tmp/diff_new_pack.MlIBRj/_new 2022-11-01 13:40:45.263317126 +0100
@@ -61,6 +61,8 @@
Patch1009: gnome-shell-fate324570-Make-GDM-background-image-configurable.patch
# PATCH-FIX-UPSTREAM gnome-shell-jsc#SLE-16051-Input-method-recommendation.patch jsc#SLE-16051 glgo#GNOME/gnome-shell!1563 qzhao(a)suse.com -- launch recommended input engines when Gnome-shell init in CJK regions.
Patch1010: gnome-shell-jsc#SLE-16051-Input-method-recommendation.patch
+# PATCH-FIX-SLE gnome-shell-disable-offline-update-dialog.patch bsc#944832 milachew(a)mail.lv -- Disable offline update suggestion before shutdown/reboot in SLE and openSUSE Leap.
+Patch1011: gnome-shell-disable-offline-update-dialog.patch
# needed for directory ownership
BuildRequires: asciidoc
@@ -193,6 +195,7 @@
%patch1009 -p1
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150300
%patch1010 -p1
+%patch1011 -p1
%endif
%endif
++++++ gnome-shell-disable-offline-update-dialog.patch ++++++
--- gnome-shell-41.orig/js/ui/endSessionDialog.js 2022-08-11 16:16:07.000000000 +0300
+++ gnome-shell-41/js/ui/endSessionDialog.js 2022-10-26 12:49:20.435238071 +0300
@@ -707,19 +703,7 @@
}
async _getUpdateInfo() {
- const connection = this._pkOfflineProxy.get_connection();
- const reply = await connection.call(
- this._pkOfflineProxy.g_name,
- this._pkOfflineProxy.g_object_path,
- 'org.freedesktop.DBus.Properties',
- 'GetAll',
- new GLib.Variant('(s)', [this._pkOfflineProxy.g_interface_name]),
- null,
- Gio.DBusCallFlags.NONE,
- -1,
- null);
- const [info] = reply.recursiveUnpack();
- return info;
+ return [];
}
async OpenAsync(parameters, invocation) {
(No newline at EOF)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gnome-software for openSUSE:Factory checked in at 2022-11-01 13:40:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-software (Old)
and /work/SRC/openSUSE:Factory/.gnome-software.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-software"
Tue Nov 1 13:40:37 2022 rev:100 rq:1032384 version:43.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-software/gnome-software.changes 2022-10-27 13:52:43.488125524 +0200
+++ /work/SRC/openSUSE:Factory/.gnome-software.new.2275/gnome-software.changes 2022-11-01 13:40:42.855304319 +0100
@@ -1,0 +2,6 @@
+Wed Oct 26 01:55:06 UTC 2022 - Jonathan Kang <songchuan.kang(a)suse.com>
+
+- Add gnome-software-disable-offline-update.patch: Disable offline
+ update in SLE and openSUSE Leap(bsc#944832).
+
+-------------------------------------------------------------------
New:
----
gnome-software-disable-offline-update.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-software.spec ++++++
--- /var/tmp/diff_new_pack.z26Lpe/_old 2022-11-01 13:40:43.299306680 +0100
+++ /var/tmp/diff_new_pack.z26Lpe/_new 2022-11-01 13:40:43.303306701 +0100
@@ -29,6 +29,8 @@
%if 0%{?sle_version}
# PATCH-FIX-OPENSUSE gnome-software-launch-gpk-update-viewer-for-updates.patch bsc#1077332 boo#1090042 sckang(a)suse.com -- Don't launch gnome-software when clicking the updates notification. Launch gpk-update-viewer instead.
Patch0: gnome-software-launch-gpk-update-viewer-for-updates.patch
+# PATCH-FIX-OPENSUSE gnome-software-disable-offline-update.patch bsc#944832 sckang(a)suse.com -- Disable offline update in SLE and openSUSE Leap
+Patch1: gnome-software-disable-offline-update.patch
%endif
BuildRequires: gtk-doc
++++++ gnome-software-disable-offline-update.patch ++++++
Index: gnome-software-41.5/src/gs-updates-section.c
===================================================================
--- gnome-software-41.5.orig/src/gs-updates-section.c
+++ gnome-software-41.5/src/gs-updates-section.c
@@ -739,7 +739,7 @@ gs_updates_section_app_state_changed_cb
}
}
- gtk_widget_set_sensitive (self->button_update, busy < len);
+ gtk_widget_set_sensitive (self->button_update, FALSE);
}
static void
@@ -760,6 +760,8 @@ gs_updates_section_init (GsUpdatesSectio
gtk_list_box_set_sort_func (GTK_LIST_BOX (self->listbox),
_list_sort_func,
self, NULL);
+
+ gtk_widget_set_sensitive (self->button_update, FALSE);
}
/**
Index: gnome-software-41.5/src/gs-updates-section.ui
===================================================================
--- gnome-software-41.5.orig/src/gs-updates-section.ui
+++ gnome-software-41.5/src/gs-updates-section.ui
@@ -34,6 +34,7 @@
<property name="visible">True</property>
<property name="use_underline">True</property>
<property name="label" translatable="yes">_Download</property>
+ <property name="tooltip-text" translatable="yes">Please use gpk-update-viewer to update the system</property>
<signal name="clicked" handler="_button_download_clicked_cb" swapped="yes"/>
<style>
<class name="suggested-action"/>
@@ -46,6 +47,7 @@
<child>
<object class="GsProgressButton" id="button_update">
<property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Please use gpk-update-viewer to update the system</property>
<signal name="clicked" handler="_button_update_all_clicked_cb" swapped="yes"/>
<style>
<class name="suggested-action"/>
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gnome-terminal for openSUSE:Factory checked in at 2022-11-01 13:40:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-terminal (Old)
and /work/SRC/openSUSE:Factory/.gnome-terminal.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-terminal"
Tue Nov 1 13:40:35 2022 rev:146 rq:1032383 version:3.46.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-terminal/gnome-terminal.changes 2022-10-12 18:24:12.589592268 +0200
+++ /work/SRC/openSUSE:Factory/.gnome-terminal.new.2275/gnome-terminal.changes 2022-11-01 13:40:40.639292527 +0100
@@ -1,0 +2,16 @@
+Thu Oct 27 11:11:44 UTC 2022 - bjorn.lie(a)gmail.com
+
+- Update to version 3.46.3:
+ * client: More env vars to filter.
+ * desktop: Use Preferences icon.
+ * icons: Add separate icons for Preferences.
+ * l10n: Remove mjw from LINGUAS.
+ * metainfo: Remove XML namespaces.
+ * prefs:
+ - Use different wm class.
+ - Use new icon.
+ * profile: Use correct schema source for the profiles list
+ schema.
+ * Updated translations.
+
+-------------------------------------------------------------------
Old:
----
gnome-terminal-3.46.2.obscpio
New:
----
gnome-terminal-3.46.3.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-terminal.spec ++++++
--- /var/tmp/diff_new_pack.db3ylF/_old 2022-11-01 13:40:42.155300594 +0100
+++ /var/tmp/diff_new_pack.db3ylF/_new 2022-11-01 13:40:42.159300616 +0100
@@ -18,7 +18,7 @@
%bcond_without nautilus_extension
Name: gnome-terminal
-Version: 3.46.2
+Version: 3.46.3
Release: 0
Summary: GNOME Terminal
License: GPL-3.0-or-later AND LGPL-2.1-or-later
++++++ _service ++++++
--- /var/tmp/diff_new_pack.db3ylF/_old 2022-11-01 13:40:42.183300744 +0100
+++ /var/tmp/diff_new_pack.db3ylF/_new 2022-11-01 13:40:42.187300764 +0100
@@ -5,7 +5,7 @@
<param name="scm">git</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param>
- <param name="revision">refs/tags/3.46.2</param>
+ <param name="revision">refs/tags/3.46.3</param>
</service>
<service name="tar" mode="buildtime" />
<service name="recompress" mode="buildtime">
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.db3ylF/_old 2022-11-01 13:40:42.203300850 +0100
+++ /var/tmp/diff_new_pack.db3ylF/_new 2022-11-01 13:40:42.207300871 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://gitlab.gnome.org/GNOME/gnome-terminal.git</param>
- <param name="changesrevision">df9fcced28efbb737aeaf0915fc466d2726557f2</param></service></servicedata>
+ <param name="changesrevision">bce00598029491f06a0681834014409dc264bf27</param></service></servicedata>
(No newline at EOF)
++++++ gnome-terminal-3.46.2.obscpio -> gnome-terminal-3.46.3.obscpio ++++++
/work/SRC/openSUSE:Factory/gnome-terminal/gnome-terminal-3.46.2.obscpio /work/SRC/openSUSE:Factory/.gnome-terminal.new.2275/gnome-terminal-3.46.3.obscpio differ: char 49, line 1
++++++ gnome-terminal.obsinfo ++++++
--- /var/tmp/diff_new_pack.db3ylF/_old 2022-11-01 13:40:42.243301062 +0100
+++ /var/tmp/diff_new_pack.db3ylF/_new 2022-11-01 13:40:42.247301084 +0100
@@ -1,5 +1,5 @@
name: gnome-terminal
-version: 3.46.2
-mtime: 1664624900
-commit: df9fcced28efbb737aeaf0915fc466d2726557f2
+version: 3.46.3
+mtime: 1666369620
+commit: bce00598029491f06a0681834014409dc264bf27
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package vte for openSUSE:Factory checked in at 2022-11-01 13:40:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vte (Old)
and /work/SRC/openSUSE:Factory/.vte.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vte"
Tue Nov 1 13:40:32 2022 rev:140 rq:1032382 version:0.70.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/vte/vte.changes 2022-09-21 14:41:53.721665587 +0200
+++ /work/SRC/openSUSE:Factory/.vte.new.2275/vte.changes 2022-11-01 13:40:36.679271463 +0100
@@ -1,0 +2,15 @@
+Thu Oct 27 11:08:00 UTC 2022 - bjorn.lie(a)gmail.com
+
+- Update to version 0.70.1:
+ + app:
+ - Disconnect signal handlers on dispose.
+ - Filter unwanted environment variables.
+ + build:
+ - Add define for darwin.
+ - Fix netbsd define.
+ + widget:
+ - Don't consume right clicks on gtk4.
+ - Implement clipboard for gtk4.
+ * Updated translations.
+
+-------------------------------------------------------------------
Old:
----
vte-0.70.0.obscpio
New:
----
vte-0.70.1.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vte.spec ++++++
--- /var/tmp/diff_new_pack.ayj9Ci/_old 2022-11-01 13:40:37.919278060 +0100
+++ /var/tmp/diff_new_pack.ayj9Ci/_new 2022-11-01 13:40:37.919278060 +0100
@@ -27,7 +27,7 @@
%bcond_with glade_support
Name: vte
-Version: 0.70.0
+Version: 0.70.1
Release: 0
Summary: Terminal Emulator Library
License: CC-BY-4.0 AND LGPL-3.0-or-later AND GPL-3.0-or-later AND MIT
++++++ _service ++++++
--- /var/tmp/diff_new_pack.ayj9Ci/_old 2022-11-01 13:40:37.947278208 +0100
+++ /var/tmp/diff_new_pack.ayj9Ci/_new 2022-11-01 13:40:37.951278230 +0100
@@ -5,7 +5,7 @@
<param name="scm">git</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param>
- <param name="revision">refs/tags/0.70.0</param>
+ <param name="revision">refs/tags/0.70.1</param>
<param name="exclude">doc/vttest.*</param>
</service>
<service name="tar" mode="buildtime" />
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.ayj9Ci/_old 2022-11-01 13:40:37.967278316 +0100
+++ /var/tmp/diff_new_pack.ayj9Ci/_new 2022-11-01 13:40:37.971278336 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://gitlab.gnome.org/GNOME/vte.git</param>
- <param name="changesrevision">ae4a5d7df9e32ab40ceca5e06240561e819db148</param></service></servicedata>
+ <param name="changesrevision">5bf476f1d7283bc805ac8ae6abe94f81ffd7be05</param></service></servicedata>
(No newline at EOF)
++++++ vte-0.70.0.obscpio -> vte-0.70.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vte-0.70.0/meson.build new/vte-0.70.1/meson.build
--- old/vte-0.70.0/meson.build 2022-09-03 18:50:59.000000000 +0200
+++ new/vte-0.70.1/meson.build 2022-09-23 20:46:10.000000000 +0200
@@ -17,7 +17,7 @@
project(
'vte',
['c', 'cpp'],
- version: '0.70.0',
+ version: '0.70.1',
license: ['LGPL-3.0-or-later', 'GPL-3.0-or-later'],
default_options: [
'buildtype=release',
@@ -229,9 +229,15 @@
libc_feature_defines = []
+elif system == 'darwin'
+ # See issue #2592
+ libc_feature_defines += [
+ ['_DARWIN_C_SOURCE', '1'],
+ ]
+
elif system == 'netbsd'
libc_feature_defines += [
- '_NETBSD_SOURCE',
+ ['_NETBSD_SOURCE', '1'],
]
endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vte-0.70.0/po/tr.po new/vte-0.70.1/po/tr.po
--- old/vte-0.70.0/po/tr.po 2022-09-03 18:50:59.000000000 +0200
+++ new/vte-0.70.1/po/tr.po 2022-09-23 20:46:10.000000000 +0200
@@ -1,5 +1,5 @@
# Turkish translation of vte.
-# Copyright (C) 2003 vte's COPYRIGHT HOLDER
+# Copyright (C) 2003-2022 vte's COPYRIGHT HOLDER
# This file is distributed under the same license as the vte package.
#
# G��rkem ��etin <gorkem(a)gelecek.com.tr>, 2003.
@@ -14,7 +14,7 @@
msgstr ""
"Project-Id-Version: vte master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/vte/issues\n"
-"POT-Creation-Date: 2020-04-27 18:50+0000\n"
+"POT-Creation-Date: 2022-08-06 12:19+0000\n"
"PO-Revision-Date: 2020-04-28 15:36+0300\n"
"Last-Translator: Emin Tufan ��etin <etcetin(a)gmail.com>\n"
"Language-Team: T��rk��e <gnome-turk(a)gnome.org>\n"
@@ -25,115 +25,43 @@
"X-Generator: Poedit 2.3\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/vte.cc:7843
+#: src/vte.cc:7643
msgid "WARNING"
msgstr "UYARI"
-#: src/vte.cc:7845
+#: src/vte.cc:7645
msgid "GnuTLS not enabled; data will be written to disk unencrypted!"
msgstr "GnuTLS etkin de��il; veriler diske ��ifrelenmemi�� olarak yaz��lacak!"
-#: src/spawn.cc:104
+#: src/spawn.cc:124
#, c-format
msgid "Failed to set pipe nonblocking: %s"
msgstr "Boru nonblocking belirlenemedi. %s"
-#: src/spawn.cc:148
+#: src/spawn.cc:169
#, c-format
msgid "poll error: %s"
msgstr "poll hatas��: %s"
-#: src/spawn.cc:154
+#: src/spawn.cc:176
msgid "Operation timed out"
msgstr "����lem zaman a����m��na u��rad��"
-#: src/spawn.cc:164
+#: src/spawn.cc:186
msgid "Operation was cancelled"
msgstr "����lem iptal edildi"
-#: src/spawn.cc:182
+#: src/spawn.cc:204
#, c-format
msgid "Failed to read from child pipe (%s)"
msgstr "��ocuk borudan (%s) okunurken hata"
-#: src/spawn.cc:576
+#: src/spawn.cc:639
#, c-format
msgid "Failed to change to directory ���%s���: %s"
msgstr "���%s��� dizinine de��i��tirme ba��ar��s��z: %s"
-#: src/spawn.cc:645
+#: src/spawn.cc:708
#, c-format
msgid "Failed to execute child process ���%s���: "
msgstr "���%s��� ��ocuk s��reci ��al����t��r��lamad��: "
-
-#~ msgid "Unable to convert characters from %s to %s."
-#~ msgstr "Karakterler %s��den %s��e d��n����t��r��lemiyor."
-
-#~ msgid "Error (%s) converting data for child, dropping."
-#~ msgstr "��ocuk s��re�� i��in veriyi ��evirirken hata (%s), b��rak��l��yor."
-
-#~ msgid "Copy"
-#~ msgstr "Kopyala"
-
-#~ msgid "Paste"
-#~ msgstr "Yap����t��r"
-
-#~ msgid "Reset (use Ctrl to reset and clear)"
-#~ msgstr "S��f��rla (S��f��rlamak ve temizlemek i��in Ctrl'yi kullan��n)"
-
-#~ msgid "Reset"
-#~ msgstr "S��f��rla"
-
-#~ msgid "Toggle input enabled setting"
-#~ msgstr "Giri��i a��/kapa"
-
-#~ msgid "Input"
-#~ msgstr "Giri��"
-
-#~ msgid "Could not open console.\n"
-#~ msgstr "Konsol a����lamad��.\n"
-
-#~ msgid "Could not parse the geometry spec passed to --geometry"
-#~ msgstr "--geometry'de belirtilen geometri belirtimi ayr����t��r��lamad��"
-
-#~ msgid "Unable to send data to child, invalid charset convertor"
-#~ msgstr "Alt s��rece veri g��nderilemedi, ge��ersiz karakter k��mesi ��evirici"
-
-#~ msgid "Error reading PTY size, using defaults: %s\n"
-#~ msgstr "PTY boyutu okunurken hata, ��ntan��ml�� de��erler kullan��l��yor: %s\n"
-
-#~ msgid "Attempt to set invalid NRC map '%c'."
-#~ msgstr "Ge��ersiz NRC haritas�� '%c' ayarlanmaya ��al������ld��."
-
-#~ msgid "Unrecognized identified coding system."
-#~ msgstr "An��msanmayan tan��mlanm���� kodlama sistemi."
-
-#~ msgid "Attempt to set invalid wide NRC map '%c'."
-#~ msgstr "Ge��ersiz geni�� NRC haritas�� '%c' ayarlanmaya ��al������ld��."
-
-#~ msgid "Duplicate (%s/%s)!"
-#~ msgstr "��ift (%s/%s)!"
-
-#~ msgid "Error compiling regular expression \"%s\"."
-#~ msgstr "D��zenli ifade derlenirken hata: \"%s\"."
-
-#~ msgid "_vte_conv_open() failed setting word characters"
-#~ msgstr "_vte_iconv_open() kelime karakterlerini ayarlarken ba��ar��s��z oldu"
-
-#~ msgid "can not run %s"
-#~ msgstr "%s ��al����t��r��lamad��"
-
-#~ msgid "Error creating signal pipe."
-#~ msgstr "Sinyal borusu olu��tururken hata."
-
-#~ msgid "No handler for control sequence `%s' defined."
-#~ msgstr "`%s' kontrol serisi i��in i��lemci tan��mlanmam����."
-
-#~ msgid "Error setting PTY size: %s."
-#~ msgstr "PTY boyutu ayarlan��rken hata: %s."
-
-#~ msgid "Got unexpected (key?) sequence `%s'."
-#~ msgstr "Beklenmeyen (tu��?) serisi `%s' al��nd��."
-
-#~ msgid "Unknown pixel mode %d.\n"
-#~ msgstr "Bilinmeyen benek kipi %d.\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vte-0.70.0/src/app/app.cc new/vte-0.70.1/src/app/app.cc
--- old/vte-0.70.0/src/app/app.cc 2022-09-03 18:50:59.000000000 +0200
+++ new/vte-0.70.1/src/app/app.cc 2022-09-23 20:46:10.000000000 +0200
@@ -157,6 +157,86 @@
return m_map_fds;
}
+ auto environment_for_spawn() const noexcept
+ {
+ auto envv = g_get_environ();
+
+ // Merge in extra variables
+ if (environment) {
+ for (auto i = 0; environment[i]; ++i) {
+ auto const eq = strchr(environment[i], '=');
+ if (eq) {
+ auto const var = vte::glib::take_string(g_strndup(environment[i], eq - environment[i]));
+ envv = g_environ_setenv(envv, var.get(), eq + 1, true);
+ } else {
+ envv = g_environ_unsetenv(envv, environment[i]);
+ }
+ }
+ }
+
+ // Cleanup environment
+ // List of variables and prefixes copied from gnome-terminal.
+ for (auto const& var : {"COLORTERM",
+ "COLUMNS",
+ "DESKTOP_STARTUP_ID",
+ "EXIT_CODE",
+ "EXIT_STATUS",
+ "GIO_LAUNCHED_DESKTOP_FILE",
+ "GIO_LAUNCHED_DESKTOP_FILE_PID",
+ "GJS_DEBUG_OUTPUT",
+ "GJS_DEBUG_TOPICS",
+ "GNOME_DESKTOP_ICON",
+ "INVOCATION_ID",
+ "JOURNAL_STREAM",
+ "LINES",
+ "LISTEN_FDNAMES",
+ "LISTEN_FDS",
+ "LISTEN_PID",
+ "MAINPID",
+ "MANAGERPID",
+ "NOTIFY_SOCKET",
+ "NOTIFY_SOCKET",
+ "PIDFILE",
+ "PWD",
+ "REMOTE_ADDR",
+ "REMOTE_PORT",
+ "SERVICE_RESULT",
+ "SHLVL",
+ "TERM",
+ "VTE_VERSION",
+ "WATCHDOG_PID",
+ "WATCHDOG_USEC",
+ "WINDOWID"}) {
+ envv = g_environ_unsetenv(envv, var);
+ }
+
+ for (auto const& prefix : {"GNOME_TERMINAL_",
+
+ // other terminals
+ "FOOT_",
+ "ITERM2_",
+ "MC_",
+ "MINTTY_",
+ "PUTTY_",
+ "RXVT_",
+ "TERM_",
+ "URXVT_",
+ "WEZTERM_",
+ "XTERM_"}) {
+ for (auto i = 0; envv[i]; ++i) {
+ if (!g_str_has_prefix (envv[i], prefix))
+ continue;
+
+ auto const eq = strchr(envv[i], '=');
+ g_assert(eq);
+ auto const var = vte::glib::take_string(g_strndup(envv[i], eq - envv[i]));
+ envv = g_environ_unsetenv(envv, var.get());
+ }
+ }
+
+ return vte::glib::take_strv(envv);
+ }
+
private:
std::vector<vte::libc::FD> m_fds{};
@@ -732,7 +812,7 @@
return rv;
}
-};
+}; // class Options
Options options{}; /* global */
@@ -1684,6 +1764,7 @@
GError** error)
{
auto const spawn_flags = GSpawnFlags(G_SPAWN_SEARCH_PATH_FROM_ENVP |
+ VTE_SPAWN_NO_PARENT_ENVV |
(options.no_systemd_scope ? VTE_SPAWN_NO_SYSTEMD_SCOPE : 0) |
(options.require_systemd_scope ? VTE_SPAWN_REQUIRE_SYSTEMD_SCOPE : 0));
auto fds = options.fds();
@@ -1692,7 +1773,7 @@
VTE_PTY_DEFAULT,
options.working_directory,
argv,
- options.environment,
+ options.environment_for_spawn().get(),
fds.data(), fds.size(),
map_fds.data(), map_fds.size(),
spawn_flags,
@@ -2623,6 +2704,15 @@
window->search_popover = nullptr;
}
+ // Disconnect all signal handlers from the terminal
+ g_signal_handlers_disconnect_matched(window->terminal,
+ GSignalMatchType(G_SIGNAL_MATCH_DATA),
+ 0, // signal id
+ 0, // detail quark
+ nullptr, // closure
+ nullptr, // func
+ window);
+
G_OBJECT_CLASS(vteapp_window_parent_class)->dispose(object);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vte-0.70.0/src/clipboard-gtk.cc new/vte-0.70.1/src/clipboard-gtk.cc
--- old/vte-0.70.0/src/clipboard-gtk.cc 2022-09-03 18:50:59.000000000 +0200
+++ new/vte-0.70.1/src/clipboard-gtk.cc 2022-09-23 20:46:10.000000000 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright �� 2020 Christian Persch
+ * Copyright �� 2020, 2022 Christian Persch
*
* This library is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
@@ -18,6 +18,7 @@
#include "config.h"
#include "clipboard-gtk.hh"
+#include "glib-glue.hh"
#include "gtk-glue.hh"
#include "widget.hh"
#include "vteinternal.hh"
@@ -26,6 +27,9 @@
#include <stdexcept>
#include <utility>
+#define MIME_TYPE_TEXT_PLAIN_UTF8 "text/plain;charset=utf-8"
+#define MIME_TYPE_TEXT_HTML_UTF16 "text/html"
+
namespace vte::platform {
// Note:
@@ -64,9 +68,10 @@
throw std::runtime_error{"Failed to create clipboard"};
}
-#if VTE_GTK == 3
-
class Clipboard::Offer {
+#if VTE_GTK == 4
+ friend class ContentProvider;
+#endif
public:
Offer(Clipboard& clipboard,
OfferGetCallback get_callback,
@@ -82,30 +87,15 @@
auto& clipboard() const noexcept { return *m_clipboard; }
static void run(std::unique_ptr<Offer> offer,
- ClipboardFormat format) noexcept
- {
- auto [targets, n_targets] = targets_for_format(format);
-
- // Transfers ownership of *offer to the clipboard. If setting succeeds,
- // the clipboard will own *offer until the clipboard_data_clear_cb
- // callback is called.
- // If setting the clipboard fails, the clear callback will never be
- // called.
- if (gtk_clipboard_set_with_data(offer->clipboard().platform(),
- targets, n_targets,
- clipboard_get_cb,
- clipboard_clear_cb,
- offer.get())) {
- gtk_clipboard_set_can_store(offer->clipboard().platform(), targets, n_targets);
- offer.release(); // transferred to clipboard above
- }
- }
+ ClipboardFormat format) noexcept;
private:
std::shared_ptr<Clipboard> m_clipboard;
OfferGetCallback m_get_callback;
OfferClearCallback m_clear_callback;
+#if VTE_GTK == 3
+
void dispatch_get(ClipboardFormat format,
GtkSelectionData* data) noexcept
try
@@ -219,6 +209,7 @@
}
}
+#endif /* VTE_GTK == 3 */
static std::pair<vte::glib::StringPtr, size_t>
text_to_utf16_mozilla(std::string_view const& str) noexcept
@@ -237,7 +228,462 @@
}; // class Clipboard::Offer
-#endif /* VTE_GTK == 3 */
+
+#if VTE_GTK == 4
+
+static void* task_tag;
+
+using VteContentProvider = GdkContentProvider;
+
+class ContentProvider {
+public:
+ ContentProvider(VteContentProvider* native)
+ : m_native{native}
+ {
+ }
+
+ ContentProvider() = default;
+ ~ContentProvider() = default;
+
+ ContentProvider(ContentProvider const&) = delete;
+ ContentProvider(ContentProvider&&) = delete;
+
+ ContentProvider& operator=(ContentProvider const&) = delete;
+ ContentProvider& operator=(ContentProvider&&) = delete;
+
+ void take_offer(std::unique_ptr<Clipboard::Offer> offer)
+ {
+ m_offer = std::move(offer);
+ }
+
+ void set_format(ClipboardFormat format)
+ {
+ m_format = format;
+ m_content_formats = format_to_content_formats(format);
+ }
+
+ void content_changed()
+ {
+ }
+
+ void attach_clipboard(GdkClipboard* gdk_clipboard)
+ {
+ }
+
+ void
+ detach_clipboard(GdkClipboard* gdk_clipboard)
+ {
+ if (auto const delegate = m_offer->clipboard().m_delegate.lock()) {
+ (*delegate.*m_offer->m_clear_callback)(m_offer->clipboard());
+ }
+ }
+
+ GdkContentFormats*
+ ref_formats()
+ {
+ return m_content_formats ? gdk_content_formats_ref(m_content_formats.get()) : nullptr;
+ }
+
+ GdkContentFormats*
+ ref_storable_formats()
+ {
+ return format_to_content_formats(ClipboardFormat::TEXT).release();
+ }
+
+ void
+ write_mime_type_async(char const* mime_type,
+ GOutputStream* stream,
+ int io_priority,
+ GCancellable* cancellable,
+ GAsyncReadyCallback callback,
+ void* user_data)
+ {
+ auto task = vte::glib::take_ref(g_task_new(m_native, cancellable, callback, user_data));
+ g_task_set_priority(task.get(), io_priority);
+ g_task_set_source_tag(task.get(), &task_tag);
+ g_task_set_name(task.get(), "vte-content-provider-write-async");
+
+ auto const format = format_from_mime_type(mime_type);
+ if (format == ClipboardFormat::INVALID)
+ return g_task_return_new_error(task.get(), G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
+ "Unknown format");
+
+ if (auto const delegate = m_offer->clipboard().m_delegate.lock()) {
+ auto str = (*delegate.*m_offer->m_get_callback)(m_offer->clipboard(), format);
+ if (!str)
+ return g_task_return_new_error(task.get(), G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
+ "Nothing on offer");
+
+ auto bytes = vte::Freeable<GBytes>{};
+ switch (format_from_mime_type(mime_type)) {
+ case ClipboardFormat::TEXT: {
+ bytes = vte::take_freeable(g_bytes_new_with_free_func(g_strndup(str->data(), str->size()),
+ str->size(),
+ g_free, nullptr));
+ break;
+ }
+
+ case ClipboardFormat::HTML: {
+ auto [html, len] = m_offer->text_to_utf16_mozilla(*str);
+
+ // This makes yet another copy of the data... :(
+ if (html) {
+ bytes = vte::take_freeable(g_bytes_new_with_free_func(html.release(), len, g_free, nullptr));
+ break;
+ } else {
+ return g_task_return_new_error(task.get(), G_IO_ERROR, G_IO_ERROR_INVALID_DATA,
+ "Invalid data");
+ }
+
+ break;
+ }
+ case ClipboardFormat::INVALID:
+ default:
+ break;
+ }
+
+ if (bytes) {
+ auto provider = vte::glib::take_ref(gdk_content_provider_new_for_bytes(mime_type, bytes.release()));
+ return gdk_content_provider_write_mime_type_async(provider.get(),
+ mime_type,
+ stream,
+ io_priority,
+ cancellable,
+ write_mime_type_async_done_cb,
+ task.release()); // transfer
+ }
+ }
+
+ return g_task_return_new_error(task.get(), G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
+ "Offer expired");
+ }
+
+ bool
+ write_mime_type_finish(GAsyncResult* result,
+ GError** error)
+ {
+ auto const task = G_TASK(result);
+ return g_task_propagate_boolean(task, error);
+ }
+
+ bool
+ get_value(GValue* value,
+ GError** error)
+ {
+ if (G_VALUE_HOLDS(value, G_TYPE_STRING)) {
+ if (auto const delegate = m_offer->clipboard().m_delegate.lock()) {
+ auto const str = (*delegate.*m_offer->m_get_callback)(m_offer->clipboard(), ClipboardFormat::TEXT);
+ if (!str)
+ return false;
+
+ g_value_take_string(value, g_strndup(str->data(), str->size()));
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ void
+ offer() noexcept
+ {
+ gdk_clipboard_set_content(m_offer->clipboard().platform(), m_native);
+ }
+
+
+private:
+ VteContentProvider* m_native{nullptr}; /* unowned */
+
+ std::unique_ptr<Clipboard::Offer> m_offer;
+
+ ClipboardFormat m_format{ClipboardFormat::INVALID};
+ vte::Freeable<GdkContentFormats> m_content_formats;
+
+ vte::Freeable<GdkContentFormats>
+ format_to_content_formats(ClipboardFormat format) noexcept
+ {
+ auto builder = vte::take_freeable(gdk_content_formats_builder_new());
+
+ switch (format) {
+ case ClipboardFormat::TEXT:
+ gdk_content_formats_builder_add_mime_type(builder.get(),
+ MIME_TYPE_TEXT_PLAIN_UTF8);
+ break;
+ case ClipboardFormat::HTML:
+ gdk_content_formats_builder_add_mime_type(builder.get(),
+ MIME_TYPE_TEXT_HTML_UTF16);
+ break;
+ case ClipboardFormat::INVALID:
+ default:
+ __builtin_unreachable();
+ }
+
+ return vte::take_freeable(gdk_content_formats_builder_to_formats(builder.release()));
+ }
+
+ ClipboardFormat
+ format_from_mime_type(std::string_view const& mime_type) noexcept
+ {
+ if (mime_type == MIME_TYPE_TEXT_PLAIN_UTF8)
+ return ClipboardFormat::TEXT;
+ else if (mime_type == MIME_TYPE_TEXT_HTML_UTF16)
+ return ClipboardFormat::HTML;
+ else
+ return ClipboardFormat::INVALID;
+ }
+
+ static void
+ write_mime_type_async_done_cb(GObject* source,
+ GAsyncResult* result,
+ void* user_data) noexcept
+ try
+ {
+ auto const provider = GDK_CONTENT_PROVIDER(source);
+ auto const task = vte::glib::take_ref(reinterpret_cast<GTask*>(user_data)); // ref added on ::write_mime_type_async
+
+ auto error = vte::glib::Error{};
+ if (!gdk_content_provider_write_mime_type_finish(provider, result, error)) {
+ return g_task_return_error(task.get(), error.release());
+ }
+
+ return g_task_return_boolean(task.get(), true);
+ }
+ catch (...)
+ {
+ vte::log_exception();
+ }
+
+}; // class ContentProvider
+
+#define VTE_TYPE_CONTENT_PROVIDER (vte_content_provider_get_type())
+#define VTE_CONTENT_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), VTE_TYPE_CONTENT_PROVIDER, VteContentProvider))
+#define VTE_CONTENT_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), VTE_TYPE_CONTENT_PROVIDER, VteContentProviderClass))
+#define VTE_IS_CONTENT_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), VTE_TYPE_CONTENT_PROVIDER))
+#define VTE_IS_CONTENT_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), VTE_TYPE_CONTENT_PROVIDER))
+#define VTE_CONTENT_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), VTE_TYPE_CONTENT_PROVIDER, VteContentProviderClass))
+
+using VteContentProviderClass = GdkContentProviderClass;
+
+static GType vte_content_provider_get_type(void);
+
+G_DEFINE_TYPE_WITH_CODE(VteContentProvider, vte_content_provider, GDK_TYPE_CONTENT_PROVIDER,
+ {
+ VteContentProvider_private_offset =
+ g_type_add_instance_private(g_define_type_id, sizeof(ContentProvider));
+ });
+
+template<typename T>
+static inline auto
+IMPL(T* that)
+{
+ auto const pthat = reinterpret_cast<VteContentProvider*>(that);
+ return std::launder(reinterpret_cast<ContentProvider*>(vte_content_provider_get_instance_private(pthat)));
+}
+
+static void
+vte_content_provider_content_changed(GdkContentProvider* provider) noexcept
+try
+{
+ GDK_CONTENT_PROVIDER_CLASS(vte_content_provider_parent_class)->content_changed(provider);
+
+ IMPL(provider)->content_changed();
+}
+catch (...)
+{
+ vte::log_exception();
+}
+
+static void
+vte_content_provider_attach_clipboard(GdkContentProvider* provider,
+ GdkClipboard* clipboard) noexcept
+try
+{
+ GDK_CONTENT_PROVIDER_CLASS(vte_content_provider_parent_class)->attach_clipboard(provider,
+ clipboard);
+
+ IMPL(provider)->attach_clipboard(clipboard);
+}
+catch (...)
+{
+ vte::log_exception();
+}
+
+static void
+vte_content_provider_detach_clipboard(GdkContentProvider* provider,
+ GdkClipboard* clipboard) noexcept
+try
+{
+ GDK_CONTENT_PROVIDER_CLASS(vte_content_provider_parent_class)->detach_clipboard(provider,
+ clipboard);
+
+ IMPL(provider)->detach_clipboard(clipboard);
+}
+catch (...)
+{
+ vte::log_exception();
+}
+
+static GdkContentFormats*
+vte_content_provider_ref_formats(GdkContentProvider* provider) noexcept
+try
+{
+ return IMPL(provider)->ref_formats();
+}
+catch (...)
+{
+ vte::log_exception();
+ return nullptr;
+}
+
+static GdkContentFormats*
+vte_content_provider_ref_storable_formats(GdkContentProvider* provider) noexcept
+try
+{
+ return IMPL(provider)->ref_storable_formats();
+}
+catch (...)
+{
+ vte::log_exception();
+ return nullptr;
+}
+
+static void
+vte_content_provider_write_mime_type_async(GdkContentProvider* provider,
+ char const* mime_type,
+ GOutputStream* stream,
+ int io_priority,
+ GCancellable* cancellable,
+ GAsyncReadyCallback callback,
+ void* user_data) noexcept
+try
+{
+ return IMPL(provider)->write_mime_type_async(mime_type,
+ stream,
+ io_priority,
+ cancellable,
+ callback, user_data);
+}
+catch (...)
+{
+ vte::log_exception();
+}
+
+static gboolean
+vte_content_provider_write_mime_type_finish(GdkContentProvider* provider,
+ GAsyncResult* result,
+ GError** error) noexcept
+try
+{
+ assert(g_task_is_valid(result, provider));
+ assert(g_task_get_source_tag(G_TASK(result)) == &task_tag);
+
+ return IMPL(provider)->write_mime_type_finish(result, error);
+}
+catch (...)
+{
+ vte::glib::set_error_from_exception(error);
+ return false;
+}
+
+static gboolean
+vte_content_provider_get_value(GdkContentProvider* provider,
+ GValue* value,
+ GError** error) noexcept
+try
+{
+ if (IMPL(provider)->get_value(value, error))
+ return true;
+
+ return GDK_CONTENT_PROVIDER_CLASS(vte_content_provider_parent_class)->get_value(provider,
+ value,
+ error);
+}
+catch (...)
+{
+ vte::glib::set_error_from_exception(error);
+ return false;
+}
+
+static void
+vte_content_provider_init(VteContentProvider* provider)
+try
+{
+ auto place = vte_content_provider_get_instance_private(provider);
+ new (place) ContentProvider{provider};
+}
+catch (...)
+{
+ vte::log_exception();
+ g_error("Failed to create ContentProvider\n");
+}
+
+static void
+vte_content_provider_finalize(GObject* object) noexcept
+{
+ IMPL(object)->~ContentProvider();
+
+ G_OBJECT_CLASS(vte_content_provider_parent_class)->finalize(object);
+}
+
+static void
+vte_content_provider_class_init(VteContentProviderClass *klass)
+{
+ auto gobject_class = G_OBJECT_CLASS(klass);
+ gobject_class->finalize = vte_content_provider_finalize;
+
+ auto provider_class = GDK_CONTENT_PROVIDER_CLASS(klass);
+ provider_class->content_changed = vte_content_provider_content_changed;
+ provider_class->attach_clipboard = vte_content_provider_attach_clipboard;
+ provider_class->detach_clipboard = vte_content_provider_detach_clipboard;
+ provider_class->ref_formats = vte_content_provider_ref_formats;
+ provider_class->ref_storable_formats = vte_content_provider_ref_storable_formats;
+ provider_class->write_mime_type_async = vte_content_provider_write_mime_type_async;
+ provider_class->write_mime_type_finish = vte_content_provider_write_mime_type_finish;
+ provider_class->get_value = vte_content_provider_get_value;
+}
+
+static auto
+vte_content_provider_new(void) noexcept
+{
+ return reinterpret_cast<VteContentProvider*>
+ (g_object_new(VTE_TYPE_CONTENT_PROVIDER, nullptr));
+}
+
+#endif /* VTE_GTK == 4 */
+
+void
+Clipboard::Offer::run(std::unique_ptr<Offer> offer,
+ ClipboardFormat format) noexcept
+{
+#if VTE_GTK == 3
+ auto [targets, n_targets] = targets_for_format(format);
+
+ // Transfers ownership of *offer to the clipboard. If setting succeeds,
+ // the clipboard will own *offer until the clipboard_data_clear_cb
+ // callback is called.
+ // If setting the clipboard fails, the clear callback will never be
+ // called.
+ if (gtk_clipboard_set_with_data(offer->clipboard().platform(),
+ targets, n_targets,
+ clipboard_get_cb,
+ clipboard_clear_cb,
+ offer.get())) {
+ gtk_clipboard_set_can_store(offer->clipboard().platform(), targets, n_targets);
+ offer.release(); // transferred to clipboard above
+ }
+#elif VTE_GTK == 4
+ // It seems that to make the content available lazily (i.e. only
+ // generate it when the clipboard contents are requested), or
+ // receive a notification when said content no longer owns the
+ // clipboard, one has to write a new GdkContentProvider implementation.
+ auto const provider = vte::glib::take_ref(vte_content_provider_new());
+ // Transfers ownership of *offer to the provider.
+ auto const impl = IMPL(provider.get());
+ impl->take_offer(std::move(offer));
+ impl->set_format(format);
+ impl->offer();
+#endif /* VTE_GTK */
+}
class Clipboard::Request {
public:
@@ -256,11 +702,16 @@
static void run(std::unique_ptr<Request> request) noexcept
{
+ auto const platform = request->clipboard().platform();
#if VTE_GTK == 3
- auto platform = request->clipboard().platform();
gtk_clipboard_request_text(platform,
text_received_cb,
request.release());
+#elif VTE_GTK == 4
+ gdk_clipboard_read_text_async(platform,
+ nullptr, // cancellable
+ GAsyncReadyCallback(text_received_cb),
+ request.release());
#endif /* VTE_GTK */
}
@@ -273,7 +724,7 @@
void dispatch(char const *text) noexcept
try
{
- if (auto delegate = clipboard().m_delegate.lock()) {
+ if (auto const delegate = clipboard().m_delegate.lock()) {
if (text)
(*delegate.*m_done_callback)(clipboard(), {text, strlen(text)});
else
@@ -289,10 +740,42 @@
char const* text,
gpointer data) noexcept
{
- auto request = std::unique_ptr<Request>{reinterpret_cast<Request*>(data)};
+ auto const request = std::unique_ptr<Request>{reinterpret_cast<Request*>(data)};
request->dispatch(text);
}
+#elif VTE_GTK == 4
+
+ void dispatch(GObject* source,
+ GAsyncResult* result) noexcept
+ try
+ {
+ // Well done gtk4 to not simply tell us also the length of the received text!
+ auto const text = vte::glib::take_string
+ (gdk_clipboard_read_text_finish(GDK_CLIPBOARD(source),
+ result,
+ nullptr));
+
+ if (auto const delegate = clipboard().m_delegate.lock()) {
+ if (text)
+ (*delegate.*m_done_callback)(clipboard(), {text.get(), strlen(text.get())});
+ else
+ (*delegate.*m_failed_callback)(clipboard());
+ }
+ }
+ catch (...)
+ {
+ vte::log_exception();
+ }
+
+ static void text_received_cb(GObject* source,
+ GAsyncResult* result,
+ gpointer data) noexcept
+ {
+ auto const request = std::unique_ptr<Request>{reinterpret_cast<Request*>(data)};
+ request->dispatch(source, result);
+ }
+
#endif /* VTE_GTK */
}; // class Clipboard::Request
@@ -302,17 +785,19 @@
OfferGetCallback get_callback,
OfferClearCallback clear_callback) /* throws */
{
-#if VTE_GTK == 3
Offer::run(std::make_unique<Offer>(*this, get_callback, clear_callback), format);
-#endif
}
void
-Clipboard::set_text(std::string_view const& text) noexcept
+Clipboard::set_text(char const* text,
+ size_t size) noexcept
{
#if VTE_GTK == 3
- gtk_clipboard_set_text(platform(), text.data(), text.size());
-#endif
+ gtk_clipboard_set_text(platform(), text, size);
+#elif VTE_GTK == 4
+ // This API sucks
+ gdk_clipboard_set_text(platform(), text);
+#endif /* VTE_GTK */
}
void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vte-0.70.0/src/clipboard-gtk.hh new/vte-0.70.1/src/clipboard-gtk.hh
--- old/vte-0.70.0/src/clipboard-gtk.hh 2022-09-03 18:50:59.000000000 +0200
+++ new/vte-0.70.1/src/clipboard-gtk.hh 2022-09-23 20:46:10.000000000 +0200
@@ -31,7 +31,10 @@
enum class ClipboardFormat {
TEXT,
- HTML
+ HTML,
+#if VTE_GTK == 4
+ INVALID = -1
+#endif
};
enum class ClipboardType {
@@ -39,7 +42,14 @@
PRIMARY = 1
};
+#if VTE_GTK == 4
+class ContentProvider;
+#endif
+
class Clipboard : public std::enable_shared_from_this<Clipboard> {
+#if VTE_GTK == 4
+ friend class ContentProvider;
+#endif
public:
Clipboard(Widget& delegate,
ClipboardType type) /* throws */;
@@ -69,7 +79,8 @@
OfferGetCallback get_callback,
OfferClearCallback clear_callback) /* throws */;
- void set_text(std::string_view const& text) noexcept;
+ void set_text(char const* text,
+ size_t size) noexcept;
void request_text(RequestDoneCallback done_callback,
RequestFailedCallback failed_callback) /* throws */;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vte-0.70.0/src/glib-glue.hh new/vte-0.70.1/src/glib-glue.hh
--- old/vte-0.70.0/src/glib-glue.hh 2022-09-03 18:50:59.000000000 +0200
+++ new/vte-0.70.1/src/glib-glue.hh 2022-09-23 20:46:10.000000000 +0200
@@ -278,6 +278,7 @@
namespace vte {
+VTE_DECLARE_FREEABLE(GBytes, g_bytes_unref);
VTE_DECLARE_FREEABLE(GOptionContext, g_option_context_free);
VTE_DECLARE_FREEABLE(GVariant, g_variant_unref);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vte-0.70.0/src/gtk-glue.hh new/vte-0.70.1/src/gtk-glue.hh
--- old/vte-0.70.0/src/gtk-glue.hh 2022-09-03 18:50:59.000000000 +0200
+++ new/vte-0.70.1/src/gtk-glue.hh 2022-09-23 20:46:10.000000000 +0200
@@ -31,6 +31,7 @@
#if VTE_GTK == 4
VTE_DECLARE_FREEABLE(GdkContentFormats, gdk_content_formats_unref);
+VTE_DECLARE_FREEABLE(GdkContentFormatsBuilder, gdk_content_formats_builder_unref);
#endif /* VTE_GTK == 4 */
} // namespace vte
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vte-0.70.0/src/vte.cc new/vte-0.70.1/src/vte.cc
--- old/vte-0.70.0/src/vte.cc 2022-09-03 18:50:59.000000000 +0200
+++ new/vte-0.70.1/src/vte.cc 2022-09-23 20:46:10.000000000 +0200
@@ -4932,15 +4932,6 @@
return true;
}
-#if VTE_GTK == 4
- if (!handled &&
- event.matches(GDK_KEY_Menu, 0)) {
- _vte_debug_print(VTE_DEBUG_EVENTS, "Showing context menu\n");
- // FIXMEgtk4 do context menu
- handled = true;
- }
-#endif
-
return false;
}
@@ -6800,16 +6791,6 @@
break;
}
-#if VTE_GTK == 4
- if (!handled &&
- ((event.button() == vte::platform::MouseEvent::Button::eRIGHT) ||
- !(event.modifiers() & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK)))) {
- _vte_debug_print(VTE_DEBUG_EVENTS, "Showing context menu\n");
- // FIXMEgtk4 context menu
- handled = true;
- }
-#endif /* VTE_GTK == 4 */
-
/* Save the pointer state for later use. */
if (event.button_value() >= 1 && event.button_value() <= 3)
m_mouse_pressed_buttons |= (1 << (event.button_value() - 1));
@@ -7863,8 +7844,8 @@
// FIXMEchpe we should check m_selection_format[sel]
// and also put text/html on if it's HTML format
widget()->clipboard_set_text(sel_type,
- {m_selection[sel]->str,
- m_selection[sel]->len});
+ m_selection[sel]->str,
+ m_selection[sel]->len);
}
g_string_free(m_selection[sel], TRUE);
m_selection[sel] = nullptr;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vte-0.70.0/src/widget.cc new/vte-0.70.1/src/widget.cc
--- old/vte-0.70.0/src/widget.cc 2022-09-03 18:50:59.000000000 +0200
+++ new/vte-0.70.1/src/widget.cc 2022-09-23 20:46:10.000000000 +0200
@@ -628,9 +628,10 @@
void
Widget::clipboard_set_text(ClipboardType type,
- std::string_view const& str) noexcept
+ char const* str,
+ size_t size) noexcept
{
- clipboard_get(type).set_text(str);
+ clipboard_get(type).set_text(str, size);
}
#if VTE_GTK == 4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vte-0.70.0/src/widget.hh new/vte-0.70.1/src/widget.hh
--- old/vte-0.70.0/src/widget.hh 2022-09-03 18:50:59.000000000 +0200
+++ new/vte-0.70.1/src/widget.hh 2022-09-23 20:46:10.000000000 +0200
@@ -383,7 +383,8 @@
ClipboardFormat format) noexcept;
void clipboard_request_text(ClipboardType type) noexcept;
void clipboard_set_text(ClipboardType type,
- std::string_view const& str) noexcept;
+ char const* str,
+ size_t size) noexcept;
void paste_text(std::string_view const& text) { m_terminal->widget_paste(text); }
void paste(vte::platform::ClipboardType type) { clipboard_request_text(type); }
++++++ vte.obsinfo ++++++
--- /var/tmp/diff_new_pack.ayj9Ci/_old 2022-11-01 13:40:38.167279379 +0100
+++ /var/tmp/diff_new_pack.ayj9Ci/_new 2022-11-01 13:40:38.171279400 +0100
@@ -1,5 +1,5 @@
name: vte
-version: 0.70.0
-mtime: 1662223859
-commit: ae4a5d7df9e32ab40ceca5e06240561e819db148
+version: 0.70.1
+mtime: 1663958770
+commit: 5bf476f1d7283bc805ac8ae6abe94f81ffd7be05
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package evince for openSUSE:Factory checked in at 2022-11-01 13:40:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/evince (Old)
and /work/SRC/openSUSE:Factory/.evince.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "evince"
Tue Nov 1 13:40:30 2022 rev:168 rq:1032381 version:43.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/evince/evince.changes 2022-09-21 14:40:41.977466616 +0200
+++ /work/SRC/openSUSE:Factory/.evince.new.2275/evince.changes 2022-11-01 13:40:32.755250588 +0100
@@ -1,0 +2,15 @@
+Thu Oct 27 11:05:07 UTC 2022 - Bj��rn Lie <bjorn.lie(a)gmail.com>
+
+- Update to version 43.1:
+ + build: Disable nautilus extension by default.
+ + comics:
+ - Avoid critical when pixbuf can't be rendered.
+ - Better debug on archive error.
+ - Fix crash that can happen if archive is damaged.
+ - Still try to open broken comics.
+ + shell: Fix use-after-free on a modified document.
+ + Fix incorrect link in README.md.
+ + Use https URL for libarchive.org in README.md.
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
evince-43.0.tar.xz
New:
----
evince-43.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ evince.spec ++++++
--- /var/tmp/diff_new_pack.EyWPav/_old 2022-11-01 13:40:33.375253887 +0100
+++ /var/tmp/diff_new_pack.EyWPav/_new 2022-11-01 13:40:33.383253929 +0100
@@ -20,7 +20,7 @@
%define pluginAPI 4
Name: evince
-Version: 43.0
+Version: 43.1
Release: 0
Summary: GNOME Document Viewer
License: GPL-2.0-or-later
++++++ evince-43.0.tar.xz -> evince-43.1.tar.xz ++++++
++++ 4743 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-importlib-resources for openSUSE:Factory checked in at 2022-11-01 13:40:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-importlib-resources (Old)
and /work/SRC/openSUSE:Factory/.python-importlib-resources.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-importlib-resources"
Tue Nov 1 13:40:28 2022 rev:5 rq:1032378 version:5.10.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-importlib-resources/python-importlib-resources.changes 2022-09-17 20:08:23.792820492 +0200
+++ /work/SRC/openSUSE:Factory/.python-importlib-resources.new.2275/python-importlib-resources.changes 2022-11-01 13:40:29.895235374 +0100
@@ -1,0 +2,10 @@
+Fri Oct 28 17:45:02 UTC 2022 - Yogalakshmi Arunachalam <yarunachalam(a)suse.com>
+
+- Update to v5.10.0
+ * #203: Lifted restriction on modules passed to files. Now modules need not be a package and if a non-package module is passed,
+ resources will be resolved adjacent to those modules, even for modules not found in any package. For example,
+ files(import_module('mod.py')) will resolve resources found at the root. The parameter to files was renamed from 'package' to 'anchor',
+ with a compatibility shim for those passing by keyword.
+ * #259: files no longer requires the anchor to be specified and can infer the anchor from the caller's scope (defaults to the caller's module).
+
+-------------------------------------------------------------------
Old:
----
importlib_resources-5.9.0.tar.gz
New:
----
importlib_resources-5.10.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-importlib-resources.spec ++++++
--- /var/tmp/diff_new_pack.G8SJP5/_old 2022-11-01 13:40:30.675239523 +0100
+++ /var/tmp/diff_new_pack.G8SJP5/_new 2022-11-01 13:40:30.683239565 +0100
@@ -19,7 +19,7 @@
%{?!python_module:%define python3-%{**}}
%define skip_python2 1
Name: python-importlib-resources
-Version: 5.9.0
+Version: 5.10.0
Release: 0
Summary: Read resources from Python packages
License: Apache-2.0
++++++ importlib_resources-5.9.0.tar.gz -> importlib_resources-5.10.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/.coveragerc new/importlib_resources-5.10.0/.coveragerc
--- old/importlib_resources-5.9.0/.coveragerc 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/.coveragerc 2022-10-08 03:09:43.000000000 +0200
@@ -6,6 +6,7 @@
*/_itertools.py
*/_legacy.py
*/simple.py
+ */_path.py
[report]
show_missing = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/.github/workflows/main.yml new/importlib_resources-5.10.0/.github/workflows/main.yml
--- old/importlib_resources-5.9.0/.github/workflows/main.yml 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/.github/workflows/main.yml 2022-10-08 03:09:43.000000000 +0200
@@ -7,22 +7,26 @@
strategy:
matrix:
python:
- # Build on pre-releases until stable, then stable releases.
- # actions/setup-python#213
- - ~3.7.0-0
- - ~3.10.0-0
- - ~3.11.0-0
+ - "3.7"
+ - "3.10"
+ - "3.11"
+ # Workaround for actions/setup-python#508
+ dev:
+ - -dev
platform:
- ubuntu-latest
- macos-latest
- windows-latest
+ include:
+ - python: pypy3.9
+ platform: ubuntu-latest
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
- python-version: ${{ matrix.python }}
+ python-version: ${{ matrix.python }}${{ matrix.dev }}
- name: Install tox
run: |
python -m pip install tox
@@ -70,9 +74,9 @@
steps:
- uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
- python-version: "3.10"
+ python-version: 3.11-dev
- name: Install tox
run: |
python -m pip install tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/.readthedocs.yml new/importlib_resources-5.10.0/.readthedocs.yml
--- old/importlib_resources-5.9.0/.readthedocs.yml 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/.readthedocs.yml 2022-10-08 03:09:43.000000000 +0200
@@ -4,3 +4,10 @@
- path: .
extra_requirements:
- docs
+
+# workaround for readthedocs/readthedocs.org#9623
+build:
+ # workaround for readthedocs/readthedocs.org#9635
+ os: ubuntu-22.04
+ tools:
+ python: "3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/CHANGES.rst new/importlib_resources-5.10.0/CHANGES.rst
--- old/importlib_resources-5.9.0/CHANGES.rst 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/CHANGES.rst 2022-10-08 03:09:43.000000000 +0200
@@ -1,3 +1,19 @@
+v5.10.0
+=======
+
+* #203: Lifted restriction on modules passed to ``files``.
+ Now modules need not be a package and if a non-package
+ module is passed, resources will be resolved adjacent to
+ those modules, even for modules not found in any package.
+ For example, ``files(import_module('mod.py'))`` will
+ resolve resources found at the root. The parameter to
+ files was renamed from 'package' to 'anchor', with a
+ compatibility shim for those passing by keyword.
+
+* #259: ``files`` no longer requires the anchor to be
+ specified and can infer the anchor from the caller's scope
+ (defaults to the caller's module).
+
v5.9.0
======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/PKG-INFO new/importlib_resources-5.10.0/PKG-INFO
--- old/importlib_resources-5.9.0/PKG-INFO 2022-07-22 18:46:53.769731800 +0200
+++ new/importlib_resources-5.10.0/PKG-INFO 2022-10-08 03:10:24.264437700 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: importlib_resources
-Version: 5.9.0
+Version: 5.10.0
Summary: Read resources from Python packages
Home-page: https://github.com/python/importlib_resources
Author: Barry Warsaw
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/docs/conf.py new/importlib_resources-5.10.0/docs/conf.py
--- old/importlib_resources-5.9.0/docs/conf.py 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/docs/conf.py 2022-10-08 03:09:43.000000000 +0200
@@ -1,10 +1,16 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-extensions = ['sphinx.ext.autodoc', 'jaraco.packaging.sphinx', 'rst.linker']
+extensions = [
+ 'sphinx.ext.autodoc',
+ 'jaraco.packaging.sphinx',
+]
master_doc = "index"
+html_theme = "furo"
+# Link dates and other references in the changelog
+extensions += ['rst.linker']
link_files = {
'../CHANGES.rst': dict(
using=dict(GH='https://github.com'),
@@ -29,7 +35,7 @@
),
}
-# Be strict about any broken references:
+# Be strict about any broken references
nitpicky = True
# Include Python intersphinx mapping to prevent failures
@@ -39,4 +45,7 @@
'python': ('https://docs.python.org/3', None),
}
+# Preserve authored syntax for defaults
+autodoc_preserve_defaults = True
+
extensions += ['jaraco.tidelift']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/docs/index.rst new/importlib_resources-5.10.0/docs/index.rst
--- old/importlib_resources-5.9.0/docs/index.rst 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/docs/index.rst 2022-10-08 03:09:43.000000000 +0200
@@ -6,8 +6,8 @@
`Basic Resource Access`_ API, but without all of the overhead and performance
problems of ``pkg_resources``.
-In our terminology, a *resource* is a file tree that is located within an
-importable `Python package`_. Resources can live on the file system or in a
+In our terminology, a *resource* is a file tree that is located alongside an
+importable `Python module`_. Resources can live on the file system or in a
zip file, with support for other loader_ classes that implement the appropriate
API for reading resources.
@@ -43,5 +43,5 @@
.. _`Basic Resource Access`: http://setuptools.readthedocs.io/en/latest/pkg_resources.html#basic-resourc…
-.. _`Python package`: https://docs.python.org/3/reference/import.html#packages
+.. _`Python module`: https://docs.python.org/3/glossary.html#term-module
.. _loader: https://docs.python.org/3/reference/import.html#finders-and-loaders
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/docs/using.rst new/importlib_resources-5.10.0/docs/using.rst
--- old/importlib_resources-5.9.0/docs/using.rst 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/docs/using.rst 2022-10-08 03:09:43.000000000 +0200
@@ -5,11 +5,11 @@
===========================
``importlib_resources`` is a library that leverages Python's import system to
-provide access to *resources* within *packages*. Given that this library is
-built on top of the import system, it is highly efficient and easy to use.
-This library's philosophy is that, if you can import a package, you can access
-resources within that package. Resources can be opened or read, in either
-binary or text mode.
+provide access to *resources* within *packages* and alongside *modules*. Given
+that this library is built on top of the import system, it is highly efficient
+and easy to use. This library's philosophy is that, if one can import a
+module, one can access resources associated with that module. Resources can be
+opened or read, in either binary or text mode.
What exactly do we mean by "a resource"? It's easiest to think about the
metaphor of files and directories on the file system, though it's important to
@@ -23,11 +23,14 @@
one/
__init__.py
resource1.txt
+ module1.py
resources1/
resource1.1.txt
two/
__init__.py
resource2.txt
+ standalone.py
+ resource3.txt
then the directories are ``data``, ``data/one``, and ``data/two``. Each of
these are also Python packages by virtue of the fact that they all contain
@@ -48,11 +51,14 @@
``data/one/resource1.txt`` and ``data/two/resource2.txt`` are both resources,
as are the ``__init__.py`` files in all the directories.
-Resources are always accessed relative to the package that they live in.
-``resource1.txt`` and ``resources1/resource1.1.txt`` are resources within
-the ``data.one`` package, and
-``two/resource2.txt`` is a resource within the
-``data`` package.
+Resources in packages are always accessed relative to the package that they
+live in. ``resource1.txt`` and ``resources1/resource1.1.txt`` are resources
+within the ``data.one`` package, and ``two/resource2.txt`` is a resource
+within the ``data`` package.
+
+Resources may also be referenced relative to another *anchor*, a module in a
+package (``data.one.module1``) or a standalone module (``standalone``). In
+this case, resources are loaded from the same loader that loaded that module.
Example
@@ -103,14 +109,14 @@
eml = files('email.tests.data').joinpath('message.eml').read_text()
-Packages or package names
-=========================
+Anchors
+=======
-All of the ``importlib_resources`` APIs take a *package* as their first
-parameter, but this can either be a package name (as a ``str``) or an actual
-module object, though the module *must* be a package. If a string is
-passed in, it must name an importable Python package, and this is first
-imported. Thus the above example could also be written as::
+The ``importlib_resources`` ``files`` API takes an *anchor* as its first
+parameter, which can either be a package name (as a ``str``) or an actual
+module object. If a string is passed in, it must name an importable Python
+module, which is imported prior to loading any resources. Thus the above
+example could also be written as::
import email.tests.data
eml = files(email.tests.data).joinpath('message.eml').read_text()
@@ -119,18 +125,18 @@
File system or zip file
=======================
-In general you never have to worry whether your package is on the file system
-or in a zip file, as the ``importlib_resources`` APIs hide those details from
-you. Sometimes though, you need a path to an actual file on the file system.
+A consumer need not worry whether any given package is on the file system
+or in a zip file, as the ``importlib_resources`` APIs abstracts those details.
+Sometimes though, the user needs a path to an actual file on the file system.
For example, some SSL APIs require a certificate file to be specified by a
real file system path, and C's ``dlopen()`` function also requires a real file
system path.
-To support this, ``importlib_resources`` provides an API that will extract the
-resource from a zip file to a temporary file, and return the file system path
-to this temporary file as a :py:class:`pathlib.Path` object. In order to
-properly clean up this temporary file, what's actually returned is a context
-manager that you can use in a ``with``-statement::
+To support this need, ``importlib_resources`` provides an API to extract the
+resource from a zip file to a temporary file or folder and return the file
+system path to this materialized resource as a :py:class:`pathlib.Path`
+object. In order to properly clean up this temporary file, what's actually
+returned is a context manager for use in a ``with``-statement::
from importlib_resources import files, as_file
@@ -138,29 +144,7 @@
with as_file(source) as eml:
third_party_api_requiring_file_system_path(eml)
-You can use all the standard :py:mod:`contextlib` APIs to manage this context
-manager.
-
-.. attention::
-
- There is an odd interaction with Python 3.4, 3.5, and 3.6 regarding adding
- zip or wheel file paths to ``sys.path``. Due to limitations in `zipimport
- <https://docs.python.org/3/library/zipimport.html>`_, which can't be
- changed without breaking backward compatibility, you **must** use an
- absolute path to the zip/wheel file. If you use a relative path, you will
- not be able to find resources inside these zip files. E.g.:
-
- **No**::
-
- sys.path.append('relative/path/to/foo.whl')
- files('foo') # This will fail!
-
- **Yes**::
-
- sys.path.append(os.path.abspath('relative/path/to/foo.whl'))
- files('foo')
-
-Both relative and absolute paths work for Python 3.7 and newer.
+Use all the standard :py:mod:`contextlib` APIs to manage this context manager.
Migrating from Legacy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources/__init__.py new/importlib_resources-5.10.0/importlib_resources/__init__.py
--- old/importlib_resources-5.9.0/importlib_resources/__init__.py 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/importlib_resources/__init__.py 2022-10-08 03:09:43.000000000 +0200
@@ -17,7 +17,7 @@
Resource,
)
-from importlib_resources.abc import ResourceReader
+from .abc import ResourceReader
__all__ = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources/_common.py new/importlib_resources-5.10.0/importlib_resources/_common.py
--- old/importlib_resources-5.9.0/importlib_resources/_common.py 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/importlib_resources/_common.py 2022-10-08 03:09:43.000000000 +0200
@@ -5,25 +5,58 @@
import contextlib
import types
import importlib
+import inspect
+import warnings
+import itertools
-from typing import Union, Optional
+from typing import Union, Optional, cast
from .abc import ResourceReader, Traversable
from ._compat import wrap_spec
Package = Union[types.ModuleType, str]
+Anchor = Package
-def files(package):
- # type: (Package) -> Traversable
+def package_to_anchor(func):
"""
- Get a Traversable resource from a package
+ Replace 'package' parameter as 'anchor' and warn about the change.
+
+ Other errors should fall through.
+
+ >>> files('a', 'b')
+ Traceback (most recent call last):
+ TypeError: files() takes from 0 to 1 positional arguments but 2 were given
+ """
+ undefined = object()
+
+ @functools.wraps(func)
+ def wrapper(anchor=undefined, package=undefined):
+ if package is not undefined:
+ if anchor is not undefined:
+ return func(anchor, package)
+ warnings.warn(
+ "First parameter to files is renamed to 'anchor'",
+ DeprecationWarning,
+ stacklevel=2,
+ )
+ return func(package)
+ elif anchor is undefined:
+ return func()
+ return func(anchor)
+
+ return wrapper
+
+
+@package_to_anchor
+def files(anchor: Optional[Anchor] = None) -> Traversable:
+ """
+ Get a Traversable resource for an anchor.
"""
- return from_package(get_package(package))
+ return from_package(resolve(anchor))
-def get_resource_reader(package):
- # type: (types.ModuleType) -> Optional[ResourceReader]
+def get_resource_reader(package: types.ModuleType) -> Optional[ResourceReader]:
"""
Return the package's loader if it's a ResourceReader.
"""
@@ -39,24 +72,39 @@
return reader(spec.name) # type: ignore
-def resolve(cand):
- # type: (Package) -> types.ModuleType
- return cand if isinstance(cand, types.ModuleType) else importlib.import_module(cand)
+(a)functools.singledispatch
+def resolve(cand: Optional[Anchor]) -> types.ModuleType:
+ return cast(types.ModuleType, cand)
-def get_package(package):
- # type: (Package) -> types.ModuleType
- """Take a package name or module object and return the module.
+(a)resolve.register
+def _(cand: str) -> types.ModuleType:
+ return importlib.import_module(cand)
- Raise an exception if the resolved module is not a package.
+
+(a)resolve.register
+def _(cand: None) -> types.ModuleType:
+ return resolve(_infer_caller().f_globals['__name__'])
+
+
+def _infer_caller():
+ """
+ Walk the stack and find the frame of the first caller not in this module.
"""
- resolved = resolve(package)
- if wrap_spec(resolved).submodule_search_locations is None:
- raise TypeError(f'{package!r} is not a package')
- return resolved
+
+ def is_this_file(frame_info):
+ return frame_info.filename == __file__
+
+ def is_wrapper(frame_info):
+ return frame_info.function == 'wrapper'
+
+ not_this_file = itertools.filterfalse(is_this_file, inspect.stack())
+ # also exclude 'wrapper' due to singledispatch in the call stack
+ callers = itertools.filterfalse(is_wrapper, not_this_file)
+ return next(callers).frame
-def from_package(package):
+def from_package(package: types.ModuleType):
"""
Return a Traversable object for the given package.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources/_legacy.py new/importlib_resources-5.10.0/importlib_resources/_legacy.py
--- old/importlib_resources-5.9.0/importlib_resources/_legacy.py 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/importlib_resources/_legacy.py 2022-10-08 03:09:43.000000000 +0200
@@ -27,8 +27,7 @@
return wrapper
-def normalize_path(path):
- # type: (Any) -> str
+def normalize_path(path: Any) -> str:
"""Normalize a path by ensuring it is a string.
If the resulting string contains path separators, an exception is raised.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources/abc.py new/importlib_resources-5.10.0/importlib_resources/abc.py
--- old/importlib_resources-5.9.0/importlib_resources/abc.py 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/importlib_resources/abc.py 2022-10-08 03:09:43.000000000 +0200
@@ -139,7 +139,8 @@
accepted by io.TextIOWrapper.
"""
- @abc.abstractproperty
+ @property
+ @abc.abstractmethod
def name(self) -> str:
"""
The base name of this object without any parent references.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources/simple.py new/importlib_resources-5.10.0/importlib_resources/simple.py
--- old/importlib_resources-5.9.0/importlib_resources/simple.py 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/importlib_resources/simple.py 2022-10-08 03:09:43.000000000 +0200
@@ -16,31 +16,28 @@
provider.
"""
- @abc.abstractproperty
- def package(self):
- # type: () -> str
+ @property
+ @abc.abstractmethod
+ def package(self) -> str:
"""
The name of the package for which this reader loads resources.
"""
@abc.abstractmethod
- def children(self):
- # type: () -> List['SimpleReader']
+ def children(self) -> List['SimpleReader']:
"""
Obtain an iterable of SimpleReader for available
child containers (e.g. directories).
"""
@abc.abstractmethod
- def resources(self):
- # type: () -> List[str]
+ def resources(self) -> List[str]:
"""
Obtain available named resources for this virtual package.
"""
@abc.abstractmethod
- def open_binary(self, resource):
- # type: (str) -> BinaryIO
+ def open_binary(self, resource: str) -> BinaryIO:
"""
Obtain a File-like for a named resource.
"""
@@ -50,13 +47,35 @@
return self.package.split('.')[-1]
+class ResourceContainer(Traversable):
+ """
+ Traversable container for a package's resources via its reader.
+ """
+
+ def __init__(self, reader: SimpleReader):
+ self.reader = reader
+
+ def is_dir(self):
+ return True
+
+ def is_file(self):
+ return False
+
+ def iterdir(self):
+ files = (ResourceHandle(self, name) for name in self.reader.resources)
+ dirs = map(ResourceContainer, self.reader.children())
+ return itertools.chain(files, dirs)
+
+ def open(self, *args, **kwargs):
+ raise IsADirectoryError()
+
+
class ResourceHandle(Traversable):
"""
Handle to a named resource in a ResourceReader.
"""
- def __init__(self, parent, name):
- # type: (ResourceContainer, str) -> None
+ def __init__(self, parent: ResourceContainer, name: str):
self.parent = parent
self.name = name # type: ignore
@@ -76,30 +95,6 @@
raise RuntimeError("Cannot traverse into a resource")
-class ResourceContainer(Traversable):
- """
- Traversable container for a package's resources via its reader.
- """
-
- def __init__(self, reader):
- # type: (SimpleReader) -> None
- self.reader = reader
-
- def is_dir(self):
- return True
-
- def is_file(self):
- return False
-
- def iterdir(self):
- files = (ResourceHandle(self, name) for name in self.reader.resources)
- dirs = map(ResourceContainer, self.reader.children())
- return itertools.chain(files, dirs)
-
- def open(self, *args, **kwargs):
- raise IsADirectoryError()
-
-
class TraversableReader(TraversableResources, SimpleReader):
"""
A TraversableResources based on SimpleReader. Resource providers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources/tests/_compat.py new/importlib_resources-5.10.0/importlib_resources/tests/_compat.py
--- old/importlib_resources-5.9.0/importlib_resources/tests/_compat.py 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/importlib_resources/tests/_compat.py 2022-10-08 03:09:43.000000000 +0200
@@ -6,7 +6,20 @@
except ImportError:
# Python 3.9 and earlier
class import_helper: # type: ignore
- from test.support import modules_setup, modules_cleanup
+ from test.support import (
+ modules_setup,
+ modules_cleanup,
+ DirsOnSysPath,
+ CleanImport,
+ )
+
+
+try:
+ from test.support import os_helper # type: ignore
+except ImportError:
+ # Python 3.9 compat
+ class os_helper: # type:ignore
+ from test.support import temp_dir
try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources/tests/_path.py new/importlib_resources-5.10.0/importlib_resources/tests/_path.py
--- old/importlib_resources-5.9.0/importlib_resources/tests/_path.py 1970-01-01 01:00:00.000000000 +0100
+++ new/importlib_resources-5.10.0/importlib_resources/tests/_path.py 2022-10-08 03:09:43.000000000 +0200
@@ -0,0 +1,50 @@
+import pathlib
+import functools
+
+
+####
+# from jaraco.path 3.4
+
+
+def build(spec, prefix=pathlib.Path()):
+ """
+ Build a set of files/directories, as described by the spec.
+
+ Each key represents a pathname, and the value represents
+ the content. Content may be a nested directory.
+
+ >>> spec = {
+ ... 'README.txt': "A README file",
+ ... "foo": {
+ ... "__init__.py": "",
+ ... "bar": {
+ ... "__init__.py": "",
+ ... },
+ ... "baz.py": "# Some code",
+ ... }
+ ... }
+ >>> tmpdir = getfixture('tmpdir')
+ >>> build(spec, tmpdir)
+ """
+ for name, contents in spec.items():
+ create(contents, pathlib.Path(prefix) / name)
+
+
+(a)functools.singledispatch
+def create(content, path):
+ path.mkdir(exist_ok=True)
+ build(content, prefix=path) # type: ignore
+
+
+(a)create.register
+def _(content: bytes, path):
+ path.write_bytes(content)
+
+
+(a)create.register
+def _(content: str, path):
+ path.write_text(content)
+
+
+# end from jaraco.path
+####
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources/tests/test_files.py new/importlib_resources-5.10.0/importlib_resources/tests/test_files.py
--- old/importlib_resources-5.9.0/importlib_resources/tests/test_files.py 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/importlib_resources/tests/test_files.py 2022-10-08 03:09:43.000000000 +0200
@@ -1,10 +1,23 @@
import typing
+import textwrap
import unittest
+import warnings
+import importlib
+import contextlib
import importlib_resources as resources
-from importlib_resources.abc import Traversable
+from ..abc import Traversable
from . import data01
from . import util
+from . import _path
+from ._compat import os_helper, import_helper
+
+
+(a)contextlib.contextmanager
+def suppress_known_deprecation():
+ with warnings.catch_warnings(record=True) as ctx:
+ warnings.simplefilter('default', category=DeprecationWarning)
+ yield ctx
class FilesTests:
@@ -25,6 +38,14 @@
def test_traversable(self):
assert isinstance(resources.files(self.data), Traversable)
+ def test_old_parameter(self):
+ """
+ Files used to take a 'package' parameter. Make sure anyone
+ passing by name is still supported.
+ """
+ with suppress_known_deprecation():
+ resources.files(package=self.data)
+
class OpenDiskTests(FilesTests, unittest.TestCase):
def setUp(self):
@@ -42,5 +63,50 @@
self.data = namespacedata01
+class SiteDir:
+ def setUp(self):
+ self.fixtures = contextlib.ExitStack()
+ self.addCleanup(self.fixtures.close)
+ self.site_dir = self.fixtures.enter_context(os_helper.temp_dir())
+ self.fixtures.enter_context(import_helper.DirsOnSysPath(self.site_dir))
+ self.fixtures.enter_context(import_helper.CleanImport())
+
+
+class ModulesFilesTests(SiteDir, unittest.TestCase):
+ def test_module_resources(self):
+ """
+ A module can have resources found adjacent to the module.
+ """
+ spec = {
+ 'mod.py': '',
+ 'res.txt': 'resources are the best',
+ }
+ _path.build(spec, self.site_dir)
+ import mod
+
+ actual = resources.files(mod).joinpath('res.txt').read_text()
+ assert actual == spec['res.txt']
+
+
+class ImplicitContextFilesTests(SiteDir, unittest.TestCase):
+ def test_implicit_files(self):
+ """
+ Without any parameter, files() will infer the location as the caller.
+ """
+ spec = {
+ 'somepkg': {
+ '__init__.py': textwrap.dedent(
+ """
+ import importlib_resources as res
+ val = res.files().joinpath('res.txt').read_text()
+ """
+ ),
+ 'res.txt': 'resources are the best',
+ },
+ }
+ _path.build(spec, self.site_dir)
+ assert importlib.import_module('somepkg').val == 'resources are the best'
+
+
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources/tests/util.py new/importlib_resources-5.10.0/importlib_resources/tests/util.py
--- old/importlib_resources-5.9.0/importlib_resources/tests/util.py 2022-07-22 18:46:22.000000000 +0200
+++ new/importlib_resources-5.10.0/importlib_resources/tests/util.py 2022-10-08 03:09:43.000000000 +0200
@@ -3,7 +3,7 @@
import io
import sys
import types
-from pathlib import Path, PurePath
+import pathlib
from . import data01
from . import zipdata01
@@ -94,7 +94,7 @@
def test_pathlib_path(self):
# Passing in a pathlib.PurePath object for the path should succeed.
- path = PurePath('utf-8.file')
+ path = pathlib.PurePath('utf-8.file')
self.execute(data01, path)
def test_importing_module_as_side_effect(self):
@@ -102,17 +102,6 @@
del sys.modules[data01.__name__]
self.execute(data01.__name__, 'utf-8.file')
- def test_non_package_by_name(self):
- # The anchor package cannot be a module.
- with self.assertRaises(TypeError):
- self.execute(__name__, 'utf-8.file')
-
- def test_non_package_by_package(self):
- # The anchor package cannot be a module.
- with self.assertRaises(TypeError):
- module = sys.modules['importlib_resources.tests.util']
- self.execute(module, 'utf-8.file')
-
def test_missing_path(self):
# Attempting to open or read or request the path for a
# non-existent path should succeed if open_resource
@@ -144,7 +133,7 @@
@classmethod
def setUpClass(cls):
- data_path = Path(cls.ZIP_MODULE.__file__)
+ data_path = pathlib.Path(cls.ZIP_MODULE.__file__)
data_dir = data_path.parent
cls._zip_path = str(data_dir / 'ziptestdata.zip')
sys.path.append(cls._zip_path)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources.egg-info/PKG-INFO new/importlib_resources-5.10.0/importlib_resources.egg-info/PKG-INFO
--- old/importlib_resources-5.9.0/importlib_resources.egg-info/PKG-INFO 2022-07-22 18:46:53.000000000 +0200
+++ new/importlib_resources-5.10.0/importlib_resources.egg-info/PKG-INFO 2022-10-08 03:10:24.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: importlib-resources
-Version: 5.9.0
+Version: 5.10.0
Summary: Read resources from Python packages
Home-page: https://github.com/python/importlib_resources
Author: Barry Warsaw
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources.egg-info/SOURCES.txt new/importlib_resources-5.10.0/importlib_resources.egg-info/SOURCES.txt
--- old/importlib_resources-5.9.0/importlib_resources.egg-info/SOURCES.txt 2022-07-22 18:46:53.000000000 +0200
+++ new/importlib_resources-5.10.0/importlib_resources.egg-info/SOURCES.txt 2022-10-08 03:10:24.000000000 +0200
@@ -39,6 +39,7 @@
importlib_resources.egg-info/top_level.txt
importlib_resources/tests/__init__.py
importlib_resources/tests/_compat.py
+importlib_resources/tests/_path.py
importlib_resources/tests/test_compatibilty_files.py
importlib_resources/tests/test_contents.py
importlib_resources/tests/test_files.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/importlib_resources.egg-info/requires.txt new/importlib_resources-5.10.0/importlib_resources.egg-info/requires.txt
--- old/importlib_resources-5.9.0/importlib_resources.egg-info/requires.txt 2022-07-22 18:46:53.000000000 +0200
+++ new/importlib_resources-5.10.0/importlib_resources.egg-info/requires.txt 2022-10-08 03:10:24.000000000 +0200
@@ -3,15 +3,17 @@
zipp>=3.1.0
[docs]
-sphinx
+sphinx>=3.5
jaraco.packaging>=9
rst.linker>=1.9
+furo
jaraco.tidelift>=1.4
[testing]
pytest>=6
pytest-checkdocs>=2.4
pytest-flake8
+flake8<5
pytest-cov
pytest-enabler>=1.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_resources-5.9.0/setup.cfg new/importlib_resources-5.10.0/setup.cfg
--- old/importlib_resources-5.9.0/setup.cfg 2022-07-22 18:46:53.769731800 +0200
+++ new/importlib_resources-5.10.0/setup.cfg 2022-10-08 03:10:24.264437700 +0200
@@ -33,6 +33,7 @@
pytest >= 6
pytest-checkdocs >= 2.4
pytest-flake8
+ flake8 < 5
pytest-black >= 0.3.7; \
python_implementation != "PyPy"
pytest-cov
@@ -40,9 +41,10 @@
python_implementation != "PyPy"
pytest-enabler >= 1.3
docs =
- sphinx
+ sphinx >= 3.5
jaraco.packaging >= 9
rst.linker >= 1.9
+ furo
jaraco.tidelift >= 1.4
[egg_info]
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-keyring for openSUSE:Factory checked in at 2022-11-01 13:40:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-keyring (Old)
and /work/SRC/openSUSE:Factory/.python-keyring.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-keyring"
Tue Nov 1 13:40:26 2022 rev:51 rq:1032377 version:23.9.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-keyring/python-keyring.changes 2022-10-12 18:25:28.493781902 +0200
+++ /work/SRC/openSUSE:Factory/.python-keyring.new.2275/python-keyring.changes 2022-11-01 13:40:27.871224608 +0100
@@ -1,0 +2,8 @@
+Sun Oct 30 11:35:42 UTC 2022 - Ben Greiner <code(a)bnavigator.de>
+
+- Drop support-new-importlib.patch
+ * "New" importlib 5.0 dropped deprecated indexing support
+ gh#python/importlib_metadata#405
+ * See also gh#jaraco/keyring#526
+
+-------------------------------------------------------------------
Old:
----
support-new-importlib.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-keyring.spec ++++++
--- /var/tmp/diff_new_pack.CxEF5d/_old 2022-11-01 13:40:28.411227480 +0100
+++ /var/tmp/diff_new_pack.CxEF5d/_new 2022-11-01 13:40:28.415227501 +0100
@@ -31,7 +31,6 @@
License: MIT AND Python-2.0
URL: https://github.com/jaraco/keyring
Source: https://files.pythonhosted.org/packages/source/k/keyring/keyring-%{version}…
-Patch0: support-new-importlib.patch
BuildRequires: %{python_module base >= 3.7}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools >= 56}
@@ -78,6 +77,8 @@
%if %{with test}
%check
+# https://github.com/jaraco/keyring/issues/526
+rm -r keyring.egg-info
%pytest
%endif
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libavif for openSUSE:Factory checked in at 2022-11-01 13:40:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libavif (Old)
and /work/SRC/openSUSE:Factory/.libavif.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libavif"
Tue Nov 1 13:40:23 2022 rev:18 rq:1032374 version:0.11.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/libavif/libavif.changes 2022-10-20 11:09:26.755744272 +0200
+++ /work/SRC/openSUSE:Factory/.libavif.new.2275/libavif.changes 2022-11-01 13:40:25.763213393 +0100
@@ -1,0 +2,7 @@
+Thu Oct 27 19:02:16 UTC 2022 - Cristian Rodr��guez <crrodriguez(a)opensuse.org>
+
+- Remove unused BuildRequires on nasm
+- Remove indirect/incorrect Buildrequires on zlib
+- add direct glib Buildrequires
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libavif.spec ++++++
--- /var/tmp/diff_new_pack.kJZfrl/_old 2022-11-01 13:40:26.287216182 +0100
+++ /var/tmp/diff_new_pack.kJZfrl/_new 2022-11-01 13:40:26.291216202 +0100
@@ -42,12 +42,12 @@
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: libjpeg8-devel
-BuildRequires: nasm
BuildRequires: pkgconfig(dav1d)
BuildRequires: pkgconfig(gdk-pixbuf-2.0)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(rav1e) >= 0.5.0
-BuildRequires: pkgconfig(zlib)
%if %{with aom}
BuildRequires: pkgconfig(aom) >= 2.0.0
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package yast2-trans for openSUSE:Factory checked in at 2022-11-01 13:40:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-trans (Old)
and /work/SRC/openSUSE:Factory/.yast2-trans.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-trans"
Tue Nov 1 13:40:21 2022 rev:275 rq:1032351 version:84.87.20221029.429a275094
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-trans/yast2-trans.changes 2022-10-25 11:18:38.317954618 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-trans.new.2275/yast2-trans.changes 2022-11-01 13:40:23.967203840 +0100
@@ -1,0 +2,15 @@
+Mon Oct 31 05:13:32 UTC 2022 - git(a)opensuse.org
+
+- Update to version 84.87.20221029.429a275094:
+ * Translated using Weblate (Macedonian)
+ * New POT for text domain 'packager'.
+ * New POT for text domain 'firstboot'.
+ * Translated using Weblate (Macedonian)
+ * Translated using Weblate (Macedonian)
+ * Translated using Weblate (Macedonian)
+ * Translated using Weblate (Macedonian)
+ * New POT for text domain 'registration'.
+ * New POT for text domain 'base'.
+ * New POT for text domain 'add-on'.
+
+-------------------------------------------------------------------
Old:
----
yast2-trans-84.87.20221023.365770fb5e.tar.xz
New:
----
yast2-trans-84.87.20221029.429a275094.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-trans.spec ++++++
--- /var/tmp/diff_new_pack.0KxyoZ/_old 2022-11-01 13:40:24.707207775 +0100
+++ /var/tmp/diff_new_pack.0KxyoZ/_new 2022-11-01 13:40:24.711207797 +0100
@@ -17,7 +17,7 @@
Name: yast2-trans
-Version: 84.87.20221023.365770fb5e
+Version: 84.87.20221029.429a275094
Release: 0
Summary: YaST2 - Translation Container Package
License: GPL-2.0-or-later
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.0KxyoZ/_old 2022-11-01 13:40:24.767208095 +0100
+++ /var/tmp/diff_new_pack.0KxyoZ/_new 2022-11-01 13:40:24.771208116 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/yast/yast-translations.git</param>
- <param name="changesrevision">365770fb5e9547d74126da5313a5afb161d3d2f0</param></service></servicedata>
+ <param name="changesrevision">429a275094126cf2ee42acf3a356751a09bd115d</param></service></servicedata>
(No newline at EOF)
++++++ yast2-trans-84.87.20221023.365770fb5e.tar.xz -> yast2-trans-84.87.20221029.429a275094.tar.xz ++++++
/work/SRC/openSUSE:Factory/yast2-trans/yast2-trans-84.87.20221023.365770fb5e.tar.xz /work/SRC/openSUSE:Factory/.yast2-trans.new.2275/yast2-trans-84.87.20221029.429a275094.tar.xz differ: char 27, line 1
1
0