Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package fprintd for openSUSE:Factory checked 
in at 2026-03-25 21:21:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fprintd (Old)
 and      /work/SRC/openSUSE:Factory/.fprintd.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fprintd"

Wed Mar 25 21:21:25 2026 rev:23 rq:1342484 version:1.94.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/fprintd/fprintd.changes  2025-09-30 
18:25:00.517459264 +0200
+++ /work/SRC/openSUSE:Factory/.fprintd.new.8177/fprintd.changes        
2026-03-27 06:39:58.702408003 +0100
@@ -1,0 +2,9 @@
+Wed Mar 25 10:07:47 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 1.94.5:
+  * fprintd now depends on libfprint 1.94.9
+  * Improved handling of device errors
+  * pam: reduce minimum timeout to 1 second
+  * pam: support unlimited timeout
+
+-------------------------------------------------------------------

Old:
----
  fprintd-v1.94.4.tar.bz2

New:
----
  fprintd-v1.94.5.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fprintd.spec ++++++
--- /var/tmp/diff_new_pack.rJT4Kc/_old  2026-03-27 06:39:59.222429221 +0100
+++ /var/tmp/diff_new_pack.rJT4Kc/_new  2026-03-27 06:39:59.226429384 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package fprintd
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 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,7 +17,7 @@
 
 
 Name:           fprintd
-Version:        1.94.4
+Version:        1.94.5
 Release:        0
 Summary:        D-Bus service for Fingerprint reader access
 License:        GPL-2.0-or-later
@@ -38,7 +38,7 @@
 BuildRequires:  typelib-1_0-FPrint-2_0
 BuildRequires:  pkgconfig(dbus-glib-1)
 BuildRequires:  pkgconfig(glib-2.0)
-BuildRequires:  pkgconfig(libfprint-2) >= 1.94.0
+BuildRequires:  pkgconfig(libfprint-2) >= 1.94.9
 BuildRequires:  pkgconfig(libsystemd)
 BuildRequires:  pkgconfig(pam_wrapper)
 BuildRequires:  pkgconfig(polkit-gobject-1)

++++++ fprintd-v1.94.4.tar.bz2 -> fprintd-v1.94.5.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/NEWS new/fprintd-v1.94.5/NEWS
--- old/fprintd-v1.94.4/NEWS    2024-09-05 03:10:52.000000000 +0200
+++ new/fprintd-v1.94.5/NEWS    2025-02-20 21:20:51.000000000 +0100
@@ -1,6 +1,14 @@
 This file lists notable changes in each release. For the full history of all
 changes, see ChangeLog.
 
+Version 1.94.5:
+
+Highlights:
+ - fprintd now depends on libfprint 1.94.9
+ - Improved handling of device errors
+ - pam: reduce minimum timeout to 1 second
+ - pam: support unlimited timeout
+
 Version 1.94.4:
 
 Highlights:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/data/fprintd.1 
