Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package umockdev for openSUSE:Factory 
checked in at 2021-12-30 15:55:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/umockdev (Old)
 and      /work/SRC/openSUSE:Factory/.umockdev.new.1896 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "umockdev"

Thu Dec 30 15:55:35 2021 rev:7 rq:943063 version:0.17.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/umockdev/umockdev.changes        2021-09-28 
19:16:31.528185375 +0200
+++ /work/SRC/openSUSE:Factory/.umockdev.new.1896/umockdev.changes      
2021-12-30 15:56:00.140681458 +0100
@@ -1,0 +2,12 @@
+Fri Dec 24 20:39:50 UTC 2021 - Atri Bhattacharya <badshah...@gmail.com>
+
+- Update to version 0.17.1:
+  * Fix /sys/dev/* symlinks; regression from 0.15.3
+    (gh#martinpitt/umockdev#155).
+- Changes from version 0.17.0:
+  * Add ioctls necessary to record/replay hidraw devices.
+  * meson: Respect includedir option.
+  * tests: Fix for Fedora koji emulated architectures s390x and
+    arm.
+
+-------------------------------------------------------------------

Old:
----
  umockdev-0.16.3.tar.xz

New:
----
  umockdev-0.17.1.tar.xz

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

Other differences:
------------------
++++++ umockdev.spec ++++++
--- /var/tmp/diff_new_pack.cafPiv/_old  2021-12-30 15:56:00.716681902 +0100
+++ /var/tmp/diff_new_pack.cafPiv/_new  2021-12-30 15:56:00.720681904 +0100
@@ -19,7 +19,7 @@
 %define shlib libumockdev0
 %define shlibpre libumockdev-preload0
 Name:           umockdev
-Version:        0.16.3
+Version:        0.17.1
 Release:        0
 Summary:        Mock hardware devices for creating unit tests and bug reporting
 License:        LGPL-2.1-or-later

++++++ umockdev-0.16.3.tar.xz -> umockdev-0.17.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/NEWS new/umockdev-0.17.1/NEWS
--- old/umockdev-0.16.3/NEWS    2021-09-15 07:38:31.155431500 +0200
+++ new/umockdev-0.17.1/NEWS    2021-12-14 07:27:23.384868000 +0100
@@ -1,3 +1,12 @@
+## [0.17.1] - 2021-12-14
+- Fix /sys/dev/* symlinks; regression from 0.15.3 (#155)
+
+## [0.17.0] - 2021-12-11
+- Add ioctls necessary to record/replay hidraw devices (thanks Daiki Ueno)
+- meson: Respect includedir option (thanks Florentin Dubois)
+- tests: Fix for Fedora koji emulated architectures s390x and arm
+- Enable automatic Fedora package updates with packit
+
 ## [0.16.3] - 2021-09-15
 - Several pcap replay fixes (thanks Benjamin Berg)
 - Immediately create "bus" and "class" directories in /sys to fix udev 
enumerator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/devices/hidraw/fido2.ioctl 
new/umockdev-0.17.1/devices/hidraw/fido2.ioctl
--- old/umockdev-0.16.3/devices/hidraw/fido2.ioctl      1970-01-01 
01:00:00.000000000 +0100
+++ new/umockdev-0.17.1/devices/hidraw/fido2.ioctl      2021-12-14 
07:27:23.392867800 +0100
@@ -0,0 +1,3 @@
+@DEV /dev/hidraw5
+HIDIOCGRDESCSIZE 0 22000000
+HIDIOCGRDESC 0 
2200000006D0F10901A1010920150026FF007508954081020921150026FF00750895409102C0000082D63061000000000000000000000000B4E03E6100000000E2BC9928000000000000000000000000000000000000000000000000000000002F6C696236342F6C0000000400000000E0C1A517807F0000E05FFBB7FF7F000000B0A517807F0000705AFBB7FF7F00000000000000000000882EA317807F000001000000000000000000000400000000685AFBB7FF7F000000000000000000000000000000000000010000000000000000000000000000000075A217807F0000E0C1A517807F0000000000000000000019000000000000000000000000000000000000000000000000000000000000000075A217807F00009064FBB7FF7F00009064FBB7FF7F000000040000000000009064FBB7FF7F000003003E0001000000D0370000000000004000000000000000D84101000000000000000000400038000B0040001D001C000100000004000000000000000000000000000000000000000000000000000000D02D000000000000D02D00000000000000100000000000000100000005000000003000000000000000300000000000000030000000000000259200000000000025920000000000000010000000000000010000000400000000D000000000000000D000
 
000000000000D0000000000000B83F000000000000B83F00000000000000100000000000000100000006000000003C9F9EE58D9189782B0100000000000691FBB7FF7F00009064FBB7FF7F000000000000000000008064FBB7FF7F000002000000000000000691FBB7FF7F0000B8495517807F0000982B010000000000C084A017807F00003060FBB7FF7F0000205CFBB7FF7F00001191FBB7FF7F00001291FBB7FF7F00009064FBB7FF7F00002060FBB7FF7F00002000000000000000200000000000000008000000000000000400000004000000205CFBB7FF7F00000004000000000000C80200000000000024000000000000002400000000000000040000000000000053E5746404000000A802000000000000A802000000000000A80200000000000020000000000000002000000000000000080000000000000050E5746404000000D4F5000000000000D4F5000000000000D4F50000000000000C030000000000000C03000000000000040000000000000051E574640600000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000052E5746404000000781B010000000000782B010000000000782B010000000000880400000000000088040000000000000100000000000000040000001000000005000000474
 
E5500020000C0040000000300000000000000040000001400000003000000474E5500055148683701BA67CEB970BFD1400D1DCA8FD5E100000000430000003700000008000000090000004180C30042D0E9444C34611C0B80018204200020100111801CC40190001A9110224200088A408004BB8001044238C1220E902040610000A120910101C4820412000000000000000000000000000000000400000000000000F064FBB7FF7F00006F26A317807F00000000000000000000006002000000000068540200000000006854020000000000000000000000000001000000807F000000600200000000000030170000000000FC28170000000000FC2817000000000000600200000000000500000000000000003017000000000000F01B0000000000E2E41B0000000000E2E41B00000000000030170000000000010000000000000000001C000000000000601C000000000070541C0000000000D8E11C000000000000F01B0000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000003A0000000000000000000000000000000000000000000000000000000000
 
805FFBB7FF7F0000E370A417807F000000000000000000000000000000000000000000000000000000000000000000000400000000000000E05FFBB7FF7F0000E606A517807F0000FFA7A217807F00000000000000000000000000000000000100000000000000000000000000000000E05FFBB7FF7F0000E0C1A517807F000000000004000000002075A217807F0000E29EFBB7FF7F00007F03A517807F0000E05FFBB7FF7F0000F6B4A217807F0000000000000000000018000000000000006C6962756D6F636B6465762D7072656C6F61642E736F2E30002F72616E646F6D2E736F00000000000000000000000000000000000000000000000000000000003060FBB7FF7F0000000400000000000000000000000000000400000000000000B063FBB7FF7F00001B1AA317807F000000000000000000000020000000000000981F000000000000981F00000000000000000000000000000100000000000000002000000000000000D006000000000031C206000000000031C20600000000000020000000000000050000000000000000D00600000000000040090000000000CC3C090000000000CC3C09000000000000D0060000000000010000000000000000500900000000000070090000000000556109000000000030620900000000000040090000000000030000000000000090A10
 
1000000000048A40100000000000080010000000000030000000000000000700000000000000100000000000000009000000000000000B000000000000078A0000000000000E0A900000000000000800000000000000300000000000000009002000000000003000000000000000CEE0000000000000CEE00000000000000C0000000000000010000000000000000000100000000000020010000000000C010010000000000C81001000000000000F00000000000000300000000000000E88F010000000000000000000000000000B64717807F0000E05BA317807F00000040000000000000E0B54717807F00001700000000000000100000000000000088BA4717807F000000000000000000001500000000000000CC58A317807F0000B063FBB7FF7F000000B0A517807F0000B063FBB7FF7F0000C8D23917807F0000020000C000000000C424A317807F00000A6CFFF6FF0F00008864FBB7FF7F00000000000000000000C424A3170300000030324317807F00005060FBB7FF7F00006062FBB7FF7F00003062090000000000000000000000000000000000807F0000C0C0A517807F0000000000000000000058D13917807F0000FD364517807F0000E0B54717807F0000000000000300000005FD000000000000EC1400080000000005FD000000000000EC140008000000000100000000
 
000000ED81000000000000000000000000000000000000000000006871090000000000BC3BA317807F00003084A217807F0000F0165117807F000030B8820D00000000010000000000000068FF5017807F0000CF3FA317807F00009103000000000000B8F95117807F00003084A217807F00000864FBB7FF7F00000464FBB7FF7F00000000000000000000302B5017807F000000000000807F0000B8F95117807F0000DF23A217807F000030B8820D000000000464FBB7FF7F0000E00A36000000000028BC4717807F00001000000000000000D822A217807F0000D064FBB7FF7F0000C064FBB7FF7F00000000000000000000E0B54717807F0000E0C1A517000000000000000000000000100000000000000030B8820D000000006865FBB7FF7F0000DF23A217807F00007073A217807F0000C064FBB7FF7F0000D064FBB7FF7F00003149A317807F0000050000000000000010BE4717807F00000100000000000000000000000000000001000000000000000070A217807F00009064FBB7FF7F000010BE4717807F00000070A217807F00007073A217807F00000000000000000000762F6173736572745F706172616D00000100000000000000FFFFFFFF000000000020000000000000886C5117807F00003084A217807F000031A206000000000031A2060000000000001000000000000
 
0010000000400000000D006000000000000D006000000000000D00600000000002060A217807F00007069FBB7FF7F00001391FBB7FF7F00001391FBB7FF7F000020E3FDBB625500009002FEBB62550000148CA317807F00000100000000000000728CA317807F00000010000000000000886C5117807F00003069FBB7FF7F00003E02A417807F0000B0F7FDBB62550000001E6F17807F000008000000000000000100000000000000B0F7FDBB62550000B0F7FDBB6255000060DA6C17807F0000A802000000000000200000000000000020000000000000000800000000000000801F0000FFFF0200C802000000000000C802000000000000C80200000000000024000000000000002400000000000000040000000000000053E5746404000000A802000000000000A802000000000000A80200000000000020000000000000002000000000000000080000000000000050E574640400000050D10800000000009E515917807F00000000000000000000000000000000000040F7FDBB6255000040000000000000004D61594256775170626165734A392F426D4D57436C674A69356A394A634976310025732F696F63746C2F25730025732FFFFB8B17000000008977FBB7FF7F00006400000000000000200EDABB62550000000000000000000000000000000000006468693A6F3A7072743A
 
757600696E700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000310000000000000000000000000000000000000000000000000000007C000000770000006E0000005B000000000D4F17807F000000DA6C17807F00003800000000000000A0FFFFFFFFFFFFFFF8F5FDBB6255000090F5FDBB625500000200000000000000060000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080418317807F000000000000000000000100000000000000857F7A17807F000030000000000000009068FBB7FF7F0000D002FEBB62550000FF03000000000000D7FCFDBB625500009A457917807F00009068FBB7FF7F000004917917807F0000D002FEBB62550000D0F6FDBB625500000C00000000000000D002FEBB6255000020C29E17807F0000886AFBB7FF7F0000D002FEBB625500008D188817807F0000D0F6FDBB62550000806AFBB7FF7F0000D002FEBB62550000806AFBB7FF7F0000D002FEBB62550000544E8317807F0000D002FEBB625500000C4F59178
 
07F0000D002FEBB625500000000000000000000070000000000000007000000000000009000000000000000800000000000000009000000000000001700000000000000B0000000000000000200000000000000D0F6FDBB625500000070A217807F000001000000000000004131A217807F00007C000000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/devices/hidraw/fido2.script 
new/umockdev-0.17.1/devices/hidraw/fido2.script
--- old/umockdev-0.16.3/devices/hidraw/fido2.script     1970-01-01 
01:00:00.000000000 +0100
+++ new/umockdev-0.17.1/devices/hidraw/fido2.script     2021-12-14 
07:27:23.392867800 +0100
@@ -0,0 +1,19 @@
+d 0 /dev/hidraw5
+w 2 
^@?????^@^H^A^A^A^A^A^A^A^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 1 
?????^@^Q^A^A^A^A^A^A^A^A^A?^@^C^B^E^A^B^E^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+w 1 
^@^A?^@^C?^@^A^D^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 1 
^A?^@^C?^@V^@?^A?fU2F_V2hFIDO_2_0^B?khmac-secret^CP??^Q??^JM^U?^F^W^Q^_??}^D?brk^A?^@^C^@?bup?dplat?iclientPin?^E^Y^D?^F?^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+w 1 ^@^A?^@^C?^@?^B?^Amrelying party^BX 
???YF?^[^A#H?/?V?r??^L?Z?jP???^U{/??^C??bi^@^A?^@^C^@dX@N??[?????Q2=?G^X??^]&c^V^JX^I???%?/??2O?+?t"??^Jh??^E\^P?????^G?^@^A?^@^C^A?K???FJ1dtypejpublic-key^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 269 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 287 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 289 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 287 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 288 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 288 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 288 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 288 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 288 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 287 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 288 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 288 
^A?^@^C?^@^A^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
+r 124 
^A?^@^C?^@?^@?^A?bidX@N??[?????Q2=?G^X??^]&c^V^JX^I???%?/??2O?+?t"??^Jh??^E\^P^A?^@^C^@?????^G??K???FJ1dtypejpublic-key^BX%??8?????u?W?r^F??xx??^J???^A?^@^C^A?7/?]?[T^A^@^@^A?^CXG0E^B!^@?mwhP??
 2?<^Y\I|???^OQ/^P?^X1??as?d?^B 
lz?w^A?^@^C^Br??H~(>????b=^I?^V^_???????$U??^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/devices/hidraw/fido2.umockdev 
new/umockdev-0.17.1/devices/hidraw/fido2.umockdev
--- old/umockdev-0.16.3/devices/hidraw/fido2.umockdev   1970-01-01 
01:00:00.000000000 +0100
+++ new/umockdev-0.17.1/devices/hidraw/fido2.umockdev   2021-12-14 
07:27:23.392867800 +0100
@@ -0,0 +1,428 @@
+P: 
/devices/pci0000:00/0000:00:08.1/0000:05:00.3/usb1/1-2/1-2.3/1-2.3:1.0/0003:1050:0120.000A/hidraw/hidraw5
+N: hidraw5
+E: DEVNAME=/dev/hidraw5
+E: MAJOR=240
+E: MINOR=5
+E: SUBSYSTEM=hidraw
+E: ID_FIDO_TOKEN=1
+E: ID_SECURITY_TOKEN=1
+E: ID_PATH=pci-0000:05:00.3-usb-0:2.3:1.0
+E: ID_PATH_TAG=pci-0000_05_00_3-usb-0_2_3_1_0
+E: ID_FOR_SEAT=hidraw-pci-0000_05_00_3-usb-0_2_3_1_0
+E: TAGS=:seat:uaccess:security-device:
+E: CURRENT_TAGS=:seat:uaccess:security-device:
+A: dev=240:5\n
+L: device=../../../0003:1050:0120.000A
+A: power/control=auto\n
+A: power/runtime_active_time=0\n
+A: power/runtime_status=unsupported\n
+A: power/runtime_suspended_time=0\n
+
+P: 
/devices/pci0000:00/0000:00:08.1/0000:05:00.3/usb1/1-2/1-2.3/1-2.3:1.0/0003:1050:0120.000A
+E: DRIVER=hid-generic
+E: HID_ID=0003:00001050:00000120
+E: HID_NAME=Yubico Security Key by Yubico
+E: HID_PHYS=usb-0000:05:00.3-2.3/input0
+E: HID_UNIQ=
+E: MODALIAS=hid:b0003g0001v00001050p00000120
+E: SUBSYSTEM=hid
+A: country=00\n
+L: driver=../../../../../../../../../bus/hid/drivers/hid-generic
+A: modalias=hid:b0003g0001v00001050p00000120\n
+A: power/control=auto\n
+A: power/runtime_active_time=0\n
+A: power/runtime_status=unsupported\n
+A: power/runtime_suspended_time=0\n
+H: 
report_descriptor=06D0F10901A1010920150026FF007508954081020921150026FF00750895409102C0
+
+P: /devices/pci0000:00/0000:00:08.1/0000:05:00.3/usb1/1-2/1-2.3/1-2.3:1.0
+E: DEVTYPE=usb_interface
+E: DRIVER=usbhid
+E: PRODUCT=1050/120/512
+E: TYPE=0/0/0
+E: INTERFACE=3/0/0
+E: MODALIAS=usb:v1050p0120d0512dc00dsc00dp00ic03isc00ip00in00
+E: SUBSYSTEM=usb
+E: ID_VENDOR_FROM_DATABASE=Yubico.com
+E: ID_MODEL_FROM_DATABASE=Yubikey Touch U2F Security Key
+E: ID_PATH=pci-0000:05:00.3-usb-0:2.3:1.0
+E: ID_PATH_TAG=pci-0000_05_00_3-usb-0_2_3_1_0
+A: authorized=1\n
+A: bAlternateSetting= 0\n
+A: bInterfaceClass=03\n
+A: bInterfaceNumber=00\n
+A: bInterfaceProtocol=00\n
+A: bInterfaceSubClass=00\n
+A: bNumEndpoints=02\n
+L: driver=../../../../../../../../bus/usb/drivers/usbhid
+A: modalias=usb:v1050p0120d0512dc00dsc00dp00ic03isc00ip00in00\n
+A: supports_autosuspend=1\n
+
+P: /devices/pci0000:00/0000:00:08.1/0000:05:00.3/usb1/1-2/1-2.3
+N: 
bus/usb/001/012=12010002000000405010200112050102000109022900010100800F0904000002030000000921100100012222000705040340000207058403400002
+E: DEVNAME=/dev/bus/usb/001/012
+E: DEVTYPE=usb_device
+E: DRIVER=usb
+E: PRODUCT=1050/120/512
+E: TYPE=0/0/0
+E: BUSNUM=001
+E: DEVNUM=012
+E: MAJOR=189
+E: MINOR=11
+E: SUBSYSTEM=usb
+E: ID_VENDOR=Yubico
+E: ID_VENDOR_ENC=Yubico
+E: ID_VENDOR_ID=1050
+E: ID_MODEL=Security_Key_by_Yubico
+E: ID_MODEL_ENC=Security\x20Key\x20by\x20Yubico
+E: ID_MODEL_ID=0120
+E: ID_REVISION=0512
+E: ID_SERIAL=Yubico_Security_Key_by_Yubico
+E: ID_BUS=usb
+E: ID_USB_INTERFACES=:030000:
+E: ID_VENDOR_FROM_DATABASE=Yubico.com
+E: ID_MODEL_FROM_DATABASE=Yubikey Touch U2F Security Key
+E: ID_PATH=pci-0000:05:00.3-usb-0:2.3
+E: ID_PATH_TAG=pci-0000_05_00_3-usb-0_2_3
+E: ID_FOR_SEAT=usb-pci-0000_05_00_3-usb-0_2_3
+E: TAGS=:seat:
+E: CURRENT_TAGS=:seat:
+A: authorized=1\n
+A: avoid_reset_quirk=0\n
+A: bConfigurationValue=1\n
+A: bDeviceClass=00\n
+A: bDeviceProtocol=00\n
+A: bDeviceSubClass=00\n
+A: bMaxPacketSize0=64\n
+A: bMaxPower=30mA\n
+A: bNumConfigurations=1\n
+A: bNumInterfaces= 1\n
+A: bcdDevice=0512\n
+A: bmAttributes=80\n
+A: busnum=1\n
+A: configuration=
+H: 
descriptors=12010002000000405010200112050102000109022900010100800F0904000002030000000921100100012222000705040340000207058403400002
+A: dev=189:11\n
+A: devnum=12\n
+A: devpath=2.3\n
+L: driver=../../../../../../../bus/usb/drivers/usb
+A: idProduct=0120\n
+A: idVendor=1050\n
+A: ltm_capable=no\n
+A: manufacturer=Yubico\n
+A: maxchild=0\n
+L: port=../1-2:1.0/1-2-port3
+A: power/active_duration=7291\n
+A: power/autosuspend=2\n
+A: power/autosuspend_delay_ms=2000\n
+A: power/connected_duration=7292\n
+A: power/control=on\n
+A: power/level=on\n
+A: power/persist=1\n
+A: power/runtime_active_time=7118\n
+A: power/runtime_status=active\n
+A: power/runtime_suspended_time=0\n
+A: product=Security Key by Yubico\n
+A: quirks=0x0\n
+A: removable=unknown\n
+A: rx_lanes=1\n
+A: speed=12\n
+A: tx_lanes=1\n
+A: urbnum=13\n
+A: version= 2.00\n
+
+P: /devices/pci0000:00/0000:00:08.1/0000:05:00.3/usb1/1-2
+N: 
bus/usb/001/002=1201100209000240DA0B115404010102000109022900010100E0000904000001090001000705810301000C0904000101090002000705810301000C
+E: DEVNAME=/dev/bus/usb/001/002
+E: DEVTYPE=usb_device
+E: DRIVER=usb
+E: PRODUCT=bda/5411/104
+E: TYPE=9/0/2
+E: BUSNUM=001
+E: DEVNUM=002
+E: MAJOR=189
+E: MINOR=1
+E: SUBSYSTEM=usb
+E: ID_VENDOR=Generic
+E: ID_VENDOR_ENC=Generic
+E: ID_VENDOR_ID=0bda
+E: ID_MODEL=4-Port_USB_2.0_Hub
+E: ID_MODEL_ENC=4-Port\x20USB\x202.0\x20Hub
+E: ID_MODEL_ID=5411
+E: ID_REVISION=0104
+E: ID_SERIAL=Generic_4-Port_USB_2.0_Hub
+E: ID_BUS=usb
+E: ID_USB_INTERFACES=:090001:090002:
+E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Corp.
+E: ID_MODEL_FROM_DATABASE=RTS5411 Hub
+E: ID_PATH=pci-0000:05:00.3-usb-0:2
+E: ID_PATH_TAG=pci-0000_05_00_3-usb-0_2
+E: ID_FOR_SEAT=usb-pci-0000_05_00_3-usb-0_2
+E: TAGS=:seat:
+E: CURRENT_TAGS=:seat:
+A: authorized=1\n
+A: avoid_reset_quirk=0\n
+A: bConfigurationValue=1\n
+A: bDeviceClass=09\n
+A: bDeviceProtocol=02\n
+A: bDeviceSubClass=00\n
+A: bMaxPacketSize0=64\n
+A: bMaxPower=0mA\n
+A: bNumConfigurations=1\n
+A: bNumInterfaces= 1\n
+A: bcdDevice=0104\n
+A: bmAttributes=e0\n
+A: busnum=1\n
+A: configuration=
+H: 
descriptors=1201100209000240DA0B115404010102000109022900010100E0000904000001090001000705810301000C0904000101090002000705810301000C
+A: dev=189:1\n
+A: devnum=2\n
+A: devpath=2\n
+L: driver=../../../../../../bus/usb/drivers/usb
+L: 
firmware_node=../../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0e/device:16/device:17/device:19
+A: idProduct=5411\n
+A: idVendor=0bda\n
+A: ltm_capable=no\n
+A: manufacturer=Generic\n
+A: maxchild=4\n
+L: port=../1-0:1.0/usb1-port2
+A: power/active_duration=40292203\n
+A: power/autosuspend=0\n
+A: power/autosuspend_delay_ms=0\n
+A: power/connected_duration=40292204\n
+A: power/control=auto\n
+A: power/level=auto\n
+A: power/runtime_active_time=40291955\n
+A: power/runtime_status=active\n
+A: power/runtime_suspended_time=0\n
+A: power/wakeup=disabled\n
+A: power/wakeup_abort_count=\n
+A: power/wakeup_active=\n
+A: power/wakeup_active_count=\n
+A: power/wakeup_count=\n
+A: power/wakeup_expire_count=\n
+A: power/wakeup_last_time_ms=\n
+A: power/wakeup_max_time_ms=\n
+A: power/wakeup_total_time_ms=\n
+A: product=4-Port USB 2.0 Hub\n
+A: quirks=0x0\n
+A: removable=removable\n
+A: rx_lanes=1\n
+A: speed=480\n
+A: tx_lanes=1\n
+A: urbnum=157\n
+A: version= 2.10\n
+
+P: /devices/pci0000:00/0000:00:08.1/0000:05:00.3/usb1
+N: 
bus/usb/001/001=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C
+E: DEVNAME=/dev/bus/usb/001/001
+E: DEVTYPE=usb_device
+E: DRIVER=usb
+E: PRODUCT=1d6b/2/513
+E: TYPE=9/0/1
+E: BUSNUM=001
+E: DEVNUM=001
+E: MAJOR=189
+E: MINOR=0
+E: SUBSYSTEM=usb
+E: ID_VENDOR=Linux_5.13.16-200.fc34.x86_64_xhci-hcd
+E: ID_VENDOR_ENC=Linux\x205.13.16-200.fc34.x86_64\x20xhci-hcd
+E: ID_VENDOR_ID=1d6b
+E: ID_MODEL=xHCI_Host_Controller
+E: ID_MODEL_ENC=xHCI\x20Host\x20Controller
+E: ID_MODEL_ID=0002
+E: ID_REVISION=0513
+E: 
ID_SERIAL=Linux_5.13.16-200.fc34.x86_64_xhci-hcd_xHCI_Host_Controller_0000:05:00.3
+E: ID_SERIAL_SHORT=0000:05:00.3
+E: ID_BUS=usb
+E: ID_USB_INTERFACES=:090000:
+E: ID_VENDOR_FROM_DATABASE=Linux Foundation
+E: ID_AUTOSUSPEND=1
+E: ID_MODEL_FROM_DATABASE=2.0 root hub
+E: ID_PATH=pci-0000:05:00.3
+E: ID_PATH_TAG=pci-0000_05_00_3
+E: ID_FOR_SEAT=usb-pci-0000_05_00_3
+E: TAGS=:seat:
+E: CURRENT_TAGS=:seat:
+A: authorized=1\n
+A: authorized_default=1\n
+A: avoid_reset_quirk=0\n
+A: bConfigurationValue=1\n
+A: bDeviceClass=09\n
+A: bDeviceProtocol=01\n
+A: bDeviceSubClass=00\n
+A: bMaxPacketSize0=64\n
+A: bMaxPower=0mA\n
+A: bNumConfigurations=1\n
+A: bNumInterfaces= 1\n
+A: bcdDevice=0513\n
+A: bmAttributes=e0\n
+A: busnum=1\n
+A: configuration=
+H: 
descriptors=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C
+A: dev=189:0\n
+A: devnum=1\n
+A: devpath=0\n
+L: driver=../../../../../bus/usb/drivers/usb
+L: 
firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0e/device:16/device:17
+A: idProduct=0002\n
+A: idVendor=1d6b\n
+A: interface_authorized_default=1\n
+A: ltm_capable=no\n
+A: manufacturer=Linux 5.13.16-200.fc34.x86_64 xhci-hcd\n
+A: maxchild=4\n
+A: power/active_duration=40292347\n
+A: power/autosuspend=0\n
+A: power/autosuspend_delay_ms=0\n
+A: power/connected_duration=40292347\n
+A: power/control=auto\n
+A: power/level=auto\n
+A: power/runtime_active_time=40292345\n
+A: power/runtime_status=active\n
+A: power/runtime_suspended_time=0\n
+A: power/wakeup=disabled\n
+A: power/wakeup_abort_count=\n
+A: power/wakeup_active=\n
+A: power/wakeup_active_count=\n
+A: power/wakeup_count=\n
+A: power/wakeup_expire_count=\n
+A: power/wakeup_last_time_ms=\n
+A: power/wakeup_max_time_ms=\n
+A: power/wakeup_total_time_ms=\n
+A: product=xHCI Host Controller\n
+A: quirks=0x0\n
+A: removable=unknown\n
+A: rx_lanes=1\n
+A: serial=0000:05:00.3\n
+A: speed=480\n
+A: tx_lanes=1\n
+A: urbnum=44\n
+A: version= 2.00\n
+
+P: /devices/pci0000:00/0000:00:08.1/0000:05:00.3
+E: DRIVER=xhci_hcd
+E: PCI_CLASS=C0330
+E: PCI_ID=1022:15E0
+E: PCI_SUBSYS_ID=1849:7914
+E: PCI_SLOT_NAME=0000:05:00.3
+E: MODALIAS=pci:v00001022d000015E0sv00001849sd00007914bc0Csc03i30
+E: SUBSYSTEM=pci
+E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
+E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
+E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI
+E: ID_VENDOR_FROM_DATABASE=Advanced Micro Devices, Inc. [AMD]
+E: ID_MODEL_FROM_DATABASE=Raven USB 3.1
+A: ari_enabled=0\n
+A: broken_parity_status=0\n
+A: class=0x0c0330\n
+H: 
config=2210E015070410000030030C10008000040080FC00000000000000000000000000000000000000000000000049181479000000004800000000000000FF040000
+A: consistent_dma_mask_bits=64\n
+A: current_link_speed=8.0 GT/s PCIe\n
+A: current_link_width=16\n
+A: d3cold_allowed=1\n
+A: dbc=disabled\n
+A: device=0x15e0\n
+A: dma_mask_bits=64\n
+L: driver=../../../../bus/pci/drivers/xhci_hcd
+A: driver_override=(null)\n
+A: enable=1\n
+L: 
firmware_node=../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0e/device:16
+L: iommu=../../0000:00:00.2/iommu/ivhd0
+L: iommu_group=../../../../kernel/iommu_groups/14
+A: irq=34\n
+A: link/l0s_aspm=0\n
+A: link/l1_aspm=0\n
+A: local_cpulist=0-3\n
+A: local_cpus=0000000f\n
+A: max_link_speed=8.0 GT/s PCIe\n
+A: max_link_width=16\n
+A: modalias=pci:v00001022d000015E0sv00001849sd00007914bc0Csc03i30\n
+A: msi_bus=1\n
+A: msi_irqs/35=msix\n
+A: msi_irqs/36=msix\n
+A: msi_irqs/37=msix\n
+A: msi_irqs/38=msix\n
+A: msi_irqs/39=msix\n
+A: numa_node=-1\n
+A: pools=poolinfo - 0.1\nbuffer-2048         0    0 2048  0\nbuffer-512        
  0    0  512  0\nbuffer-128          0    0  128  0\nbuffer-32           0    
0   32  0\nxHCI 1KB stream ctx arrays    0    0 1024  0\nxHCI 256 byte stream 
ctx arrays    0    0  256  0\nxHCI input/output contexts   17   18 2112 
18\nxHCI ring segments   52   54 4096 54\nbuffer-2048         0    6 2048  
3\nbuffer-512          0    0  512  0\nbuffer-128         18   32  128  
1\nbuffer-32           0    0   32  0\n
+A: power/control=on\n
+A: power/runtime_active_time=40292436\n
+A: power/runtime_status=active\n
+A: power/runtime_suspended_time=0\n
+A: power/wakeup=enabled\n
+A: power/wakeup_abort_count=0\n
+A: power/wakeup_active=0\n
+A: power/wakeup_active_count=0\n
+A: power/wakeup_count=0\n
+A: power/wakeup_expire_count=0\n
+A: power/wakeup_last_time_ms=0\n
+A: power/wakeup_max_time_ms=0\n
+A: power/wakeup_total_time_ms=0\n
+A: power_state=D0\n
+A: resource=0x00000000fc800000 0x00000000fc8fffff 
0x0000000000140204\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n
+A: revision=0x00\n
+A: subsystem_device=0x7914\n
+A: subsystem_vendor=0x1849\n
+A: vendor=0x1022\n
+
+P: /devices/pci0000:00/0000:00:08.1
+E: DRIVER=pcieport
+E: PCI_CLASS=60400
+E: PCI_ID=1022:15DB
+E: PCI_SUBSYS_ID=1022:0000
+E: PCI_SLOT_NAME=0000:00:08.1
+E: MODALIAS=pci:v00001022d000015DBsv00001022sd00000000bc06sc04i00
+E: SUBSYSTEM=pci
+E: ID_PCI_CLASS_FROM_DATABASE=Bridge
+E: ID_PCI_SUBCLASS_FROM_DATABASE=PCI bridge
+E: ID_PCI_INTERFACE_FROM_DATABASE=Normal decode
+E: ID_VENDOR_FROM_DATABASE=Advanced Micro Devices, Inc. [AMD]
+E: ID_MODEL_FROM_DATABASE=Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A
+A: ari_enabled=0\n
+A: broken_parity_status=0\n
+A: class=0x060400\n
+H: 
config=2210DB15070410000000040610008100000000000000000000050500E1E1000070FCA0FC01E011F00000000000000000000000005000000000000000FF011200
+A: consistent_dma_mask_bits=32\n
+A: current_link_speed=8.0 GT/s PCIe\n
+A: current_link_width=16\n
+A: d3cold_allowed=1\n
+A: device=0x15db\n
+A: dma_mask_bits=32\n
+L: driver=../../../bus/pci/drivers/pcieport
+A: driver_override=(null)\n
+A: enable=2\n
+L: firmware_node=../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0e
+L: iommu=../0000:00:00.2/iommu/ivhd0
+L: iommu_group=../../../kernel/iommu_groups/6
+A: irq=30\n
+A: local_cpulist=0-3\n
+A: local_cpus=0000000f\n
+A: max_link_speed=8.0 GT/s PCIe\n
+A: max_link_width=16\n
+A: modalias=pci:v00001022d000015DBsv00001022sd00000000bc06sc04i00\n
+A: msi_bus=1\n
+A: msi_irqs/30=msi\n
+A: numa_node=-1\n
+A: power/autosuspend_delay_ms=100\n
+A: power/control=auto\n
+A: power/runtime_active_time=40292453\n
+A: power/runtime_status=active\n
+A: power/runtime_suspended_time=0\n
+A: power/wakeup=enabled\n
+A: power/wakeup_abort_count=0\n
+A: power/wakeup_active=0\n
+A: power/wakeup_active_count=0\n
+A: power/wakeup_count=0\n
+A: power/wakeup_expire_count=0\n
+A: power/wakeup_last_time_ms=0\n
+A: power/wakeup_max_time_ms=0\n
+A: power/wakeup_total_time_ms=0\n
+A: power_state=D0\n
+A: resource=0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x0000000000000000 0x0000000000000000 
0x0000000000000000\n0x000000000000e000 0x000000000000efff 
0x0000000000000101\n0x00000000fc700000 0x00000000fcafffff 
0x0000000000000200\n0x00000000e0000000 0x00000000f01fffff 
0x0000000000102201\n0x0000000000000000 0x0000000000000000 0x0000000000000000\
 n
+A: revision=0x00\n
+A: secondary_bus_number=5\n
+A: subordinate_bus_number=5\n
+A: subsystem_device=0x0000\n
+A: subsystem_vendor=0x1022\n
+A: vendor=0x1022\n
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/meson.build 
new/umockdev-0.17.1/meson.build
--- old/umockdev-0.16.3/meson.build     2021-09-15 07:38:31.167431600 +0200
+++ new/umockdev-0.17.1/meson.build     2021-12-14 07:27:23.396868000 +0100
@@ -86,6 +86,7 @@
 preload_lib = shared_library('umockdev-preload',
   ['src/libumockdev-preload.c',
    'src/debug.c',
+   'src/utils.c',
    'src/ioctl_tree.c'],
   c_args: ['-fvisibility=default'],
   version: '0.0.0',
@@ -111,6 +112,7 @@
    'src/uevent_sender.c',
    'src/ioctl_tree.vapi',
    'src/ioctl_tree.c',
+   'src/utils.c',
    'src/debug.c'],
   vala_vapi: 'umockdev-1.0.vapi',
   vala_gir: 'UMockdev-1.0.gir',
@@ -128,7 +130,7 @@
   include_directories: include_directories('src'),
   version: lib_version,
   install: true,
-  install_dir: [true, 'include/umockdev-1.0', true, true])
+  install_dir: [true, get_option('includedir') / 'umockdev-1.0', true, true])
 
 # no way to insert "Rename to:" into annotations, so hack it
 hacked_gir = custom_target('UMockdev-1.0 hacked gir',
@@ -172,6 +174,7 @@
    'src/umockdev-spi.vala',
    'src/ioctl_tree.vapi',
    'src/ioctl_tree.c',
+   'src/utils.c',
    'src/debug.c'],
   dependencies: [glib, gobject, gio_unix, vapi_posix, vapi_config, vapi_ioctl, 
libpcap],
   link_with: [umockdev_utils_lib],
@@ -238,6 +241,7 @@
 test('ioctl-tree', executable('test-ioctl-tree',
   ['tests/test-ioctl-tree.c',
    'src/ioctl_tree.c',
+   'src/utils.c',
    'src/debug.c'],
   include_directories: include_directories('src'),
   dependencies: [glib]))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/packaging/umockdev.spec 
new/umockdev-0.17.1/packaging/umockdev.spec
--- old/umockdev-0.16.3/packaging/umockdev.spec 1970-01-01 01:00:00.000000000 
+0100
+++ new/umockdev-0.17.1/packaging/umockdev.spec 2021-12-14 07:27:23.396868000 
+0100
@@ -0,0 +1,74 @@
+Name:             umockdev
+Version:          0
+Release:          1%{?dist}
+Summary:          Mock hardware devices
+
+License:          LGPLv2+
+URL:              https://github.com/martinpitt/%{name}
+Source0:          
https://github.com/martinpitt/%{name}/releases/download/%{version}/%{name}-%{version}.tar.xz
+
+BuildRequires:    git
+BuildRequires:    meson
+BuildRequires:    gtk-doc
+BuildRequires:    gobject-introspection-devel
+BuildRequires:    glib2-devel
+BuildRequires:    libgudev1-devel systemd-devel
+BuildRequires:    libpcap-devel
+BuildRequires:    vala
+BuildRequires:    chrpath
+BuildRequires:    systemd-udev
+
+%description
+With this program and libraries you can easily create mock udev objects.
+This is useful for writing tests for software which talks to
+hardware devices.
+
+%package devel
+Summary: Development packages for %{name}
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+%description devel
+The %{name}-devel package contains the libraries to develop
+using %{name}.
+
+%prep
+%autosetup -S git -n %{name}-%{version}
+
+%build
+%meson -Dgtk_doc=true
+%meson_build
+
+%check
+%meson_test
+
+%install
+%meson_install
+
+# Remove rpath
+chrpath --delete %{buildroot}%{_bindir}/umockdev-record \
+       %{buildroot}%{_bindir}/umockdev-run
+chrpath --delete %{buildroot}%{_libdir}/libumockdev.so.*
+chrpath --delete %{buildroot}%{_libdir}/libumockdev-preload.so.*
+
+rm -rf $RPM_BUILD_ROOT/%{_datadir}/doc/umockdev
+
+%ldconfig_scriptlets
+
+%files
+%license COPYING
+%doc README.md
+%{_bindir}/umockdev-*
+%{_libdir}/libumockdev.so.*
+%{_libdir}/libumockdev-preload.so*
+%{_libdir}/girepository-1.0/UMockdev-1.0.typelib
+
+%files devel
+%doc docs/script-format.txt docs/examples/battery.c docs/examples/battery.py
+%{_libdir}/libumockdev.so
+%{_libdir}/pkgconfig/umockdev-1.0.pc
+%{_datadir}/gir-1.0/UMockdev-1.0.gir
+%{_includedir}/umockdev-1.0
+%{_datadir}/gtk-doc/html/umockdev/
+%{_datadir}/vala/vapi/umockdev-1.0.vapi
+
+%changelog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/packit.yaml 
new/umockdev-0.17.1/packit.yaml
--- old/umockdev-0.16.3/packit.yaml     1970-01-01 01:00:00.000000000 +0100
+++ new/umockdev-0.17.1/packit.yaml     2021-12-14 07:27:23.396868000 +0100
@@ -0,0 +1,30 @@
+# See the documentation for more information:
+# https://packit.dev/docs/configuration/
+specfile_path: packaging/umockdev.spec
+upstream_project_url: https://github.com/martinpitt/umockdev
+copy_upstream_release_description: true
+upstream_package_name: umockdev
+downstream_package_name: umockdev
+
+synced_files:
+  - src: packaging/umockdev.spec
+    dest: umockdev.spec
+
+jobs:
+  - job: copr_build
+    trigger: pull_request
+    metadata:
+      targets:
+        - fedora-development-x86_64
+        - fedora-development-i386
+        - fedora-development-aarch64
+        - fedora-development-ppc64le
+        - fedora-development-s390x
+        - fedora-development-armhfp
+
+  - job: propose_downstream
+    trigger: release
+    metadata:
+      dist_git_branches:
+        - fedora-development
+        - fedora-stable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/src/debug.c 
new/umockdev-0.17.1/src/debug.c
--- old/umockdev-0.16.3/src/debug.c     2021-09-15 07:38:31.167431600 +0200
+++ new/umockdev-0.17.1/src/debug.c     2021-12-14 07:27:23.396868000 +0100
@@ -3,6 +3,7 @@
 #include <stdio.h>
 
 #include "debug.h"
+#include "utils.h"
 
 unsigned debug_categories = 0;
 
@@ -13,7 +14,7 @@
     char *d_copy, *token;
     if (d == NULL)
        return;
-    d_copy = strdup(d);
+    d_copy = strdupx(d);
     for (token = strtok(d_copy, " ,"); token; token = strtok(NULL, " ,")) {
        if (strcmp (token, "all") == 0)
            debug_categories = ~0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/src/ioctl.vapi 
new/umockdev-0.17.1/src/ioctl.vapi
--- old/umockdev-0.16.3/src/ioctl.vapi  2021-09-15 07:38:31.167431600 +0200
+++ new/umockdev-0.17.1/src/ioctl.vapi  2021-12-14 07:27:23.396868000 +0100
@@ -119,5 +119,17 @@
         uint8   word_delay_usecs;
         uint8   pad;
     }
+
+       [CCode (cheader_filename = "linux/hidraw.h")]
+       public const int HIDIOCGRDESCSIZE;
+       [CCode (cheader_filename = "linux/hidraw.h")]
+       public const int HIDIOCGRDESC;
+       [CCode (cheader_filename = "linux/hid.h")]
+       public const int HID_MAX_DESCRIPTOR_SIZE;
+       [CCode (cname = "struct hidraw_report_descriptor", cheader_filename = 
"linux/hidraw.h")]
+       public struct hidraw_report_descriptor {
+               uint32 size;
+               uint8 value[HID_MAX_DESCRIPTOR_SIZE];
+       }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/src/ioctl_tree.c 
new/umockdev-0.17.1/src/ioctl_tree.c
--- old/umockdev-0.16.3/src/ioctl_tree.c        2021-09-15 07:38:31.167431600 
+0200
+++ new/umockdev-0.17.1/src/ioctl_tree.c        2021-12-14 07:27:23.396868000 
+0100
@@ -24,8 +24,10 @@
 #include <linux/ioctl.h>
 #include <linux/usbdevice_fs.h>
 #include <linux/input.h>
+#include <linux/hidraw.h>
 
 #include "debug.h"
+#include "utils.h"
 #include "ioctl_tree.h"
 
 #define TRUE 1
@@ -33,16 +35,6 @@
 
 #define UNUSED __attribute__ ((unused))
 
-static void *
-callocx (size_t nmemb, size_t size)
-{
-  void *r = calloc (nmemb, size);
-  if (r == NULL) {
-      perror ("failed to allocate memory");
-      abort ();
-  }
-  return r;
-}
 
 /***********************************
  *
@@ -327,7 +319,7 @@
 ioctl_node_list_new(void)
 {
     ioctl_node_list *l;
-    l = malloc(sizeof(ioctl_node_list));
+    l = mallocx(sizeof(ioctl_node_list));
     l->n = 0;
     l->capacity = 10;
     l->items = callocx(sizeof(ioctl_tree *), l->capacity);
@@ -495,7 +487,7 @@
 ioctl_simplestruct_init_from_bin(ioctl_tree * node, const void *data)
 {
     DBG(DBG_IOCTL_TREE, "ioctl_simplestruct_init_from_bin: %s(%X): size is %u 
bytes\n", node->type->name, (unsigned) node->id, (unsigned) NSIZE(node));
-    node->data = malloc(NSIZE(node));
+    node->data = mallocx(NSIZE(node));
     memcpy(node->data, data, NSIZE(node));
 }
 
@@ -506,7 +498,7 @@
      * correct length for data; this happens for variable length ioctls such as
      * EVIOCGBIT */
     size_t data_len = strlen(data) / 2;
