openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- 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
August 2022
- 1 participants
- 2549 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package xen for openSUSE:Factory checked in at 2022-08-30 14:48:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xen (Old)
and /work/SRC/openSUSE:Factory/.xen.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xen"
Tue Aug 30 14:48:41 2022 rev:321 rq:1000083 version:4.16.2_04
Changes:
--------
--- /work/SRC/openSUSE:Factory/xen/xen.changes 2022-08-24 15:10:20.520438132 +0200
+++ /work/SRC/openSUSE:Factory/.xen.new.2083/xen.changes 2022-08-30 14:48:53.788031084 +0200
@@ -1,0 +2,12 @@
+Mon Aug 29 10:24:31 MDT 2022 - carnold(a)suse.com
+
+- bsc#1201994 - Xen DomU unable to emulate audio device
+ 62fde97e-tools-libxl-Replace-deprecated-soundhw-on-QEMU-command-line.patch
+
+-------------------------------------------------------------------
+Tue Aug 23 08:52:05 MDT 2022 - carnold(a)suse.com
+
+- Things are compiling fine now with gcc12.
+ Drop gcc12-fixes.patch
+
+-------------------------------------------------------------------
Old:
----
gcc12-fixes.patch
New:
----
62fde97e-tools-libxl-Replace-deprecated-soundhw-on-QEMU-command-line.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.nuVQB4/_old 2022-08-30 14:48:55.300034942 +0200
+++ /var/tmp/diff_new_pack.nuVQB4/_new 2022-08-30 14:48:55.304034953 +0200
@@ -119,7 +119,7 @@
%endif
Provides: installhint(reboot-needed)
-Version: 4.16.2_02
+Version: 4.16.2_04
Release: 0
Summary: Xen Virtualization: Hypervisor (aka VMM aka Microkernel)
License: GPL-2.0-only
@@ -155,6 +155,7 @@
# For xen-libs
Source99: baselibs.conf
# Upstream patches
+Patch1: 62fde97e-tools-libxl-Replace-deprecated-soundhw-on-QEMU-command-line.patch
# EMBARGOED security fixes
# libxc
Patch301: libxc-bitmap-long.patch
@@ -228,7 +229,6 @@
Patch621: xen.build-compare.doc_html.patch
# Build patches
Patch99996: xen.stubdom.newlib.patch
-Patch99997: gcc12-fixes.patch
URL: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%define pyver %(python3 -c "import sys; print(sys.version.rpartition('.')[0])")
++++++ 62fde97e-tools-libxl-Replace-deprecated-soundhw-on-QEMU-command-line.patch ++++++
Subject: tools/libxl: Replace deprecated -soundhw on QEMU command line
From: Anthony PERARD anthony.perard(a)citrix.com Thu Aug 18 09:25:50 2022 +0200
Date: Thu Aug 18 09:25:50 2022 +0200:
Git: 62ca138c2c052187783aca3957d3f47c4dcfd683
-soundhw is deprecated since 825ff02911c9 ("audio: add soundhw
deprecation notice"), QEMU v5.1, and is been remove for upcoming v7.1
by 039a68373c45 ("introduce -audio as a replacement for -soundhw").
Instead we can just add the sound card with "-device", for most option
that "-soundhw" could handle. "-device" is an option that existed
before QEMU 1.0, and could already be used to add audio hardware.
The list of possible option for libxl's "soundhw" is taken the list
from QEMU 7.0.
The list of options for "soundhw" are listed in order of preference in
the manual. The first three (hda, ac97, es1370) are PCI devices and
easy to test on Linux, and the last four are ISA devices which doesn't
seems to work out of the box on linux.
The sound card 'pcspk' isn't listed even if it used to be accepted by
'-soundhw' because QEMU crash when trying to add it to a Xen domain.
Also, it wouldn't work with "-device" might need to be "-machine
pcspk-audiodev=default" instead.
Signed-off-by: Anthony PERARD <anthony.perard(a)citrix.com>
Reviewed-by: Jason Andryuk <jandryuk(a)gmail.com>
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -2540,9 +2540,9 @@ The form serial=DEVICE is also accepted
=item B<soundhw="DEVICE">
-Select the virtual sound card to expose to the guest. The valid
-devices are defined by the device model configuration, please see the
-B<qemu(1)> manpage for details. The default is not to export any sound
+Select the virtual sound card to expose to the guest. The valid devices are
+B<hda>, B<ac97>, B<es1370>, B<adlib>, B<cs4231a>, B<gus>, B<sb16> if there are
+available with the device model QEMU. The default is not to export any sound
device.
=item B<vkb_device=BOOLEAN>
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -1204,6 +1204,7 @@ static int libxl__build_device_model_arg
uint64_t ram_size;
const char *path, *chardev;
bool is_stubdom = libxl_defbool_val(b_info->device_model_stubdomain);
+ int rc;
dm_args = flexarray_make(gc, 16, 1);
dm_envs = flexarray_make(gc, 16, 1);
@@ -1531,7 +1532,23 @@ static int libxl__build_device_model_arg
}
}
if (b_info->u.hvm.soundhw) {
- flexarray_vappend(dm_args, "-soundhw", b_info->u.hvm.soundhw, NULL);
+ libxl__qemu_soundhw soundhw;
+
+ rc = libxl__qemu_soundhw_from_string(b_info->u.hvm.soundhw, &soundhw);
+ if (rc) {
+ LOGD(ERROR, guest_domid, "Unknown soundhw option '%s'", b_info->u.hvm.soundhw);
+ return ERROR_INVAL;
+ }
+
+ switch (soundhw) {
+ case LIBXL__QEMU_SOUNDHW_HDA:
+ flexarray_vappend(dm_args, "-device", "intel-hda",
+ "-device", "hda-duplex", NULL);
+ break;
+ default:
+ flexarray_append_pair(dm_args, "-device",
+ (char*)libxl__qemu_soundhw_to_string(soundhw));
+ }
}
if (!libxl__acpi_defbool_val(b_info)) {
flexarray_append(dm_args, "-no-acpi");
--- a/tools/libs/light/libxl_types_internal.idl
+++ b/tools/libs/light/libxl_types_internal.idl
@@ -55,3 +55,13 @@ libxl__device_action = Enumeration("devi
(1, "ADD"),
(2, "REMOVE"),
])
+
+libxl__qemu_soundhw = Enumeration("qemu_soundhw", [
+ (1, "ac97"),
+ (2, "adlib"),
+ (3, "cs4231a"),
+ (4, "es1370"),
+ (5, "gus"),
+ (6, "hda"),
+ (7, "sb16"),
+ ])
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package lttng-ust for openSUSE:Factory checked in at 2022-08-30 14:48:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lttng-ust (Old)
and /work/SRC/openSUSE:Factory/.lttng-ust.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lttng-ust"
Tue Aug 30 14:48:40 2022 rev:12 rq:1000074 version:2.13.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/lttng-ust/lttng-ust.changes 2022-08-22 11:04:46.641654911 +0200
+++ /work/SRC/openSUSE:Factory/.lttng-ust.new.2083/lttng-ust.changes 2022-08-30 14:48:51.168024399 +0200
@@ -1,0 +2,8 @@
+Mon Aug 29 10:24:41 UTC 2022 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 2.13.4
+ * Added missing closedir in _get_max_cpuid_from_sysfs()
+ * File descriptor was leaked in get_possible_cpu_mask_from_sysfs
+ * sessiond wait futex: handle spurious futex wakeups
+
+-------------------------------------------------------------------
Old:
----
lttng-ust-2.13.3.tar.bz2
lttng-ust-2.13.3.tar.bz2.asc
New:
----
lttng-ust-2.13.4.tar.bz2
lttng-ust-2.13.4.tar.bz2.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ lttng-ust.spec ++++++
--- /var/tmp/diff_new_pack.ME6HzL/_old 2022-08-30 14:48:51.764025920 +0200
+++ /var/tmp/diff_new_pack.ME6HzL/_new 2022-08-30 14:48:51.768025930 +0200
@@ -19,7 +19,7 @@
%define sover 1
%define sover_ctl 5
Name: lttng-ust
-Version: 2.13.3
+Version: 2.13.4
Release: 0
Summary: Linux Trace Toolkit Userspace Tracer library
License: GPL-2.0-only
@@ -75,7 +75,7 @@
This package provides the LLTng-UST Python 3 agent.
-%package -n %{name}-devel
+%package devel
Summary: Linux Trace Toolkit Userspace Tracer library
Group: Development/Languages/C and C++
Requires: liblttng-ust%{sover} = %{version}
@@ -86,11 +86,11 @@
Provides: %{name} = %{version}
Obsoletes: %{name} < %{version}
-%description -n %{name}-devel
+%description devel
This library provides support for developing programs using LTTng
userspace tracing.
-%package -n %{name}-doc
+%package doc
Summary: Linux Trace Toolkit Userspace Tracer Documentation
Group: Documentation/Other
Requires: liblttng-ust%{sover} = %{version}
@@ -99,6 +99,7 @@
# lttng-ust-docs was last used in openSUSE Leap 42.3.
Provides: %{name}-docs = %{version}
Obsoletes: %{name}-docs < %{version}
+BuildArch: noarch
%description -n %{name}-doc
This package includes documentation and examples for developing
@@ -158,14 +159,14 @@
%{python3_sitelib}/lttngust/
%{python3_sitelib}/lttngust-*
-%files -n %{name}-devel
+%files devel
%{_includedir}/lttng/
%{_bindir}/lttng-gen-tp
%{_mandir}/man1/lttng-gen-tp.1%{?ext_man}
%{_libdir}/liblttng-ust*.so
%{_libdir}/pkgconfig/lttng-ust*.pc
-%files -n %{name}-doc
+%files doc
%doc %{_docdir}/%{name}/
%{_mandir}/man3/lttng-ust.3%{?ext_man}
%{_mandir}/man3/lttng-ust-cyg-profile.3%{?ext_man}
++++++ lttng-ust-2.13.3.tar.bz2 -> lttng-ust-2.13.4.tar.bz2 ++++++
++++ 2246 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/ChangeLog new/lttng-ust-2.13.4/ChangeLog
--- old/lttng-ust-2.13.3/ChangeLog 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/ChangeLog 2022-08-19 22:23:41.000000000 +0200
@@ -1,3 +1,19 @@
+2022-08-19 (National Popato Day) lttng-ust 2.13.4
+ * cleanup: remove stale comment
+ * Fix: disable array/sequence compile-time type check in C
+ * fix: add missing closedir in _get_max_cpuid_from_sysfs()
+ * Add more unit tests for possible_cpus_array_len
+ * Clarify terminology around cpu ids and array length
+ * fix: Unify possible CPU number fallback
+ * fix: removed accidental VLA in _get_num_possible_cpus()
+ * Fix: file descriptor leak in get_possible_cpu_mask_from_sysfs
+ * Add unit tests for num possible cpus
+ * fix: num_possible_cpus() with hot-unplugged CPUs
+ * fix: Disable warnings for GNU extensions on Clang
+ * fix: clang warning '-Wnull-pointer-subtraction' in lttng_ust_is_pointer_type
+ * Fix: Use negative value for error code of lttng_ust_ctl_duplicate_ust_object_data
+ * Fix: sessiond wait futex: handle spurious futex wakeups
+
2022-06-03 (National Repeat Day) (National Repeat Day) lttng-ust 2.13.3
* Document ust lock async-signal-safety
* Fix: don't use strerror() from ust lock nocheck
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/configure.ac new/lttng-ust-2.13.4/configure.ac
--- old/lttng-ust-2.13.3/configure.ac 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/configure.ac 2022-08-19 22:23:47.000000000 +0200
@@ -8,7 +8,7 @@
# Project version information
m4_define([ust_version_major], [2])
m4_define([ust_version_minor], [13])
-m4_define([ust_version_patch], [3])
+m4_define([ust_version_patch], [4])
m4_define([ust_version_dev_stage], [])
m4_define([ust_version], ust_version_major[.]ust_version_minor[.]ust_version_patch[]ust_version_dev_stage)
m4_define([ust_version_name], [[Nordicit��]])
@@ -162,6 +162,7 @@
-Wno-sign-compare dnl
-Wno-missing-field-initializers dnl
-Wno-null-dereference dnl
+ -Wno-gnu dnl Disable warnings for GNU extensions on Clang
])
# Pass -Werror as an extra flag during the test: this is needed to make the
@@ -656,6 +657,7 @@
tests/regression/abi0-conflict/Makefile
tests/regression/Makefile
tests/unit/gcc-weak-hidden/Makefile
+ tests/unit/libcommon/Makefile
tests/unit/libmsgpack/Makefile
tests/unit/libringbuffer/Makefile
tests/unit/Makefile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/doc/man/lttng-gen-tp.1 new/lttng-ust-2.13.4/doc/man/lttng-gen-tp.1
--- old/lttng-ust-2.13.3/doc/man/lttng-gen-tp.1 2022-06-03 21:59:12.000000000 +0200
+++ new/lttng-ust-2.13.4/doc/man/lttng-gen-tp.1 2022-08-19 22:24:57.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: lttng-gen-tp
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 06/03/2022
+.\" Date: 08/19/2022
.\" Manual: LTTng Manual
-.\" Source: LTTng 2.13.3
+.\" Source: LTTng 2.13.4
.\" Language: English
.\"
-.TH "LTTNG\-GEN\-TP" "1" "06/03/2022" "LTTng 2\&.13\&.3" "LTTng Manual"
+.TH "LTTNG\-GEN\-TP" "1" "08/19/2022" "LTTng 2\&.13\&.4" "LTTng Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/doc/man/lttng-ust-cyg-profile.3 new/lttng-ust-2.13.4/doc/man/lttng-ust-cyg-profile.3
--- old/lttng-ust-2.13.3/doc/man/lttng-ust-cyg-profile.3 2022-06-03 21:59:15.000000000 +0200
+++ new/lttng-ust-2.13.4/doc/man/lttng-ust-cyg-profile.3 2022-08-19 22:25:01.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: lttng-ust-cyg-profile
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 06/03/2022
+.\" Date: 08/19/2022
.\" Manual: LTTng Manual
-.\" Source: LTTng 2.13.3
+.\" Source: LTTng 2.13.4
.\" Language: English
.\"
-.TH "LTTNG\-UST\-CYG\-PRO" "3" "06/03/2022" "LTTng 2\&.13\&.3" "LTTng Manual"
+.TH "LTTNG\-UST\-CYG\-PRO" "3" "08/19/2022" "LTTng 2\&.13\&.4" "LTTng Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/doc/man/lttng-ust-dl.3 new/lttng-ust-2.13.4/doc/man/lttng-ust-dl.3
--- old/lttng-ust-2.13.3/doc/man/lttng-ust-dl.3 2022-06-03 21:59:14.000000000 +0200
+++ new/lttng-ust-2.13.4/doc/man/lttng-ust-dl.3 2022-08-19 22:25:00.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: lttng-ust-dl
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 06/03/2022
+.\" Date: 08/19/2022
.\" Manual: LTTng Manual
-.\" Source: LTTng 2.13.3
+.\" Source: LTTng 2.13.4
.\" Language: English
.\"
-.TH "LTTNG\-UST\-DL" "3" "06/03/2022" "LTTng 2\&.13\&.3" "LTTng Manual"
+.TH "LTTNG\-UST\-DL" "3" "08/19/2022" "LTTng 2\&.13\&.4" "LTTng Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/doc/man/lttng-ust.3 new/lttng-ust-2.13.4/doc/man/lttng-ust.3
--- old/lttng-ust-2.13.3/doc/man/lttng-ust.3 2022-06-03 21:59:14.000000000 +0200
+++ new/lttng-ust-2.13.4/doc/man/lttng-ust.3 2022-08-19 22:24:59.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: lttng-ust
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 06/03/2022
+.\" Date: 08/19/2022
.\" Manual: LTTng Manual
-.\" Source: LTTng 2.13.3
+.\" Source: LTTng 2.13.4
.\" Language: English
.\"
-.TH "LTTNG\-UST" "3" "06/03/2022" "LTTng 2\&.13\&.3" "LTTng Manual"
+.TH "LTTNG\-UST" "3" "08/19/2022" "LTTng 2\&.13\&.4" "LTTng Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -211,7 +211,7 @@
API version\ \&\fIN\fR, and all the following existing APIs, are available\&. Previous APIs are not available (not compiled)\&.
.RE
.sp
-The following table shows the mapping from LTTng\-UST versions (up to LTTng\-UST\ \&2\&.13\&.3) to available API versions:
+The following table shows the mapping from LTTng\-UST versions (up to LTTng\-UST\ \&2\&.13\&.4) to available API versions:
.TS
allbox tab(:);
ltB ltB.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/doc/man/lttng_ust_tracef.3 new/lttng-ust-2.13.4/doc/man/lttng_ust_tracef.3
--- old/lttng-ust-2.13.3/doc/man/lttng_ust_tracef.3 2022-06-03 21:59:16.000000000 +0200
+++ new/lttng-ust-2.13.4/doc/man/lttng_ust_tracef.3 2022-08-19 22:25:02.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: lttng_ust_tracef
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 06/03/2022
+.\" Date: 08/19/2022
.\" Manual: LTTng Manual
-.\" Source: LTTng 2.13.3
+.\" Source: LTTng 2.13.4
.\" Language: English
.\"
-.TH "LTTNG_UST_TRACEF" "3" "06/03/2022" "LTTng 2\&.13\&.3" "LTTng Manual"
+.TH "LTTNG_UST_TRACEF" "3" "08/19/2022" "LTTng 2\&.13\&.4" "LTTng Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/doc/man/lttng_ust_tracelog.3 new/lttng-ust-2.13.4/doc/man/lttng_ust_tracelog.3
--- old/lttng-ust-2.13.3/doc/man/lttng_ust_tracelog.3 2022-06-03 21:59:17.000000000 +0200
+++ new/lttng-ust-2.13.4/doc/man/lttng_ust_tracelog.3 2022-08-19 22:25:02.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: lttng_ust_tracelog
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 06/03/2022
+.\" Date: 08/19/2022
.\" Manual: LTTng Manual
-.\" Source: LTTng 2.13.3
+.\" Source: LTTng 2.13.4
.\" Language: English
.\"
-.TH "LTTNG_UST_TRACELOG" "3" "06/03/2022" "LTTng 2\&.13\&.3" "LTTng Manual"
+.TH "LTTNG_UST_TRACELOG" "3" "08/19/2022" "LTTng 2\&.13\&.4" "LTTng Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/doc/man/tracef.3 new/lttng-ust-2.13.4/doc/man/tracef.3
--- old/lttng-ust-2.13.3/doc/man/tracef.3 2022-06-03 21:59:17.000000000 +0200
+++ new/lttng-ust-2.13.4/doc/man/tracef.3 2022-08-19 22:25:03.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: tracef
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 06/03/2022
+.\" Date: 08/19/2022
.\" Manual: LTTng Manual
-.\" Source: LTTng 2.13.3
+.\" Source: LTTng 2.13.4
.\" Language: English
.\"
-.TH "TRACEF" "3" "06/03/2022" "LTTng 2\&.13\&.3" "LTTng Manual"
+.TH "TRACEF" "3" "08/19/2022" "LTTng 2\&.13\&.4" "LTTng Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/doc/man/tracelog.3 new/lttng-ust-2.13.4/doc/man/tracelog.3
--- old/lttng-ust-2.13.3/doc/man/tracelog.3 2022-06-03 21:59:18.000000000 +0200
+++ new/lttng-ust-2.13.4/doc/man/tracelog.3 2022-08-19 22:25:03.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: tracelog
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 06/03/2022
+.\" Date: 08/19/2022
.\" Manual: LTTng Manual
-.\" Source: LTTng 2.13.3
+.\" Source: LTTng 2.13.4
.\" Language: English
.\"
-.TH "TRACELOG" "3" "06/03/2022" "LTTng 2\&.13\&.3" "LTTng Manual"
+.TH "TRACELOG" "3" "08/19/2022" "LTTng 2\&.13\&.4" "LTTng Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/include/lttng/ust-tracepoint-event.h new/lttng-ust-2.13.4/include/lttng/ust-tracepoint-event.h
--- old/lttng-ust-2.13.3/include/lttng/ust-tracepoint-event.h 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/include/lttng/ust-tracepoint-event.h 2022-08-19 22:22:55.000000000 +0200
@@ -257,9 +257,16 @@
};
#include LTTNG_UST_TRACEPOINT_INCLUDE
+#if defined(__cplusplus)
+
/*
* Stage 0.9.1
- * Verifying array and sequence elements are of an integer type.
+ * Verifying array and sequence elements are of an integer or pointer
+ * type.
+ *
+ * This compile-time check is only enabled in C++, because the C
+ * implementation of lttng_ust_is_pointer_type does not support opaque
+ * pointer types.
*/
/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
@@ -288,6 +295,8 @@
#include LTTNG_UST_TRACEPOINT_INCLUDE
+#endif
+
/*
* Stage 0.9.2 of tracepoint event generation.
*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/include/lttng/ust-utils.h new/lttng-ust-2.13.4/include/lttng/ust-utils.h
--- old/lttng-ust-2.13.3/include/lttng/ust-utils.h 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/include/lttng/ust-utils.h 2022-08-19 22:22:55.000000000 +0200
@@ -62,13 +62,16 @@
* lttng_ust_is_pointer_type - check if type is a pointer
*
* Returns true if the type of @type is a pointer.
+ *
+ * Note: The C implementation of lttng_ust_is_pointer_type uses pointer
+ * arithmetic, which does not work on opaque pointer types.
*/
#if defined(__cplusplus)
#define lttng_ust_is_pointer_type(type) (std::is_pointer<type>::value)
#else
/* The difference between two pointers is an integer. */
#define lttng_ust_is_pointer_type(type) \
- (lttng_ust_is_integer_type(typeof(((type)0 - (type)0))) && !lttng_ust_is_integer_type(type))
+ (lttng_ust_is_integer_type(typeof(((type)1 - (type)1))) && !lttng_ust_is_integer_type(type))
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/src/common/counter/counter.c new/lttng-ust-2.13.4/src/common/counter/counter.c
--- old/lttng-ust-2.13.3/src/common/counter/counter.c 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/src/common/counter/counter.c 2022-08-19 22:22:55.000000000 +0200
@@ -118,7 +118,7 @@
struct lib_counter_config *config = &counter->config;
struct lib_counter_layout *layout;
- if (cpu < 0 || cpu >= num_possible_cpus())
+ if (cpu < 0 || cpu >= get_possible_cpus_array_len())
return -EINVAL;
if (!(config->alloc & COUNTER_ALLOC_PER_CPU))
@@ -171,7 +171,7 @@
int nr_counter_cpu_fds,
const int *counter_cpu_fds)
{
- int nr_cpus = num_possible_cpus();
+ int nr_cpus = get_possible_cpus_array_len();
if (CAA_BITS_PER_LONG != 64 && config->counter_size == COUNTER_SIZE_64_BIT) {
WARN_ON_ONCE(1);
@@ -210,7 +210,7 @@
size_t dimension, nr_elem = 1;
int cpu, ret;
int nr_handles = 0;
- int nr_cpus = num_possible_cpus();
+ int nr_cpus = get_possible_cpus_array_len();
if (validate_args(config, nr_dimensions, max_nr_elem,
global_sum_step, global_counter_fd, nr_counter_cpu_fds,
@@ -309,7 +309,7 @@
struct lib_counter_layout *layout;
int shm_fd;
- if (cpu >= num_possible_cpus())
+ if (cpu >= get_possible_cpus_array_len())
return -1;
layout = &counter->percpu_counters[cpu];
shm_fd = layout->shm_fd;
@@ -335,13 +335,13 @@
switch (config->alloc) {
case COUNTER_ALLOC_PER_CPU:
- if (cpu < 0 || cpu >= num_possible_cpus())
+ if (cpu < 0 || cpu >= get_possible_cpus_array_len())
return -EINVAL;
layout = &counter->percpu_counters[cpu];
break;
case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
if (cpu >= 0) {
- if (cpu >= num_possible_cpus())
+ if (cpu >= get_possible_cpus_array_len())
return -EINVAL;
layout = &counter->percpu_counters[cpu];
} else {
@@ -469,13 +469,13 @@
switch (config->alloc) {
case COUNTER_ALLOC_PER_CPU:
- if (cpu < 0 || cpu >= num_possible_cpus())
+ if (cpu < 0 || cpu >= get_possible_cpus_array_len())
return -EINVAL;
layout = &counter->percpu_counters[cpu];
break;
case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
if (cpu >= 0) {
- if (cpu >= num_possible_cpus())
+ if (cpu >= get_possible_cpus_array_len())
return -EINVAL;
layout = &counter->percpu_counters[cpu];
} else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/src/common/ringbuffer/ring_buffer_frontend.c new/lttng-ust-2.13.4/src/common/ringbuffer/ring_buffer_frontend.c
--- old/lttng-ust-2.13.3/src/common/ringbuffer/ring_buffer_frontend.c 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/src/common/ringbuffer/ring_buffer_frontend.c 2022-08-19 22:22:55.000000000 +0200
@@ -982,7 +982,7 @@
int64_t blocking_timeout_ms;
if (config->alloc == RING_BUFFER_ALLOC_PER_CPU)
- nr_streams = num_possible_cpus();
+ nr_streams = get_possible_cpus_array_len();
else
nr_streams = 1;
@@ -1011,7 +1011,7 @@
return NULL;
/* Allocate table for channel + per-cpu buffers */
- handle->table = shm_object_table_create(1 + num_possible_cpus());
+ handle->table = shm_object_table_create(1 + get_possible_cpus_array_len());
if (!handle->table)
goto error_table_alloc;
@@ -1095,7 +1095,7 @@
return NULL;
/* Allocate table for channel + per-cpu buffers */
- handle->table = shm_object_table_create(1 + num_possible_cpus());
+ handle->table = shm_object_table_create(1 + get_possible_cpus_array_len());
if (!handle->table)
goto error_table_alloc;
/* Add channel object */
@@ -1190,7 +1190,7 @@
if (config->alloc == RING_BUFFER_ALLOC_GLOBAL) {
cpu = 0;
} else {
- if (cpu >= num_possible_cpus())
+ if (cpu >= get_possible_cpus_array_len())
return NULL;
}
ref = &chan->backend.buf[cpu].shmp._ref;
@@ -1235,7 +1235,7 @@
if (config->alloc == RING_BUFFER_ALLOC_GLOBAL) {
cpu = 0;
} else {
- if (cpu >= num_possible_cpus())
+ if (cpu >= get_possible_cpus_array_len())
return -EINVAL;
}
ref = &chan->backend.buf[cpu].shmp._ref;
@@ -1253,7 +1253,7 @@
if (config->alloc == RING_BUFFER_ALLOC_GLOBAL) {
cpu = 0;
} else {
- if (cpu >= num_possible_cpus())
+ if (cpu >= get_possible_cpus_array_len())
return -EINVAL;
}
ref = &chan->backend.buf[cpu].shmp._ref;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/src/common/smp.c new/lttng-ust-2.13.4/src/common/smp.c
--- old/lttng-ust-2.13.3/src/common/smp.c 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/src/common/smp.c 2022-08-19 22:22:55.000000000 +0200
@@ -6,108 +6,267 @@
*/
#define _LGPL_SOURCE
+#include <assert.h>
+#include <ctype.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
#include <unistd.h>
#include <pthread.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
#include <urcu/compiler.h>
+#include "common/logging.h"
#include "common/smp.h"
-static int num_possible_cpus_cache;
-
-#if (defined(__GLIBC__) || defined( __UCLIBC__))
-static void _get_num_possible_cpus(void)
-{
- int result;
-
- /* On Linux, when some processors are offline
- * _SC_NPROCESSORS_CONF counts the offline
- * processors, whereas _SC_NPROCESSORS_ONLN
- * does not. If we used _SC_NPROCESSORS_ONLN,
- * getcpu() could return a value greater than
- * this sysconf, in which case the arrays
- * indexed by processor would overflow.
- */
- result = sysconf(_SC_NPROCESSORS_CONF);
- if (result == -1)
- return;
- num_possible_cpus_cache = result;
-}
+#define __max(a,b) ((a)>(b)?(a):(b))
-#else
+static int possible_cpus_array_len_cache;
/*
- * The MUSL libc implementation of the _SC_NPROCESSORS_CONF sysconf does not
- * return the number of configured CPUs in the system but relies on the cpu
- * affinity mask of the current task.
+ * Get the highest CPU id from sysfs.
+ *
+ * Iterate on all the folders in "/sys/devices/system/cpu" that start with
+ * "cpu" followed by an integer, keep the highest CPU id encountered during
+ * this iteration and add 1 to get a number of CPUs.
*
- * So instead we use a strategy similar to GLIBC's, counting the cpu
- * directories in "/sys/devices/system/cpu" and fallback on the value from
- * sysconf if it fails.
+ * Returns the highest CPU id, or -1 on error.
*/
+int get_max_cpuid_from_sysfs(void)
+{
+ return _get_max_cpuid_from_sysfs("/sys/devices/system/cpu");
+}
-#include <dirent.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-
-#define __max(a,b) ((a)>(b)?(a):(b))
-
-static void _get_num_possible_cpus(void)
+int _get_max_cpuid_from_sysfs(const char *path)
{
- int result, count = 0;
+ long max_cpuid = -1;
+
DIR *cpudir;
struct dirent *entry;
- cpudir = opendir("/sys/devices/system/cpu");
+ assert(path);
+
+ cpudir = opendir(path);
if (cpudir == NULL)
goto end;
/*
- * Count the number of directories named "cpu" followed by and
- * integer. This is the same strategy as glibc uses.
+ * Iterate on all directories named "cpu" followed by an integer.
*/
while ((entry = readdir(cpudir))) {
if (entry->d_type == DT_DIR &&
strncmp(entry->d_name, "cpu", 3) == 0) {
char *endptr;
- unsigned long cpu_num;
+ long cpu_id;
- cpu_num = strtoul(entry->d_name + 3, &endptr, 10);
- if ((cpu_num < ULONG_MAX) && (endptr != entry->d_name + 3)
+ cpu_id = strtol(entry->d_name + 3, &endptr, 10);
+ if ((cpu_id < LONG_MAX) && (endptr != entry->d_name + 3)
&& (*endptr == '\0')) {
- count++;
+ if (cpu_id > max_cpuid)
+ max_cpuid = cpu_id;
}
}
}
+ if (closedir(cpudir))
+ PERROR("closedir");
+
+ /*
+ * If the max CPU id is out of bound, set it to -1 so it results in a
+ * CPU num of 0.
+ */
+ if (max_cpuid < 0 || max_cpuid > INT_MAX)
+ max_cpuid = -1;
+
end:
+ return max_cpuid;
+}
+
+/*
+ * As a fallback to parsing the CPU mask in "/sys/devices/system/cpu/possible",
+ * iterate on all the folders in "/sys/devices/system/cpu" that start with
+ * "cpu" followed by an integer, keep the highest CPU id encountered during
+ * this iteration and add 1 to get a number of CPUs.
+ *
+ * Then get the value from sysconf(_SC_NPROCESSORS_CONF) as a fallback and
+ * return the highest one.
+ *
+ * On Linux, using the value from sysconf can be unreliable since the way it
+ * counts CPUs varies between C libraries and even between versions of the same
+ * library. If we used it directly, getcpu() could return a value greater than
+ * this sysconf, in which case the arrays indexed by processor would overflow.
+ *
+ * As another example, the MUSL libc implementation of the _SC_NPROCESSORS_CONF
+ * sysconf does not return the number of configured CPUs in the system but
+ * relies on the cpu affinity mask of the current task.
+ *
+ * Returns 0 or less on error.
+ */
+int get_num_possible_cpus_fallback(void)
+{
/*
- * Get the sysconf value as a fallback. Keep the highest number.
+ * Get the sysconf value as a last resort. Keep the highest number.
*/
- result = __max(sysconf(_SC_NPROCESSORS_CONF), count);
+ return __max(sysconf(_SC_NPROCESSORS_CONF), get_max_cpuid_from_sysfs() + 1);
+}
+
+/*
+ * Get the CPU possible mask string from sysfs.
+ *
+ * buf: the buffer where the mask will be read.
+ * max_bytes: the maximum number of bytes to write in the buffer.
+ *
+ * Returns the number of bytes read or -1 on error.
+ */
+int get_possible_cpu_mask_from_sysfs(char *buf, size_t max_bytes)
+{
+ return get_cpu_mask_from_sysfs(buf, max_bytes,
+ "/sys/devices/system/cpu/possible");
+}
+
+/*
+ * Get a CPU mask string from sysfs.
+ *
+ * buf: the buffer where the mask will be read.
+ * max_bytes: the maximum number of bytes to write in the buffer.
+ * path: file path to read the mask from.
+ *
+ * Returns the number of bytes read or -1 on error.
+ */
+int get_cpu_mask_from_sysfs(char *buf, size_t max_bytes, const char *path)
+{
+ ssize_t bytes_read = 0;
+ size_t total_bytes_read = 0;
+ int fd = -1, ret = -1;
+
+ assert(path);
+
+ if (buf == NULL)
+ goto end;
+
+ fd = open(path, O_RDONLY);
+ if (fd < 0)
+ goto end;
+
+ do {
+ bytes_read = read(fd, buf + total_bytes_read,
+ max_bytes - total_bytes_read);
+
+ if (bytes_read < 0) {
+ if (errno == EINTR) {
+ continue; /* retry operation */
+ } else {
+ goto end;
+ }
+ }
+
+ total_bytes_read += bytes_read;
+ assert(total_bytes_read <= max_bytes);
+ } while (max_bytes > total_bytes_read && bytes_read > 0);
/*
- * If both methods failed, don't store the value.
+ * Make sure the mask read is a null terminated string.
*/
- if (result < 1)
+ if (total_bytes_read < max_bytes)
+ buf[total_bytes_read] = '\0';
+ else
+ buf[max_bytes - 1] = '\0';
+
+ if (total_bytes_read > INT_MAX)
+ goto end;
+ ret = (int) total_bytes_read;
+end:
+ if (fd >= 0 && close(fd) < 0)
+ PERROR("close");
+ return ret;
+}
+
+/*
+ * Get the highest CPU id from a CPU mask.
+ *
+ * pmask: the mask to parse.
+ * len: the len of the mask excluding '\0'.
+ *
+ * Returns the highest CPU id from the mask or -1 on error.
+ */
+int get_max_cpuid_from_mask(const char *pmask, size_t len)
+{
+ ssize_t i;
+ unsigned long cpu_index;
+ char *endptr;
+
+ /* We need at least one char to read */
+ if (len < 1)
+ goto error;
+
+ /* Start from the end to read the last CPU index. */
+ for (i = len - 1; i > 0; i--) {
+ /* Break when we hit the first separator. */
+ if ((pmask[i] == ',') || (pmask[i] == '-')) {
+ i++;
+ break;
+ }
+ }
+
+ cpu_index = strtoul(&pmask[i], &endptr, 10);
+
+ if ((&pmask[i] != endptr) && (cpu_index < INT_MAX))
+ return (int) cpu_index;
+
+error:
+ return -1;
+}
+
+static void update_possible_cpus_array_len_cache(void)
+{
+ int ret;
+ char buf[LTTNG_UST_CPUMASK_SIZE];
+
+ /* Get the possible cpu mask from sysfs, fallback to sysconf. */
+ ret = get_possible_cpu_mask_from_sysfs((char *) &buf, LTTNG_UST_CPUMASK_SIZE);
+ if (ret <= 0)
+ goto fallback;
+
+ /* Parse the possible cpu mask, on failure fallback to sysconf. */
+ ret = get_max_cpuid_from_mask((char *) &buf, ret);
+ if (ret >= 0) {
+ /* Add 1 to convert from max cpuid to an array len. */
+ ret++;
+ goto end;
+ }
+
+fallback:
+ /* Fallback to sysconf. */
+ ret = get_num_possible_cpus_fallback();
+
+end:
+ /* If all methods failed, don't store the value. */
+ if (ret < 1)
return;
- num_possible_cpus_cache = result;
+
+ possible_cpus_array_len_cache = ret;
}
-#endif
/*
- * Returns the total number of CPUs in the system. If the cache is not yet
- * initialized, get the value from the system through sysconf and cache it.
+ * Returns the length of an array that could contain a per-CPU element for each
+ * possible CPU id for the lifetime of the process.
+ *
+ * We currently assume CPU ids are contiguous up the maximum CPU id.
+ *
+ * If the cache is not yet initialized, get the value from
+ * "/sys/devices/system/cpu/possible" or fallback to sysconf and cache it.
*
- * If the sysconf call fails, don't populate the cache and return 0.
+ * If all methods fail, don't populate the cache and return 0.
*/
-int num_possible_cpus(void)
+int get_possible_cpus_array_len(void)
{
- if (caa_unlikely(!num_possible_cpus_cache))
- _get_num_possible_cpus();
+ if (caa_unlikely(!possible_cpus_array_len_cache))
+ update_possible_cpus_array_len_cache();
- return num_possible_cpus_cache;
+ return possible_cpus_array_len_cache;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/src/common/smp.h new/lttng-ust-2.13.4/src/common/smp.h
--- old/lttng-ust-2.13.3/src/common/smp.h 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/src/common/smp.h 2022-08-19 22:22:55.000000000 +0200
@@ -7,16 +7,81 @@
#ifndef _UST_COMMON_SMP_H
#define _UST_COMMON_SMP_H
+#define LTTNG_UST_CPUMASK_SIZE 4096
+
+/*
+ * Get a CPU mask string from sysfs.
+ *
+ * buf: the buffer where the mask will be read.
+ * max_bytes: the maximum number of bytes to write in the buffer.
+ * path: file path to read the mask from.
+ *
+ * Returns the number of bytes read or -1 on error.
+ */
+int get_cpu_mask_from_sysfs(char *buf, size_t max_bytes, const char *path)
+ __attribute__((visibility("hidden")));
+
+/*
+ * Get the CPU possible mask string from sysfs.
+ *
+ * buf: the buffer where the mask will be read.
+ * max_bytes: the maximum number of bytes to write in the buffer.
+ *
+ * Returns the number of bytes read or -1 on error.
+ */
+int get_possible_cpu_mask_from_sysfs(char *buf, size_t max_bytes)
+ __attribute__((visibility("hidden")));
+
+/*
+ * Get the highest CPU id from sysfs.
+ *
+ * Iterate on all the folders in "/sys/devices/system/cpu" that start with
+ * "cpu" followed by an integer, keep the highest CPU id encountered during
+ * this iteration and add 1 to get a number of CPUs.
+ *
+ * Returns the highest CPU id, or -1 on error.
+ */
+int get_max_cpuid_from_sysfs(void)
+ __attribute__((visibility("hidden")));
+
+int _get_max_cpuid_from_sysfs(const char *path)
+ __attribute__((visibility("hidden")));
+
+/*
+ * Get the number of possible CPUs in the system from either
+ * sysconf(_SC_NPROCESSORS_CONF) or some other mechanism depending on the libc.
+ *
+ * Returns the number of possible CPUs in the system or 0 on error.
+ */
+int get_num_possible_cpus_fallback(void)
+ __attribute__((visibility("hidden")));
+
/*
- * Returns the total number of CPUs in the system. If the cache is not yet
- * initialized, get the value from the system through sysconf and cache it.
+ * Get the highest CPU id from a CPU mask.
+ *
+ * pmask: the mask to parse.
+ * len: the len of the mask excluding '\0'.
+ *
+ * Returns the highest CPU id from the mask or -1 on error.
+ */
+int get_max_cpuid_from_mask(const char *pmask, size_t len)
+ __attribute__((visibility("hidden")));
+
+/*
+ * Returns the length of an array that could contain a per-CPU element for each
+ * possible CPU id for the lifetime of the process.
+ *
+ * We currently assume CPU ids are contiguous up the maximum CPU id.
+ *
+ * If the cache is not yet initialized, get the value from
+ * "/sys/devices/system/cpu/possible" or fallback to sysconf and cache it.
*
- * If the sysconf call fails, don't populate the cache and return 0.
+ * If all methods fail, don't populate the cache and return 0.
*/
-int num_possible_cpus(void)
+int get_possible_cpus_array_len(void)
__attribute__((visibility("hidden")));
#define for_each_possible_cpu(cpu) \
- for ((cpu) = 0; (cpu) < num_possible_cpus(); (cpu)++)
+ for ((cpu) = 0; (cpu) < get_possible_cpus_array_len(); (cpu)++)
#endif /* _UST_COMMON_SMP_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/src/lib/lttng-ust/lttng-ust-comm.c new/lttng-ust-2.13.4/src/lib/lttng-ust/lttng-ust-comm.c
--- old/lttng-ust-2.13.3/src/lib/lttng-ust/lttng-ust-comm.c 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/src/lib/lttng-ust/lttng-ust-comm.c 2022-08-19 22:22:55.000000000 +0200
@@ -1757,18 +1757,25 @@
DBG("Waiting for %s apps sessiond", sock_info->name);
/* Wait for futex wakeup */
- if (uatomic_read((int32_t *) sock_info->wait_shm_mmap))
- goto end_wait;
-
- while (lttng_ust_futex_async((int32_t *) sock_info->wait_shm_mmap,
- FUTEX_WAIT, 0, NULL, NULL, 0)) {
+ while (!uatomic_read((int32_t *) sock_info->wait_shm_mmap)) {
+ if (!lttng_ust_futex_async((int32_t *) sock_info->wait_shm_mmap, FUTEX_WAIT, 0, NULL, NULL, 0)) {
+ /*
+ * Prior queued wakeups queued by unrelated code
+ * using the same address can cause futex wait to
+ * return 0 even through the futex value is still
+ * 0 (spurious wakeups). Check the value again
+ * in user-space to validate whether it really
+ * differs from 0.
+ */
+ continue;
+ }
switch (errno) {
- case EWOULDBLOCK:
+ case EAGAIN:
/* Value already changed. */
goto end_wait;
case EINTR:
/* Retry if interrupted by signal. */
- break; /* Get out of switch. */
+ break; /* Get out of switch. Check again. */
case EFAULT:
wait_poll_fallback = 1;
DBG(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/src/lib/lttng-ust-ctl/ustctl.c new/lttng-ust-2.13.4/src/lib/lttng-ust-ctl/ustctl.c
--- old/lttng-ust-2.13.3/src/lib/lttng-ust-ctl/ustctl.c 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/src/lib/lttng-ust-ctl/ustctl.c 2022-08-19 22:22:55.000000000 +0200
@@ -1257,7 +1257,7 @@
obj->u.channel.wakeup_fd =
dup(src->u.channel.wakeup_fd);
if (obj->u.channel.wakeup_fd < 0) {
- ret = errno;
+ ret = -errno;
goto chan_error_wakeup_fd;
}
} else {
@@ -1293,7 +1293,7 @@
obj->u.stream.wakeup_fd =
dup(src->u.stream.wakeup_fd);
if (obj->u.stream.wakeup_fd < 0) {
- ret = errno;
+ ret = -errno;
goto stream_error_wakeup_fd;
}
} else {
@@ -1305,7 +1305,7 @@
obj->u.stream.shm_fd =
dup(src->u.stream.shm_fd);
if (obj->u.stream.shm_fd < 0) {
- ret = errno;
+ ret = -errno;
goto stream_error_shm_fd;
}
} else {
@@ -1344,7 +1344,7 @@
obj->u.counter_global.shm_fd =
dup(src->u.counter_global.shm_fd);
if (obj->u.counter_global.shm_fd < 0) {
- ret = errno;
+ ret = -errno;
goto error_type;
}
}
@@ -1358,7 +1358,7 @@
obj->u.counter_cpu.shm_fd =
dup(src->u.counter_cpu.shm_fd);
if (obj->u.counter_cpu.shm_fd < 0) {
- ret = errno;
+ ret = -errno;
goto error_type;
}
}
@@ -1384,7 +1384,7 @@
int lttng_ust_ctl_get_nr_stream_per_channel(void)
{
- return num_possible_cpus();
+ return get_possible_cpus_array_len();
}
struct lttng_ust_ctl_consumer_channel *
@@ -2901,7 +2901,7 @@
int lttng_ust_ctl_get_nr_cpu_per_counter(void)
{
- return num_possible_cpus();
+ return get_possible_cpus_array_len();
}
struct lttng_ust_ctl_daemon_counter *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/tests/Makefile.am new/lttng-ust-2.13.4/tests/Makefile.am
--- old/lttng-ust-2.13.3/tests/Makefile.am 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/tests/Makefile.am 2022-08-19 22:22:55.000000000 +0200
@@ -13,6 +13,10 @@
TESTS = \
unit/libringbuffer/test_shm \
unit/gcc-weak-hidden/test_gcc_weak_hidden \
+ unit/libcommon/test_get_cpu_mask_from_sysfs \
+ unit/libcommon/test_get_max_cpuid_from_mask \
+ unit/libcommon/test_get_max_cpuid_from_sysfs \
+ unit/libcommon/test_get_possible_cpus_array_len \
unit/libmsgpack/test_msgpack \
unit/pthread_name/test_pthread_name \
unit/snprintf/test_snprintf \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/tests/unit/Makefile.am new/lttng-ust-2.13.4/tests/unit/Makefile.am
--- old/lttng-ust-2.13.3/tests/unit/Makefile.am 2022-06-03 21:58:01.000000000 +0200
+++ new/lttng-ust-2.13.4/tests/unit/Makefile.am 2022-08-19 22:22:55.000000000 +0200
@@ -2,6 +2,7 @@
SUBDIRS = \
gcc-weak-hidden \
+ libcommon \
libmsgpack \
libringbuffer \
pthread_name \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/tests/unit/libcommon/Makefile.am new/lttng-ust-2.13.4/tests/unit/libcommon/Makefile.am
--- old/lttng-ust-2.13.3/tests/unit/libcommon/Makefile.am 1970-01-01 01:00:00.000000000 +0100
+++ new/lttng-ust-2.13.4/tests/unit/libcommon/Makefile.am 2022-08-19 22:22:55.000000000 +0200
@@ -0,0 +1,31 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+
+AM_CPPFLAGS += -I$(top_srcdir)/tests/utils
+
+noinst_PROGRAMS = \
+ get_cpu_mask_from_sysfs \
+ get_max_cpuid_from_sysfs \
+ test_get_max_cpuid_from_mask \
+ test_get_possible_cpus_array_len
+
+dist_noinst_SCRIPTS = \
+ test_get_cpu_mask_from_sysfs \
+ test_get_max_cpuid_from_sysfs
+
+get_cpu_mask_from_sysfs_SOURCES = get_cpu_mask_from_sysfs.c
+get_cpu_mask_from_sysfs_LDADD = \
+ $(top_builddir)/src/common/libcommon.la
+
+get_max_cpuid_from_sysfs_SOURCES = get_max_cpuid_from_sysfs.c
+get_max_cpuid_from_sysfs_LDADD = \
+ $(top_builddir)/src/common/libcommon.la
+
+test_get_max_cpuid_from_mask_SOURCES = test_get_max_cpuid_from_mask.c
+test_get_max_cpuid_from_mask_LDADD = \
+ $(top_builddir)/src/common/libcommon.la \
+ $(top_builddir)/tests/utils/libtap.a
+
+test_get_possible_cpus_array_len_SOURCES = test_get_possible_cpus_array_len.c
+test_get_possible_cpus_array_len_LDADD = \
+ $(top_builddir)/src/common/libcommon.la \
+ $(top_builddir)/tests/utils/libtap.a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/tests/unit/libcommon/get_cpu_mask_from_sysfs.c new/lttng-ust-2.13.4/tests/unit/libcommon/get_cpu_mask_from_sysfs.c
--- old/lttng-ust-2.13.3/tests/unit/libcommon/get_cpu_mask_from_sysfs.c 1970-01-01 01:00:00.000000000 +0100
+++ new/lttng-ust-2.13.4/tests/unit/libcommon/get_cpu_mask_from_sysfs.c 2022-08-19 22:22:55.000000000 +0200
@@ -0,0 +1,30 @@
+/*
+ * SPDX-License-Identifier: LGPL-2.1-only
+ *
+ * Copyright (C) 2022 Michael Jeanson <mjeanson(a)efficios.com>
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "common/smp.h"
+
+int main(int argc, char *argv[])
+{
+ int ret;
+ char buf[LTTNG_UST_CPUMASK_SIZE];
+
+ if( argc < 2 ) {
+ fprintf(stderr, "Missing argument.\n");
+ return EXIT_FAILURE;
+ }
+
+ ret = get_cpu_mask_from_sysfs((char *) &buf, LTTNG_UST_CPUMASK_SIZE, argv[1]);
+
+ printf("%s", buf);
+
+ if (ret >= 0)
+ return EXIT_SUCCESS;
+ else
+ return EXIT_FAILURE;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/tests/unit/libcommon/get_max_cpuid_from_sysfs.c new/lttng-ust-2.13.4/tests/unit/libcommon/get_max_cpuid_from_sysfs.c
--- old/lttng-ust-2.13.3/tests/unit/libcommon/get_max_cpuid_from_sysfs.c 1970-01-01 01:00:00.000000000 +0100
+++ new/lttng-ust-2.13.4/tests/unit/libcommon/get_max_cpuid_from_sysfs.c 2022-08-19 22:22:55.000000000 +0200
@@ -0,0 +1,29 @@
+/*
+ * SPDX-License-Identifier: LGPL-2.1-only
+ *
+ * Copyright (C) 2022 Michael Jeanson <mjeanson(a)efficios.com>
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "common/smp.h"
+
+int main(int argc, char *argv[])
+{
+ int ret;
+
+ if( argc < 2 ) {
+ fprintf(stderr, "Missing argument.\n");
+ return EXIT_FAILURE;
+ }
+
+ ret = _get_max_cpuid_from_sysfs(argv[1]);
+
+ printf("%d\n", ret);
+
+ if (ret >= 0)
+ return EXIT_SUCCESS;
+ else
+ return EXIT_FAILURE;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/tests/unit/libcommon/test_get_cpu_mask_from_sysfs new/lttng-ust-2.13.4/tests/unit/libcommon/test_get_cpu_mask_from_sysfs
--- old/lttng-ust-2.13.3/tests/unit/libcommon/test_get_cpu_mask_from_sysfs 1970-01-01 01:00:00.000000000 +0100
+++ new/lttng-ust-2.13.4/tests/unit/libcommon/test_get_cpu_mask_from_sysfs 2022-08-19 22:22:55.000000000 +0200
@@ -0,0 +1,51 @@
+#!/bin/bash
+# SPDX-License-Identifier: LGPL-2.1-only
+
+if [ "x${UST_TESTS_SRCDIR:-}" != "x" ]; then
+ UTILSSH="$UST_TESTS_SRCDIR/utils/utils.sh"
+else
+ UTILSSH="$(dirname "$0")/../../utils/utils.sh"
+fi
+
+# shellcheck source=../../utils/utils.sh
+source "$UTILSSH"
+
+# shellcheck source=../../utils/tap.sh
+source "$UST_TESTS_SRCDIR/utils/tap.sh"
+
+CURDIR="${UST_TESTS_BUILDDIR}/unit/libcommon"
+
+NUM_TESTS=8
+
+TESTFILE=$(mktemp)
+
+populate_testfile() {
+ local cpumask="$1"
+
+ # shellcheck disable=SC2059
+ printf "$cpumask" > "$TESTFILE"
+}
+
+test_test_get_cpu_mask_from_sysfs() {
+ local cpumask="$1"
+ local result
+
+ # Without '\n'
+ populate_testfile "$cpumask"
+ result=$("${CURDIR}/get_cpu_mask_from_sysfs" "$TESTFILE")
+ test "$cpumask" == "$result"
+ ok $? "test_get_cpu_mask_from_sysfs - without '\n' expected: '$cpumask', result: '$result'"
+
+ # With '\n'
+ populate_testfile "$cpumask\n"
+ result=$("${CURDIR}/get_cpu_mask_from_sysfs" "$TESTFILE")
+ test "$cpumask" == "$result"
+ ok $? "test_get_cpu_mask_from_sysfs - with '\n' expected: '$cpumask', result: '$result'"
+}
+
+plan_tests $NUM_TESTS
+
+test_test_get_cpu_mask_from_sysfs ""
+test_test_get_cpu_mask_from_sysfs "0"
+test_test_get_cpu_mask_from_sysfs "0-3"
+test_test_get_cpu_mask_from_sysfs "0,3-7,9"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/tests/unit/libcommon/test_get_max_cpuid_from_mask.c new/lttng-ust-2.13.4/tests/unit/libcommon/test_get_max_cpuid_from_mask.c
--- old/lttng-ust-2.13.3/tests/unit/libcommon/test_get_max_cpuid_from_mask.c 1970-01-01 01:00:00.000000000 +0100
+++ new/lttng-ust-2.13.4/tests/unit/libcommon/test_get_max_cpuid_from_mask.c 2022-08-19 22:22:55.000000000 +0200
@@ -0,0 +1,77 @@
+/*
+ * SPDX-License-Identifier: LGPL-2.1-only
+ *
+ * Copyright (C) 2022 Michael Jeanson <mjeanson(a)efficios.com>
+ */
+
+#include <string.h>
+
+#include "tap.h"
+
+#include "common/smp.h"
+
+struct parse_test_data {
+ const char *buf;
+ int expected;
+};
+
+static struct parse_test_data parse_test_data[] = {
+ { "", -1 },
+ { "abc", -1 },
+ { ",,,", -1 },
+ { "--", -1 },
+ { ",", -1 },
+ { "-", -1 },
+ { "2147483647", -1 },
+ { "18446744073709551615", -1 },
+ { "0-2147483647", -1 },
+ { "0-18446744073709551615", -1 },
+ { "0", 0 },
+ { "1", 1 },
+ { "0-1", 1 },
+ { "1-3", 3 },
+ { "0,2", 2 },
+ { "1,2", 2 },
+ { "0,4-6,127", 127 },
+ { "0-4095", 4095 },
+
+ { "\n", -1 },
+ { "abc\n", -1 },
+ { ",,,\n", -1 },
+ { "--\n", -1 },
+ { ",\n", -1 },
+ { "-\n", -1 },
+ { "2147483647\n", -1 },
+ { "18446744073709551615\n", -1 },
+ { "0-2147483647\n", -1 },
+ { "0-18446744073709551615\n", -1 },
+ { "0\n", 0 },
+ { "1\n", 1 },
+ { "0-1\n", 1 },
+ { "1-3\n", 3 },
+ { "0,2\n", 2 },
+ { "1,2\n", 2 },
+ { "0,4-6,127\n", 127 },
+ { "0-4095\n", 4095 },
+};
+
+static int parse_test_data_len = sizeof(parse_test_data) / sizeof(parse_test_data[0]);
+
+int main(void)
+{
+ int ret, i;
+
+ plan_tests(parse_test_data_len);
+
+ diag("Testing smp helpers");
+
+ for (i = 0; i < parse_test_data_len; i++) {
+ ret = get_max_cpuid_from_mask(parse_test_data[i].buf,
+ strlen(parse_test_data[i].buf));
+ ok(ret == parse_test_data[i].expected,
+ "get_max_cpuid_from_mask '%s', expected: '%d', result: '%d'",
+ parse_test_data[i].buf, parse_test_data[i].expected, ret);
+ }
+
+ return exit_status();
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/tests/unit/libcommon/test_get_max_cpuid_from_sysfs new/lttng-ust-2.13.4/tests/unit/libcommon/test_get_max_cpuid_from_sysfs
--- old/lttng-ust-2.13.3/tests/unit/libcommon/test_get_max_cpuid_from_sysfs 1970-01-01 01:00:00.000000000 +0100
+++ new/lttng-ust-2.13.4/tests/unit/libcommon/test_get_max_cpuid_from_sysfs 2022-08-19 22:22:55.000000000 +0200
@@ -0,0 +1,89 @@
+#!/bin/bash
+# SPDX-License-Identifier: LGPL-2.1-only
+
+if [ "x${UST_TESTS_SRCDIR:-}" != "x" ]; then
+ UTILSSH="$UST_TESTS_SRCDIR/utils/utils.sh"
+else
+ UTILSSH="$(dirname "$0")/../../utils/utils.sh"
+fi
+
+# shellcheck source=../../utils/utils.sh
+source "$UTILSSH"
+
+# shellcheck source=../../utils/tap.sh
+source "$UST_TESTS_SRCDIR/utils/tap.sh"
+
+CURDIR="${UST_TESTS_BUILDDIR}/unit/libcommon"
+
+STD_OUTPUT="/dev/null"
+STD_ERROR="/dev/null"
+
+NUM_TESTS=13
+
+TESTDIR=$(mktemp -d)
+
+populate_testdir() {
+ local cpus=("$@")
+
+ mkdir "$TESTDIR"
+
+ for i in "${cpus[@]}"; do
+ mkdir "$TESTDIR/$i"
+ done
+}
+
+test_get_max_cpuid_from_sysfs() {
+ local num_cpus=$1
+ shift
+ local current_cpus=("$@")
+ local result
+
+ populate_testdir "${current_cpus[@]}" >"$STD_OUTPUT" 2>"$STD_ERROR"
+ result=$("${CURDIR}/get_max_cpuid_from_sysfs" "$TESTDIR")
+ is "$result" "$num_cpus" "get_max_cpuid_from_sysfs - cpu set: '${current_cpus[*]}', expected: '$num_cpus', result: '$result'"
+ rm -rf "$TESTDIR"
+}
+
+plan_tests $NUM_TESTS
+
+diag "get_max_cpuid_from_sysfs"
+
+test_data=(0 "cpu0")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+test_data=(1 "cpu0" "cpu1")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+test_data=(1 "cpu1" "cpu0")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+test_data=(3 "cpu3")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+test_data=(99 "cpu99")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+test_data=(3 "cpu0" "cpu3")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+test_data=(3 "cpufreq" "cpuidle" "cpu0" "cpu1" "cpu2" "cpu3")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+test_data=(0 "cpu" "cpu0")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+test_data=(5 "cpu" "cpu5")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+
+test_data=(-1 "toto")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+test_data=(-1 "cpu")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+test_data=(-1 "cpua" "cpud")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
+
+test_data=(-1 "cpufreq" "cpuidle")
+test_get_max_cpuid_from_sysfs "${test_data[@]}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lttng-ust-2.13.3/tests/unit/libcommon/test_get_possible_cpus_array_len.c new/lttng-ust-2.13.4/tests/unit/libcommon/test_get_possible_cpus_array_len.c
--- old/lttng-ust-2.13.3/tests/unit/libcommon/test_get_possible_cpus_array_len.c 1970-01-01 01:00:00.000000000 +0100
+++ new/lttng-ust-2.13.4/tests/unit/libcommon/test_get_possible_cpus_array_len.c 2022-08-19 22:22:55.000000000 +0200
@@ -0,0 +1,26 @@
+/*
+ * SPDX-License-Identifier: LGPL-2.1-only
+ *
+ * Copyright (C) 2022 Michael Jeanson <mjeanson(a)efficios.com>
+ */
+
+#include <stdio.h>
+
+#include "tap.h"
+
+#include "common/smp.h"
+
+int main(void)
+{
+ int ret;
+
+ plan_tests(2);
+
+ ret = get_possible_cpus_array_len();
+ ok(ret > 0, "get_possible_cpus_array_len (%d > 0)", ret);
+
+ ret = get_num_possible_cpus_fallback();
+ ok(ret > 0, "get_num_possible_cpus_fallback (%d > 0)", ret);
+
+ return exit_status();
+}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package vim for openSUSE:Factory checked in at 2022-08-30 14:48:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vim (Old)
and /work/SRC/openSUSE:Factory/.vim.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vim"
Tue Aug 30 14:48:39 2022 rev:320 rq:1000020 version:9.0.0313
Changes:
--------
--- /work/SRC/openSUSE:Factory/vim/vim.changes 2022-08-19 17:54:19.923830451 +0200
+++ /work/SRC/openSUSE:Factory/.vim.new.2083/vim.changes 2022-08-30 14:48:49.172019306 +0200
@@ -1,0 +2,95 @@
+Mon Aug 29 12:29:14 UTC 2022 - Ond��ej S��kup <mimi.vx(a)gmail.com>
+
+- Updated to version 9.0.0313, fixes the following problems
+ * Using NULL pointer when skipping compiled code.
+ * Using freed memory with multiple line breaks in expression.
+ * job_start() test may fail under valgrind.
+ * Cannot read error message when abort() is called.
+ * Crash when pattern looks below the last line.
+ * Vim9: error message for missing type is not clear.
+ * No error for comma missing in list in :def function.
+ * Expanding "**" may loop forever with directory links.
+ * Test with BufNewFile autocmd is flaky.
+ * Removing multiple text properties takes many calls.
+ * Cannot make difference between the end of :normal and a character in
+ its argument.
+ * 'autoshelldir' does not work with chunked respose.
+ * Popup menu not removed when 'wildmenu' reset while it is visible.
+ * Mac: cannot build if dispatch.h is not available.
+ * Shift-Tab shows matches on cmdline when 'wildmenu' is off.
+ * Build failure without the +wildmenu feature.
+ * Crash when using ":mkspell" with an empty .dic file.
+ * "make install" does not install shared syntax file. (James McCoy)
+ * "make install" still fails. (Wilhelm Payne)
+ * Text properties "below" sort differently on MS-Windows.
+ * Cannot easily get the list of sourced scripts.
+ * Mechanism to prevent recursive screen updating is incomplete.
+ * Using freed memory when 'tagfunc' deletes the buffer.
+ * Cannot add padding to virtual text without highlight.
+ * Duplicate code in finding a script in the execution stack.
+ * No test for what 9.0.0234 fixes.
+ * Slightly inconsistent error messages.
+ * Test output shows up in git.
+ * Cursor in wrong place after virtual text.
+ * A symlink to an autoload script results in two entries in the list of
+ scripts, items expected in one are actually in the other.
+ * Typo in function name.
+ * Build failure without the eval feature.
+ * Compiler warning for uninitialized variables.
+ * "->" in ":scriptnames" output not tested yet.
+ * Crash with mouse click when not initialized.
+ * Using freed memory when using 'quickfixtextfunc' recursively.
+ * bufload() reads a file even if the name is not a file name. (Cyker Way)
+ * Build failure without the +quickfix feature.
+ * Too many #ifdefs.
+ * No good reason why the "gf" command is not in the tiny version.
+ * Compiler warning for unused argument.
+ * Build error without the +eval feature.
+ * getscriptinfo() does not include the version. Cannot select entries by
+ script name.
+ * Some values of 'path' and 'tags' do not work in the tiny version.
+ * Using INIT() in non-header files.
+ * BufReadCmd not triggered when loading a "nofile" buffer. (Maxim Kim)
+ * Konsole termresponse not recognized.
+ * Netrw plugin does not show remote files.
+ * BufEnter not triggered when using ":edit" in "nofile" buffer.
+ * 'buftype' values not sufficiently tested.
+ * Coverity CI: update-alternatives not needed with Ubuntu 20.04.
+ * The +wildignore feature is nearly always available.
+ * The tiny version has the popup menu but not 'wildmenu'.
+ * The builtin termcap list depends on the version.
+ * Build failure without the +eval feature.
+ * A nested timout stops the previous timeout.
+ * Cannot complete "syn list @cluster".
+ * Using static buffer for multiple completion functions.
+ * It is not easy to change the command line from a plugin.
+ * Using freed memory when location list changed in autocmd.
+ * Irix systems no longer exist.
+ * When 'cmdheight' is zero some messages are not displayed.
+ * Invalid memory write.
+ * Compiler warning for variable set but not used.
+ * Test failing.
+ * Test causes another test to fail.
+ * Messages window not hidden when starting a command line.
+ * Crash when 'cmdheight' is 0 and popup_clear() used.
+ * GUI drop files test sometimes fails.
+ * Message in popup is shortened unnecessary.
+ * Cursor position wrong after right aligned virtual text. (Iizuka Masashi)
+ * Compiler warning for size_t to int conversion.
+ * Error messages for setcmdline() could be better.
+ * 'cpoptions' tests are flaky.
+ * The message window popup is delayed after an error message.
+ * CI for Coverity is bothered by deprecation warnings.
+ * It is not easy to get information about a script.
+ * WinScrolled is not triggered when only skipcol changes.
+ * CI lists useless deprecation warnings.
+ * Buffer write message is two lines in message popup window.
+ * :echomsg doesn't work properly with cmdheight=0.
+ * When cmdheight is zero the attention prompt doesn't show.
+ * Invalid memory access when cmdheight is zero.
+ * Output of :messages dissappears when cmdheight is zero.
+ * Test for hit-Enter prompt fails.
+ * Test for cmdheight zero fails.
+ * Using common name in tests leads to flaky tests.
+
+-------------------------------------------------------------------
Old:
----
vim-9.0.0224.tar.gz
New:
----
vim-9.0.0313.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vim.spec ++++++
--- /var/tmp/diff_new_pack.Y7KplB/_old 2022-08-30 14:48:50.344022297 +0200
+++ /var/tmp/diff_new_pack.Y7KplB/_new 2022-08-30 14:48:50.348022306 +0200
@@ -17,7 +17,7 @@
%define pkg_version 9.0
-%define patchlevel 0224
+%define patchlevel 0313
%define patchlevel_compact %{patchlevel}
%define VIM_SUBDIR vim90
%define site_runtimepath %{_datadir}/vim/site
++++++ vim-9.0.0224.tar.gz -> vim-9.0.0313.tar.gz ++++++
/work/SRC/openSUSE:Factory/vim/vim-9.0.0224.tar.gz /work/SRC/openSUSE:Factory/.vim.new.2083/vim-9.0.0313.tar.gz differ: char 13, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package yast2 for openSUSE:Factory checked in at 2022-08-30 14:48:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2 (Old)
and /work/SRC/openSUSE:Factory/.yast2.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2"
Tue Aug 30 14:48:38 2022 rev:536 rq:1000015 version:4.5.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2/yast2.changes 2022-07-29 16:47:15.910546998 +0200
+++ /work/SRC/openSUSE:Factory/.yast2.new.2083/yast2.changes 2022-08-30 14:48:46.712013029 +0200
@@ -1,0 +2,7 @@
+Fri Aug 26 13:18:39 UTC 2022 - Josef Reidinger <jreidinger(a)suse.com>
+
+- On transactional systems, inform the user that packages are
+ required to be installed manually (related to bsc#1199840)
+- 4.5.11
+
+-------------------------------------------------------------------
Old:
----
yast2-4.5.10.tar.bz2
New:
----
yast2-4.5.11.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2.spec ++++++
--- /var/tmp/diff_new_pack.p5gpOf/_old 2022-08-30 14:48:47.396014775 +0200
+++ /var/tmp/diff_new_pack.p5gpOf/_new 2022-08-30 14:48:47.404014795 +0200
@@ -17,7 +17,7 @@
Name: yast2
-Version: 4.5.10
+Version: 4.5.11
Release: 0
Summary: YaST2 Main Package
++++++ yast2-4.5.10.tar.bz2 -> yast2-4.5.11.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.5.10/library/packages/src/modules/Package.rb new/yast2-4.5.11/library/packages/src/modules/Package.rb
--- old/yast2-4.5.10/library/packages/src/modules/Package.rb 2022-07-28 12:32:46.000000000 +0200
+++ new/yast2-4.5.11/library/packages/src/modules/Package.rb 2022-08-29 14:03:07.000000000 +0200
@@ -34,9 +34,11 @@
require "forwardable"
require "y2packager/resolvable"
+Yast.import "CommandLine"
Yast.import "Mode"
Yast.import "PackageAI"
Yast.import "PackageSystem"
+Yast.import "Popup"
module Yast
# This module implements support to query, install and remove packages.
@@ -329,14 +331,15 @@
# @param [String] message optional installation|removal text (nil -> standard will be used)
# @return true on success
def PackageDialog(packages, install, message)
- packages = deep_copy(packages)
- Builtins.y2debug("Asking for packages: %1", packages)
+ log.info "Asking for packages: #{packages}"
packs = Builtins.filter(packages) do |package|
install ? !Installed(package) : Installed(package)
end
- Builtins.y2debug("Remaining packages: %1", packs)
+ log.info "Remaining packages: #{packs}"
+
+ return true if packs.empty?
- return true if Ops.less_than(Builtins.size(packs), 1)
+ check_transactional_system!(packs, install ? :install : :remove)
# Popup Text
text = _("These packages need to be installed:") + "<p>"
@@ -452,30 +455,47 @@
@last_op_canceled
end
- publish function: :by_pattern, type: "list <string> (string)"
+ # Return if system is transactional and does not support direct package
+ # install
+ # @return [Boolean]
+ def IsTransactionalSystem
+ return @transactional unless @transactional.nil?
+
+ mounts = SCR.Read(path(".proc.mounts"))
+ root = mounts.find { |m| m["file"] == WFM.scr_root }
+ log.info "root in mounts #{root.inspect}"
+
+ raise "Failed to find #{WFM.scr_root} at /proc/mounts" unless root
+
+ # check if there are ro keyword in mount
+ @transactional = /(?:^|,)ro(?:,|$)/.match?(root["mntops"])
+ end
+
publish function: :Available, type: "boolean (string)"
- publish function: :Installed, type: "boolean (string)"
- publish function: :DoInstall, type: "boolean (list <string>)"
- publish function: :DoRemove, type: "boolean (list <string>)"
- publish function: :DoInstallAndRemove, type: "boolean (list <string>, list <string>)"
publish function: :AvailableAll, type: "boolean (list <string>)"
publish function: :AvailableAny, type: "boolean (list <string>)"
- publish function: :InstalledAll, type: "boolean (list <string>)"
- publish function: :InstalledAny, type: "boolean (list <string>)"
- publish function: :InstallMsg, type: "boolean (string, string)"
- publish function: :InstallAllMsg, type: "boolean (list <string>, string)"
- publish function: :InstallAnyMsg, type: "boolean (list <string>, string)"
- publish function: :RemoveMsg, type: "boolean (string, string)"
- publish function: :RemoveAllMsg, type: "boolean (list <string>, string)"
+ publish function: :DoInstall, type: "boolean (list <string>)"
+ publish function: :DoInstallAndRemove, type: "boolean (list <string>, list <string>)"
+ publish function: :DoRemove, type: "boolean (list <string>)"
publish function: :Install, type: "boolean (string)"
publish function: :InstallAll, type: "boolean (list <string>)"
+ publish function: :InstallAllMsg, type: "boolean (list <string>, string)"
publish function: :InstallAny, type: "boolean (list <string>)"
- publish function: :Remove, type: "boolean (string)"
- publish function: :RemoveAll, type: "boolean (list <string>)"
+ publish function: :InstallAnyMsg, type: "boolean (list <string>, string)"
+ publish function: :InstallKernel, type: "boolean (list <string>)"
+ publish function: :InstallMsg, type: "boolean (string, string)"
+ publish function: :Installed, type: "boolean (string)"
+ publish function: :InstalledAll, type: "boolean (list <string>)"
+ publish function: :InstalledAny, type: "boolean (list <string>)"
publish function: :LastOperationCanceled, type: "boolean ()"
publish function: :PackageAvailable, type: "boolean (string)"
publish function: :PackageInstalled, type: "boolean (string)"
- publish function: :InstallKernel, type: "boolean (list <string>)"
+ publish function: :Remove, type: "boolean (string)"
+ publish function: :RemoveAll, type: "boolean (list <string>)"
+ publish function: :RemoveAllMsg, type: "boolean (list <string>, string)"
+ publish function: :RemoveMsg, type: "boolean (string, string)"
+ publish function: :IsTransactionalSystem, type: "boolean ()"
+ publish function: :by_pattern, type: "list <string> (string)"
private
@@ -512,6 +532,24 @@
found_backend || backend
end
+
+ # checks if working on transactional system
+ # if so, then it shows popup to user and abort yast
+ def check_transactional_system!(packages, mode = :install)
+ return unless IsTransactionalSystem()
+
+ msg = _("Transactional system detected. ")
+ case mode
+ when :install then msg += _("Following packages have to be installed manually:")
+ when :remove then msg += _("Following packages have to be removed manually:")
+ else
+ raise "Unknown mode #{mode}"
+ end
+ msg += "<p><ul><li>#{packages.join("</li><li>")}</li></ul></p>"
+ msg += _("Please start YaST again after reboot.")
+ Popup.LongMessage(msg)
+ raise Yast::AbortException
+ end
end
Package = PackageClass.new
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.5.10/library/packages/test/package_test.rb new/yast2-4.5.11/library/packages/test/package_test.rb
--- old/yast2-4.5.10/library/packages/test/package_test.rb 2022-07-28 12:32:46.000000000 +0200
+++ new/yast2-4.5.11/library/packages/test/package_test.rb 2022-08-29 14:03:07.000000000 +0200
@@ -25,6 +25,11 @@
describe Yast::Package do
subject { Yast::Package }
+ before do
+ # reset cache
+ subject.instance_variable_set(:@transactional, nil)
+ end
+
describe "#CheckAndInstallPackages" do
let(:installed) { false }
@@ -361,6 +366,35 @@
allow(Yast::Mode).to receive(:commandline).and_return(commandline)
allow(Yast::CommandLine).to receive(:Interactive).and_return(interactive)
allow(Yast::Popup).to receive(:AnyQuestionRichText).and_return(confirm)
+
+ allow(Yast::SCR).to receive(:Read).and_return(
+ [{
+ "file" => "/",
+ "freq" => 0,
+ "mntops" => "rw,relatime",
+ "passno" => 0,
+ "spec" => "/dev/nvme0n1p2",
+ "vfstype" => "ext4"
+ }]
+ )
+ end
+
+ context "when run on transactional system" do
+ it "shows popup and abort" do
+ allow(Yast::SCR).to receive(:Read).and_return(
+ [{
+ "file" => "/",
+ "freq" => 0,
+ "mntops" => "ro,relatime",
+ "passno" => 0,
+ "spec" => "/dev/nvme0n1p2",
+ "vfstype" => "ext4"
+ }]
+ )
+
+ expect(Yast::Popup).to receive(:LongMessage)
+ expect { subject.PackageDialog(packages, true, nil) }.to raise_error(Yast::AbortException)
+ end
end
context "when installing packages" do
@@ -558,4 +592,36 @@
subject.RemoveAllMsg(["firewalld", "yast2"], "Remove?")
end
end
+
+ describe "#IsTransactionalSystem" do
+ it "returns false if system is not transactional" do
+ allow(Yast::SCR).to receive(:Read).and_return(
+ [{
+ "file" => "/",
+ "freq" => 0,
+ "mntops" => "rw,relatime",
+ "passno" => 0,
+ "spec" => "/dev/nvme0n1p2",
+ "vfstype" => "ext4"
+ }]
+ )
+
+ expect(subject.IsTransactionalSystem).to eq false
+ end
+
+ it "returns true if system is transactional" do
+ allow(Yast::SCR).to receive(:Read).and_return(
+ [{
+ "file" => "/",
+ "freq" => 0,
+ "mntops" => "ro,seclabel,relatime,subvolid=244,subvol=/(a)/.snapshots/8/snapshot",
+ "passno" => 0,
+ "spec" => "/dev/vda3",
+ "vfstype" => "ext4"
+ }]
+ )
+
+ expect(subject.IsTransactionalSystem).to eq true
+ end
+ end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.5.10/package/yast2.changes new/yast2-4.5.11/package/yast2.changes
--- old/yast2-4.5.10/package/yast2.changes 2022-07-28 12:32:46.000000000 +0200
+++ new/yast2-4.5.11/package/yast2.changes 2022-08-29 14:03:07.000000000 +0200
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Fri Aug 26 13:18:39 UTC 2022 - Josef Reidinger <jreidinger(a)suse.com>
+
+- On transactional systems, inform the user that packages are
+ required to be installed manually (related to bsc#1199840)
+- 4.5.11
+
+-------------------------------------------------------------------
Thu Jul 28 09:40:31 UTC 2022 - David Diaz <dgonzalez(a)suse.com>
- Do not ask for user input while checking file conflicts if the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.5.10/package/yast2.spec new/yast2-4.5.11/package/yast2.spec
--- old/yast2-4.5.10/package/yast2.spec 2022-07-28 12:32:46.000000000 +0200
+++ new/yast2-4.5.11/package/yast2.spec 2022-08-29 14:03:07.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2
-Version: 4.5.10
+Version: 4.5.11
Release: 0
Summary: YaST2 Main Package
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-jaraco.classes for openSUSE:Factory checked in at 2022-08-30 14:48:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jaraco.classes (Old)
and /work/SRC/openSUSE:Factory/.python-jaraco.classes.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jaraco.classes"
Tue Aug 30 14:48:38 2022 rev:6 rq:1000014 version:3.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jaraco.classes/python-jaraco.classes.changes 2022-03-29 18:14:18.651066983 +0200
+++ /work/SRC/openSUSE:Factory/.python-jaraco.classes.new.2083/python-jaraco.classes.changes 2022-08-30 14:48:45.684010406 +0200
@@ -1,0 +2,13 @@
+Mon Aug 29 11:46:38 UTC 2022 - Ben Greiner <code(a)bnavigator.de>
+
+- update to 3.2.2
+ * Refreshed package metadata.
+ * Enrolled with Tidelift.
+- Switch to PEP517 and remove obsolete jaraco.base requirement
+
+-------------------------------------------------------------------
+Mon Aug 29 08:55:57 UTC 2022 - Steve Kowalik <steven.kowalik(a)suse.com>
+
+- Add missing more-itertools to {Build,}Requires.
+
+-------------------------------------------------------------------
Old:
----
jaraco.classes-3.2.1.tar.gz
New:
----
jaraco.classes-3.2.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jaraco.classes.spec ++++++
--- /var/tmp/diff_new_pack.zsZMGM/_old 2022-08-30 14:48:46.232011804 +0200
+++ /var/tmp/diff_new_pack.zsZMGM/_new 2022-08-30 14:48:46.236011814 +0200
@@ -16,22 +16,23 @@
#
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%define skip_python2 1
Name: python-jaraco.classes
-Version: 3.2.1
+Version: 3.2.2
Release: 0
Summary: Tools to work with classes
License: MIT
URL: https://github.com/jaraco/jaraco.classes
Source0: https://files.pythonhosted.org/packages/source/j/jaraco.classes/jaraco.clas…
-BuildRequires: %{python_module jaraco.base >= 6.1}
+BuildRequires: %{python_module base >= 3.7}
+BuildRequires: %{python_module more-itertools}
+BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest}
-BuildRequires: %{python_module setuptools_scm}
-BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module setuptools >= 56}
+BuildRequires: %{python_module setuptools_scm >= 3.4.1}
+BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-jaraco.base >= 6.1
+Requires: python-more-itertools
BuildArch: noarch
%python_subpackages
@@ -40,14 +41,13 @@
%prep
%setup -q -n jaraco.classes-%{version}
-sed -i 's/--flake8//' pytest.ini
-sed -i 's/--black --cov//' pytest.ini
%build
-%python_build
+%pyproject_wheel
%install
-%python_install
+%pyproject_install
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
%pytest
@@ -55,7 +55,8 @@
%files %{python_files}
%license LICENSE
%doc docs/*.rst README.rst CHANGES.rst
-%{python_sitelib}/jaraco.classes-%{version}-py*.egg-info
+%dir %{python_sitelib}/jaraco
%{python_sitelib}/jaraco/classes
+%{python_sitelib}/jaraco.classes-%{version}*-info
%changelog
++++++ jaraco.classes-3.2.1.tar.gz -> jaraco.classes-3.2.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/.coveragerc new/jaraco.classes-3.2.2/.coveragerc
--- old/jaraco.classes-3.2.1/.coveragerc 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/.coveragerc 2022-07-13 04:22:18.000000000 +0200
@@ -1,5 +1,8 @@
[run]
-omit = .tox/*
+omit =
+ # leading `*/` for pytest-dev/pytest-cov#456
+ */.tox/*
+ */pep517-build-env-*
[report]
show_missing = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/.editorconfig new/jaraco.classes-3.2.2/.editorconfig
--- old/jaraco.classes-3.2.1/.editorconfig 1970-01-01 01:00:00.000000000 +0100
+++ new/jaraco.classes-3.2.2/.editorconfig 2022-07-13 04:22:18.000000000 +0200
@@ -0,0 +1,19 @@
+root = true
+
+[*]
+charset = utf-8
+indent_style = tab
+indent_size = 4
+insert_final_newline = true
+end_of_line = lf
+
+[*.py]
+indent_style = space
+max_line_length = 88
+
+[*.{yml,yaml}]
+indent_style = space
+indent_size = 2
+
+[*.rst]
+indent_style = space
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/.github/FUNDING.yml new/jaraco.classes-3.2.2/.github/FUNDING.yml
--- old/jaraco.classes-3.2.1/.github/FUNDING.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/jaraco.classes-3.2.2/.github/FUNDING.yml 2022-07-13 04:22:18.000000000 +0200
@@ -0,0 +1 @@
+tidelift: pypi/jaraco.classes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/.github/dependabot.yml new/jaraco.classes-3.2.2/.github/dependabot.yml
--- old/jaraco.classes-3.2.1/.github/dependabot.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/jaraco.classes-3.2.2/.github/dependabot.yml 2022-07-13 04:22:18.000000000 +0200
@@ -0,0 +1,8 @@
+version: 2
+updates:
+ - package-ecosystem: "pip"
+ directory: "/"
+ schedule:
+ interval: "daily"
+ allow:
+ - dependency-type: "all"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/.github/workflows/automerge.yml new/jaraco.classes-3.2.2/.github/workflows/automerge.yml
--- old/jaraco.classes-3.2.1/.github/workflows/automerge.yml 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/.github/workflows/automerge.yml 1970-01-01 01:00:00.000000000 +0100
@@ -1,27 +0,0 @@
-name: automerge
-on:
- pull_request:
- types:
- - labeled
- - unlabeled
- - synchronize
- - opened
- - edited
- - ready_for_review
- - reopened
- - unlocked
- pull_request_review:
- types:
- - submitted
- check_suite:
- types:
- - completed
- status: {}
-jobs:
- automerge:
- runs-on: ubuntu-latest
- steps:
- - name: automerge
- uses: "pascalgn/automerge-action(a)v0.12.0"
- env:
- GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/.github/workflows/main.yml new/jaraco.classes-3.2.2/.github/workflows/main.yml
--- old/jaraco.classes-3.2.1/.github/workflows/main.yml 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/.github/workflows/main.yml 2022-07-13 04:22:18.000000000 +0200
@@ -6,13 +6,21 @@
test:
strategy:
matrix:
- python: [3.6, 3.8, 3.9]
- platform: [ubuntu-latest, macos-latest, windows-latest]
+ 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
+ platform:
+ - ubuntu-latest
+ - macos-latest
+ - windows-latest
runs-on: ${{ matrix.platform }}
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python }}
- name: Install tox
@@ -21,17 +29,32 @@
- name: Run tests
run: tox
+ check: # This job does nothing and is only used for the branch protection
+ if: always()
+
+ needs:
+ - test
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Decide whether the needed jobs succeeded or failed
+ uses: re-actors/alls-green@release/v1
+ with:
+ jobs: ${{ toJSON(needs) }}
+
release:
- needs: test
+ needs:
+ - check
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v3
with:
- python-version: 3.9
+ python-version: "3.10"
- name: Install tox
run: |
python -m pip install tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/.pre-commit-config.yaml new/jaraco.classes-3.2.2/.pre-commit-config.yaml
--- old/jaraco.classes-3.2.1/.pre-commit-config.yaml 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/.pre-commit-config.yaml 2022-07-13 04:22:18.000000000 +0200
@@ -1,10 +1,5 @@
repos:
- repo: https://github.com/psf/black
- rev: 20.8b1
+ rev: 22.6.0
hooks:
- id: black
-
-- repo: https://github.com/asottile/blacken-docs
- rev: v1.9.1
- hooks:
- - id: blacken-docs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/CHANGES.rst new/jaraco.classes-3.2.2/CHANGES.rst
--- old/jaraco.classes-3.2.1/CHANGES.rst 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/CHANGES.rst 2022-07-13 04:22:18.000000000 +0200
@@ -1,3 +1,10 @@
+v3.2.2
+======
+
+Refreshed package metadata.
+
+Enrolled with Tidelift.
+
v3.2.1
======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/PKG-INFO new/jaraco.classes-3.2.2/PKG-INFO
--- old/jaraco.classes-3.2.1/PKG-INFO 2021-02-21 19:46:32.540176400 +0100
+++ new/jaraco.classes-3.2.2/PKG-INFO 2022-07-13 04:22:39.767603200 +0200
@@ -1,36 +1,57 @@
Metadata-Version: 2.1
Name: jaraco.classes
-Version: 3.2.1
+Version: 3.2.2
Summary: Utility functions for Python class constructs
Home-page: https://github.com/jaraco/jaraco.classes
Author: Jason R. Coombs
Author-email: jaraco(a)jaraco.com
-License: UNKNOWN
-Description: .. image:: https://img.shields.io/pypi/v/jaraco.classes.svg
- :target: `PyPI link`_
-
- .. image:: https://img.shields.io/pypi/pyversions/jaraco.classes.svg
- :target: `PyPI link`_
-
- .. _PyPI link: https://pypi.org/project/jaraco.ui
-
- .. image:: https://github.com/jaraco/jaraco.classes/workflows/tests/badge.svg
- :target: https://github.com/jaraco/jaraco.classes/actions?query=workflow%3A%22tests%…
- :alt: tests
-
- .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
- :target: https://github.com/psf/black
- :alt: Code style: Black
-
- .. .. image:: https://readthedocs.org/projects/skeleton/badge/?version=latest
- .. :target: https://skeleton.readthedocs.io/en/latest/?badge=latest
-
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
-Requires-Python: >=3.6
+Requires-Python: >=3.7
Provides-Extra: testing
Provides-Extra: docs
+License-File: LICENSE
+
+.. image:: https://img.shields.io/pypi/v/jaraco.classes.svg
+ :target: `PyPI link`_
+
+.. image:: https://img.shields.io/pypi/pyversions/jaraco.classes.svg
+ :target: `PyPI link`_
+
+.. _PyPI link: https://pypi.org/project/jaraco.ui
+
+.. image:: https://github.com/jaraco/jaraco.classes/workflows/tests/badge.svg
+ :target: https://github.com/jaraco/jaraco.classes/actions?query=workflow%3A%22tests%…
+ :alt: tests
+
+.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
+ :target: https://github.com/psf/black
+ :alt: Code style: Black
+
+.. .. image:: https://readthedocs.org/projects/skeleton/badge/?version=latest
+.. :target: https://skeleton.readthedocs.io/en/latest/?badge=latest
+
+.. image:: https://img.shields.io/badge/skeleton-2022-informational
+ :target: https://blog.jaraco.com/skeleton
+
+.. image:: https://tidelift.com/badges/package/pypi/jaraco.classes
+ :target: https://tidelift.com/subscription/pkg/pypi-jaraco.classes?utm_source=pypi-j…
+
+For Enterprise
+==============
+
+Available as part of the Tidelift Subscription.
+
+This project and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use.
+
+`Learn more <https://tidelift.com/subscription/pkg/pypi-jaraco.classes?utm_source=pypi-j…>`_.
+
+Security Contact
+================
+
+To report a security vulnerability, please use the
+`Tidelift security contact <https://tidelift.com/security>`_.
+Tidelift will coordinate the fix and disclosure.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/README.rst new/jaraco.classes-3.2.2/README.rst
--- old/jaraco.classes-3.2.1/README.rst 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/README.rst 2022-07-13 04:22:18.000000000 +0200
@@ -16,3 +16,25 @@
.. .. image:: https://readthedocs.org/projects/skeleton/badge/?version=latest
.. :target: https://skeleton.readthedocs.io/en/latest/?badge=latest
+
+.. image:: https://img.shields.io/badge/skeleton-2022-informational
+ :target: https://blog.jaraco.com/skeleton
+
+.. image:: https://tidelift.com/badges/package/pypi/jaraco.classes
+ :target: https://tidelift.com/subscription/pkg/pypi-jaraco.classes?utm_source=pypi-j…
+
+For Enterprise
+==============
+
+Available as part of the Tidelift Subscription.
+
+This project and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use.
+
+`Learn more <https://tidelift.com/subscription/pkg/pypi-jaraco.classes?utm_source=pypi-j…>`_.
+
+Security Contact
+================
+
+To report a security vulnerability, please use the
+`Tidelift security contact <https://tidelift.com/security>`_.
+Tidelift will coordinate the fix and disclosure.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/docs/conf.py new/jaraco.classes-3.2.2/docs/conf.py
--- old/jaraco.classes-3.2.1/docs/conf.py 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/docs/conf.py 2022-07-13 04:22:18.000000000 +0200
@@ -19,8 +19,20 @@
),
dict(
pattern=r'PEP[- ](?P<pep_number>\d+)',
- url='https://www.python.org/dev/peps/pep-{pep_number:0>4}/',
+ url='https://peps.python.org/pep-{pep_number:0>4}/',
),
],
)
}
+
+# Be strict about any broken references:
+nitpicky = True
+
+# Include Python intersphinx mapping to prevent failures
+# jaraco/skeleton#51
+extensions += ['sphinx.ext.intersphinx']
+intersphinx_mapping = {
+ 'python': ('https://docs.python.org/3', None),
+}
+
+extensions += ['jaraco.tidelift']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/docs/index.rst new/jaraco.classes-3.2.2/docs/index.rst
--- old/jaraco.classes-3.2.1/docs/index.rst 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/docs/index.rst 2022-07-13 04:22:18.000000000 +0200
@@ -7,6 +7,8 @@
history
+.. tidelift-referral-banner::
+
.. automodule:: jaraco.classes.ancestry
:members:
:undoc-members:
@@ -29,4 +31,3 @@
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/jaraco.classes.egg-info/PKG-INFO new/jaraco.classes-3.2.2/jaraco.classes.egg-info/PKG-INFO
--- old/jaraco.classes-3.2.1/jaraco.classes.egg-info/PKG-INFO 2021-02-21 19:46:32.000000000 +0100
+++ new/jaraco.classes-3.2.2/jaraco.classes.egg-info/PKG-INFO 2022-07-13 04:22:39.000000000 +0200
@@ -1,36 +1,57 @@
Metadata-Version: 2.1
Name: jaraco.classes
-Version: 3.2.1
+Version: 3.2.2
Summary: Utility functions for Python class constructs
Home-page: https://github.com/jaraco/jaraco.classes
Author: Jason R. Coombs
Author-email: jaraco(a)jaraco.com
-License: UNKNOWN
-Description: .. image:: https://img.shields.io/pypi/v/jaraco.classes.svg
- :target: `PyPI link`_
-
- .. image:: https://img.shields.io/pypi/pyversions/jaraco.classes.svg
- :target: `PyPI link`_
-
- .. _PyPI link: https://pypi.org/project/jaraco.ui
-
- .. image:: https://github.com/jaraco/jaraco.classes/workflows/tests/badge.svg
- :target: https://github.com/jaraco/jaraco.classes/actions?query=workflow%3A%22tests%…
- :alt: tests
-
- .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
- :target: https://github.com/psf/black
- :alt: Code style: Black
-
- .. .. image:: https://readthedocs.org/projects/skeleton/badge/?version=latest
- .. :target: https://skeleton.readthedocs.io/en/latest/?badge=latest
-
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
-Requires-Python: >=3.6
+Requires-Python: >=3.7
Provides-Extra: testing
Provides-Extra: docs
+License-File: LICENSE
+
+.. image:: https://img.shields.io/pypi/v/jaraco.classes.svg
+ :target: `PyPI link`_
+
+.. image:: https://img.shields.io/pypi/pyversions/jaraco.classes.svg
+ :target: `PyPI link`_
+
+.. _PyPI link: https://pypi.org/project/jaraco.ui
+
+.. image:: https://github.com/jaraco/jaraco.classes/workflows/tests/badge.svg
+ :target: https://github.com/jaraco/jaraco.classes/actions?query=workflow%3A%22tests%…
+ :alt: tests
+
+.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
+ :target: https://github.com/psf/black
+ :alt: Code style: Black
+
+.. .. image:: https://readthedocs.org/projects/skeleton/badge/?version=latest
+.. :target: https://skeleton.readthedocs.io/en/latest/?badge=latest
+
+.. image:: https://img.shields.io/badge/skeleton-2022-informational
+ :target: https://blog.jaraco.com/skeleton
+
+.. image:: https://tidelift.com/badges/package/pypi/jaraco.classes
+ :target: https://tidelift.com/subscription/pkg/pypi-jaraco.classes?utm_source=pypi-j…
+
+For Enterprise
+==============
+
+Available as part of the Tidelift Subscription.
+
+This project and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use.
+
+`Learn more <https://tidelift.com/subscription/pkg/pypi-jaraco.classes?utm_source=pypi-j…>`_.
+
+Security Contact
+================
+
+To report a security vulnerability, please use the
+`Tidelift security contact <https://tidelift.com/security>`_.
+Tidelift will coordinate the fix and disclosure.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/jaraco.classes.egg-info/SOURCES.txt new/jaraco.classes-3.2.2/jaraco.classes.egg-info/SOURCES.txt
--- old/jaraco.classes-3.2.1/jaraco.classes.egg-info/SOURCES.txt 2021-02-21 19:46:32.000000000 +0100
+++ new/jaraco.classes-3.2.2/jaraco.classes.egg-info/SOURCES.txt 2022-07-13 04:22:39.000000000 +0200
@@ -1,4 +1,5 @@
.coveragerc
+.editorconfig
.flake8
.pre-commit-config.yaml
.readthedocs.yml
@@ -9,10 +10,9 @@
pyproject.toml
pytest.ini
setup.cfg
-setup.py
-skeleton.md
tox.ini
-.github/workflows/automerge.yml
+.github/FUNDING.yml
+.github/dependabot.yml
.github/workflows/main.yml
docs/conf.py
docs/history.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/jaraco.classes.egg-info/requires.txt new/jaraco.classes-3.2.2/jaraco.classes.egg-info/requires.txt
--- old/jaraco.classes-3.2.1/jaraco.classes.egg-info/requires.txt 2021-02-21 19:46:32.000000000 +0100
+++ new/jaraco.classes-3.2.2/jaraco.classes.egg-info/requires.txt 2022-07-13 04:22:39.000000000 +0200
@@ -2,16 +2,17 @@
[docs]
sphinx
-jaraco.packaging>=8.2
+jaraco.packaging>=9
rst.linker>=1.9
+jaraco.tidelift>=1.4
[testing]
-pytest!=3.7.3,>=3.5
-pytest-checkdocs>=1.2.3
+pytest>=6
+pytest-checkdocs>=2.4
pytest-flake8
pytest-cov
-pytest-enabler
+pytest-enabler>=1.3
[testing:platform_python_implementation != "PyPy"]
pytest-black>=0.3.7
-pytest-mypy
+pytest-mypy>=0.9.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/pyproject.toml new/jaraco.classes-3.2.2/pyproject.toml
--- old/jaraco.classes-3.2.1/pyproject.toml 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/pyproject.toml 2022-07-13 04:22:18.000000000 +0200
@@ -1,5 +1,5 @@
[build-system]
-requires = ["setuptools>=42", "wheel", "setuptools_scm[toml]>=3.4.1"]
+requires = ["setuptools>=56", "setuptools_scm[toml]>=3.4.1"]
build-backend = "setuptools.build_meta"
[tool.black]
@@ -7,14 +7,14 @@
[tool.setuptools_scm]
-[pytest.enabler.black]
+[tool.pytest-enabler.black]
addopts = "--black"
-[pytest.enabler.mypy]
+[tool.pytest-enabler.mypy]
addopts = "--mypy"
-[pytest.enabler.flake8]
+[tool.pytest-enabler.flake8]
addopts = "--flake8"
-[pytest.enabler.cov]
+[tool.pytest-enabler.cov]
addopts = "--cov"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/pytest.ini new/jaraco.classes-3.2.2/pytest.ini
--- old/jaraco.classes-3.2.1/pytest.ini 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/pytest.ini 2022-07-13 04:22:18.000000000 +0200
@@ -2,8 +2,16 @@
norecursedirs=dist build .tox .eggs
addopts=--doctest-modules
doctest_optionflags=ALLOW_UNICODE ELLIPSIS
-# workaround for warning pytest-dev/pytest#6178
-junit_family=xunit2
filterwarnings=
- # https://github.com/pytest-dev/pytest/issues/6928
- ignore:direct construction of .*Item has been deprecated:DeprecationWarning
+ # Suppress deprecation warning in flake8
+ ignore:SelectableGroups dict interface is deprecated::flake8
+
+ # shopkeep/pytest-black#55
+ ignore:<class 'pytest_black.BlackItem'> is not using a cooperative constructor:pytest.PytestDeprecationWarning
+ ignore:The \(fspath. py.path.local\) argument to BlackItem is deprecated.:pytest.PytestDeprecationWarning
+ ignore:BlackItem is an Item subclass and should not be a collector:pytest.PytestWarning
+
+ # tholo/pytest-flake8#83
+ ignore:<class 'pytest_flake8.Flake8Item'> is not using a cooperative constructor:pytest.PytestDeprecationWarning
+ ignore:The \(fspath. py.path.local\) argument to Flake8Item is deprecated.:pytest.PytestDeprecationWarning
+ ignore:Flake8Item is an Item subclass and should not be a collector:pytest.PytestWarning
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/setup.cfg new/jaraco.classes-3.2.2/setup.cfg
--- old/jaraco.classes-3.2.1/setup.cfg 2021-02-21 19:46:32.540176400 +0100
+++ new/jaraco.classes-3.2.2/setup.cfg 2022-07-13 04:22:39.767603200 +0200
@@ -1,6 +1,4 @@
[metadata]
-license_files =
- LICENSE
name = jaraco.classes
author = Jason R. Coombs
author_email = jaraco(a)jaraco.com
@@ -17,10 +15,9 @@
[options]
packages = find_namespace:
include_package_data = true
-python_requires = >=3.6
+python_requires = >=3.7
install_requires =
more_itertools
-setup_requires = setuptools_scm[toml] >= 3.4.1
[options.packages.find]
exclude =
@@ -31,17 +28,20 @@
[options.extras_require]
testing =
- pytest >= 3.5, !=3.7.3
- pytest-checkdocs >= 1.2.3
+ pytest >= 6
+ pytest-checkdocs >= 2.4
pytest-flake8
- pytest-black >= 0.3.7; python_implementation != "PyPy"
+ pytest-black >= 0.3.7; \
+ python_implementation != "PyPy"
pytest-cov
- pytest-mypy; python_implementation != "PyPy"
- pytest-enabler
+ pytest-mypy >= 0.9.1; \
+ python_implementation != "PyPy"
+ pytest-enabler >= 1.3
docs =
sphinx
- jaraco.packaging >= 8.2
+ jaraco.packaging >= 9
rst.linker >= 1.9
+ jaraco.tidelift >= 1.4
[options.entry_points]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/setup.py new/jaraco.classes-3.2.2/setup.py
--- old/jaraco.classes-3.2.1/setup.py 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/setup.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,6 +0,0 @@
-#!/usr/bin/env python
-
-import setuptools
-
-if __name__ == "__main__":
- setuptools.setup()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/skeleton.md new/jaraco.classes-3.2.2/skeleton.md
--- old/jaraco.classes-3.2.1/skeleton.md 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/skeleton.md 1970-01-01 01:00:00.000000000 +0100
@@ -1,166 +0,0 @@
-# Overview
-
-This project is merged with [skeleton](https://github.com/jaraco/skeleton). What is skeleton? It's the scaffolding of a Python project jaraco [introduced in his blog](https://blog.jaraco.com/a-project-skeleton-for-python-projects/). It seeks to provide a means to re-use techniques and inherit advances when managing projects for distribution.
-
-## An SCM-Managed Approach
-
-While maintaining dozens of projects in PyPI, jaraco derives best practices for project distribution and publishes them in the [skeleton repo](https://github.com/jaraco/skeleton), a Git repo capturing the evolution and culmination of these best practices.
-
-It's intended to be used by a new or existing project to adopt these practices and honed and proven techniques. Adopters are encouraged to use the project directly and maintain a small deviation from the technique, make their own fork for more substantial changes unique to their environment or preferences, or simply adopt the skeleton once and abandon it thereafter.
-
-The primary advantage to using an SCM for maintaining these techniques is that those tools help facilitate the merge between the template and its adopting projects.
-
-Another advantage to using an SCM-managed approach is that tools like GitHub recognize that a change in the skeleton is the _same change_ across all projects that merge with that skeleton. Without the ancestry, with a traditional copy/paste approach, a [commit like this](https://github.com/jaraco/skeleton/commit/12eed1326e1bc26ce256e7b3f8c… would produce notifications in the upstream project issue for each and every application, but because it's centralized, GitHub provides just the one notification when the change is added to the skeleton.
-
-# Usage
-
-## new projects
-
-To use skeleton for a new project, simply pull the skeleton into a new project:
-
-```
-$ git init my-new-project
-$ cd my-new-project
-$ git pull gh://jaraco/skeleton
-```
-
-Now customize the project to suit your individual project needs.
-
-## existing projects
-
-If you have an existing project, you can still incorporate the skeleton by merging it into the codebase.
-
-```
-$ git merge skeleton --allow-unrelated-histories
-```
-
-The `--allow-unrelated-histories` is necessary because the history from the skeleton was previously unrelated to the existing codebase. Resolve any merge conflicts and commit to the master, and now the project is based on the shared skeleton.
-
-## Updating
-
-Whenever a change is needed or desired for the general technique for packaging, it can be made in the skeleton project and then merged into each of the derived projects as needed, recommended before each release. As a result, features and best practices for packaging are centrally maintained and readily trickle into a whole suite of packages. This technique lowers the amount of tedious work necessary to create or maintain a project, and coupled with other techniques like continuous integration and deployment, lowers the cost of creating and maintaining refined Python projects to just a few, familiar Git operations.
-
-For example, here's a session of the [path project](https://pypi.org/project/path) pulling non-conflicting changes from the skeleton:
-
-<img src="https://raw.githubusercontent.com/jaraco/skeleton/gh-pages/docs/refresh.svg">
-
-Thereafter, the target project can make whatever customizations it deems relevant to the scaffolding. The project may even at some point decide that the divergence is too great to merit renewed merging with the original skeleton. This approach applies maximal guidance while creating minimal constraints.
-
-## Periodic Collapse
-
-In late 2020, this project [introduced](https://github.com/jaraco/skeleton/issues/27) the idea of a periodic but infrequent (O(years)) collapse of commits to limit the number of commits a new consumer will need to accept to adopt the skeleton.
-
-The full history of commits is collapsed into a single commit and that commit becomes the new mainline head.
-
-When one of these collapse operations happens, any project that previously pulled from the skeleton will no longer have a related history with that new main branch. For those projects, the skeleton provides a "handoff" branch that reconciles the two branches. Any project that has previously merged with the skeleton but now gets an error "fatal: refusing to merge unrelated histories" should instead use the handoff branch once to incorporate the new main branch.
-
-```
-$ git pull https://github.com/jaraco/skeleton 2020-handoff
-```
-
-This handoff needs to be pulled just once and thereafter the project can pull from the main head.
-
-The archive and handoff branches from prior collapses are indicate here:
-
-| refresh | archive | handoff |
-|---------|-----------------|--------------|
-| 2020-12 | archive/2020-12 | 2020-handoff |
-
-# Features
-
-The features/techniques employed by the skeleton include:
-
-- PEP 517/518-based build relying on Setuptools as the build tool
-- Setuptools declarative configuration using setup.cfg
-- tox for running tests
-- A README.rst as reStructuredText with some popular badges, but with Read the Docs and AppVeyor badges commented out
-- A CHANGES.rst file intended for publishing release notes about the project
-- Use of [Black](https://black.readthedocs.io/en/stable/) for code formatting (disabled on unsupported Python 3.5 and earlier)
-- Integrated type checking through [mypy](https://github.com/python/mypy/).
-
-## Packaging Conventions
-
-A pyproject.toml is included to enable PEP 517 and PEP 518 compatibility and declares the requirements necessary to build the project on Setuptools (a minimum version compatible with setup.cfg declarative config).
-
-The setup.cfg file implements the following features:
-
-- Assumes universal wheel for release
-- Advertises the project's LICENSE file (MIT by default)
-- Reads the README.rst file into the long description
-- Some common Trove classifiers
-- Includes all packages discovered in the repo
-- Data files in the package are also included (not just Python files)
-- Declares the required Python versions
-- Declares install requirements (empty by default)
-- Declares setup requirements for legacy environments
-- Supplies two 'extras':
- - testing: requirements for running tests
- - docs: requirements for building docs
- - these extras split the declaration into "upstream" (requirements as declared by the skeleton) and "local" (those specific to the local project); these markers help avoid merge conflicts
-- Placeholder for defining entry points
-
-Additionally, the setup.py file declares `use_scm_version` which relies on [setuptools_scm](https://pypi.org/project/setuptools_scm) to do two things:
-
-- derive the project version from SCM tags
-- ensure that all files committed to the repo are automatically included in releases
-
-## Running Tests
-
-The skeleton assumes the developer has [tox](https://pypi.org/project/tox) installed. The developer is expected to run `tox` to run tests on the current Python version using [pytest](https://pypi.org/project/pytest).
-
-Other environments (invoked with `tox -e {name}`) supplied include:
-
- - a `docs` environment to build the documentation
- - a `release` environment to publish the package to PyPI
-
-A pytest.ini is included to define common options around running tests. In particular:
-
-- rely on default test discovery in the current directory
-- avoid recursing into common directories not containing tests
-- run doctests on modules and invoke Flake8 tests
-- in doctests, allow Unicode literals and regular literals to match, allowing for doctests to run on Python 2 and 3. Also enable ELLIPSES, a default that would be undone by supplying the prior option.
-- filters out known warnings caused by libraries/functionality included by the skeleton
-
-Relies on a .flake8 file to correct some default behaviors:
-
-- disable mutually incompatible rules W503 and W504
-- support for Black format
-
-## Continuous Integration
-
-The project is pre-configured to run Continuous Integration tests.
-
-### Github Actions
-
-[Github Actions](https://docs.github.com/en/free-pro-team@latest/actions) are the preferred provider as they provide free, fast, multi-platform services with straightforward configuration. Configured in `.github/workflows`.
-
-Features include:
-- test against multiple Python versions
-- run on late (and updated) platform versions
-- automated releases of tagged commits
-- [automatic merging of PRs](https://github.com/marketplace/actions/merge-pull-requests) (requires [protecting branches with required status checks](https://docs.github.com/en/free-pro-team@latest/github/administerin…, [not possible through API](https://github.community/t/set-all-status-checks-to-be-required-as-branch-protection-using-the-github-api/119493))
-
-
-### Continuous Deployments
-
-In addition to running tests, an additional publish stage is configured to automatically release tagged commits to PyPI using [API tokens](https://pypi.org/help/#apitoken). The release process expects an authorized token to be configured with each Github project (or org) `PYPI_TOKEN` [secret](https://docs.github.com/en/free-pro-team@latest/actions/reference/e…. Example:
-
-```
-pip-run -q jaraco.develop -- -m jaraco.develop.add-github-secrets
-```
-
-## Building Documentation
-
-Documentation is automatically built by [Read the Docs](https://readthedocs.org) when the project is registered with it, by way of the .readthedocs.yml file. To test the docs build manually, a tox env may be invoked as `tox -e docs`. Both techniques rely on the dependencies declared in `setup.cfg/options.extras_require.docs`.
-
-In addition to building the Sphinx docs scaffolded in `docs/`, the docs build a `history.html` file that first injects release dates and hyperlinks into the CHANGES.rst before incorporating it as history in the docs.
-
-## Cutting releases
-
-By default, tagged commits are released through the continuous integration deploy stage.
-
-Releases may also be cut manually by invoking the tox environment `release` with the PyPI token set as the TWINE_PASSWORD:
-
-```
-TWINE_PASSWORD={token} tox -e release
-```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jaraco.classes-3.2.1/tox.ini new/jaraco.classes-3.2.2/tox.ini
--- old/jaraco.classes-3.2.1/tox.ini 2021-02-21 19:46:09.000000000 +0100
+++ new/jaraco.classes-3.2.2/tox.ini 2022-07-13 04:22:18.000000000 +0200
@@ -19,14 +19,13 @@
testing
changedir = docs
commands =
- python -m sphinx . {toxinidir}/build/html
+ python -m sphinx -W --keep-going . {toxinidir}/build/html
[testenv:release]
skip_install = True
deps =
build
- twine[keyring]>=1.13
- path
+ twine>=3
jaraco.develop>=7.1
passenv =
TWINE_PASSWORD
@@ -34,7 +33,7 @@
setenv =
TWINE_USERNAME = {env:TWINE_USERNAME:__token__}
commands =
- python -c "import path; path.Path('dist').rmtree_p()"
+ python -c "import shutil; shutil.rmtree('dist', ignore_errors=True)"
python -m build
python -m twine upload dist/*
python -m jaraco.develop.create-github-release
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gsoap for openSUSE:Factory checked in at 2022-08-30 14:48:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gsoap (Old)
and /work/SRC/openSUSE:Factory/.gsoap.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gsoap"
Tue Aug 30 14:48:36 2022 rev:77 rq:999988 version:2.8.122
Changes:
--------
--- /work/SRC/openSUSE:Factory/gsoap/gsoap.changes 2022-04-12 21:43:24.487634240 +0200
+++ /work/SRC/openSUSE:Factory/.gsoap.new.2083/gsoap.changes 2022-08-30 14:48:44.352007007 +0200
@@ -1,0 +2,8 @@
+Sun Aug 28 22:30:53 UTC 2022 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 2.8.122
+ * Fixed an issue with wsdl2h generating inconsistent primitive
+ type default values (schema default values extracted from
+ WSDLs and schemas).
+
+-------------------------------------------------------------------
Old:
----
gsoap-2.8.121.tar.xz
New:
----
gsoap-2.8.122.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gsoap.spec ++++++
--- /var/tmp/diff_new_pack.jQhmmi/_old 2022-08-30 14:48:45.300009426 +0200
+++ /var/tmp/diff_new_pack.jQhmmi/_new 2022-08-30 14:48:45.304009436 +0200
@@ -17,8 +17,8 @@
Name: gsoap
-%define lname libgsoap-2_8_121
-Version: 2.8.121
+%define lname libgsoap-2_8_122
+Version: 2.8.122
Release: 0
Summary: Toolkit for SOAP/REST-based C/C++ server and client web service applications
License: SUSE-GPL-2.0+-with-openssl-exception
++++++ gsoap-2.8.121.tar.xz -> gsoap-2.8.122.tar.xz ++++++
/work/SRC/openSUSE:Factory/gsoap/gsoap-2.8.121.tar.xz /work/SRC/openSUSE:Factory/.gsoap.new.2083/gsoap-2.8.122.tar.xz differ: char 26, line 1
++++++ sanitize_source.sh ++++++
--- /var/tmp/diff_new_pack.jQhmmi/_old 2022-08-30 14:48:45.380009630 +0200
+++ /var/tmp/diff_new_pack.jQhmmi/_new 2022-08-30 14:48:45.384009640 +0200
@@ -13,7 +13,7 @@
exit 1;
fi;
-version="2.8.121"
+version="2.8.122"
shortver="2.8" # agh...
if [ ! -e "gsoap_$version.zip" ]; then
wget -c "https://downloads.sf.net/gsoap2/gsoap_$version.zip"
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package foma for openSUSE:Factory checked in at 2022-08-30 14:48:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/foma (Old)
and /work/SRC/openSUSE:Factory/.foma.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "foma"
Tue Aug 30 14:48:34 2022 rev:6 rq:999977 version:0.10.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/foma/foma.changes 2021-08-19 10:00:37.935292124 +0200
+++ /work/SRC/openSUSE:Factory/.foma.new.2083/foma.changes 2022-08-30 14:48:42.488002250 +0200
@@ -1,0 +2,11 @@
+Sat Aug 27 07:27:45 UTC 2022 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 0.10.0
+ * Add runtime options interface.
+ * Fix numerous memory leaks and segfaults.
+ * Skip flags elimination if there are no paths in network.
+ * Fixed syntax error reporting line count in lexc.
+ * Add Python 3 compatibility and Python 3 port of foma2js.perl.
+ * Sort alphabet after eliminating flags.
+
+-------------------------------------------------------------------
Old:
----
foma-0.9.18+git20210604.180b6fe.tar.xz
New:
----
foma-0.10.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ foma.spec ++++++
--- /var/tmp/diff_new_pack.hhneFG/_old 2022-08-30 14:48:43.044003669 +0200
+++ /var/tmp/diff_new_pack.hhneFG/_new 2022-08-30 14:48:43.048003680 +0200
@@ -1,7 +1,7 @@
#
# spec file for package foma
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%{!?make_build:%global make_build make %{?_smp_mflags}}
%define libname libfoma0
Name: foma
-Version: 0.9.18+git20210604.180b6fe
+Version: 0.10.0
Release: 0
Summary: Finite-state compiler and C library
License: Apache-2.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.hhneFG/_old 2022-08-30 14:48:43.080003761 +0200
+++ /var/tmp/diff_new_pack.hhneFG/_new 2022-08-30 14:48:43.084003771 +0200
@@ -1,15 +1,15 @@
<services>
- <service mode="disabled" name="tar_scm">
- <param name="url">https://github.com/mhulden/foma.git</param>
- <param name="scm">git</param>
- <param name="changesgenerate">enable</param>
- <param name="filename">foma</param>
- <param name="versionformat">0.9.18+git%cd.%h</param>
- </service>
- <service mode="disabled" name="recompress">
- <param name="file">*.tar</param>
- <param name="compression">xz</param>
- </service>
- <service mode="disabled" name="set_version"/>
+ <service mode="disabled" name="tar_scm">
+ <param name="url">https://github.com/mhulden/foma</param>
+ <param name="scm">git</param>
+ <param name="filename">foma</param>
+ <param name="revision">dfe1ccb1055af99be0232a26520d247b5fe093bc</param>
+ <param name="versionformat">0.10.0</param>
+ </service>
+ <service mode="disabled" name="recompress">
+ <param name="file">*.tar</param>
+ <param name="compression">xz</param>
+ </service>
+ <service mode="disabled" name="set_version"/>
</services>
++++++ foma-0.9.18+git20210604.180b6fe.tar.xz -> foma-0.10.0.tar.xz ++++++
++++ 6843 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gptfdisk for openSUSE:Factory checked in at 2022-08-30 14:48:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gptfdisk (Old)
and /work/SRC/openSUSE:Factory/.gptfdisk.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gptfdisk"
Tue Aug 30 14:48:35 2022 rev:23 rq:999983 version:1.0.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/gptfdisk/gptfdisk.changes 2021-06-14 23:10:30.348687661 +0200
+++ /work/SRC/openSUSE:Factory/.gptfdisk.new.2083/gptfdisk.changes 2022-08-30 14:48:43.368004495 +0200
@@ -1,0 +2,14 @@
+Sat Aug 27 11:58:11 UTC 2022 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 1.0.9
+ * Added support for aligning partitions' end points, as well as
+ their start points. This support affects the default
+ partition size when using 'n' in gdisk; it affects the
+ default partition size in cgdisk; and it is activated by the
+ new `-I` option in sgdisk.
+ * Added check for too-small disks (most likely to be an issue
+ when trying to use a too-small disk image); program now
+ aborts if this happens.
+ * Added new parition type codes.
+
+-------------------------------------------------------------------
Old:
----
gptfdisk-1.0.8.tar.gz
New:
----
gptfdisk-1.0.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gptfdisk.spec ++++++
--- /var/tmp/diff_new_pack.R3TSmi/_old 2022-08-30 14:48:43.776005536 +0200
+++ /var/tmp/diff_new_pack.R3TSmi/_new 2022-08-30 14:48:43.780005547 +0200
@@ -1,7 +1,7 @@
#
# spec file for package gptfdisk
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: gptfdisk
-Version: 1.0.8
+Version: 1.0.9
Release: 0
Summary: GPT partitioning and MBR repair software
License: GPL-2.0-only
++++++ gptfdisk-1.0.8.tar.gz -> gptfdisk-1.0.9.tar.gz ++++++
++++ 2018 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package sssd for openSUSE:Factory checked in at 2022-08-30 14:48:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sssd (Old)
and /work/SRC/openSUSE:Factory/.sssd.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sssd"
Tue Aug 30 14:48:33 2022 rev:121 rq:999973 version:2.7.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/sssd/sssd.changes 2022-07-05 12:27:44.793894348 +0200
+++ /work/SRC/openSUSE:Factory/.sssd.new.2083/sssd.changes 2022-08-30 14:48:40.987998422 +0200
@@ -1,0 +2,8 @@
+Fri Aug 26 20:54:33 UTC 2022 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 2.7.4
+ * Lock-free client support will be only built if libc provides
+ pthread_key_create() and pthread_once(). For glibc this means
+ version 2.34+.
+
+-------------------------------------------------------------------
Old:
----
sssd-2.7.3.tar.gz
sssd-2.7.3.tar.gz.asc
New:
----
sssd-2.7.4.tar.gz
sssd-2.7.4.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ sssd.spec ++++++
--- /var/tmp/diff_new_pack.UU7xxy/_old 2022-08-30 14:48:41.872000679 +0200
+++ /var/tmp/diff_new_pack.UU7xxy/_new 2022-08-30 14:48:41.880000699 +0200
@@ -17,7 +17,7 @@
Name: sssd
-Version: 2.7.3
+Version: 2.7.4
Release: 0
Summary: System Security Services Daemon
License: GPL-3.0-or-later and LGPL-3.0-or-later
++++++ sssd-2.7.3.tar.gz -> sssd-2.7.4.tar.gz ++++++
/work/SRC/openSUSE:Factory/sssd/sssd-2.7.3.tar.gz /work/SRC/openSUSE:Factory/.sssd.new.2083/sssd-2.7.4.tar.gz differ: char 13, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libatomic_ops for openSUSE:Factory checked in at 2022-08-30 14:48:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libatomic_ops (Old)
and /work/SRC/openSUSE:Factory/.libatomic_ops.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libatomic_ops"
Tue Aug 30 14:48:31 2022 rev:16 rq:999968 version:7.6.14
Changes:
--------
--- /work/SRC/openSUSE:Factory/libatomic_ops/libatomic_ops.changes 2021-09-20 23:33:13.327178687 +0200
+++ /work/SRC/openSUSE:Factory/.libatomic_ops.new.2083/libatomic_ops.changes 2022-08-30 14:48:39.527994698 +0200
@@ -1,0 +2,6 @@
+Thu Aug 25 21:50:14 UTC 2022 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 7.6.14
+ * Avoid AO_stack_t to cross CPU cache line boundary
+
+-------------------------------------------------------------------
Old:
----
libatomic_ops-7.6.12.tar.gz
New:
----
libatomic_ops-7.6.14.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libatomic_ops.spec ++++++
--- /var/tmp/diff_new_pack.F9YIdz/_old 2022-08-30 14:48:40.039996004 +0200
+++ /var/tmp/diff_new_pack.F9YIdz/_new 2022-08-30 14:48:40.043996014 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libatomic_ops
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: libatomic_ops
-Version: 7.6.12
+Version: 7.6.14
Release: 0
Summary: A portable library for atomic memory operations
License: GPL-2.0-or-later AND MIT
++++++ libatomic_ops-7.6.12.tar.gz -> libatomic_ops-7.6.14.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/AUTHORS new/libatomic_ops-7.6.14/AUTHORS
--- old/libatomic_ops-7.6.12/AUTHORS 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/AUTHORS 2022-08-25 21:17:13.000000000 +0200
@@ -12,6 +12,7 @@
Carlos O'Donell <carlos(a)baldric.uwo.ca>
Chris Metcalf <cmetcalf(a)mellanox.com>
Daniel Grayson <dan(a)math.uiuc.edu>
+David Mosberger <davidm(a)hpl.hp.com>
Doug Lea <dl(a)cs.oswego.edu>
Earl Chew <earl_chew(a)agilent.com>
Emmanuel Stapf <manus(a)eiffel.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/ChangeLog new/libatomic_ops-7.6.14/ChangeLog
--- old/libatomic_ops-7.6.12/ChangeLog 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/ChangeLog 2022-08-25 21:17:13.000000000 +0200
@@ -1,4 +1,23 @@
+== [7.6.14] 2022-08-25 ==
+
+* Add note to README that AO malloc code has same license as AO stack
+* Adjust/reformat content of LICENSING.txt
+* Avoid AO_stack_t to cross CPU cache line boundary
+* Do not assume 'ordered except earlier write' for UWP/arm64
+* Do not name GCC intrinsics as C11 ones in ChangeLog and configure
+* Eliminate '-pedantic is not option that controls warnings' GCC-6.3 message
+* Ensure result of AO_test_and_set is always AO_TS_CLEAR or AO_TS_SET
+* Fix 'AO_malloc redefinition' MS VC warning caused by attributes mismatch
+* Fix 'use of undeclared SIG_BLOCK' Clang error if -std=c89 on Cygwin
+* Fix AO_compare_and_swap_full asm code for clang on sparc
+* Fix a typo in comment of AO_stack_push_explicit_aux_release
+* Fix code indentation in main() of test_stack.c
+* Refine AO_UNIPROCESSOR macro description in configure
+* Remove outdated comment about unsupported Win64 in atomic_ops_stack.h
+* Repeat black list check on CAS fail in stack_push_explicit_aux_release
+
+
== [7.6.12] 2021-09-13 ==
* Allow to generalize bool-CAS for sparc (gcc)
@@ -134,16 +153,16 @@
* Fix missing double_compare_and_swap_dd_acquire_read
* Fix reporting about missing and/or/xor_dd_acquire_read (test_atomic)
* Hide AO_locks symbol
-* Implement AO_CLEAR using C11 atomic intrinsic (GCC)
+* Implement AO_CLEAR using atomic intrinsic (GCC)
* Implement CAS_acquire/release/full using __atomic_compare_exchange_n (gcc)
* Implement char and/or/xor and short CAS for msftc ARM and X86[_64]
* Implement char CAS and char/short add for msftc X86[_64] (VS 2013+)
-* Implement compiler_barrier using C11 __atomic_signal_fence (GCC)
+* Implement compiler_barrier using __atomic_signal_fence (GCC)
* Implement int CAS/inc/dec for msftc/x86_64
* Implement short inc/dec directly for msftc ARM and X86[_64]
* Initial ibmc/powerpc (xlc) support
* New configure option (--enable-werror) to treat warnings as compiler errors
-* New macro AO_PREFER_BUILTIN_ATOMICS to rely on C11 atomics fully (AArch64)
+* New macro AO_PREFER_BUILTIN_ATOMICS to rely on GCC atomics fully (AArch64)
* Refine AO_nop_write comment for ARM big.LITTLE architecture
* Refine configure messages when checking for compiler options
* Refine documentation about _full memory ordering suffix
@@ -173,6 +192,18 @@
Also, includes 7.4.6 changes
+== [7.4.18] 2022-08-25 ==
+
+* Avoid AO_stack_t to cross CPU cache line boundary
+* Do not assume 'ordered except earlier write' for UWP/arm64
+* Ensure result of AO_test_and_set is always AO_TS_CLEAR or AO_TS_SET
+* Fix 'use of undeclared SIG_BLOCK' Clang error if -std=c89 on Cygwin
+* Fix a typo in comment of AO_stack_push_explicit_aux_release
+* Fix code indentation in main of test_stack.c
+* Remove outdated comment about unsupported Win64 in atomic_ops_stack.h
+* Repeat black list check on CAS fail in stack_push_explicit_aux_release
+
+
== [7.4.16] 2021-09-13 ==
* Fix gcc/sunc x86 AO_compare_double_and_swap_double missing side effect
@@ -398,6 +429,15 @@
Also, includes 7.2 changes
+== [7.2k] 2022-08-24 ==
+
+* Avoid AO_stack_t to cross CPU cache line boundary
+* Fix a typo in comment of AO_stack_push_explicit_aux_release
+* Fix code indentation in main of test_stack.c
+* Remove outdated comment about unsupported Win64 in atomic_ops_stack.h
+* Repeat black list check on CAS fail in stack_push_explicit_aux_release
+
+
== [7.2j] 2021-09-12 ==
* Fix a typo in arm_v6.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/README.md new/libatomic_ops-7.6.14/README.md
--- old/libatomic_ops-7.6.12/README.md 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/README.md 2022-08-25 21:17:13.000000000 +0200
@@ -2,7 +2,7 @@
IN NEW CODE, PLEASE USE C11 OR C++14 STANDARD ATOMICS INSTEAD OF THIS PACKAGE.
-This is version 7.6.12 of libatomic_ops.
+This is version 7.6.14 of libatomic_ops.
## Download
@@ -49,7 +49,7 @@
* `libatomic_ops.a` is a support library, which is not needed on some
platforms. This is intended to be usable, under some mild restrictions,
in free or proprietary code, as are all the header files.
- See doc/LICENSING.txt.
+ See doc/LICENSING.txt for more details about the licensing.
* `libatomic_ops_gpl.a` contains some higher level facilities. This code is
currently covered by the GPL. The contents currently correspond to
@@ -117,4 +117,5 @@
* Copyright (c) 2009 by Takashi YOSHII. All rights reserved.
-See [LICENSING.txt](doc/LICENSING.txt) for the details.
+Please be aware of the dual nature of the license of libatomic_ops,
+see [LICENSING.txt](doc/LICENSING.txt) for the details.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/configure new/libatomic_ops-7.6.14/configure
--- old/libatomic_ops-7.6.12/configure 2021-09-13 11:12:08.000000000 +0200
+++ new/libatomic_ops-7.6.14/configure 2022-08-25 21:18:08.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libatomic_ops 7.6.12.
+# Generated by GNU Autoconf 2.69 for libatomic_ops 7.6.14.
#
# Report bugs to <https://github.com/ivmai/libatomic_ops/issues>.
#
@@ -590,8 +590,8 @@
# Identity of this package.
PACKAGE_NAME='libatomic_ops'
PACKAGE_TARNAME='libatomic_ops'
-PACKAGE_VERSION='7.6.12'
-PACKAGE_STRING='libatomic_ops 7.6.12'
+PACKAGE_VERSION='7.6.14'
+PACKAGE_STRING='libatomic_ops 7.6.14'
PACKAGE_BUGREPORT='https://github.com/ivmai/libatomic_ops/issues'
PACKAGE_URL=''
@@ -1356,7 +1356,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libatomic_ops 7.6.12 to adapt to many kinds of systems.
+\`configure' configures libatomic_ops 7.6.14 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1428,7 +1428,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libatomic_ops 7.6.12:";;
+ short | recursive ) echo "Configuration of libatomic_ops 7.6.14:";;
esac
cat <<\_ACEOF
@@ -1453,7 +1453,7 @@
--enable-werror Pass -Werror to the C compiler
--enable-assertions Assertion checking
--disable-atomic-intrinsics
- Do not use C11 atomic intrinsics
+ Do not use GCC atomic intrinsics
--enable-gcov Turn on code coverage analysis
--disable-docs Do not build and install documentation
@@ -1549,7 +1549,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libatomic_ops configure 7.6.12
+libatomic_ops configure 7.6.14
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1827,7 +1827,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libatomic_ops $as_me 7.6.12, which was
+It was created by libatomic_ops $as_me 7.6.14, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2807,7 +2807,7 @@
# Define the identity of the package.
PACKAGE='libatomic_ops'
- VERSION='7.6.12'
+ VERSION='7.6.14'
cat >>confdefs.h <<_ACEOF
@@ -13194,7 +13194,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libatomic_ops $as_me 7.6.12, which was
+This file was extended by libatomic_ops $as_me 7.6.14, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -13260,7 +13260,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libatomic_ops config.status 7.6.12
+libatomic_ops config.status 7.6.14
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/configure.ac new/libatomic_ops-7.6.14/configure.ac
--- old/libatomic_ops-7.6.12/configure.ac 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/configure.ac 2022-08-25 21:17:13.000000000 +0200
@@ -12,7 +12,7 @@
dnl Process this file with autoconf to produce configure.
-AC_INIT([libatomic_ops],[7.6.12],https://github.com/ivmai/libatomic_ops/issues)
+AC_INIT([libatomic_ops],[7.6.14],https://github.com/ivmai/libatomic_ops/issues)
AC_PREREQ(2.61)
AC_CANONICAL_TARGET([])
@@ -124,10 +124,10 @@
AC_ARG_ENABLE(atomic-intrinsics,
[AC_HELP_STRING([--disable-atomic-intrinsics],
- [Do not use C11 atomic intrinsics])])
+ [Do not use GCC atomic intrinsics])])
if test "$enable_atomic_intrinsics" = no; then
AC_DEFINE([AO_DISABLE_GCC_ATOMICS], 1,
- [Define to avoid C11 atomic intrinsics even if available.])
+ [Define to avoid GCC atomic intrinsics even if available.])
fi
AC_ARG_ENABLE(gcov, AC_HELP_STRING([--enable-gcov],
@@ -182,7 +182,8 @@
AH_TEMPLATE([AO_NO_SPARC_V9], [Assume target is not sparc v9+ (only sparc)])
AH_TEMPLATE([AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE],
[Assume ancient MS VS Win32 headers (only VC/arm v6+, VC/x86)])
-AH_TEMPLATE([AO_UNIPROCESSOR], [Assume single-core target (only arm v6+)])
+AH_TEMPLATE([AO_UNIPROCESSOR],
+ [Assume single-core target (only arm v6+ or GCC intrinsics)])
AH_TEMPLATE([AO_USE_INTERLOCKED_INTRINSICS],
[Assume Win32 _Interlocked primitives available as intrinsics \
(only VC/arm)])
@@ -195,9 +196,9 @@
[Emulate double-width CAS via pthread locking in case of no hardware \
support (only gcc/x86_64, the emulation is unsafe)])
AH_TEMPLATE([AO_PREFER_BUILTIN_ATOMICS],
- [Prefer C11 atomic intrinsics over assembly-based implementation \
+ [Prefer GCC atomic intrinsics over assembly-based implementation \
even in case of inefficient implementation (do not use assembly for \
- any atomic_ops primitive if C11/GCC atomic intrinsics available)])
+ any atomic_ops primitive if the atomic intrinsics are available)])
AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads.])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/doc/LICENSING.txt new/libatomic_ops-7.6.14/doc/LICENSING.txt
--- old/libatomic_ops-7.6.12/doc/LICENSING.txt 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/doc/LICENSING.txt 2022-08-25 21:17:13.000000000 +0200
@@ -3,7 +3,7 @@
linked into a client application is covered by an MIT-style license.
A few library routines are covered by the GNU General Public License.
-These are put into a separate library, libatomic_ops_gpl.a .
+These are put into a separate library, libatomic_ops_gpl.a file.
The low-level part of the library is mostly covered by the following
license:
@@ -32,8 +32,9 @@
--------------------------------
-A few files in the sysdeps directory were inherited in part from the
-Boehm-Demers-Weiser conservative garbage collector, and are covered by
+
+A few files in the atomic_ops/sysdeps directory were inherited in part from
+the Boehm-Demers-Weiser conservative garbage collector, and are covered by
its license, which is similar in spirit:
--------------------------------
@@ -51,11 +52,12 @@
----------------------------------
+
A few files are covered by the GNU General Public License. (See file
-"COPYING".) This applies only to test code, sample applications,
-and the libatomic_ops_gpl portion of the library.
-Thus libatomic_ops_gpl should generally not be linked into proprietary code.
-(This distinction was motivated by patent considerations.)
+"COPYING".) This applies only to the test code and the libatomic_ops_gpl
+portion of the library. Thus, libatomic_ops_gpl should generally not be
+linked into proprietary code. (This distinction was motivated by patent
+considerations.)
It is possible that the license of the GPL pieces may be changed for
future versions to make them more consistent with the rest of the package.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/doc/README_malloc.txt new/libatomic_ops-7.6.14/doc/README_malloc.txt
--- old/libatomic_ops-7.6.12/doc/README_malloc.txt 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/doc/README_malloc.txt 2022-08-25 21:17:13.000000000 +0200
@@ -1,5 +1,8 @@
The libatomic_ops_gpl includes a simple almost-lock-free malloc implementation.
+Note that the AO malloc implementation is licensed under the GPL, unlike the
+lower level routines.
+
This is intended as a safe way to allocate memory from a signal handler,
or to allocate memory in the context of a library that does not know what
thread library it will be used with. In either case locking is impossible.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/doc/README_win32.txt new/libatomic_ops-7.6.14/doc/README_win32.txt
--- old/libatomic_ops-7.6.12/doc/README_win32.txt 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/doc/README_win32.txt 2022-08-25 21:17:13.000000000 +0200
@@ -11,7 +11,7 @@
pieces from the resulting src directory contents:
"atomic_ops.h" - Header file defining low-level primitives. This
includes files from the following folder.
- "atomic_ops"- Subdirectory containing implementation header files.
+ "atomic_ops" - Subdirectory containing implementation header files.
"atomic_ops_stack.h" - Header file describing almost lock-free stack.
"atomic_ops_malloc.h" - Header file describing almost lock-free malloc.
"libatomic_ops_gpl.lib" - Library containing implementation of the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/Makefile.am new/libatomic_ops-7.6.14/src/Makefile.am
--- old/libatomic_ops-7.6.12/src/Makefile.am 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/Makefile.am 2022-08-25 21:17:13.000000000 +0200
@@ -3,7 +3,7 @@
# These numbers should be updated at most once just before the release,
# and, optionally, at most once during the development (after the release).
LIBATOMIC_OPS_VER_INFO = 2:1:1
-LIBATOMIC_OPS_GPL_VER_INFO = 2:2:1
+LIBATOMIC_OPS_GPL_VER_INFO = 2:3:1
AM_CFLAGS=@PICFLAG@
AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/Makefile.in new/libatomic_ops-7.6.14/src/Makefile.in
--- old/libatomic_ops-7.6.12/src/Makefile.in 2021-09-13 11:12:09.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/Makefile.in 2022-08-25 21:18:09.000000000 +0200
@@ -364,7 +364,7 @@
# These numbers should be updated at most once just before the release,
# and, optionally, at most once during the development (after the release).
LIBATOMIC_OPS_VER_INFO = 2:1:1
-LIBATOMIC_OPS_GPL_VER_INFO = 2:2:1
+LIBATOMIC_OPS_GPL_VER_INFO = 2:3:1
AM_CFLAGS = @PICFLAG@
AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src
include_HEADERS = atomic_ops.h atomic_ops_stack.h atomic_ops_malloc.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/atomic_ops/ao_version.h new/libatomic_ops-7.6.14/src/atomic_ops/ao_version.h
--- old/libatomic_ops-7.6.12/src/atomic_ops/ao_version.h 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/atomic_ops/ao_version.h 2022-08-25 21:17:13.000000000 +0200
@@ -35,4 +35,4 @@
/* The version here should match that in configure.ac and README. */
#define AO_VERSION_MAJOR 7
#define AO_VERSION_MINOR 6
-#define AO_VERSION_MICRO 12 /* 7.6.12 */
+#define AO_VERSION_MICRO 14 /* 7.6.14 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/atomic_ops/sysdeps/gcc/generic.h new/libatomic_ops-7.6.14/src/atomic_ops/sysdeps/gcc/generic.h
--- old/libatomic_ops-7.6.12/src/atomic_ops/sysdeps/gcc/generic.h 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/atomic_ops/sysdeps/gcc/generic.h 2022-08-25 21:17:13.000000000 +0200
@@ -95,28 +95,32 @@
AO_INLINE AO_TS_VAL_t
AO_test_and_set(volatile AO_TS_t *addr)
{
- return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_RELAXED);
+ return (AO_TS_VAL_t)(__atomic_test_and_set(addr, __ATOMIC_RELAXED)
+ ? AO_TS_SET : AO_TS_CLEAR);
}
# define AO_HAVE_test_and_set
AO_INLINE AO_TS_VAL_t
AO_test_and_set_acquire(volatile AO_TS_t *addr)
{
- return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_ACQUIRE);
+ return (AO_TS_VAL_t)(__atomic_test_and_set(addr, __ATOMIC_ACQUIRE)
+ ? AO_TS_SET : AO_TS_CLEAR);
}
# define AO_HAVE_test_and_set_acquire
AO_INLINE AO_TS_VAL_t
AO_test_and_set_release(volatile AO_TS_t *addr)
{
- return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_RELEASE);
+ return (AO_TS_VAL_t)(__atomic_test_and_set(addr, __ATOMIC_RELEASE)
+ ? AO_TS_SET : AO_TS_CLEAR);
}
# define AO_HAVE_test_and_set_release
AO_INLINE AO_TS_VAL_t
AO_test_and_set_full(volatile AO_TS_t *addr)
{
- return (AO_TS_VAL_t)__atomic_test_and_set(addr, __ATOMIC_SEQ_CST);
+ return (AO_TS_VAL_t)(__atomic_test_and_set(addr, __ATOMIC_SEQ_CST)
+ ? AO_TS_SET : AO_TS_CLEAR);
}
# define AO_HAVE_test_and_set_full
#endif /* !AO_PREFER_GENERALIZED */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/atomic_ops/sysdeps/gcc/sparc.h new/libatomic_ops-7.6.14/src/atomic_ops/sysdeps/gcc/sparc.h
--- old/libatomic_ops-7.6.12/src/atomic_ops/sysdeps/gcc/sparc.h 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/atomic_ops/sysdeps/gcc/sparc.h 2022-08-25 21:17:13.000000000 +0200
@@ -43,23 +43,17 @@
/* Returns nonzero if the comparison succeeded. */
AO_INLINE int
AO_compare_and_swap_full(volatile AO_t *addr, AO_t old, AO_t new_val) {
- AO_t ret;
__asm__ __volatile__ ("membar #StoreLoad | #LoadLoad\n\t"
# if defined(__arch64__)
- "casx [%2],%0,%1\n\t"
+ "casx [%1],%2,%0\n\t"
# else
- "cas [%2],%0,%1\n\t" /* 32-bit version */
+ "cas [%1],%2,%0\n\t" /* 32-bit version */
# endif
"membar #StoreLoad | #StoreStore\n\t"
- "cmp %0,%1\n\t"
- "be,a 0f\n\t"
- "mov 1,%0\n\t"/* one insn after branch always executed */
- "clr %0\n\t"
- "0:\n\t"
- : "=r" (ret), "+r" (new_val)
- : "r" (addr), "0" (old)
- : "memory", "cc");
- return (int)ret;
+ : "+r" (new_val)
+ : "r" (addr), "r" (old)
+ : "memory");
+ return new_val == old;
}
# define AO_HAVE_compare_and_swap_full
# endif /* !AO_GENERALIZE_ASM_BOOL_CAS */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/atomic_ops/sysdeps/gcc/tile.h new/libatomic_ops-7.6.14/src/atomic_ops/sysdeps/gcc/tile.h
--- old/libatomic_ops-7.6.12/src/atomic_ops/sysdeps/gcc/tile.h 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/atomic_ops/sysdeps/gcc/tile.h 2022-08-25 21:17:13.000000000 +0200
@@ -9,8 +9,6 @@
* modified is included with the above copyright notice.
*/
-/* Minimal support for tile. */
-
#if (AO_GNUC_PREREQ(4, 8) || AO_CLANG_PREREQ(3, 4)) \
&& !defined(AO_DISABLE_GCC_ATOMICS)
@@ -18,6 +16,8 @@
#else /* AO_DISABLE_GCC_ATOMICS */
+ /* Minimal support for tile. */
+
# include "../all_atomic_load_store.h"
# include "../test_and_set_t_is_ao_t.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/atomic_ops/sysdeps/msftc/x86_64.h new/libatomic_ops-7.6.14/src/atomic_ops/sysdeps/msftc/x86_64.h
--- old/libatomic_ops-7.6.12/src/atomic_ops/sysdeps/msftc/x86_64.h 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/atomic_ops/sysdeps/msftc/x86_64.h 2022-08-25 21:17:13.000000000 +0200
@@ -22,14 +22,15 @@
#include "../all_aligned_atomic_load_store.h"
+#if !defined(_M_ARM64)
/* Real X86 implementations appear */
/* to enforce ordering between memory operations, EXCEPT that a later */
/* read can pass earlier writes, presumably due to the visible */
/* presence of store buffers. */
/* We ignore the fact that the official specs */
/* seem to be much weaker (and arguably too weak to be usable). */
-
#include "../ordered_except_wr.h"
+#endif
#ifdef AO_ASM_X64_AVAILABLE
# include "../test_and_set_t_is_char.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/atomic_ops/sysdeps/standard_ao_double_t.h new/libatomic_ops-7.6.14/src/atomic_ops/sysdeps/standard_ao_double_t.h
--- old/libatomic_ops-7.6.12/src/atomic_ops/sysdeps/standard_ao_double_t.h 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/atomic_ops/sysdeps/standard_ao_double_t.h 2022-08-25 21:17:13.000000000 +0200
@@ -28,7 +28,7 @@
# if AO_GNUC_PREREQ(4, 7) || AO_CLANG_PREREQ(3, 6)
# pragma GCC diagnostic push
/* Suppress warning about __int128 type. */
-# if defined(__clang__) || AO_GNUC_PREREQ(6, 4)
+# if defined(__clang__) || AO_GNUC_PREREQ(6, 0)
# pragma GCC diagnostic ignored "-Wpedantic"
# else
/* GCC before ~4.8 does not accept "-Wpedantic" quietly. */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/atomic_ops.c new/libatomic_ops-7.6.14/src/atomic_ops.c
--- old/libatomic_ops-7.6.12/src/atomic_ops.c 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/atomic_ops.c 2022-08-25 21:17:13.000000000 +0200
@@ -45,7 +45,8 @@
# define AO_USE_NO_SIGNALS
#endif
-#if (defined(__linux__) || defined(__GLIBC__) || defined(__GNU__)) \
+#if (defined(__CYGWIN__) || defined(__GLIBC__) || defined(__GNU__) \
+ || defined(__linux__)) \
&& !defined(AO_USE_NO_SIGNALS) && !defined(_GNU_SOURCE)
# define _GNU_SOURCE 1
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/atomic_ops_malloc.c new/libatomic_ops-7.6.14/src/atomic_ops_malloc.c
--- old/libatomic_ops-7.6.12/src/atomic_ops_malloc.c 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/atomic_ops_malloc.c 2022-08-25 21:17:13.000000000 +0200
@@ -319,6 +319,7 @@
return result;
}
+AO_ATTR_MALLOC AO_ATTR_ALLOC_SIZE(1)
void *
AO_malloc(size_t sz)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/atomic_ops_stack.c new/libatomic_ops-7.6.14/src/atomic_ops_stack.c
--- old/libatomic_ops-7.6.12/src/atomic_ops_stack.c 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/atomic_ops_stack.c 2022-08-25 21:17:13.000000000 +0200
@@ -67,6 +67,9 @@
/* No deletions of x can start here, since x is not currently in the */
/* list. */
retry:
+ do {
+ next = AO_load_acquire(list);
+ store_before_cas(x, next);
# if AO_BL_SIZE == 2
{
/* Start all loads as close to concurrently as possible. */
@@ -102,12 +105,7 @@
}
# endif
/* x_bits is not currently being deleted */
- do
- {
- next = AO_load(list);
- store_before_cas(x, next);
- }
- while (AO_EXPECT_FALSE(!AO_compare_and_swap_release(list, next, x_bits)));
+ } while (AO_EXPECT_FALSE(!AO_compare_and_swap_release(list, next, x_bits)));
}
/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/atomic_ops_stack.h new/libatomic_ops-7.6.14/src/atomic_ops_stack.h
--- old/libatomic_ops-7.6.12/src/atomic_ops_stack.h 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/atomic_ops_stack.h 2022-08-25 21:17:13.000000000 +0200
@@ -77,7 +77,6 @@
/* The number of low order pointer bits we can use for a small */
/* version number. */
# if defined(__LP64__) || defined(_LP64) || defined(_WIN64)
- /* WIN64 isn't really supported yet. */
# define AO_N_BITS 3
# else
# define AO_N_BITS 2
@@ -97,6 +96,36 @@
# error AO_BL_SIZE too big
#endif
+#ifndef AO_STACK_ATTR_ALLIGNED
+ /* Enforce proper alignment of AO_stack_t.AO_ptr to avoid the */
+ /* structure value to cross the CPU cache line boundary. */
+ /* A workaround for almost-lock-free push/pop test failures */
+ /* on aarch64, at least. */
+# if AO_GNUC_PREREQ(3, 1)
+# define AO_STACK_LOG_BL_SZP1 \
+ (AO_BL_SIZE > 7 ? 4 : AO_BL_SIZE > 3 ? 3 : AO_BL_SIZE > 1 ? 2 : 1)
+# define AO_STACK_ATTR_ALLIGNED \
+ __attribute__((__aligned__(sizeof(AO_t) << AO_STACK_LOG_BL_SZP1)))
+# elif defined(_MSC_VER) && _MSC_VER >= 1400 /* Visual Studio 2005+ */
+ /* MS compiler accepts only a literal number in align, not expression. */
+ /* AO_STACK_ALLIGN_N is 1 << (AO_N_BITS + AO_STACK_LOG_BL_SZP1). */
+# if AO_N_BITS > 2 && AO_BL_SIZE > 7
+# define AO_STACK_ALLIGN_N 128
+# elif (AO_N_BITS > 2 && AO_BL_SIZE > 3) || AO_BL_SIZE > 7
+# define AO_STACK_ALLIGN_N 64
+# elif (AO_N_BITS > 2 && AO_BL_SIZE > 1) || AO_BL_SIZE > 3
+# define AO_STACK_ALLIGN_N 32
+# elif AO_N_BITS > 2 || AO_BL_SIZE > 1
+# define AO_STACK_ALLIGN_N 16
+# else
+# define AO_STACK_ALLIGN_N 8
+# endif
+# define AO_STACK_ATTR_ALLIGNED __declspec(align(AO_STACK_ALLIGN_N))
+# else
+# define AO_STACK_ATTR_ALLIGNED /* TODO: alignment is not enforced */
+# endif
+#endif /* !AO_STACK_ATTR_ALLIGNED */
+
typedef struct AO__stack_aux {
volatile AO_t AO_stack_bl[AO_BL_SIZE];
} AO_stack_aux;
@@ -111,7 +140,7 @@
/* The following two routines should not normally be used directly. */
/* We make them visible here for the rare cases in which it makes sense */
-/* to share the an AO_stack_aux between stacks. */
+/* to share the AO_stack_aux between stacks. */
void
AO_stack_push_explicit_aux_release(volatile AO_t *list, AO_t *x,
AO_stack_aux *);
@@ -122,7 +151,7 @@
/* And now AO_stack_t for the real interface: */
typedef struct AO__stack {
- volatile AO_t AO_ptr;
+ AO_STACK_ATTR_ALLIGNED volatile AO_t AO_ptr;
AO_stack_aux AO_aux;
} AO_stack_t;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/src/config.h.in new/libatomic_ops-7.6.14/src/config.h.in
--- old/libatomic_ops-7.6.12/src/config.h.in 2021-09-13 11:12:09.000000000 +0200
+++ new/libatomic_ops-7.6.14/src/config.h.in 2022-08-25 21:18:08.000000000 +0200
@@ -9,7 +9,7 @@
/* Assume target is not old AMD Opteron chip (only x86_64) */
#undef AO_CMPXCHG16B_AVAILABLE
-/* Define to avoid C11 atomic intrinsics even if available. */
+/* Define to avoid GCC atomic intrinsics even if available. */
#undef AO_DISABLE_GCC_ATOMICS
/* Force test_and_set to use SWP instruction instead of LDREX/STREX (only arm
@@ -28,9 +28,9 @@
/* Assume ancient MS VS Win32 headers (only VC/arm v6+, VC/x86) */
#undef AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE
-/* Prefer C11 atomic intrinsics over assembly-based implementation even in
+/* Prefer GCC atomic intrinsics over assembly-based implementation even in
case of inefficient implementation (do not use assembly for any atomic_ops
- primitive if C11/GCC atomic intrinsics available) */
+ primitive if the atomic intrinsics are available) */
#undef AO_PREFER_BUILTIN_ATOMICS
/* Prefer generalized definitions to direct assembly-based ones */
@@ -39,7 +39,7 @@
/* Trace AO_malloc/free calls (for debug only) */
#undef AO_TRACE_MALLOC
-/* Assume single-core target (only arm v6+) */
+/* Assume single-core target (only arm v6+ or GCC intrinsics) */
#undef AO_UNIPROCESSOR
/* Assume Win32 _Interlocked primitives available as intrinsics (only VC/arm)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.12/tests/test_stack.c new/libatomic_ops-7.6.14/tests/test_stack.c
--- old/libatomic_ops-7.6.12/tests/test_stack.c 2021-09-13 11:11:13.000000000 +0200
+++ new/libatomic_ops-7.6.14/tests/test_stack.c 2022-08-25 21:17:13.000000000 +0200
@@ -301,17 +301,18 @@
}
}
times[nthreads][exper_n] = get_msecs() - start_time;
- # ifdef VERBOSE
+# ifdef VERBOSE
printf("nthreads=%d, time_ms=%lu\n",
nthreads, times[nthreads][exper_n]);
printf("final list (should be reordered initial list):\n");
print_list();
- # endif
+# endif
check_list(list_length);
while ((le = (list_element *)AO_stack_pop(&the_list)) != 0)
free(le);
}
- for (nthreads = 1; nthreads <= max_nthreads; ++nthreads)
+
+ for (nthreads = 1; nthreads <= max_nthreads; ++nthreads)
{
# ifndef NO_TIMES
unsigned long sum = 0;
1
0