Build mkfs.xfs using rules_cc

This drops the old big genrule for mkfs.xfs and replaces it with a nice rules_cc build system
with the help of bazel_cc_fix generated patches and our musl-based toolchain.
While we're at it I bumped the versions of all related dependencies to their latest stable release.
This also means pulling in ini.h which is a dependency of the new xfstools version.

Instructions to regenerate the patches are included in the spec files.

Toolchain selection is done by the existing transition in our rootfs rule so we automatically get a musl-built
static binary when building for the rootfs.

Test Plan: Tested with E2E tests, should fail fairly catastrophically if something were wrong.

X-Origin-Diff: phab/D708
GitOrigin-RevId: 648a05cdd08cfa84a8a9f4c057c52446e7005631
diff --git a/third_party/util-linux/external.bzl b/third_party/util-linux/external.bzl
index 84b17ec..d764b4d 100644
--- a/third_party/util-linux/external.bzl
+++ b/third_party/util-linux/external.bzl
@@ -18,15 +18,16 @@
 
 def util_linux_external(name, version):
     sums = {
-        "2.34": "1d0c1a38f8c14a2c251681907203cccc78704f5702f2ef4b438bed08344242f7"
+        "2.34": "1d0c1a38f8c14a2c251681907203cccc78704f5702f2ef4b438bed08344242f7",
+        "2.36.2": "084bc6f9bd479bfd78e8924e63f85bb17953681bf1dad240e4d8601a21294d0b",
     }
-    all_content = """filegroup(name = "all", srcs = glob(["**"]), visibility = ["//visibility:public"])"""
 
     http_archive(
         name = name,
-        build_file_content = all_content,
         sha256 = sums[version],
         strip_prefix = "util-linux-" + version,
+        build_file = "@//third_party/util-linux:util-linux.bzl",
+        patch_args = ["-p1"],
+        patches = ["//third_party/util-linux/patches:bazel_cc_fix.patch"],
         urls = ["https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/snapshot/util-linux-%s.tar.gz" % version],
     )
-