Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package iio-sensor-proxy for
openSUSE:Factory checked in at 2025-08-12 17:03:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/iio-sensor-proxy (Old)
and /work/SRC/openSUSE:Factory/.iio-sensor-proxy.new.1085 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "iio-sensor-proxy"
Tue Aug 12 17:03:07 2025 rev:26 rq:1298689 version:3.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/iio-sensor-proxy/iio-sensor-proxy.changes
2025-03-31 11:37:21.021662025 +0200
+++
/work/SRC/openSUSE:Factory/.iio-sensor-proxy.new.1085/iio-sensor-proxy.changes
2025-08-12 17:03:46.721270507 +0200
@@ -1,0 +2,8 @@
+Sun Aug 10 07:05:55 UTC 2025 - Atri Bhattacharya <[email protected]>
+
+- Update to version 3.8:
+ * Require 2.76 or newer for the Gio dependency.
+ * Improve handling of buffer sensors which caused a regression
+ in 3.7 for some corner cases.
+
+-------------------------------------------------------------------
Old:
----
iio-sensor-proxy-3.7.tar.bz2
New:
----
iio-sensor-proxy-3.8.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ iio-sensor-proxy.spec ++++++
--- /var/tmp/diff_new_pack.BddlnJ/_old 2025-08-12 17:03:47.437300339 +0200
+++ /var/tmp/diff_new_pack.BddlnJ/_new 2025-08-12 17:03:47.445300672 +0200
@@ -1,7 +1,7 @@
#
# spec file for package iio-sensor-proxy
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,18 +17,17 @@
Name: iio-sensor-proxy
-Version: 3.7
+Version: 3.8
Release: 0
Summary: Proxy for IIO and input subsystems
License: GPL-3.0-only
Group: System/Monitoring
URL: https://gitlab.freedesktop.org/hadess/iio-sensor-proxy
Source0: %{url}/-/archive/%{version}/%{name}-%{version}.tar.bz2
-
BuildRequires: gtk-doc
BuildRequires: meson
BuildRequires: pkgconfig
-BuildRequires: pkgconfig(glib-2.0) >= 2.56
+BuildRequires: pkgconfig(glib-2.0) >= 2.76
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(gudev-1.0) >= 237
BuildRequires: pkgconfig(polkit-gobject-1)
@@ -53,7 +52,7 @@
%autosetup -p1
%build
-%meson -Dgtk-tests=false \
+%meson -Dtests=false \
-Dgtk_doc=true \
-Dgeoclue-user=srvGeoClue
%meson_build
++++++ iio-sensor-proxy-3.7.tar.bz2 -> iio-sensor-proxy-3.8.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/iio-sensor-proxy-3.7/NEWS
new/iio-sensor-proxy-3.8/NEWS
--- old/iio-sensor-proxy-3.7/NEWS 2025-03-12 19:36:01.000000000 +0100
+++ new/iio-sensor-proxy-3.8/NEWS 2025-08-09 13:57:19.000000000 +0200
@@ -1,3 +1,9 @@
+3.8
+---
+
+- Require 2.76 or newer for the Gio dependency.
+- Improve handling of buffer sensors which caused a regression in 3.7 for some
corner cases.
+
3.7
---
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/iio-sensor-proxy-3.7/meson.build
new/iio-sensor-proxy-3.8/meson.build
--- old/iio-sensor-proxy-3.7/meson.build 2025-03-12 19:36:01.000000000
+0100
+++ new/iio-sensor-proxy-3.8/meson.build 2025-08-09 13:57:19.000000000
+0200
@@ -1,5 +1,5 @@
project('iio-sensor-proxy', [ 'c' ],
- version: '3.7',
+ version: '3.8',
license: 'GPLv3+',
default_options: [
'buildtype=debugoptimized',
@@ -42,7 +42,7 @@
if get_option('gtk-tests')
gtk_dep = dependency('gtk+-3.0', required: false)
endif
-gio_dep = dependency('gio-2.0')
+gio_dep = dependency('gio-2.0', version: '>= 2.76')
gudev_dep = dependency('gudev-1.0', version: '>= 237')
polkit_gobject_dep = dependency('polkit-gobject-1', version: '>= 0.91')
polkit_policy_directory =
polkit_gobject_dep.get_pkgconfig_variable('policydir')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/iio-sensor-proxy-3.7/src/drv-iio-buffer-accel.c
new/iio-sensor-proxy-3.8/src/drv-iio-buffer-accel.c
--- old/iio-sensor-proxy-3.7/src/drv-iio-buffer-accel.c 2025-03-12
19:36:01.000000000 +0100
+++ new/iio-sensor-proxy-3.8/src/drv-iio-buffer-accel.c 2025-08-09
13:57:19.000000000 +0200
@@ -120,19 +120,6 @@
return G_SOURCE_CONTINUE;
}
-static gboolean
-iio_buffer_accel_discover (GUdevDevice *device)
-{
- if (!drv_check_udev_sensor_type (device, "iio-buffer-accel", NULL))
- return FALSE;
-
- if (!is_buffer_usable (device))
- return FALSE;
-
- g_debug ("Found IIO buffer accelerometer at %s",
g_udev_device_get_sysfs_path (device));
- return TRUE;
-}
-
static void
iio_buffer_accel_set_polling (SensorDevice *sensor_device,
gboolean state)
@@ -164,13 +151,9 @@
{
SensorDevice *sensor_device;
DrvData *drv_data;
- g_autofree char *trigger_name = NULL;
BufferDrvData *buffer_data;
- /* Get the trigger name, and build the channels from that */
- trigger_name = get_trigger_name (device);
-
- buffer_data = buffer_drv_data_new (device, trigger_name);
+ buffer_data = buffer_drv_data_new (device);
if (!buffer_data)
return NULL;
@@ -205,6 +188,37 @@
g_free (sensor_device);
}
+static gboolean
+iio_buffer_accel_discover (GUdevDevice *device)
+{
+ SensorDevice *sensor_device;
+ DrvData *drv_data;
+ gboolean buffer_usable = FALSE;
+
+ if (!drv_check_udev_sensor_type (device, "iio-buffer-accel", NULL))
+ return FALSE;
+
+ sensor_device = iio_buffer_accel_open (device);
+ if (!sensor_device)
+ return FALSE;
+
+ /* Attempt to read from the sensor */
+ drv_data = (DrvData *) sensor_device->priv;
+ enable_ring_buffer (drv_data->buffer_data);
+
+ buffer_usable = is_buffer_usable(drv_data->dev_path);
+
+ /* Close the sensor until it has been claimed */
+ disable_ring_buffer (drv_data->buffer_data);
+ iio_buffer_accel_close (sensor_device);
+
+ if (!buffer_usable)
+ return FALSE;
+
+ g_debug ("Found IIO buffer accelerometer at %s",
g_udev_device_get_sysfs_path (device));
+ return TRUE;
+}
+
SensorDriver iio_buffer_accel = {
.driver_name = "IIO Buffer accelerometer",
.type = DRIVER_TYPE_ACCEL,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/iio-sensor-proxy-3.7/src/drv-iio-buffer-compass.c
new/iio-sensor-proxy-3.8/src/drv-iio-buffer-compass.c
--- old/iio-sensor-proxy-3.7/src/drv-iio-buffer-compass.c 2025-03-12
19:36:01.000000000 +0100
+++ new/iio-sensor-proxy-3.8/src/drv-iio-buffer-compass.c 2025-08-09
13:57:19.000000000 +0200
@@ -20,7 +20,7 @@
guint timeout_id;
GUdevDevice *dev;
- const char *dev_path;
+ char *dev_path;
int device_id;
BufferDrvData *buffer_data;
} DrvData;
@@ -103,35 +103,14 @@
return G_SOURCE_CONTINUE;
}
-static gboolean
-iio_buffer_compass_discover (GUdevDevice *device)
-{
- if (!drv_check_udev_sensor_type (device, "iio-buffer-compass", NULL))
- return FALSE;
-
- if (!is_buffer_usable (device))
- return FALSE;
-
- g_debug ("Found IIO buffer compass at %s", g_udev_device_get_sysfs_path
(device));
- return TRUE;
-}
-
static SensorDevice *
iio_buffer_compass_open (GUdevDevice *device)
{
SensorDevice *sensor_device;
DrvData *drv_data;
- g_autofree char *trigger_name = NULL;
BufferDrvData *buffer_data;
- /* Get the trigger name, and build the channels from that */
- trigger_name = get_trigger_name (device);
- if (!trigger_name) {
- g_debug ("Could not find trigger for %s",
g_udev_device_get_sysfs_path (device));
- return NULL;
- }
-
- buffer_data = buffer_drv_data_new (device, trigger_name);
+ buffer_data = buffer_drv_data_new (device);
if (!buffer_data)
return NULL;
@@ -146,7 +125,7 @@
drv_data = (DrvData *) sensor_device->priv;
drv_data->dev = g_object_ref (device);
drv_data->buffer_data = buffer_data;
- drv_data->dev_path = g_udev_device_get_device_file (device);
+ drv_data->dev_path = get_device_file (device);
return sensor_device;
}
@@ -188,6 +167,37 @@
g_free (sensor_device);
}
+static gboolean
+iio_buffer_compass_discover (GUdevDevice *device)
+{
+ SensorDevice *sensor_device;
+ DrvData *drv_data;
+ gboolean buffer_usable = FALSE;
+
+ if (!drv_check_udev_sensor_type (device, "iio-buffer-compass", NULL))
+ return FALSE;
+
+ sensor_device = iio_buffer_compass_open (device);
+ if (!sensor_device)
+ return FALSE;
+
+ /* Attempt to read from the sensor */
+ drv_data = (DrvData *) sensor_device->priv;
+ enable_ring_buffer (drv_data->buffer_data);
+
+ buffer_usable = is_buffer_usable(drv_data->dev_path);
+
+ /* Close the sensor until it has been claimed */
+ disable_ring_buffer (drv_data->buffer_data);
+ iio_buffer_compass_close (sensor_device);
+
+ if (!buffer_usable)
+ return FALSE;
+
+ g_debug ("Found IIO buffer compass at %s", g_udev_device_get_sysfs_path
(device));
+ return TRUE;
+}
+
SensorDriver iio_buffer_compass = {
.driver_name = "IIO Buffer Compass",
.type = DRIVER_TYPE_COMPASS,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/iio-sensor-proxy-3.7/src/drv-iio-buffer-light.c
new/iio-sensor-proxy-3.8/src/drv-iio-buffer-light.c
--- old/iio-sensor-proxy-3.7/src/drv-iio-buffer-light.c 2025-03-12
19:36:01.000000000 +0100
+++ new/iio-sensor-proxy-3.8/src/drv-iio-buffer-light.c 2025-08-09
13:57:19.000000000 +0200
@@ -20,7 +20,7 @@
guint timeout_id;
GUdevDevice *dev;
- const char *dev_path;
+ char *dev_path;
int device_id;
BufferDrvData *buffer_data;
} DrvData;
@@ -108,19 +108,6 @@
return G_SOURCE_CONTINUE;
}
-static gboolean
-iio_buffer_light_discover (GUdevDevice *device)
-{
- if (!drv_check_udev_sensor_type (device, "iio-buffer-als", NULL))
- return FALSE;
-
- if (!is_buffer_usable (device))
- return FALSE;
-
- g_debug ("Found IIO buffer ALS at %s", g_udev_device_get_sysfs_path
(device));
- return TRUE;
-}
-
static void
iio_buffer_light_set_polling (SensorDevice *sensor_device,
gboolean state)
@@ -152,16 +139,9 @@
{
SensorDevice *sensor_device;
DrvData *drv_data;
- g_autofree char *trigger_name = NULL;
BufferDrvData *buffer_data;
- /* Get the trigger name, and build the channels from that */
- trigger_name = get_trigger_name (device);
- if (!trigger_name) {
- g_debug ("Could not find trigger for %s",
g_udev_device_get_sysfs_path (device));
- return NULL;
- }
- buffer_data = buffer_drv_data_new (device, trigger_name);
+ buffer_data = buffer_drv_data_new (device);
if (!buffer_data)
return NULL;
@@ -176,7 +156,7 @@
drv_data = (DrvData *) sensor_device->priv;
drv_data->dev = g_object_ref (device);
drv_data->buffer_data = buffer_data;
- drv_data->dev_path = g_udev_device_get_device_file (device);
+ drv_data->dev_path = get_device_file (device);
return sensor_device;
}
@@ -192,6 +172,37 @@
g_free (sensor_device);
}
+static gboolean
+iio_buffer_light_discover (GUdevDevice *device)
+{
+ SensorDevice *sensor_device;
+ DrvData *drv_data;
+ gboolean buffer_usable = FALSE;
+
+ if (!drv_check_udev_sensor_type (device, "iio-buffer-als", NULL))
+ return FALSE;
+
+ sensor_device = iio_buffer_light_open (device);
+ if (!sensor_device)
+ return FALSE;
+
+ /* Attempt to read from the sensor */
+ drv_data = (DrvData *) sensor_device->priv;
+ enable_ring_buffer (drv_data->buffer_data);
+
+ buffer_usable = is_buffer_usable(drv_data->dev_path);
+
+ /* Close the sensor until it has been claimed */
+ disable_ring_buffer (drv_data->buffer_data);
+ iio_buffer_light_close (sensor_device);
+
+ if (!buffer_usable)
+ return FALSE;
+
+ g_debug ("Found IIO buffer ALS at %s", g_udev_device_get_sysfs_path
(device));
+ return TRUE;
+}
+
SensorDriver iio_buffer_light = {
.driver_name = "IIO Buffer Light sensor",
.type = DRIVER_TYPE_LIGHT,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/iio-sensor-proxy-3.7/src/iio-buffer-utils.c
new/iio-sensor-proxy-3.8/src/iio-buffer-utils.c
--- old/iio-sensor-proxy-3.7/src/iio-buffer-utils.c 2025-03-12
19:36:01.000000000 +0100
+++ new/iio-sensor-proxy-3.8/src/iio-buffer-utils.c 2025-08-09
13:57:19.000000000 +0200
@@ -20,6 +20,7 @@
#include <string.h>
#include <errno.h>
#include <stdio.h>
+#include <glib/gstdio.h>
#define IIO_MIN_SAMPLING_FREQUENCY 10 /* Hz */
@@ -880,13 +881,14 @@
}
BufferDrvData *
-buffer_drv_data_new (GUdevDevice *device,
- const char *trigger_name)
+buffer_drv_data_new (GUdevDevice *device)
{
BufferDrvData *buffer_data;
+ g_autofree char *trigger_name = NULL;
buffer_data = g_new0 (BufferDrvData, 1);
buffer_data->dev_dir_name = g_udev_device_get_sysfs_path (device);
+ trigger_name = get_trigger_name (device);
if (trigger_name)
buffer_data->trigger_name = g_strdup (trigger_name);
buffer_data->device = g_object_ref (device);
@@ -904,21 +906,28 @@
}
gboolean
-is_buffer_usable (GUdevDevice *device)
+is_buffer_usable (char *path)
{
- g_autofree char *trigger_name = NULL;
- BufferDrvData *buffer_data;
-
- trigger_name = get_trigger_name (device);
+ gboolean buffer_usable = FALSE;
+ g_autofd int fp = -1;
+ GPollFD fds;
+
+ /* Attempt to read from the sensor buffer */
+ fp = g_open (path, O_RDONLY | O_NONBLOCK);
+ if (fp == -1) {
+ g_warning ("Failed to open '%s': %s", path, g_strerror (errno));
+ } else {
+ fds.fd = fp;
+ fds.events = G_IO_IN | G_IO_ERR;
+ g_poll (&fds, 1, 500);
- /* Temporarily enable the buffer to ensure the kernel driver is
buffer-capable */
- buffer_data = buffer_drv_data_new (device, trigger_name);
- if (!buffer_data)
- return FALSE;
+ if (fds.revents & G_IO_IN)
+ buffer_usable = TRUE;
+ else
+ g_warning ("Buffer '%s' did not have data within 0.5s",
path);
+ }
- /* Destroy buffer information until actually needed (in the .open call)
*/
- g_clear_pointer (&buffer_data, buffer_drv_data_free);
- return TRUE;
+ return buffer_usable;
}
IIOSensorData *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/iio-sensor-proxy-3.7/src/iio-buffer-utils.h
new/iio-sensor-proxy-3.8/src/iio-buffer-utils.h
--- old/iio-sensor-proxy-3.7/src/iio-buffer-utils.h 2025-03-12
19:36:01.000000000 +0100
+++ new/iio-sensor-proxy-3.8/src/iio-buffer-utils.h 2025-08-09
13:57:19.000000000 +0200
@@ -43,8 +43,7 @@
char *get_trigger_name (GUdevDevice *device);
void buffer_drv_data_free (BufferDrvData *buffer_data);
-BufferDrvData *buffer_drv_data_new (GUdevDevice *device,
- const char *trigger_name);
+BufferDrvData *buffer_drv_data_new (GUdevDevice *device);
void disable_ring_buffer (BufferDrvData *data);
gboolean enable_ring_buffer (BufferDrvData *data);
-gboolean is_buffer_usable (GUdevDevice *device);
+gboolean is_buffer_usable (char *path);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/iio-sensor-proxy-3.7/tests/integration-test.py
new/iio-sensor-proxy-3.8/tests/integration-test.py
--- old/iio-sensor-proxy-3.7/tests/integration-test.py 2025-03-12
19:36:01.000000000 +0100
+++ new/iio-sensor-proxy-3.8/tests/integration-test.py 2025-08-09
13:57:19.000000000 +0200
@@ -555,6 +555,9 @@
['name', 'accel_3d-dev0'],
[]
)
+ data = self.read_file(top_srcdir +
'/tests/iio-buffer-accel-data/orientation-normal.bin')
+ with open(mock_dev_data,'wb') as mock_file:
+ mock_file.write(data)
self.start_daemon()
self.assertEqual(self.get_dbus_property('HasAmbientLight'), False)
self.assertEqual(self.get_dbus_property('HasAccelerometer'), True)
@@ -566,7 +569,6 @@
self.assertEqual(self.read_sysfs_attr(accel,
'scan_elements/in_accel_y_en'), b'1')
self.assertEqual(self.read_sysfs_attr(accel,
'scan_elements/in_accel_z_en'), b'1')
- data = self.read_file(top_srcdir +
'/tests/iio-buffer-accel-data/orientation-normal.bin')
with open(mock_dev_data,'wb') as mock_file:
mock_file.write(data)
self.proxy.ClaimAccelerometer()
@@ -595,6 +597,8 @@
def test_driver_buffer_without_trigger(self):
'''buffer driver picking without trigger'''
+ top_srcdir = os.getenv('top_srcdir', '.')
+ mock_dev_data = self.testbed.get_root_dir() + '/iio-dev-data.bin'
accel = self.testbed.add_device('iio', 'iio-buffer-accel0', None,
['name', 'IIO Test Accelerometer',
'buffer/enable', '0',
@@ -615,6 +619,9 @@
'IIO_SENSOR_PROXY_TYPE', 'iio-buffer-accel']
)
+ data = self.read_file(top_srcdir +
'/tests/iio-buffer-accel-data/orientation-normal.bin')
+ with open(mock_dev_data,'wb') as mock_file:
+ mock_file.write(data)
self.start_daemon()
self.assertEqual(self.get_dbus_property('HasAmbientLight'), False)
@@ -623,6 +630,42 @@
self.stop_daemon()
+ def test_iio_broken_buffer_accel(self):
+ '''iio sensor reporting broken buffer support'''
+ top_srcdir = os.getenv('top_srcdir', '.')
+ mock_dev_data = self.testbed.get_root_dir() + '/iio-dev-data.bin'
+ accel = self.testbed.add_device('iio', 'iio-buffer-accel0', None,
+ ['name', 'IIO Test Accelerometer',
+ 'buffer/enable', '0',
+ 'trigger/current_trigger', '',
+ 'scan_elements/in_accel_x_en', '0',
+ 'scan_elements/in_accel_x_index', '0',
+ 'scan_elements/in_accel_x_type', 'le:s16/32>>0',
+ 'scan_elements/in_accel_y_en', '0',
+ 'scan_elements/in_accel_y_index', '1',
+ 'scan_elements/in_accel_y_type', 'le:s16/32>>0',
+ 'scan_elements/in_accel_z_en', '0',
+ 'scan_elements/in_accel_z_index', '2',
+ 'scan_elements/in_accel_z_type', 'le:s16/32>>0',
+ 'scan_elements/in_timestamp_en', '1',
+ 'scan_elements/in_timestamp_index', '3',
+ 'scan_elements/in_timestamp_type', 'le:s64/64>>0'],
+ ['NAME', '"IIO Accelerometer"',
+ 'DEVNAME', '/dev/iio-buffer-accel-test',
+ 'IIO_SENSOR_PROXY_TYPE', 'iio-buffer-accel iio-poll-accel']
+ )
+ trigger = self.testbed.add_device('iio', 'trigger0', None,
+ ['name', 'accel_3d-dev0'],
+ []
+ )
+ self.start_daemon()
+ self.assertEqual(self.have_text_in_log('Built channel array'), True)
+ self.assertEqual(self.have_text_in_log('Disabled sensor'), True)
+ self.assertEqual(self.have_text_in_log('Found IIO poll
accelerometer'), True)
+ self.assertEqual(self.get_dbus_property('HasAccelerometer'), True)
+
+ self.stop_daemon()
+
def test_unrequested_readings(self):
'''unrequested property updates'''
self.testbed.add_device('input', 'fake-light', None,
@@ -696,10 +739,12 @@
)
env = os.environ.copy()
env['LC_NUMERIC'] = 'fr_FR.UTF-8'
+ data = self.read_file(top_srcdir +
'/tests/iio-buffer-accel-data/orientation-normal.bin')
+ with open(mock_dev_data,'wb') as mock_file:
+ mock_file.write(data)
self.start_daemon(env=env)
self.assertEqual(self.get_dbus_property('HasAccelerometer'), True)
- data = self.read_file(top_srcdir +
'/tests/iio-buffer-accel-data/orientation-normal.bin')
with open(mock_dev_data,'wb') as mock_file:
mock_file.write(data)
self.proxy.ClaimAccelerometer()
@@ -742,6 +787,9 @@
)
env = os.environ.copy()
env['LC_NUMERIC'] = 'fr_FR.UTF-8'
+ data = self.read_file(top_srcdir +
'/tests/iio-buffer-accel-data/orientation-normal.bin')
+ with open(mock_dev_data,'wb') as mock_file:
+ mock_file.write(data)
self.start_daemon(env=env)
self.assertEqual(self.get_dbus_property('HasAccelerometer'), True)