diff --git a/.gitignore b/.gitignore index e69de29..32d4936 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,2 @@ +/udev-hid-bpf-2.1.0-20240704-vendor.tar.xz +/udev-hid-bpf-2.1.0-20240704.tar.bz2 diff --git a/0001-Add-Cargo.lock-to-git.patch b/0001-Add-Cargo.lock-to-git.patch new file mode 100644 index 0000000..2419eba --- /dev/null +++ b/0001-Add-Cargo.lock-to-git.patch @@ -0,0 +1,986 @@ +From 1adb42eb3757d31cc21bda1078361cd9e817a497 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Mon, 15 Jul 2024 10:52:51 +1000 +Subject: [PATCH] Add Cargo.lock to git + +TLDR: it helps with reproducible builds. +https://doc.rust-lang.org/cargo/faq.html#why-have-cargolock-in-version-control + +Having it checked in seems like common practise for most binaries. In +fact, older versions of the above link definitely advise to put +Cargo.lock into git, e.g.: +http://web.mit.edu/rust-lang_v1.25/arch/amd64_ubuntu1404/share/doc/rust/html/cargo/faq.html#why-do-binaries-have-cargolock-in-version-control-but-not-libraries + +Signed-off-by: Peter Hutterer +--- + .gitignore | 1 - + Cargo.lock | 948 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 948 insertions(+), 1 deletion(-) + create mode 100644 Cargo.lock + +diff --git a/.gitignore b/.gitignore +index 28d861bd6a0d..da710b371e8d 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -1,4 +1,3 @@ + /target +-Cargo.lock + udev-hid-bpf-*.tar.* + __pycache__ +diff --git a/Cargo.lock b/Cargo.lock +new file mode 100644 +index 000000000000..1a5ed18b20f6 +--- /dev/null ++++ b/Cargo.lock +@@ -0,0 +1,948 @@ ++# This file is automatically @generated by Cargo. ++# It is not intended for manual editing. ++version = 3 ++ ++[[package]] ++name = "aho-corasick" ++version = "1.1.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" ++dependencies = [ ++ "memchr", ++] ++ ++[[package]] ++name = "android-tzdata" ++version = "0.1.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" ++ ++[[package]] ++name = "android_system_properties" ++version = "0.1.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" ++dependencies = [ ++ "libc", ++] ++ ++[[package]] ++name = "anstream" ++version = "0.6.14" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" ++dependencies = [ ++ "anstyle", ++ "anstyle-parse", ++ "anstyle-query", ++ "anstyle-wincon", ++ "colorchoice", ++ "is_terminal_polyfill", ++ "utf8parse", ++] ++ ++[[package]] ++name = "anstyle" ++version = "1.0.7" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" ++ ++[[package]] ++name = "anstyle-parse" ++version = "0.2.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" ++dependencies = [ ++ "utf8parse", ++] ++ ++[[package]] ++name = "anstyle-query" ++version = "1.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" ++dependencies = [ ++ "windows-sys 0.52.0", ++] ++ ++[[package]] ++name = "anstyle-wincon" ++version = "3.0.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" ++dependencies = [ ++ "anstyle", ++ "windows-sys 0.52.0", ++] ++ ++[[package]] ++name = "anyhow" ++version = "1.0.86" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" ++ ++[[package]] ++name = "atty" ++version = "0.2.14" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" ++dependencies = [ ++ "hermit-abi", ++ "libc", ++ "winapi", ++] ++ ++[[package]] ++name = "autocfg" ++version = "1.3.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" ++ ++[[package]] ++name = "bitflags" ++version = "2.6.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" ++ ++[[package]] ++name = "bumpalo" ++version = "3.16.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" ++ ++[[package]] ++name = "camino" ++version = "1.1.7" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" ++dependencies = [ ++ "serde", ++] ++ ++[[package]] ++name = "cargo-platform" ++version = "0.1.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" ++dependencies = [ ++ "serde", ++] ++ ++[[package]] ++name = "cargo_metadata" ++version = "0.15.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" ++dependencies = [ ++ "camino", ++ "cargo-platform", ++ "semver", ++ "serde", ++ "serde_json", ++ "thiserror", ++] ++ ++[[package]] ++name = "cc" ++version = "1.1.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9711f33475c22aab363b05564a17d7b789bf3dfec5ebabb586adee56f0e271b5" ++ ++[[package]] ++name = "cfg-if" ++version = "1.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" ++ ++[[package]] ++name = "cfg_aliases" ++version = "0.1.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" ++ ++[[package]] ++name = "chrono" ++version = "0.4.38" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" ++dependencies = [ ++ "android-tzdata", ++ "iana-time-zone", ++ "js-sys", ++ "num-traits", ++ "wasm-bindgen", ++ "windows-targets 0.52.6", ++] ++ ++[[package]] ++name = "clap" ++version = "4.5.9" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" ++dependencies = [ ++ "clap_builder", ++ "clap_derive", ++] ++ ++[[package]] ++name = "clap_builder" ++version = "4.5.9" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" ++dependencies = [ ++ "anstream", ++ "anstyle", ++ "clap_lex", ++ "strsim", ++] ++ ++[[package]] ++name = "clap_derive" ++version = "4.5.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" ++dependencies = [ ++ "heck 0.5.0", ++ "proc-macro2", ++ "quote", ++ "syn 2.0.71", ++] ++ ++[[package]] ++name = "clap_lex" ++version = "0.7.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" ++ ++[[package]] ++name = "colorchoice" ++version = "1.0.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" ++ ++[[package]] ++name = "core-foundation-sys" ++version = "0.8.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" ++ ++[[package]] ++name = "errno" ++version = "0.3.9" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" ++dependencies = [ ++ "libc", ++ "windows-sys 0.52.0", ++] ++ ++[[package]] ++name = "fastrand" ++version = "2.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" ++ ++[[package]] ++name = "heck" ++version = "0.4.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" ++ ++[[package]] ++name = "heck" ++version = "0.5.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" ++ ++[[package]] ++name = "hermit-abi" ++version = "0.1.19" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" ++dependencies = [ ++ "libc", ++] ++ ++[[package]] ++name = "iana-time-zone" ++version = "0.1.60" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" ++dependencies = [ ++ "android_system_properties", ++ "core-foundation-sys", ++ "iana-time-zone-haiku", ++ "js-sys", ++ "wasm-bindgen", ++ "windows-core", ++] ++ ++[[package]] ++name = "iana-time-zone-haiku" ++version = "0.1.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" ++dependencies = [ ++ "cc", ++] ++ ++[[package]] ++name = "is_terminal_polyfill" ++version = "1.70.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" ++ ++[[package]] ++name = "itoa" ++version = "1.0.11" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" ++ ++[[package]] ++name = "js-sys" ++version = "0.3.69" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" ++dependencies = [ ++ "wasm-bindgen", ++] ++ ++[[package]] ++name = "libbpf-cargo" ++version = "0.23.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "71d93a9c394b847104335470b262e8c82794a17d379c70d33388578ac4f3c8d2" ++dependencies = [ ++ "anyhow", ++ "cargo_metadata", ++ "clap", ++ "libbpf-rs", ++ "memmap2", ++ "regex", ++ "semver", ++ "serde", ++ "serde_json", ++ "tempfile", ++] ++ ++[[package]] ++name = "libbpf-rs" ++version = "0.23.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1159a07fd5b9aca3f86ba5688394bb9bd75142bcec510052d6f765e98d801b09" ++dependencies = [ ++ "bitflags", ++ "libbpf-sys", ++ "libc", ++ "strum_macros", ++ "vsprintf", ++] ++ ++[[package]] ++name = "libbpf-sys" ++version = "1.4.2+v1.4.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "800bccc21b216764f96334a241a072b842121843bf679f5a03b0c2c21cb339ed" ++dependencies = [ ++ "cc", ++ "nix", ++ "pkg-config", ++] ++ ++[[package]] ++name = "libc" ++version = "0.2.155" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" ++ ++[[package]] ++name = "libudev-sys" ++version = "0.1.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" ++dependencies = [ ++ "libc", ++ "pkg-config", ++] ++ ++[[package]] ++name = "linux-raw-sys" ++version = "0.4.14" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" ++ ++[[package]] ++name = "log" ++version = "0.4.22" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" ++ ++[[package]] ++name = "memchr" ++version = "2.7.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" ++ ++[[package]] ++name = "memmap2" ++version = "0.5.10" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" ++dependencies = [ ++ "libc", ++] ++ ++[[package]] ++name = "mio" ++version = "0.8.11" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" ++dependencies = [ ++ "libc", ++ "log", ++ "wasi", ++ "windows-sys 0.48.0", ++] ++ ++[[package]] ++name = "nix" ++version = "0.28.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" ++dependencies = [ ++ "bitflags", ++ "cfg-if", ++ "cfg_aliases", ++ "libc", ++] ++ ++[[package]] ++name = "num-traits" ++version = "0.2.19" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" ++dependencies = [ ++ "autocfg", ++] ++ ++[[package]] ++name = "once_cell" ++version = "1.19.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" ++ ++[[package]] ++name = "pkg-config" ++version = "0.3.30" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" ++ ++[[package]] ++name = "proc-macro2" ++version = "1.0.86" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" ++dependencies = [ ++ "unicode-ident", ++] ++ ++[[package]] ++name = "quote" ++version = "1.0.36" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" ++dependencies = [ ++ "proc-macro2", ++] ++ ++[[package]] ++name = "regex" ++version = "1.10.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" ++dependencies = [ ++ "aho-corasick", ++ "memchr", ++ "regex-automata", ++ "regex-syntax", ++] ++ ++[[package]] ++name = "regex-automata" ++version = "0.4.7" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" ++dependencies = [ ++ "aho-corasick", ++ "memchr", ++ "regex-syntax", ++] ++ ++[[package]] ++name = "regex-syntax" ++version = "0.8.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" ++ ++[[package]] ++name = "rustix" ++version = "0.38.34" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" ++dependencies = [ ++ "bitflags", ++ "errno", ++ "libc", ++ "linux-raw-sys", ++ "windows-sys 0.52.0", ++] ++ ++[[package]] ++name = "rustversion" ++version = "1.0.17" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" ++ ++[[package]] ++name = "ryu" ++version = "1.0.18" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" ++ ++[[package]] ++name = "semver" ++version = "1.0.23" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" ++dependencies = [ ++ "serde", ++] ++ ++[[package]] ++name = "serde" ++version = "1.0.204" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" ++dependencies = [ ++ "serde_derive", ++] ++ ++[[package]] ++name = "serde_derive" ++version = "1.0.204" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 2.0.71", ++] ++ ++[[package]] ++name = "serde_json" ++version = "1.0.120" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" ++dependencies = [ ++ "itoa", ++ "ryu", ++ "serde", ++] ++ ++[[package]] ++name = "stderrlog" ++version = "0.5.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "69a26bbf6de627d389164afa9783739b56746c6c72c4ed16539f4ff54170327b" ++dependencies = [ ++ "atty", ++ "chrono", ++ "log", ++ "termcolor", ++ "thread_local", ++] ++ ++[[package]] ++name = "strsim" ++version = "0.11.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" ++ ++[[package]] ++name = "strum_macros" ++version = "0.24.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" ++dependencies = [ ++ "heck 0.4.1", ++ "proc-macro2", ++ "quote", ++ "rustversion", ++ "syn 1.0.109", ++] ++ ++[[package]] ++name = "syn" ++version = "1.0.109" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "unicode-ident", ++] ++ ++[[package]] ++name = "syn" ++version = "2.0.71" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "unicode-ident", ++] ++ ++[[package]] ++name = "tempfile" ++version = "3.10.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" ++dependencies = [ ++ "cfg-if", ++ "fastrand", ++ "rustix", ++ "windows-sys 0.52.0", ++] ++ ++[[package]] ++name = "termcolor" ++version = "1.1.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" ++dependencies = [ ++ "winapi-util", ++] ++ ++[[package]] ++name = "thiserror" ++version = "1.0.62" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" ++dependencies = [ ++ "thiserror-impl", ++] ++ ++[[package]] ++name = "thiserror-impl" ++version = "1.0.62" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 2.0.71", ++] ++ ++[[package]] ++name = "thread_local" ++version = "1.1.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" ++dependencies = [ ++ "cfg-if", ++ "once_cell", ++] ++ ++[[package]] ++name = "udev" ++version = "0.7.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4ebdbbd670373442a12fe9ef7aeb53aec4147a5a27a00bbc3ab639f08f48191a" ++dependencies = [ ++ "libc", ++ "libudev-sys", ++ "mio", ++ "pkg-config", ++] ++ ++[[package]] ++name = "udev-hid-bpf" ++version = "2.1.0-20240704" ++dependencies = [ ++ "anyhow", ++ "clap", ++ "libbpf-cargo", ++ "libbpf-rs", ++ "libbpf-sys", ++ "libc", ++ "log", ++ "mio", ++ "regex", ++ "serde", ++ "serde_json", ++ "stderrlog", ++ "tempfile", ++ "udev", ++] ++ ++[[package]] ++name = "unicode-ident" ++version = "1.0.12" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" ++ ++[[package]] ++name = "utf8parse" ++version = "0.2.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" ++ ++[[package]] ++name = "vsprintf" ++version = "2.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "aec2f81b75ca063294776b4f7e8da71d1d5ae81c2b1b149c8d89969230265d63" ++dependencies = [ ++ "cc", ++ "libc", ++] ++ ++[[package]] ++name = "wasi" ++version = "0.11.0+wasi-snapshot-preview1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" ++ ++[[package]] ++name = "wasm-bindgen" ++version = "0.2.92" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" ++dependencies = [ ++ "cfg-if", ++ "wasm-bindgen-macro", ++] ++ ++[[package]] ++name = "wasm-bindgen-backend" ++version = "0.2.92" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" ++dependencies = [ ++ "bumpalo", ++ "log", ++ "once_cell", ++ "proc-macro2", ++ "quote", ++ "syn 2.0.71", ++ "wasm-bindgen-shared", ++] ++ ++[[package]] ++name = "wasm-bindgen-macro" ++version = "0.2.92" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" ++dependencies = [ ++ "quote", ++ "wasm-bindgen-macro-support", ++] ++ ++[[package]] ++name = "wasm-bindgen-macro-support" ++version = "0.2.92" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 2.0.71", ++ "wasm-bindgen-backend", ++ "wasm-bindgen-shared", ++] ++ ++[[package]] ++name = "wasm-bindgen-shared" ++version = "0.2.92" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" ++ ++[[package]] ++name = "winapi" ++version = "0.3.9" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" ++dependencies = [ ++ "winapi-i686-pc-windows-gnu", ++ "winapi-x86_64-pc-windows-gnu", ++] ++ ++[[package]] ++name = "winapi-i686-pc-windows-gnu" ++version = "0.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" ++ ++[[package]] ++name = "winapi-util" ++version = "0.1.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" ++dependencies = [ ++ "windows-sys 0.52.0", ++] ++ ++[[package]] ++name = "winapi-x86_64-pc-windows-gnu" ++version = "0.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" ++ ++[[package]] ++name = "windows-core" ++version = "0.52.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" ++dependencies = [ ++ "windows-targets 0.52.6", ++] ++ ++[[package]] ++name = "windows-sys" ++version = "0.48.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" ++dependencies = [ ++ "windows-targets 0.48.5", ++] ++ ++[[package]] ++name = "windows-sys" ++version = "0.52.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" ++dependencies = [ ++ "windows-targets 0.52.6", ++] ++ ++[[package]] ++name = "windows-targets" ++version = "0.48.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" ++dependencies = [ ++ "windows_aarch64_gnullvm 0.48.5", ++ "windows_aarch64_msvc 0.48.5", ++ "windows_i686_gnu 0.48.5", ++ "windows_i686_msvc 0.48.5", ++ "windows_x86_64_gnu 0.48.5", ++ "windows_x86_64_gnullvm 0.48.5", ++ "windows_x86_64_msvc 0.48.5", ++] ++ ++[[package]] ++name = "windows-targets" ++version = "0.52.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" ++dependencies = [ ++ "windows_aarch64_gnullvm 0.52.6", ++ "windows_aarch64_msvc 0.52.6", ++ "windows_i686_gnu 0.52.6", ++ "windows_i686_gnullvm", ++ "windows_i686_msvc 0.52.6", ++ "windows_x86_64_gnu 0.52.6", ++ "windows_x86_64_gnullvm 0.52.6", ++ "windows_x86_64_msvc 0.52.6", ++] ++ ++[[package]] ++name = "windows_aarch64_gnullvm" ++version = "0.48.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" ++ ++[[package]] ++name = "windows_aarch64_gnullvm" ++version = "0.52.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" ++ ++[[package]] ++name = "windows_aarch64_msvc" ++version = "0.48.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" ++ ++[[package]] ++name = "windows_aarch64_msvc" ++version = "0.52.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" ++ ++[[package]] ++name = "windows_i686_gnu" ++version = "0.48.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" ++ ++[[package]] ++name = "windows_i686_gnu" ++version = "0.52.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" ++ ++[[package]] ++name = "windows_i686_gnullvm" ++version = "0.52.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" ++ ++[[package]] ++name = "windows_i686_msvc" ++version = "0.48.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" ++ ++[[package]] ++name = "windows_i686_msvc" ++version = "0.52.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" ++ ++[[package]] ++name = "windows_x86_64_gnu" ++version = "0.48.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" ++ ++[[package]] ++name = "windows_x86_64_gnu" ++version = "0.52.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" ++ ++[[package]] ++name = "windows_x86_64_gnullvm" ++version = "0.48.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" ++ ++[[package]] ++name = "windows_x86_64_gnullvm" ++version = "0.52.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" ++ ++[[package]] ++name = "windows_x86_64_msvc" ++version = "0.48.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" ++ ++[[package]] ++name = "windows_x86_64_msvc" ++version = "0.52.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +-- +2.45.2 + diff --git a/0001-Bump-the-cargo-test-timeout-to-500s.patch b/0001-Bump-the-cargo-test-timeout-to-500s.patch new file mode 100644 index 0000000..f054645 --- /dev/null +++ b/0001-Bump-the-cargo-test-timeout-to-500s.patch @@ -0,0 +1,26 @@ +From 4f3044dd2429ad85ee936e45adb9c91e8baaa2ab Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Thu, 18 Apr 2024 13:14:40 +1000 +Subject: [PATCH] Bump the cargo test timeout to 500s + +Signed-off-by: Peter Hutterer +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index b56ff8f7be02..ff156c0a5763 100644 +--- a/meson.build ++++ b/meson.build +@@ -112,7 +112,7 @@ test('cargo test', + cargo, + args: ['test'], + env: cargo_env, +- timeout: 120, ++ timeout: 500, + ) + + meson.add_devenv(cargo_env) +-- +2.44.0 + diff --git a/0001-meson.build-pass-the-target-dir-as-arg-instead-of-an.patch b/0001-meson.build-pass-the-target-dir-as-arg-instead-of-an.patch new file mode 100644 index 0000000..7de9300 --- /dev/null +++ b/0001-meson.build-pass-the-target-dir-as-arg-instead-of-an.patch @@ -0,0 +1,35 @@ +From 567d4ab44bbdd3c87aa58126208485d82413bff7 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Mon, 15 Jul 2024 09:52:07 +1000 +Subject: [PATCH] meson.build: pass the target dir as arg instead of an env + +Shouldn't have any functional changes but seem more expressive. + +Signed-off-by: Peter Hutterer +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 23ed622f2253..f17e835e7a8a 100644 +--- a/meson.build ++++ b/meson.build +@@ -38,6 +38,7 @@ use_bpf_tracing = get_option('bpf-tracing') + + cargo_options = [ + '--manifest-path', meson.project_source_root() / 'Cargo.toml', ++ '--target-dir', meson.project_build_root(), + ] + + if get_option('buildtype') == 'release' +@@ -57,7 +58,6 @@ cargo_env = { + 'MESON_BUILD': '1', + 'MESON_BINDIR': bindir, + 'CARGO_HOME': meson.project_build_root() / 'cargo-home', +- 'CARGO_TARGET_DIR': meson.project_build_root(), + 'BPF_SOURCE_ROOT': meson.project_source_root(), + 'BPF_INSTALL_DIR': bpfdir, + 'BPF_LOOKUP_DIRS': lookup_bpfdirs, +-- +2.45.2 + diff --git a/0001-meson.build-swap-buildtype-check-to-detect-debug-bui.patch b/0001-meson.build-swap-buildtype-check-to-detect-debug-bui.patch new file mode 100644 index 0000000..1a34e51 --- /dev/null +++ b/0001-meson.build-swap-buildtype-check-to-detect-debug-bui.patch @@ -0,0 +1,44 @@ +From 71649bf093aa95d04180b137f53581cdb4f2c6ab Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Mon, 15 Jul 2024 10:16:16 +1000 +Subject: [PATCH] meson.build: swap buildtype check to detect debug builds + +Instead of detecting a release build, detect a debug build to +enable the debug build and --all-targets - everything else +goes to --release. + +This is more reliable for distributions like Fedora that use +-Dbuildtype=plain which before we'd detect as debug build. + +Signed-off-by: Peter Hutterer +--- + meson.build | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/meson.build b/meson.build +index f17e835e7a8a..212edefecad5 100644 +--- a/meson.build ++++ b/meson.build +@@ -41,14 +41,14 @@ cargo_options = [ + '--target-dir', meson.project_build_root(), + ] + +-if get_option('buildtype') == 'release' +- cargo_options += [ '--release' ] +- rust_target = 'release' +- message('Building in release mode') +-else ++if get_option('buildtype') in ['debug', 'debugoptimized'] + cargo_options += [ '--all-targets' ] + rust_target = 'debug' + message('Building in debug mode') ++else ++ cargo_options += [ '--release' ] ++ rust_target = 'release' ++ message('Building in release mode') + endif + + subdir('src') +-- +2.45.2 + diff --git a/sources b/sources new file mode 100644 index 0000000..724fc51 --- /dev/null +++ b/sources @@ -0,0 +1,2 @@ +SHA512 (udev-hid-bpf-2.1.0-20240704-vendor.tar.xz) = ed4388318b4e531e71262977ef09e5e60c9642cf177a56222be42498ab5cce3d110b7963553aa736ec4bc3559567ccffd853c6e2d71a75b3e7f1ba7767badfda +SHA512 (udev-hid-bpf-2.1.0-20240704.tar.bz2) = f301e8ca9cff4de80ce1fff9b9c35a3748800908d42073b7131589e25242c11ac4e18af9f7fe5c4b6630acd032fd4e2f80f05fab4e6a21c1594d504551cec415 diff --git a/udev-hid-bpf.spec b/udev-hid-bpf.spec new file mode 100644 index 0000000..4e03588 --- /dev/null +++ b/udev-hid-bpf.spec @@ -0,0 +1,160 @@ +%bcond_without check +%global udevdir %(pkg-config --variable=udevdir udev) +%global cargo_install_lib 0 +%global crate udev-hid-bpf + +%if 0%{?rhel} +%global bundled_rust_deps 1 +%else +%global bundled_rust_deps 0 +%endif + +# Upstream uses 1.0.0-20240417 but rpm won't let us use the dash, so let's use a dot instead. +%global upstream_version 2.1.0 +%global upstream_version_date 20240704 +%global tarball %{upstream_version}-%{upstream_version_date} + +Name: udev-hid-bpf +Version: %{upstream_version}.%{upstream_version_date} +Release: %autorelease +Summary: HID-BPF quirk loader tool + +SourceLicense: GPL-2.0-only +License: (MIT OR Apache-2.0) AND Unicode-DFS-2016 AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND BSD-2-Clause AND (BSD-3-Clause OR MIT OR Apache-2.0) AND GPL-2.0-only AND (LGPL-2.1-only OR BSD-2-Clause) AND MIT AND (MIT OR Apache-2.0) AND (Unlicense OR MIT) +URL: https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/ +Source0: https://gitlab.freedesktop.org/libevdev/%{name}/-/archive/%{tarball}/%{name}-%{tarball}.tar.bz2 +# To recreate tarball: +# $ fedpkg prep +# $ pushd udev-hid-bpf-...; cargo vendor && tar Jcvf ../$(basename $PWD)-vendor.tar.xz vendor/ ; popd +Source1: %{name}-%{upstream_version}-%{upstream_version_date}-vendor.tar.xz + +Patch01: 0001-Bump-the-cargo-test-timeout-to-500s.patch +Patch02: 0001-meson.build-pass-the-target-dir-as-arg-instead-of-an.patch +Patch03: 0001-meson.build-swap-buildtype-check-to-detect-debug-bui.patch +Patch04: 0001-Add-Cargo.lock-to-git.patch + +%if 0%{?rhel} +BuildRequires: rust-toolset +%else +BuildRequires: cargo-rpm-macros >= 26 +%endif +BuildRequires: systemd-rpm-macros +BuildRequires: python3-rpm-macros +BuildRequires: meson cargo +BuildRequires: pkgconfig(udev) +BuildRequires: clang +BuildRequires: git +BuildRequires: pkgconfig(libbpf) bpftool +BuildRequires: pkgconfig(libudev) + +Requires: systemd-udev +Requires: %{name}-stable%{?_isa} = %{version}-%{release} + +# We don't have bpftool (#2294345) +ExcludeArch: %{ix86} + +%description +%{name} is a loader for HID eBPF programs aimed +at making it simple to develop and test eBPF programs +for HID devices. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries +and header files for developing applications +that use %{name}. + +%package testing +Summary: Testing eBPF programs for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description testing +The %{name}-testing package contains HID eBPF programs +for %{name} that have not yet been merged into +an upstream kernel. + +%package stable +Summary: Stable eBPF programs for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description stable +The %{name}-stable package contains HID eBPF programs +for %{name} that have been merged into +an upstream kernel. + +%prep +%autosetup -S git -p1 -n %{name}-%{tarball} +%py3_shebang_fix $(git grep -l '#!/usr/bin/.*python3') + +# Real build system is meson but upstream makes +# sure cargo on its own works too so this is safe to call here +%if 0%{?bundled_rust_deps} +tar xf %{SOURCE1} +%cargo_prep -v vendor +%else +%cargo_prep +%endif + +%if ! 0%{?bundled_rust_deps} +%generate_buildrequires +%cargo_generate_buildrequires +%endif + +%build +export RUSTFLAGS="%build_rustflags" +%meson -Dudevdir=%{udevdir} -Dbpfs=stable,testing -Dtests=disabled +%meson_build +%{cargo_license_summary} +%{cargo_license} > LICENSE.dependencies +%if 0%{?bundled_rust_deps} +%cargo_vendor_manifest +%endif + +%install +%meson_install + +%if %{with check} +%check +%meson_test +%endif + +%files +%license LICENSE +%license LICENSE.dependencies +%if 0%{?bundled_rust_deps} +%license cargo-vendor.txt +%endif +%doc README.md +%{_bindir}/udev-hid-bpf +%{_mandir}/man1/udev-hid-bpf.1* +%{udevdir}/rules.d/81-hid-bpf.rules +%dir /usr/lib/firmware/hid/bpf +%dir /usr/lib/firmware/hid/ + +%files stable +%license LICENSE +%license LICENSE.dependencies +%{_udevhwdbdir}/81-hid-bpf-stable.hwdb +/usr/lib/firmware/hid/bpf/*-FR-TEC__Raptor-Mach-2.bpf.o +/usr/lib/firmware/hid/bpf/*-HP__Elite-Presenter.bpf.o +/usr/lib/firmware/hid/bpf/*-Huion__Kamvas-Pro-19.bpf.o +/usr/lib/firmware/hid/bpf/*-IOGEAR__Kaliber-MMOmentum.bpf.o +/usr/lib/firmware/hid/bpf/*-Microsoft__Xbox-Elite-2.bpf.o +/usr/lib/firmware/hid/bpf/*-Wacom__ArtPen.bpf.o +/usr/lib/firmware/hid/bpf/*-XPPen__Artist24.bpf.o +/usr/lib/firmware/hid/bpf/*-XPPen__ArtistPro16Gen2.bpf.o +/usr/lib/firmware/hid/bpf/*-Huion__Inspiroy-2-S.bpf.o +/usr/lib/firmware/hid/bpf/*-Huion__Dial-2.bpf.o +/usr/lib/firmware/hid/bpf/*-XPPen__DecoMini4.bpf.o +/usr/lib/firmware/hid/bpf/*-Thrustmaster__TCA-Yoke-Boeing.bpf.o + +%files testing +%license LICENSE +%license LICENSE.dependencies +%{_udevhwdbdir}/81-hid-bpf-testing.hwdb + +%changelog +%autochangelog