mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-09-21 05:31:25 +02:00
72 lines
2.4 KiB
Diff
72 lines
2.4 KiB
Diff
From: Jakub Jirutka <jakub@jirutka.cz>
|
|
Date: Sat, 11 Sep 2021 22:52:03 +0200
|
|
Subject: [PATCH] Hack fprint-list-udev-hwdb to generate udev rules
|
|
|
|
hwdb is systemd/udev specific, it's not widely supported. Let me quote
|
|
author of libudev-zero:
|
|
|
|
> Udev hwdb is yet another illustration of systemd-like approach. What the
|
|
> hell "userspace /dev" has to do with parsing hardware
|
|
> database(pci.ids, usb.ids) and setting/remapping buttons? Udev smells
|
|
> like systemd by trying to implement all possible functionality in the
|
|
> single daemon/code base. Standalone UNIX-way programs much better
|
|
> suited for such purposes.
|
|
|
|
This patch adds hacky support for generating classic udev rules (same as
|
|
in the older versions) into fprint-list-udev-hwdb program - if environment
|
|
variable HACK_GEN_RULES is present, it outputs udev rules instead of hwdb
|
|
entries.
|
|
|
|
See https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/336
|
|
|
|
diff --git a/libfprint/fprint-list-udev-hwdb.c b/libfprint/fprint-list-udev-hwdb.c
|
|
index dadb303..d2c4ada 100644
|
|
--- a/libfprint/fprint-list-udev-hwdb.c
|
|
+++ b/libfprint/fprint-list-udev-hwdb.c
|
|
@@ -20,6 +20,7 @@
|
|
*/
|
|
|
|
#include <config.h>
|
|
+#include <stdlib.h>
|
|
|
|
#include "fpi-context.h"
|
|
#include "fpi-device.h"
|
|
@@ -119,6 +120,8 @@
|
|
|
|
GHashTable *printed = NULL;
|
|
|
|
+static int HACK_gen_rules = 0;
|
|
+
|
|
static void
|
|
print_driver (const FpDeviceClass *cls)
|
|
{
|
|
@@ -161,12 +164,19 @@
|
|
g_print ("\n# Known unsupported devices\n");
|
|
}
|
|
|
|
+ if (!HACK_gen_rules) {
|
|
g_print ("usb:v%04Xp%04X*\n",
|
|
entry->vid, entry->pid);
|
|
+ } else {
|
|
+ g_print ("SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ATTRS{dev}==\"*\", TEST==\"power/control\", ATTR{power/control}=\"auto\"\n",
|
|
+ entry->vid, entry->pid);
|
|
+ g_print ("SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ENV{LIBFPRINT_DRIVER}=\"%s\"\n",
|
|
+ entry->vid, entry->pid, cls->full_name);
|
|
+ }
|
|
num_printed++;
|
|
}
|
|
|
|
- if (num_printed > 0)
|
|
+ if (num_printed > 0 && !HACK_gen_rules)
|
|
{
|
|
g_print (" ID_AUTOSUSPEND=1\n");
|
|
g_print (" ID_PERSIST=0\n");
|
|
@@ -190,6 +200,7 @@
|
|
guint i;
|
|
|
|
program_name = g_path_get_basename (argv[0]);
|
|
+ HACK_gen_rules = getenv ("HACK_GEN_RULES") != NULL;
|
|
|
|
g_print ("# SPDX-License-Identifier: LGPL-2.1-or-later\n");
|
|
g_print ("# This file has been generated using %s with all drivers enabled\n",
|