| 25 Sep 2022 |
rendakuenthusiast | hm, I ran into a weird issue | 05:38:42 |
rendakuenthusiast | I was having a problem building redis | 05:38:51 |
rendakuenthusiast | specifically I got this exception:
couldn't execute "pgrep": no such file or directory
while executing
"open "|pgrep -P $pid" "r""
(procedure "get_child_pid" line 4)
invoked from within
"get_child_pid 0"
("uplevel" body line 16)
invoked from within
"uplevel 1 $code"
(procedure "test" line 51)
invoked from within
"test {Don't rehash if redis has child process} {
r config set save ""
r config set rdb-key-save-delay 1000000
populate 4096 "..."
("uplevel" body line 2)
invoked from within
"uplevel 1 $code "
(procedure "start_server" line 3)
invoked from within
"start_server {tags {"other external:skip"}} {
test {Don't rehash if redis has child process} {
r config set save ""
r config set r..."
(file "tests/unit/other.tcl" line 334)
invoked from within
"source $path"
(procedure "execute_test_file" line 4)
invoked from within
"execute_test_file $data"
(procedure "test_client_main" line 10)
invoked from within
| 05:39:30 |
rendakuenthusiast | which I believe was coming from this test in redis' source: https://github.com/redis/redis/blob/b414605285244c453f3fadbbe7a157cd83ed5f59/tests/unit/other.tcl#L334 | 05:39:41 |
rendakuenthusiast | which calls this code: https://github.com/redis/redis/blob/13d25dd95eec5e21925ef474b5d43f2acb23e54e/tests/support/util.tcl#L616 | 05:39:56 |
rendakuenthusiast | which does:
if {[file exists "/usr/bin/pgrep"]} {
set fd [open "|pgrep -P $pid" "r"]
set child_pid [string trim [lindex [split [read $fd] \n] 0]]
} else {
set fd [open "|ps --ppid $pid -o pid" "r"]
set child_pid [string trim [lindex [split [read $fd] \n] 1]]
}
| 05:40:12 |
rendakuenthusiast | and when colmena tries to deploy from my laptop, I have /usr/bin/pgrep installed at that path in my normal OS | 05:40:37 |
rendakuenthusiast | I was able to work around this by renaming /usr/bin/pgrep on my system and then building locally | 05:40:56 |
rendakuenthusiast | I'm not sure what the principled way to solve this is | 05:41:05 |
rendakuenthusiast | this is basically a failure of hermeticism, right? the redis build was happening on my system and it has one bit of source code that looks at /usr/bin/pgrep. is there a principled way in nix to make that not visible to derivations being built? | 05:41:49 |
@yuka:yuka.dev | In reply to @yuka:yuka.dev I have another request: In flake-enabled deployments, can we pass the nixpkgs flake so that the hive expression can use nixpkgs.lib.nixosSystem and get the proper system.nixos.(revision|versionSuffix)? I guess this is issue https://github.com/zhaofengli/colmena/issues/60 | 08:15:39 |
| 26 Sep 2022 |
rendakuenthusiast | where does colmena cache tarballs? I think it is failing to register that a tarball has been updated | 00:41:15 |
Winter (she/her) | what tarballs? | 01:03:12 |
jhillyerd | In reply to @rendakuenthusiast:imperishable.name this is basically a failure of hermeticism, right? the redis build was happening on my system and it has one bit of source code that looks at /usr/bin/pgrep. is there a principled way in nix to make that not visible to derivations being built? Typically you would patch/rewrite the package to not point at /usr/bin, example for regular grep: https://github.com/NixOS/nixpkgs/blob/4e62b94df308e197c1f107564ebdb4318bb80e27/pkgs/development/libraries/nss/generic.nix#L61 | 04:59:20 |
rendakuenthusiast | Winter (she/her): I'm using builtins.fetchTarball to fetch an additional module with some custom modifications I made, from a server I control | 05:00:44 |
rendakuenthusiast | jhillyerd: where does that substituteInPlace function come from? is that supposed to be shell code? | 05:01:59 |