Or else `services.udev.packages = [ bcache-tools ]` cannot be used.
To not break bcache in the initrd I'm modifying this in stage-1.nix:
- --replace /bin/sh ${extraUtils}/bin/sh
+ --replace ${bash}/bin/sh ${extraUtils}/bin/sh
Reasoning behind that change:
* If not modifying the /bin/sh pattern in any way, it will also match
${bash}/bin/sh, creating a broken path like
/nix/store/HASH-bash/nix/store/HASH-bash/bin/sh in the udev rule file.
* The addition of /bin/sh was done in 775f381a9e
("stage-1: add bcache support"). It seems somewhat plausible that
no new users have appeared since then and we can take this opportunity
to back out of this change without much fear of regressions.
If there _are_ regressions, they should be in the form of build time
errors, not runtime (boot), due to how the udev rule output is checked
for invalid path references. So low risk, IMHO.
* An alternative approach could be to copy the /bin/sh substitute rule
over to the non-initrd udev rules implementation in NixOS, but I think
this way is better:
- The rules file comes with a working path out of the box.
- We can use more precise pattern matching when modifying the udev
rules for the initrd.
Done by setting PATH and PYTHONPATH appropriately.
Adds the following patches:
* One that removes hardcodes to /sbin, /usr/bin, etc.
from gluster, so that programs like `lvm` and `xfs_info` can be
called at runtime; see https://bugzilla.redhat.com/show_bug.cgi?id=1450546.
* One that fixes unsubstituted autoconf macros in paths (a problem
in the 3.10 release); see https://bugzilla.redhat.com/show_bug.cgi?id=1450588.
* One that removes uses of the `find_library()` Python function that does
not behave as expected in Python < 3.6 (and would not behave correctly
even on 3.6 in nixpkgs due to #25763);
see https://bugzilla.redhat.com/show_bug.cgi?id=1450593.
I think that all of these patches should be upstreamed.
Also adds tests to check that none of the Python based utilities
throw import errors, calling `--help` or equivalent on them.
This is because the source tarball available on
https://download.gluster.org/pub/gluster/glusterfs/3.10/3.10.1/glusterfs-3.10.1.tar.gz
has different contents than the v3.10.1 tag;
for example, it lacks the file `xlators/features/ganesha/src/Makefile.am`,
which the tag has.
This is because GluserFS's release process removes some unused files.
This made impossible to apply patches written by or for upstream, as those
are written against what's in upstream's git.
As a nice side effect, we no longer have to hardcode the "3.10" in the
`3.10/${version}` part of the URL.
This reverts commit c0cef0425e.
The output of the command-line tool has changed somewhat and at least
nixos-generate-config.pl needs modifications to match. I'm leaving that
to someone who knows a bit more about btrfs.
Issue #24810.