From 58762560bc3e8843bdfcada1b04ebcd019c5529e Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Tue, 23 Jan 2024 17:28:25 +0200 Subject: [PATCH 1/2] umockdev: enable strictDeps As pointed out in https://github.com/NixOS/nixpkgs/issues/280697#issuecomment-1906206490, umockdev tests shell out to udevadm, and in both cases, systemdMinimal should be sufficient. Fixes #280697 --- pkgs/development/libraries/umockdev/default.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/umockdev/default.nix b/pkgs/development/libraries/umockdev/default.nix index 1cae2c62b33c..e1c7697b78a2 100644 --- a/pkgs/development/libraries/umockdev/default.nix +++ b/pkgs/development/libraries/umockdev/default.nix @@ -12,7 +12,7 @@ , ninja , pkg-config , python3 -, systemd +, systemdMinimal , usbutils , vala , which @@ -49,7 +49,7 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ glib - systemd + systemdMinimal libpcap ]; @@ -59,10 +59,13 @@ stdenv.mkDerivation (finalAttrs: { nativeCheckInputs = [ python3 - which + systemdMinimal usbutils + which ]; + strictDeps = true; + mesonFlags = [ "-Dgtk_doc=true" ]; From ded8c868f68826a8e04c9935e0abe9aa3f9b6507 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Wed, 24 Jan 2024 14:34:56 +0200 Subject: [PATCH 2/2] umockev: hardcode udevadm Replace references to udevadm with an absolute paths, so programs using umockdev will just work without having to provide it in their test environment $PATH. This allows us removing systemdMinimal from nativeCheckInputs ourselves. It's still needed in buildInputs, as the build queries for it via pkg-config. --- .../libraries/umockdev/default.nix | 10 ++++- .../umockdev/substitute-udevadm.patch | 41 +++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/umockdev/substitute-udevadm.patch diff --git a/pkgs/development/libraries/umockdev/default.nix b/pkgs/development/libraries/umockdev/default.nix index e1c7697b78a2..0bc817cde299 100644 --- a/pkgs/development/libraries/umockdev/default.nix +++ b/pkgs/development/libraries/umockdev/default.nix @@ -12,6 +12,7 @@ , ninja , pkg-config , python3 +, substituteAll , systemdMinimal , usbutils , vala @@ -33,6 +34,14 @@ stdenv.mkDerivation (finalAttrs: { # Hardcode absolute paths to libraries so that consumers # do not need to set LD_LIBRARY_PATH themselves. ./hardcode-paths.patch + + # Replace references to udevadm with an absolute paths, so programs using + # umockdev will just work without having to provide it in their test environment + # $PATH. + (substituteAll { + src = ./substitute-udevadm.patch; + udevadm = "${systemdMinimal}/bin/udevadm"; + }) ]; nativeBuildInputs = [ @@ -59,7 +68,6 @@ stdenv.mkDerivation (finalAttrs: { nativeCheckInputs = [ python3 - systemdMinimal usbutils which ]; diff --git a/pkgs/development/libraries/umockdev/substitute-udevadm.patch b/pkgs/development/libraries/umockdev/substitute-udevadm.patch new file mode 100644 index 000000000000..b09d151018e5 --- /dev/null +++ b/pkgs/development/libraries/umockdev/substitute-udevadm.patch @@ -0,0 +1,41 @@ +From 09efbe8090f501c60975d5467fb587ed633d6a01 Mon Sep 17 00:00:00 2001 +From: Florian Klink +Date: Wed, 24 Jan 2024 14:29:28 +0200 +Subject: [PATCH] substitute udevadm + +--- + src/umockdev-record.vala | 2 +- + tests/test-umockdev-run.vala | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/umockdev-record.vala b/src/umockdev-record.vala +index 2d49bc8..272f25e 100644 +--- a/src/umockdev-record.vala ++++ b/src/umockdev-record.vala +@@ -223,7 +223,7 @@ record_device(string dev) + int exitcode; + try { + Process.spawn_sync(null, +- {"udevadm", "info", "--query=all", "--path", dev}, ++ {"@udevadm@", "info", "--query=all", "--path", dev}, + null, + SpawnFlags.SEARCH_PATH, + null, +diff --git a/tests/test-umockdev-run.vala b/tests/test-umockdev-run.vala +index cd00a08..94616cb 100644 +--- a/tests/test-umockdev-run.vala ++++ b/tests/test-umockdev-run.vala +@@ -199,8 +199,8 @@ A: size=1048576\n + + // 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", ++ "@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, ""); +-- +2.43.0 +