-    node->data = malloc(data_len);
+    node->data = mallocx(data_len);
 
     if (NSIZE(node) != data_len) {
        DBG(DBG_IOCTL_TREE, "ioctl_simplestruct_init_from_text: adjusting ioctl 
ID %X (size %u) to actual data length %zu\n",
@@ -569,7 +561,7 @@
 {
     size_t size = node->type->get_data_size(node->id, data);
     DBG(DBG_IOCTL_TREE, "ioctl_varlenstruct_init_from_bin: %s(%X): size is %zu 
bytes\n", node->type->name, (unsigned) node->id, size);
-    node->data = malloc(size);
+    node->data = mallocx(size);
     memcpy(node->data, data, size);
 }
 
@@ -578,7 +570,7 @@
 {
     size_t data_len = strlen(data) / 2;
 
-    node->data = malloc(data_len);
+    node->data = mallocx(data_len);
 
     if (!read_hex(data, node->data, data_len)) {
        fprintf(stderr, "ioctl_varlenstruct_init_from_text: failed to parse 
'%s'\n", data);
@@ -944,6 +936,27 @@
     I_NAMED_SIMPLE_STRUCT_IN(EVIOCGMTSLOTS(32), "EVIOCGMTSLOTS", 0, 
ioctl_insertion_parent_stateless),
 #endif
 
+    /* hidraw */
+    I_SIMPLE_STRUCT_IN(HIDIOCGRDESCSIZE, 0, ioctl_insertion_parent_stateless),
+    I_SIMPLE_STRUCT_IN(HIDIOCGRDESC, 0, ioctl_insertion_parent_stateless),
+    I_SIMPLE_STRUCT_IN(HIDIOCGRAWINFO, 0, ioctl_insertion_parent_stateless),
+    /* we define these with len==32, but they apply to any len */
+    I_NAMED_SIMPLE_STRUCT_IN(HIDIOCGRAWNAME(32), "HIDIOCGRAWNAME", 0, 
ioctl_insertion_parent_stateless),
+    I_NAMED_SIMPLE_STRUCT_IN(HIDIOCGRAWPHYS(32), "HIDIOCGRAWPHYS", 0, 
ioctl_insertion_parent_stateless),
+    I_NAMED_SIMPLE_STRUCT_IN(HIDIOCSFEATURE(32), "HIDIOCSFEATURE", 0, 
ioctl_insertion_parent_stateless),
+    I_NAMED_SIMPLE_STRUCT_IN(HIDIOCGFEATURE(32), "HIDIOCGFEATURE", 0, 
ioctl_insertion_parent_stateless),
+    /* this was introduced not too long ago */
+#ifdef HIDIOCGRAWUNIQ
+    I_NAMED_SIMPLE_STRUCT_IN(HIDIOCGRAWUNIQ(32), "HIDIOCGRAWUNIQ", 0, 
ioctl_insertion_parent_stateless),
+#endif
+    /* these were introduced not too long ago */
+#ifdef HIDIOCSINPUT
+    I_NAMED_SIMPLE_STRUCT_IN(HIDIOCSINPUT(32), "HIDIOCSINPUT", 0, 
ioctl_insertion_parent_stateless),
+    I_NAMED_SIMPLE_STRUCT_IN(HIDIOCGINPUT(32), "HIDIOCGINPUT", 0, 
ioctl_insertion_parent_stateless),
+    I_NAMED_SIMPLE_STRUCT_IN(HIDIOCSOUTPUT(32), "HIDIOCSOUTPUT", 0, 
ioctl_insertion_parent_stateless),
+    I_NAMED_SIMPLE_STRUCT_IN(HIDIOCGOUTPUT(32), "HIDIOCGOUTPUT", 0, 
ioctl_insertion_parent_stateless),
+#endif
+
     /* terminator */
     {0, 0, 0, "", NULL, NULL, NULL, NULL, NULL}
 };
@@ -977,7 +990,7 @@
     long offset = 0;
 
     /* chop off real name from offset */
-    real_name = strdup(name);
+    real_name = strdupx(name);
     parens = strchr(real_name, '(');
     if (parens != NULL) {
        *parens = '\0';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/src/libumockdev-preload.c 
new/umockdev-0.17.1/src/libumockdev-preload.c
--- old/umockdev-0.16.3/src/libumockdev-preload.c       2021-09-15 
07:38:31.167431600 +0200
+++ new/umockdev-0.17.1/src/libumockdev-preload.c       2021-12-14 
07:27:23.396868000 +0100
@@ -57,6 +57,7 @@
 
 #include "config.h"
 #include "debug.h"
+#include "utils.h"
 #include "ioctl_tree.h"
 
 /* fix missing O_TMPFILE on some systems */
@@ -483,9 +484,9 @@
        }
     }
 
-    fdinfo = malloc(sizeof(struct ioctl_fd_info));
+    fdinfo = mallocx(sizeof(struct ioctl_fd_info));
     fdinfo->ioctl_sock = sock;
-    fdinfo->dev_path = strdup(dev_path);
+    fdinfo->dev_path = strdupx(dev_path);
     fdinfo->is_default = is_default;
     pthread_mutex_init(&fdinfo->sock_lock, NULL);
 
@@ -856,7 +857,7 @@
        }
     }
 
-    srinfo = malloc(sizeof(struct script_record_info));
+    srinfo = mallocx(sizeof(struct script_record_info));
     srinfo->log = log;
     if (clock_gettime(CLOCK_MONOTONIC, &srinfo->time) < 0) {
        fprintf(stderr, "libumockdev-preload: failed to clock_gettime: %m\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/src/uevent_sender.c 
new/umockdev-0.17.1/src/uevent_sender.c
--- old/umockdev-0.16.3/src/uevent_sender.c     2021-09-15 07:38:31.167431600 
+0200
+++ new/umockdev-0.17.1/src/uevent_sender.c     2021-12-14 07:27:23.396868000 
+0100
@@ -30,6 +30,7 @@
 
 #include <libudev.h>
 
+#include "utils.h"
 #include "uevent_sender.h"
 
 struct _uevent_sender {
@@ -49,7 +50,7 @@
        perror("uevent_sender_open: cannot allocate struct");
        abort();
     }
-    s->rootpath = strdup(rootpath);
+    s->rootpath = strdupx(rootpath);
     s->udev = udev_new();
     snprintf(s->socket_glob, sizeof(s->socket_glob), "%s/event[0-9]*", 
rootpath);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/src/umockdev.vala 
new/umockdev-0.17.1/src/umockdev.vala
--- old/umockdev-0.16.3/src/umockdev.vala       2021-09-15 07:38:31.167431600 
+0200
+++ new/umockdev-0.17.1/src/umockdev.vala       2021-12-14 07:27:23.400868000 
+0100
@@ -511,18 +511,18 @@
         for (int i = 0; i < attributes.length - 1; i += 2) {
             this.set_attribute(dev_path, attributes[i], attributes[i+1]);
             if (attributes[i] == "dev" && dev_node != null) {
+                var val = attributes[i+1].strip(); // strip off trailing \n
                 /* put the major/minor information into /dev for our preload */
                 string infodir = Path.build_filename(this.root_dir, "dev", 
".node");
                 DirUtils.create_with_parents(infodir, 0755);
-                assert(FileUtils.symlink(attributes[i+1],
-                                         Path.build_filename(infodir, 
dev_node.replace("/", "_"))) == 0);
+                assert(FileUtils.symlink(val, Path.build_filename(infodir, 
dev_node.replace("/", "_"))) == 0);
 
                 /* create a /sys/dev link for it, like in real sysfs */
                 string sysdev_dir = Path.build_filename(this.sys_dir, "dev",
                     (dev_path.contains("/block/") ? "block" : "char"));
                 if (DirUtils.create_with_parents(sysdev_dir, 0755) != 0)
                     error("cannot create dir '%s': %s", sysdev_dir, 
strerror(errno));
-                string dest = Path.build_filename(sysdev_dir, attributes[i+1]);
+                string dest = Path.build_filename(sysdev_dir, val);
                 if (!FileUtils.test(dest, FileTest.EXISTS)) {
                     if (FileUtils.symlink("../../" + dev_path.substring(5), 
dest) < 0)
                         error("add_device %s: failed to symlink %s to %s: %s", 
name, dest,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/src/utils.c 
new/umockdev-0.17.1/src/utils.c
--- old/umockdev-0.16.3/src/utils.c     1970-01-01 01:00:00.000000000 +0100
+++ new/umockdev-0.17.1/src/utils.c     2021-12-14 07:27:23.400868000 +0100
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "utils.h"
+
+static void
+abort_errno (const char *msg)
+{
+  perror (msg);
+  abort ();
+}
+
+void *
+callocx (size_t nmemb, size_t size)
+{
+  void *r = calloc (nmemb, size);
+  if (r == NULL)
+      abort_errno ("failed to allocate memory");
+  return r;
+}
+
+void *
+mallocx (size_t size)
+{
+  void *r = malloc (size);
+  if (r == NULL)
+      abort_errno ("failed to allocate memory");
+  return r;
+}
+
+
+char *
+strdupx (const char *s)
+{
+  char *r = strdup (s);
+  if (r == NULL)
+    abort_errno ("failed to allocate memory for strdup");
+  return r;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/src/utils.h 
new/umockdev-0.17.1/src/utils.h
--- old/umockdev-0.16.3/src/utils.h     1970-01-01 01:00:00.000000000 +0100
+++ new/umockdev-0.17.1/src/utils.h     2021-12-14 07:27:23.400868000 +0100
@@ -0,0 +1,6 @@
+#pragma once
+
+/* variants of glibc functions that abort() on ENOMEM */
+void *mallocx (size_t size);
+void *callocx (size_t nmemb, size_t size);
+char *strdupx (const char *s);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/tests/run-apt 
new/umockdev-0.17.1/tests/run-apt
--- old/umockdev-0.16.3/tests/run-apt   2021-09-15 07:38:31.171431800 +0200
+++ new/umockdev-0.17.1/tests/run-apt   2021-12-14 07:27:23.400868000 +0100
@@ -27,8 +27,8 @@
 apt-get install -y eatmydata
 eatmydata apt-get -y --purge dist-upgrade
 
-# install build dependencies
-eatmydata apt-get install -y --no-install-recommends meson git pkg-config 
valac libglib2.0-dev libudev-dev libgudev-1.0-dev libpcap-dev python3-gi 
gobject-introspection libgirepository1.0-dev gir1.2-glib-2.0 gir1.2-gudev-1.0 
gtk-doc-tools udev xserver-xorg-video-dummy xserver-xorg-input-evdev 
xserver-xorg-input-synaptics xinput usbutils gphoto2 valgrind
+# install build and test dependencies
+eatmydata apt-get install -y --no-install-recommends meson git pkg-config 
valac libglib2.0-dev libudev-dev libgudev-1.0-dev libpcap-dev python3-gi 
gobject-introspection libgirepository1.0-dev gir1.2-glib-2.0 gir1.2-gudev-1.0 
gtk-doc-tools udev xserver-xorg-video-dummy xserver-xorg-input-evdev 
xserver-xorg-input-synaptics xinput usbutils evtest gphoto2 valgrind
 
 # run build as user
 useradd build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/tests/run-dnf 
new/umockdev-0.17.1/tests/run-dnf
--- old/umockdev-0.16.3/tests/run-dnf   2021-09-15 07:38:31.171431800 +0200
+++ new/umockdev-0.17.1/tests/run-dnf   2021-12-14 07:27:23.400868000 +0100
@@ -30,15 +30,15 @@
     gtk_doc=true
 fi
 
-# install build dependencies
-dnf -y \${repos:-} install meson git gcc clang glib2-devel gtk-doc 
libgudev1-devel libtool libudev-devel libpcap-devel make python3 
python3-gobject-base usbutils vala xz systemd-udev valgrind \$packages
+# install build and test dependencies
+dnf -y \${repos:-} install meson git gcc clang glib2-devel gtk-doc 
libgudev1-devel libtool libudev-devel libpcap-devel make python3 
python3-gobject-base usbutils vala xz systemd-udev evtest gphoto2 valgrind 
\$packages
 
 # run build as user
 useradd guest
 su -s /bin/sh - guest << EOG
 set -eux
 cd /source
-meson setup /tmp/dbg --buildtype debug --prefix /usr -Dgtk_doc=\${gtk_doc} 
-Db_coverage=\$coverage --werror
+CFLAGS="-fanalyzer" meson setup /tmp/dbg --buildtype debug --prefix /usr 
-Dgtk_doc=\${gtk_doc} -Db_coverage=\$coverage --werror
 cd /tmp/dbg
 DESTDIR=/tmp/inst meson install
 meson test -v --num-processes=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/tests/test-umockdev-run.vala 
new/umockdev-0.17.1/tests/test-umockdev-run.vala
--- old/umockdev-0.16.3/tests/test-umockdev-run.vala    2021-09-15 
07:38:31.171431800 +0200
+++ new/umockdev-0.17.1/tests/test-umockdev-run.vala    2021-12-14 
07:27:23.400868000 +0100
@@ -156,7 +156,6 @@
     assert (Process.if_signaled (exit));
     assert_cmpint (Process.term_sig (exit), CompareOperator.EQ, 
ProcessSignal.SEGV);
     assert_cmpstr (sout, CompareOperator.EQ, "");
-    assert_cmpstr (serr, CompareOperator.EQ, "");
 }
 
 static void
@@ -183,6 +182,46 @@
 }
 
 static void
+t_run_udevadm_block ()
+{
+    string umockdev_file;
+
+    Posix.close (checked_open_tmp ("loop23.XXXXXX.umockdev", out 
umockdev_file));
+
+    checked_file_set_contents (umockdev_file, """P: 
/devices/virtual/block/loop23
+N: loop23
+E: DEVNAME=/dev/loop23
+E: DEVTYPE=disk
+E: MAJOR=7
+E: MINOR=23
+E: SUBSYSTEM=block
+A: dev=7:23\n
+A: size=1048576\n
+""");
+
+    string sout;
+    string serr;
+    int exit;
+
+    // unfortunately the udevadm output between distros is not entirely 
constant
+    assert (get_program_out (
+            "udevadm",
+            umockdev_run_command + "-d " + umockdev_file + " -- udevadm info 
--query=all --name=/dev/loop23",
+            out sout, out serr, out exit));
+
+    assert_cmpstr (serr, CompareOperator.EQ, "");
+    assert_cmpint (exit, CompareOperator.EQ, 0);
+    assert (sout.contains ("P: /devices/virtual/block/loop23\n"));
+    assert (sout.contains ("P: /devices/virtual/block/loop23\n"));
+    assert (sout.contains ("E: DEVPATH=/devices/virtual/block/loop23"));
+    assert (sout.contains ("E: DEVNAME=/dev/loop23"));
+    assert (sout.contains ("E: MAJOR=7"));
+    assert (sout.contains ("E: MINOR=23"));
+
+    FileUtils.remove (umockdev_file);
+}
+
+static void
 t_run_invalid_args ()
 {
     // missing program to run
@@ -517,11 +556,15 @@
     get_program_out ("xinput", "env DISPLAY=:5 xinput --list-props 'SynPS/2 
Synaptics TouchPad'",
             out props_out, out props_err, out props_exit);
 
-    /* shut down X */
+    /* shut down X; this requires extra force due to 
https://launchpad.net/bugs/1853266 */
 #if VALA_0_40
     Posix.kill (xorg_pid, Posix.Signal.TERM);
+    Posix.kill (xorg_pid, Posix.Signal.QUIT);
+    Posix.kill (xorg_pid, Posix.Signal.KILL);
 #else
     Posix.kill (xorg_pid, Posix.SIGTERM);
+    Posix.kill (xorg_pid, Posix.SIGQUIT);
+    Posix.kill (xorg_pid, Posix.SIGKILL);
 #endif
     int status;
     Posix.waitpid (xorg_pid, out status, 0);
@@ -552,6 +595,12 @@
         return;
     }
 
+    unowned string? preload = Environment.get_variable ("LD_PRELOAD");
+    if (preload != null && preload.contains ("vgpreload")) {
+        stdout.printf ("[SKIP: this test does not work under valgrind] ");
+        return;
+    }
+
     Pid evtest_pid;
     int outfd, errfd;
 
@@ -626,6 +675,12 @@
         return;
     }
 
+    unowned string? preload = Environment.get_variable ("LD_PRELOAD");
+    if (preload != null && preload.contains ("vgpreload")) {
+        stdout.printf ("[SKIP: this test does not work under valgrind] ");
+        return;
+    }
+
     Pid evtest_pid;
     int outfd, errfd;
 
@@ -713,6 +768,9 @@
   Test.add_func ("/umockdev-run/version", t_run_version);
   Test.add_func ("/umockdev-run/pipes", t_run_pipes);
 
+  // udevadm emulation
+  Test.add_func ("/umockdev-run/udevadm-block", t_run_udevadm_block);
+
   // error conditions
   Test.add_func ("/umockdev-run/invalid-args", t_run_invalid_args);
   Test.add_func ("/umockdev-run/invalid-device", t_run_invalid_device);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/umockdev-0.16.3/tests/test-umockdev-vala.vala 
new/umockdev-0.17.1/tests/test-umockdev-vala.vala
--- old/umockdev-0.16.3/tests/test-umockdev-vala.vala   2021-09-15 
07:38:31.171431800 +0200
+++ new/umockdev-0.17.1/tests/test-umockdev-vala.vala   2021-12-14 
07:27:23.400868000 +0100
@@ -685,6 +685,42 @@
 }
 
 void
+t_hidraw_ioctl ()
+{
+  var tb = new UMockdev.Testbed ();
+
+  string device;
+  checked_file_get_contents (Path.build_filename(rootdir + 
"/devices/hidraw/fido2.umockdev"), out device);
+  tb_add_from_string (tb, device);
+
+  try {
+      tb.load_ioctl ("/dev/hidraw5", Path.build_filename(rootdir + 
"/devices/hidraw/fido2.ioctl"));
+  } catch (Error e) {
+      error ("Cannot load ioctl file: %s", e.message);
+  }
+
+  int fd = Posix.open ("/dev/hidraw5", Posix.O_RDWR, 0);
+  assert_cmpint (fd, CompareOperator.GE, 0);
+
+  int i = 0;
+  assert_cmpint (Posix.ioctl (fd, Ioctl.HIDIOCGRDESCSIZE, ref i), 
CompareOperator.EQ, 0);
+  assert_cmpint (Posix.errno, CompareOperator.EQ, 0);
+  // HACK: This actually works fine on real s390x (big endian), but fails in 
emulated QEMU (such as COPR)
+  if (Environment.get_variable ("RPM_ARCH") != "s390x")
+      assert_cmpint (i, CompareOperator.EQ, 34);
+  Ioctl.hidraw_report_descriptor desc = { 34, };
+  assert_cmpint (Posix.ioctl (fd, Ioctl.HIDIOCGRDESC, ref desc), 
CompareOperator.EQ, 0);
+  assert_cmpint (Posix.errno, CompareOperator.EQ, 0);
+  uint8 desc_value[] = {
+         0x06, 0xD0, 0xF1, 0x09, 0x01, 0xA1, 0x01, 0x09, 0x20, 0x15, 0x00, 
0x26,
+         0xFF, 0x00, 0x75, 0x08, 0x95, 0x40, 0x81, 0x02, 0x09, 0x21, 0x15, 
0x00,
+         0x26, 0xFF, 0x00, 0x75, 0x08, 0x95, 0x40, 0x91, 0x02, 0xC0
+  };
+  assert_cmpint (Posix.memcmp(desc.value, desc_value, 34), CompareOperator.EQ, 
0);
+  Posix.close (fd);
+}
+
+void
 t_tty_stty ()
 {
   var tb = new UMockdev.Testbed ();
@@ -757,6 +793,13 @@
 void
 t_detects_not_running_in_testbed ()
 {
+
+    if (Environment.get_variable ("RPM_ARCH") == "s390x" || 
Environment.get_variable ("RPM_ARCH") == "arm") {
+        stdout.printf ("[SKIP: test known broken in emulated architectures on 
koji] ");
+        stdout.flush ();
+        return;
+    }
+
     int pipefds[2];
     assert_cmpint (Posix.pipe(pipefds), CompareOperator.EQ, 0);
 
@@ -1049,6 +1092,8 @@
 
   Test.add_func ("/umockdev-testbed-vala/spidev_ioctl", t_spidev_ioctl);
 
+  Test.add_func ("/umockdev-testbed-vala/hidraw_ioctl", t_hidraw_ioctl);
+
   /* tests for mocking TTYs */
   Test.add_func ("/umockdev-testbed-vala/tty_stty", t_tty_stty);
   Test.add_func ("/umockdev-testbed-vala/tty_data", t_tty_data);

Reply via email to