new/fprintd-v1.94.5/data/fprintd.1
--- old/fprintd-v1.94.4/data/fprintd.1  2024-09-05 03:10:52.000000000 +0200
+++ new/fprintd-v1.94.5/data/fprintd.1  1970-01-01 01:00:00.000000000 +0100
@@ -1,135 +0,0 @@
-.\" -*- mode: troff; coding: utf-8 -*-
-.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
-.ie n \{\
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds C`
-.    ds C'
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is >0, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.\"
-.\" Avoid warning from groff about undefined register 'F'.
-.de IX
-..
-.nr rF 0
-.if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{\
-.    if \nF \{\
-.        de IX
-.        tm Index:\\$1\t\\n%\t"\\$2"
-..
-.        if !\nF==2 \{\
-.            nr % 0
-.            nr F 2
-.        \}
-.    \}
-.\}
-.rr rF
-.\" ========================================================================
-.\"
-.IX Title "fprintd 1"
-.TH fprintd 1 2023-12-20 freedesktop ""
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
-.nh
-.SH NAME
-fprintd \- Fingerprint management daemon, and test applications
-.SH SYNOPSIS
-.IX Header "SYNOPSIS"
-\&\fBfprintd-enroll\fR [\-f finger] [usename]
-.PP
-\&\fBfprintd-list\fR username [usernames...]
-.PP
-\&\fBfprintd-verify\fR [\-f finger] [usename]
-.PP
-\&\fBfprintd-delete\fR username [usernames...]
-.SH DESCRIPTION
-.IX Header "DESCRIPTION"
-This manual page documents briefly the \fBfprintd\fR command-line utilities.
-.PP
-The \fBfprintd\fR daemon is accessed through \fBD\-Bus\fR by those 
command-line utilities.
-.SH ARGUMENTS
-.IX Header "ARGUMENTS"
-.IP \fBusername\fR 8
-.IX Item "username"
-The username for the user for which you want to query or modify the 
fingerprint database.
-.Sp
-Note that \fBfprintd-list\fR and \fBfprintd-delete\fR require at least one 
username to be passed, and support multiple usernames.
-.Sp
-\&\fBfprintd-enroll\fR and \fBfprintd-verify\fR will use the current username 
if none are passed on the command-line.
-.IP "\fB\-f finger\fR" 8
-.IX Item "-f finger"
-For \fBfprintd-enroll\fR, the finger to enroll. Possible values are:
-.Sp
-left-thumb,
-left-index-finger,
-left-middle-finger,
-left-ring-finger,
-left-little-finger,
-right-thumb,
-right-index-finger,
-right-middle-finger,
-right-ring-finger,
-right-little-finger.
-.Sp
-The default is to choose automatically, selecting the first available finger 
for swipe devices, or all the enrolled fingers, for press devices.
-.SH "TEST APPLICATIONS"
-.IX Header "TEST APPLICATIONS"
-.SS fprintd-enroll
-.IX Subsection "fprintd-enroll"
-.RS 8
-Will enroll the user's right index finger into the database.
-.RE
-.SS fprintd-list
-.IX Subsection "fprintd-list"
-.RS 8
-Will list the user's enrolled fingerprints.
-.RE
-.SS fprintd-verify
-.IX Subsection "fprintd-verify"
-.RS 8
-Will verify the user's fingerprints against the database.
-.RE
-.SS fprintd-delete
-.IX Subsection "fprintd-delete"
-.RS 8
-Will delete the user's right index finger into the database.
-.RE
-.SH AUTHOR
-.IX Header "AUTHOR"
-\&\fBfprintd\fR was written by Bastien Nocera and Daniel Drake.
-.SH DIRECTORIES
-.IX Header "DIRECTORIES"
-By default, fprintd stores the fingerprints in \fB/var/lib/fprint/\fR
-.SH "SEE ALSO"
-.IX Header "SEE ALSO"
-.IP \fBgnome-control-center\fR 8
-.IX Item "gnome-control-center"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/data/meson.build 
new/fprintd-v1.94.5/data/meson.build
--- old/fprintd-v1.94.4/data/meson.build        2024-09-05 03:10:52.000000000 
+0200
+++ new/fprintd-v1.94.5/data/meson.build        2025-02-20 21:20:51.000000000 
+0100
@@ -27,7 +27,7 @@
 polkit_policy_target = i18n.merge_file(
     input: '@[email protected]'.format(polkit_policy),
     output: polkit_policy,
-    po_dir: meson.source_root() / 'po',
+    po_dir: meson.project_source_root() / 'po',
     install: true,
     install_dir: polkit_policy_directory,
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/data/pam_fprintd.8 
new/fprintd-v1.94.5/data/pam_fprintd.8
--- old/fprintd-v1.94.4/data/pam_fprintd.8      2024-09-05 03:10:52.000000000 
+0200
+++ new/fprintd-v1.94.5/data/pam_fprintd.8      1970-01-01 01:00:00.000000000 
+0100
@@ -1,188 +0,0 @@
-.\" Automatically generated by Pod::Man 4.12 (Pod::Simple 3.39)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-.    ds C`
-.    ds C'
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is >0, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.\"
-.\" Avoid warning from groff about undefined register 'F'.
-.de IX
-..
-.nr rF 0
-.if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{\
-.    if \nF \{\
-.        de IX
-.        tm Index:\\$1\t\\n%\t"\\$2"
-..
-.        if !\nF==2 \{\
-.            nr % 0
-.            nr F 2
-.        \}
-.    \}
-.\}
-.rr rF
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : 
\\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o 
\\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "pam_fprintd 8"
-.TH pam_fprintd 8 "2020-01-24" "freedesktop" ""
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
-.nh
-.SH "NAME"
-pam_fprintd \- PAM module to authenticate against fprintd, the fingerprint 
daemon
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-\&\fBpam_fprintd.so\fR 
[debug|debug=[\fIon\fR|\fIoff\fR|\fItrue\fR|\fIfalse\fR|\fI1\fR|\fI0\fR]] 
[max\-tries=\fI\s-1MAX_TRIES\s0\fR] [timeout=\fI\s-1TIMEOUT\s0\fR]
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-The pam_fprintd module is used to verify a user's fingerprints against 
fingerprints
-enrolled using fprintd, the fingerprint management daemon.
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-.IP "\fBdebug\fR" 8
-.IX Item "debug"
-.PD 0
-.IP 
"\fBdebug=[\f(BIon\fB|\f(BIoff\fB|\f(BItrue\fB|\f(BIfalse\fB|\f(BI1\fB|\f(BI0\fB]\fR"
 8
-.IX Item "debug=[on|off|true|false|1|0]"
-.PD
-Whether debug should be turned on or off. Debug messages will be generated 
using
-pam_syslog which means that they will be saved in the systemd journal by 
default.
-.IP "\fBmax\-tries=\f(BI\s-1MAX_TRIES\s0\fB\fR" 8
-.IX Item "max-tries=MAX_TRIES"
-The number of attempts at fingerprint authentication to try before returning an
-authentication failure. The default, number of tries is 3.
-Use a negative value to set no limit at all, so that the module won't ever 
error on multiple
-retries, but in such case it's suggested for the module loader to handle this.
-.IP "\fBtimeout=\f(BI\s-1TIMEOUT\s0\fB\fR" 8
-.IX Item "timeout=TIMEOUT"
-The amount of time before returning an authentication failure. The default 
timeout
-is 30 seconds, with 10 seconds being the minimum.
-Use a negative value to set no limit at all, so that fingerprint 
authentication will
-be always active while this module is loaded.
-.SH "LIMITATIONS"
-.IX Header "LIMITATIONS"
-The \s-1PAM\s0 stack is by design a serialised authentication, so it is not
-possible for pam_fprintd to allow authentication through passwords and
-fingerprints at the same time.
-.PP
-It is up to the application using the \s-1PAM\s0 services to implement separate
-\&\s-1PAM\s0 processes and run separate authentication stacks separately. This
-is the way multiple authentication methods are made available to users
-of gdm for example.
-.SH "AUTHOR"
-.IX Header "AUTHOR"
-\&\fBfprintd\fR was written by Bastien Nocera.
-.SH "SEE ALSO"
-.IX Header "SEE ALSO"
-.IP "\fBfprintd\fR, \fB\s-1PAM\s0\fR" 8
-.IX Item "fprintd, PAM"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/data/pam_fprintd.pod 
new/fprintd-v1.94.5/data/pam_fprintd.pod
--- old/fprintd-v1.94.4/data/pam_fprintd.pod    2024-09-05 03:10:52.000000000 
+0200
+++ new/fprintd-v1.94.5/data/pam_fprintd.pod    2025-02-20 21:20:51.000000000 
+0100
@@ -27,10 +27,16 @@
 The number of attempts at fingerprint authentication to try before returning an
 authentication failure. The minimum number of tries is 1 while the default is 
3.
 
+Use a negative value to set no limit at all, so that the module won't ever 
error on multiple
+retries, but in such case it's suggested for the module loader to handle this.
+
 =item B<timeout=I<TIMEOUT>>
 
 The amount of time before returning an authentication failure. The default 
timeout
-is 30 seconds, with 10 seconds being the minimum.
+is 30 seconds, with 1 second being the minimum.
+
+Use a negative value to set no limit at all, so that fingerprint 
authentication will
+be always active while this module is loaded.
 
 =back
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/doc/dbus/meson.build 
new/fprintd-v1.94.5/doc/dbus/meson.build
--- old/fprintd-v1.94.4/doc/dbus/meson.build    2024-09-05 03:10:52.000000000 
+0200
+++ new/fprintd-v1.94.5/doc/dbus/meson.build    2025-02-20 21:20:51.000000000 
+0100
@@ -10,7 +10,7 @@
 
 dbus_interfaces_refs = []
 foreach interface_file: dbus_interfaces
-    basename = run_command('basename', interface_file, '.xml').stdout().strip()
+    basename = run_command('basename', interface_file, '.xml', check: 
true).stdout().strip()
     dbus_interfaces_refs += custom_target(basename + '_ref',
         input: docbook_xml_header,
         output: basename + '.ref.xml',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/meson.build 
new/fprintd-v1.94.5/meson.build
--- old/fprintd-v1.94.4/meson.build     2024-09-05 03:10:52.000000000 +0200
+++ new/fprintd-v1.94.5/meson.build     2025-02-20 21:20:51.000000000 +0100
@@ -1,12 +1,12 @@
 project('fprintd', 'c',
-    version: '1.94.4',
+    version: '1.94.5',
     license: 'GPLv2+',
     default_options: [
         'buildtype=debugoptimized',
         'warning_level=3',
         'c_std=gnu99',
     ],
-    meson_version: '>= 0.50.0')
+    meson_version: '>= 0.58.0')
 
 gnome = import('gnome')
 i18n = import('i18n')
@@ -63,7 +63,7 @@
 
 host_system = host_machine.system()
 glib_min_version = '2.64'
-libfprint_min_version = '1.94.0'
+libfprint_min_version = '1.94.9'
 
 glib_version_def = 'GLIB_VERSION_@0@_@1@'.format(
     glib_min_version.split('.')[0], glib_min_version.split('.')[1])
@@ -135,7 +135,7 @@
 systemd_unit_dir = get_option('systemd_system_unit_dir')
 
 if systemd_unit_dir == '' and systemd_dep.found()
-    systemd_unit_dir = 
systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
+    systemd_unit_dir = systemd_dep.get_variable('systemdsystemunitdir')
 endif
 
 if get_option('systemd') and systemd_unit_dir == ''
@@ -148,10 +148,10 @@
 
 if dbus_dep.found()
     if dbus_service_dir == ''
-        dbus_service_dir = 
dbus_dep.get_pkgconfig_variable('system_bus_services_dir')
+        dbus_service_dir = dbus_dep.get_variable('system_bus_services_dir')
     endif
-    dbus_interfaces_dir = dbus_dep.get_pkgconfig_variable('interfaces_dir')
-    dbus_data_dir = dbus_dep.get_pkgconfig_variable('datadir')
+    dbus_interfaces_dir = dbus_dep.get_variable('interfaces_dir')
+    dbus_data_dir = dbus_dep.get_variable('datadir')
 endif
 
 dbus_conf_dir = dbus_data_dir / 'dbus-1/system.d'
@@ -163,7 +163,7 @@
     dbus_interfaces_dir = datadir / 'dbus-1/interfaces'
 endif
 
-polkit_policy_directory = 
polkit_gobject_dep.get_pkgconfig_variable('policydir')
+polkit_policy_directory = polkit_gobject_dep.get_variable('policydir')
 
 # Tests dependencies
 pam_wrapper_dep = dependency('pam_wrapper', required: false)
@@ -184,7 +184,7 @@
 python3_available_modules = []
 
 foreach module, required : python3_test_modules
-    if required and run_command(python3, '-c', 'import 
@0@'.format(module)).returncode() != 0
+    if required and run_command(python3, '-c', 'import @0@'.format(module), 
check: false).returncode() != 0
         warning('Python3 module \'' + module + '\' required by test suite not 
found')
     endif
 endforeach
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/pam/fingerprint-strings.h 
new/fprintd-v1.94.5/pam/fingerprint-strings.h
--- old/fprintd-v1.94.4/pam/fingerprint-strings.h       2024-09-05 
03:10:52.000000000 +0200
+++ new/fprintd-v1.94.5/pam/fingerprint-strings.h       2025-02-20 
21:20:51.000000000 +0100
@@ -157,7 +157,6 @@
 /* Cases not handled:
  * verify-no-match
  * verify-match
- * verify-unknown-error
  */
 GNUC_UNUSED static const char *
 verify_result_str_to_msg (const char *result, bool is_swipe)
@@ -175,17 +174,35 @@
   if (strcmp (result, "verify-swipe-too-short") == 0)
     return TR (N_("Swipe was too short, try again"));
   if (strcmp (result, "verify-finger-not-centered") == 0)
-    return TR (N_("Your finger was not centered, try swiping your finger 
again"));
+    {
+      if (is_swipe)
+        return TR (N_("Your finger was not centered, try swiping your finger 
again"));
+      else
+        return TR (N_("Your finger was not centered, try touching the sensor 
again"));
+    }
   if (strcmp (result, "verify-remove-and-retry") == 0)
-    return TR (N_("Remove your finger, and try swiping your finger again"));
+    {
+      if (is_swipe)
+        return TR (N_("Remove your finger, and try swiping your finger 
again"));
+      else
+        return TR (N_("Remove your finger, and try touching the sensor 
again"));
+    }
+  if (strcmp (result, "verify-too-fast") == 0)
+    {
+      if (is_swipe)
+        return TR (N_("Swipe was too fast, try again"));
+      else
+        return TR (N_("Finger scan was too fast, try again"));
+    }
+
+  if (strcmp (result, "verify-unknown-error") == 0)
+    return TR (N_("An unexpected error happened during finger verification"));
 
   return NULL;
 }
 
 /* Cases not handled:
  * enroll-completed
- * enroll-failed
- * enroll-unknown-error
  */
 GNUC_UNUSED static const char *
 enroll_result_str_to_msg (const char *result, bool is_swipe)
@@ -203,9 +220,32 @@
   if (strcmp (result, "enroll-swipe-too-short") == 0)
     return TR (N_("Swipe was too short, try again"));
   if (strcmp (result, "enroll-finger-not-centered") == 0)
-    return TR (N_("Your finger was not centered, try swiping your finger 
again"));
+    {
+      if (is_swipe)
+        return TR (N_("Your finger was not centered, try swiping your finger 
again"));
+      else
+        return TR (N_("Your finger was not centered, try touching the sensor 
again"));
+    }
   if (strcmp (result, "enroll-remove-and-retry") == 0)
-    return TR (N_("Remove your finger, and try swiping your finger again"));
+    {
+      if (is_swipe)
+        return TR (N_("Remove your finger, and try swiping your finger 
again"));
+      else
+        return TR (N_("Remove your finger, and try touching the sensor 
again"));
+    }
+  if (strcmp (result, "enroll-too-fast") == 0)
+    {
+      if (is_swipe)
+        return TR (N_("Swipe was too fast, try again"));
+      else
+        return TR (N_("Finger scan was too fast, try again"));
+    }
+  if (strcmp (result, "enroll-duplicate") == 0)
+    return TR (N_("The fingerprint has been already enrolled. Try using 
another finger."));
+
+  if (strcmp (result, "enroll-failed") == 0 ||
+      strcmp (result, "enroll-unknown-error") == 0)
+    return TR (N_("An unexpected error happened during finger enrollment"));
 
   return NULL;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/pam/meson.build 
new/fprintd-v1.94.5/pam/meson.build
--- old/fprintd-v1.94.4/pam/meson.build 2024-09-05 03:10:52.000000000 +0200
+++ new/fprintd-v1.94.5/pam/meson.build 2025-02-20 21:20:51.000000000 +0100
@@ -1,4 +1,10 @@
-mapfile = files('pam_fprintd.ver')
+mapfile = files('pam_fprintd.ver')[0]
+if meson.version().version_compare('>=1.4')
+    mapfile_path = mapfile.full_path()
+else
+    mapfile_path = meson.project_source_root() / '@0@'.format(mapfile)
+endif
+
 pam_modules_dir = get_option('pam_modules_dir')
 if pam_modules_dir == ''
     pam_modules_dir = get_option('prefix') / get_option('libdir') / 'security'
@@ -24,7 +30,7 @@
         has_openpam ? ['-DFPRINTD_PAM_USE_OPENPAM'] : [],
     ],
     link_args: [
-        '-Wl,--version-script,@0@/@1@'.format(meson.source_root(), mapfile[0]),
+        '-Wl,--version-script,@0@'.format(mapfile_path),
         '-Wl,--unresolved-symbols=report-all',
     ],
     link_depends: mapfile,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/pam/pam_fprintd.c 
new/fprintd-v1.94.5/pam/pam_fprintd.c
--- old/fprintd-v1.94.4/pam/pam_fprintd.c       2024-09-05 03:10:52.000000000 
+0200
+++ new/fprintd-v1.94.5/pam/pam_fprintd.c       2025-02-20 21:20:51.000000000 
+0100
@@ -75,7 +75,7 @@
 
 #define DEFAULT_MAX_TRIES 3
 #define DEFAULT_TIMEOUT 30
-#define MIN_TIMEOUT 10
+#define MIN_TIMEOUT 1
 
 #define DEBUG_MATCH "debug="
 #define MAX_TRIES_MATCH "max-tries="
@@ -516,9 +516,11 @@
 #ifdef __linux__
           struct signalfd_siginfo siginfo;
 #endif
-          int64_t wait_time;
+          int64_t wait_time = INT64_MAX;
+
+          if (verification_end != ULONG_MAX)
+            wait_time = verification_end - now ();
 
-          wait_time = verification_end - now ();
           if (wait_time <= 0)
             break;
 
@@ -891,7 +893,7 @@
               if (debug)
                 pam_syslog (pamh, LOG_DEBUG, "max_tries specified as: %d", 
max_tries);
             }
-          else if (str_has_prefix (argv[i], TIMEOUT_MATCH) && strlen (argv[i]) 
<= strlen (TIMEOUT_MATCH) + 2)
+          else if (str_has_prefix (argv[i], TIMEOUT_MATCH) && strlen (argv[i]) 
> strlen (TIMEOUT_MATCH))
             {
               int opt_timeout = atoi (argv[i] + strlen (TIMEOUT_MATCH));
               timeout = (opt_timeout < 0 ? UINT_MAX : (unsigned) opt_timeout);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/src/device.c 
new/fprintd-v1.94.5/src/device.c
--- old/fprintd-v1.94.4/src/device.c    2024-09-05 03:10:52.000000000 +0200
+++ new/fprintd-v1.94.5/src/device.c    2025-02-20 21:20:51.000000000 +0100
@@ -602,6 +602,9 @@
         case FP_DEVICE_RETRY_REMOVE_FINGER:
           return "verify-remove-and-retry";
 
+        case FP_DEVICE_RETRY_TOO_FAST:
+          return "verify-too-fast";
+
         default:
           return "verify-retry-scan";
         }
@@ -613,6 +616,10 @@
        */
       if (g_error_matches (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_PROTO))
         return "verify-disconnected";
+      else if (g_error_matches (error, FP_DEVICE_ERROR, 
FP_DEVICE_ERROR_REMOVED))
+        return "verify-disconnected";
+      else if (g_error_matches (error, FP_DEVICE_ERROR, 
FP_DEVICE_ERROR_TOO_HOT))
+        return "verify-disconnected";
       else if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) ||
                g_error_matches (error, FP_DEVICE_ERROR, 
FP_DEVICE_ERROR_DATA_NOT_FOUND))
         return "verify-no-match";
@@ -647,6 +654,9 @@
         case FP_DEVICE_RETRY_REMOVE_FINGER:
           return "enroll-remove-and-retry";
 
+        case FP_DEVICE_RETRY_TOO_FAST:
+          return "enroll-too-fast";
+
         default:
           return "enroll-retry-scan";
         }
@@ -658,8 +668,14 @@
        */
       if (g_error_matches (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_PROTO))
         return "enroll-disconnected";
+      else if (g_error_matches (error, FP_DEVICE_ERROR, 
FP_DEVICE_ERROR_REMOVED))
+        return "enroll-disconnected";
+      else if (g_error_matches (error, FP_DEVICE_ERROR, 
FP_DEVICE_ERROR_TOO_HOT))
+        return "enroll-disconnected";
       else if (g_error_matches (error, FP_DEVICE_ERROR, 
FP_DEVICE_ERROR_DATA_FULL))
         return "enroll-data-full";
+      else if (g_error_matches (error, FP_DEVICE_ERROR, 
FP_DEVICE_ERROR_DATA_DUPLICATE))
+        return "enroll-duplicate";
       else if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
         return "enroll-failed";
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fprintd-v1.94.4/src/net.reactivated.Fprint.Device.xml 
new/fprintd-v1.94.5/src/net.reactivated.Fprint.Device.xml
--- old/fprintd-v1.94.4/src/net.reactivated.Fprint.Device.xml   2024-09-05 
03:10:52.000000000 +0200
+++ new/fprintd-v1.94.5/src/net.reactivated.Fprint.Device.xml   2025-02-20 
21:20:51.000000000 +0100
@@ -182,6 +182,12 @@
                                                </doc:definition>
                                        </doc:item>
                                        <doc:item>
+                                               
<doc:term>verify-too-fast</doc:term>
+                                               <doc:definition>
+                                                       The user's swipe or 
touch was too fast. The user should retry scanning their finger, the 
verification is still ongoing.
+                                               </doc:definition>
+                                       </doc:item>
+                                       <doc:item>
                                                
<doc:term>verify-disconnected</doc:term>
                                                <doc:definition>
                                                        The device was 
disconnected during the verification, no other actions should be taken, and you 
shouldn't use the device any more.
@@ -233,6 +239,12 @@
                                                </doc:definition>
                                        </doc:item>
                                        <doc:item>
+                                               
<doc:term>enroll-too-fast</doc:term>
+                                               <doc:definition>
+                                                       The user's swipe or 
touch was too short. The user should retry scanning their finger, the 
enrollment is still ongoing.
+                                               </doc:definition>
+                                       </doc:item>
+                                       <doc:item>
                                                
<doc:term>enroll-finger-not-centered</doc:term>
                                                <doc:definition>
                                                        The user's finger was 
not centered on the reader. The user should retry scanning their finger, the 
enrollment is still ongoing.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/tests/dbusmock/fprintd.py 
new/fprintd-v1.94.5/tests/dbusmock/fprintd.py
--- old/fprintd-v1.94.4/tests/dbusmock/fprintd.py       2024-09-05 
03:10:52.000000000 +0200
+++ new/fprintd-v1.94.5/tests/dbusmock/fprintd.py       2025-02-20 
21:20:51.000000000 +0100
@@ -53,6 +53,7 @@
     'verify-no-match',
     'verify-match',
     'verify-retry-scan',
+    'verify-too-fast',
     'verify-swipe-too-short',
     'verify-finger-not-centered',
     'verify-remove-and-retry',
@@ -65,6 +66,7 @@
     'enroll-failed',
     'enroll-stage-passed',
     'enroll-retry-scan',
+    'enroll-too-fast',
     'enroll-swipe-too-short',
     'enroll-finger-not-centered',
     'enroll-remove-and-retry',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/tests/fprintd.py 
new/fprintd-v1.94.5/tests/fprintd.py
--- old/fprintd-v1.94.4/tests/fprintd.py        2024-09-05 03:10:52.000000000 
+0200
+++ new/fprintd-v1.94.5/tests/fprintd.py        2025-02-20 21:20:51.000000000 
+0100
@@ -1619,7 +1619,7 @@
 
         # Now remove the device while we are enrolling, which will cause an 
error
         self.send_remove()
-        self.wait_for_result(expected='enroll-unknown-error')
+        self.wait_for_result(expected='enroll-disconnected')
 
         # The device will still be there now until it is released
         devices = self.manager.GetDevices()
@@ -2458,6 +2458,9 @@
     def test_enroll_retry_too_short(self):
         self.assertEnrollRetry(FPrint.DeviceRetry.TOO_SHORT, 
'enroll-swipe-too-short')
 
+    def test_enroll_retry_too_fast(self):
+        self.assertEnrollRetry(FPrint.DeviceRetry.TOO_FAST, 'enroll-too-fast')
+
     def test_enroll_retry_remove_finger(self):
         self.assertEnrollRetry(FPrint.DeviceRetry.REMOVE_FINGER, 
'enroll-remove-and-retry')
 
@@ -2482,6 +2485,12 @@
     def test_enroll_error_proto(self):
         self.assertEnrollError(FPrint.DeviceError.PROTO, 'enroll-disconnected')
 
+    def test_enroll_error_too_hot(self):
+        self.assertEnrollError(FPrint.DeviceError.TOO_HOT, 
'enroll-disconnected')
+
+    def test_enroll_error_removed(self):
+        self.assertEnrollError(FPrint.DeviceError.REMOVED, 
'enroll-disconnected')
+
     def test_enroll_error_data_invalid(self):
         self.assertEnrollError(FPrint.DeviceError.DATA_INVALID, 
'enroll-unknown-error')
 
@@ -2494,6 +2503,9 @@
     def test_enroll_error_data_full(self):
         self.assertEnrollError(FPrint.DeviceError.DATA_FULL, 
'enroll-data-full')
 
+    def test_enroll_error_data_duplicate(self):
+        self.assertEnrollError(FPrint.DeviceError.DATA_DUPLICATE, 
'enroll-duplicate')
+
     def test_enroll_already_enrolled_finger(self):
         self.enroll_image('whorl', start=False)
 
@@ -2740,6 +2752,9 @@
     def test_verify_retry_center_finger(self):
         self.assertVerifyRetry(FPrint.DeviceRetry.CENTER_FINGER, 
'verify-finger-not-centered')
 
+    def test_verify_retry_too_fast(self):
+        self.assertVerifyRetry(FPrint.DeviceRetry.TOO_FAST, 'verify-too-fast')
+
     def test_verify_error_general(self):
         self.assertVerifyError(FPrint.DeviceError.GENERAL, 
'verify-unknown-error')
 
@@ -2758,6 +2773,12 @@
     def test_verify_error_proto(self):
         self.assertVerifyError(FPrint.DeviceError.PROTO, 'verify-disconnected')
 
+    def test_verify_error_too_hot(self):
+        self.assertVerifyError(FPrint.DeviceError.TOO_HOT, 
'verify-disconnected')
+
+    def test_verify_error_removed(self):
+        self.assertVerifyError(FPrint.DeviceError.REMOVED, 
'verify-disconnected')
+
     def test_verify_error_data_invalid(self):
         self.assertVerifyError(FPrint.DeviceError.DATA_INVALID, 
'verify-unknown-error')
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/tests/meson.build 
new/fprintd-v1.94.5/tests/meson.build
--- old/fprintd-v1.94.4/tests/meson.build       2024-09-05 03:10:52.000000000 
+0200
+++ new/fprintd-v1.94.5/tests/meson.build       2025-02-20 21:20:51.000000000 
+0100
@@ -31,8 +31,8 @@
             'env': [
                 'G_DEBUG=fatal-criticals',
                 'G_MESSAGES_DEBUG=all',
-                'FPRINT_BUILD_DIR=' + meson.build_root() / 'src',
-                'TOPSRCDIR=' + meson.source_root(),
+                'FPRINT_BUILD_DIR=' + meson.project_build_root() / 'src',
+                'TOPSRCDIR=' + meson.project_source_root(),
             ],
             'depends': [
                 fprintd,
@@ -52,7 +52,7 @@
 unittest_inspector = find_program('unittest_inspector.py')
 
 foreach pt: python_tests
-    r = run_command(unittest_inspector, pt.get('file'))
+    r = run_command(unittest_inspector, pt.get('file'), check: false)
     unit_tests = r.stdout().strip().split('\n')
     base_args = [ pt.get('file') ] + pt.get('extra_args', [])
     suite = pt.get('suite', [])
@@ -75,7 +75,7 @@
             args: ut_args,
             suite: ut_suite,
             depends: pt.get('depends', []),
-            workdir: pt.get('workdir', meson.build_root()),
+            workdir: pt.get('workdir', meson.project_build_root()),
             env: pt.get('env', []),
             timeout: pt.get('timeout', 30),
             is_parallel: pt.get('is_parallel', true),
@@ -90,6 +90,13 @@
 ]
 
 if address_sanitizer
+    lsan_suppress = files('LSAN-leaks-suppress.txt')[0]
+    if meson.version().version_compare('>=1.4')
+        lsan_suppress = lsan_suppress.full_path()
+    else
+        lsan_suppress = meson.project_source_root() / 
'@0@'.format(lsan_suppress)
+    endif
+
     timeout_multiplier = 3
     test_envs += [
         'ADDRESS_SANITIZER=true',
@@ -100,8 +107,7 @@
         'LSAN_OPTIONS=@0@'.format(':'.join([
             'exitcode=0',
             'strict_string_checks=true',
-            'suppressions=@0@'.format(
-                files(meson.current_source_dir() / 
'LSAN-leaks-suppress.txt')[0]),
+            'suppressions=@0@'.format(lsan_suppress),
         ])),
     ]
 endif
@@ -113,7 +119,7 @@
 )
 
 if not address_sanitizer and find_program('valgrind', required: false).found()
-    glib_share = glib_dep.get_pkgconfig_variable('prefix') / 'share' / 
glib_dep.name()
+    glib_share = glib_dep.get_variable('prefix') / 'share' / glib_dep.name()
     glib_suppressions = glib_share + '/valgrind/glib.supp'
     add_test_setup('valgrind',
         env: [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/tests/pam/meson.build 
new/fprintd-v1.94.5/tests/pam/meson.build
--- old/fprintd-v1.94.4/tests/pam/meson.build   2024-09-05 03:10:52.000000000 
+0200
+++ new/fprintd-v1.94.5/tests/pam/meson.build   2025-02-20 21:20:51.000000000 
+0100
@@ -18,18 +18,24 @@
 
 foreach libname: preloaded_libs
     lib = run_command(meson.get_compiler('c'),
-        '-print-file-name=lib@[email protected]'.format(libname)
+        '-print-file-name=lib@[email protected]'.format(libname),
+        check: false,
     ).stdout().strip()
 
     # Support linker script files
-    if run_command('grep', '-qI', '^INPUT', files(lib)).returncode() == 0
+    if run_command('grep', '-qI', '^INPUT', files(lib), check: 
false).returncode() == 0
         out = run_command('cat', lib).stdout()
         lib = out.split('(')[1].split(')')[0].strip()
     endif
 
     if lib != '' and lib[0] == '/'
         message('Found library @0@ as @1@'.format(libname, lib))
-        pam_tests_ld_preload += '@0@'.format(files(lib)[0])
+        preload_lib_path = files(lib)[0]
+        if meson.version().version_compare('>=1.4')
+            pam_tests_ld_preload += preload_lib_path.full_path()
+        else
+            pam_tests_ld_preload += '@0@'.format(preload_lib_path)
+        endif
     else
         tests = []
         warning('No library found for ' + libname + ', skipping PAM tests')
@@ -43,8 +49,8 @@
             'file': files(meson.current_source_dir() / t + '.py')[0],
             'is_parallel': false,
             'env': [
-                'TOPBUILDDIR=' + meson.build_root(),
-                'TOPSRCDIR=' + meson.source_root(),
+                'TOPBUILDDIR=' + meson.project_build_root(),
+                'TOPSRCDIR=' + meson.project_source_root(),
                 'LD_PRELOAD=' + ' '.join(pam_tests_ld_preload),
                 'PAM_WRAPPER=1',
                 'PAM_WRAPPER_DEBUGLEVEL=2',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fprintd-v1.94.4/tests/pam/test_pam_fprintd.py 
new/fprintd-v1.94.5/tests/pam/test_pam_fprintd.py
--- old/fprintd-v1.94.4/tests/pam/test_pam_fprintd.py   2024-09-05 
03:10:52.000000000 +0200
+++ new/fprintd-v1.94.5/tests/pam/test_pam_fprintd.py   2025-02-20 
21:20:51.000000000 +0100
@@ -55,6 +55,8 @@
 
     @classmethod
     def setUpClass(klass):
+        dbusmock.DBusTestCase.setUpClass()
+
         klass.start_system_bus()
         klass.start_monitor()
         klass.dbus_con = klass.get_dbus(True)
@@ -72,7 +74,10 @@
         # Remove pam wrapper files, as they may break other tests
         [shutil.rmtree(i) for i in glob.glob('/tmp/pam.[0-9A-z]')]
 
+        dbusmock.DBusTestCase.tearDownClass()
+
     def setUp(self):
+        super().setUp()
         (self.p_mock, self.obj_fprintd_manager) = self.spawn_server_template(
             self.template_name, {})
         self.obj_fprintd_mock = dbus.Interface(self.obj_fprintd_manager, 
'net.reactivated.Fprint.Manager.Mock')
@@ -80,6 +85,7 @@
     def tearDown(self):
         self.p_mock.terminate()
         self.p_mock.wait()
+        super().tearDown()
 
     def setup_device(self):
         device_path = self.obj_fprintd_mock.AddDevice('FDO Trigger Finger 
Laser Reader', 3, 'swipe', False)

Reply via email to