Merge pull request #114821 from erosennin/catatonit

catatonit: init at 0.1.5, fix podman --init

Changed files
+52 -1
nixos
modules
virtualisation
tests
pkgs
applications
virtualization
catatonit
top-level
+2 -1
nixos/modules/virtualisation/containers.nix
···
[network]
cni_plugin_dirs = ["${pkgs.cni-plugins}/bin/"]
-
${lib.optionalString (cfg.ociSeccompBpfHook.enable == true) ''
[engine]
hooks_dir = [
"${config.boot.kernelPackages.oci-seccomp-bpf-hook}",
]
···
[network]
cni_plugin_dirs = ["${pkgs.cni-plugins}/bin/"]
[engine]
+
init_path = "${pkgs.catatonit}/bin/catatonit"
+
${lib.optionalString (cfg.ociSeccompBpfHook.enable) ''
hooks_dir = [
"${config.boot.kernelPackages.oci-seccomp-bpf-hook}",
]
+9
nixos/tests/podman.nix
···
podman.succeed(su_cmd("podman ps | grep sleeping"))
podman.succeed(su_cmd("podman stop sleeping"))
podman.succeed(su_cmd("podman rm sleeping"))
'';
}
)
···
podman.succeed(su_cmd("podman ps | grep sleeping"))
podman.succeed(su_cmd("podman stop sleeping"))
podman.succeed(su_cmd("podman rm sleeping"))
+
+
with subtest("Run container with init"):
+
podman.succeed(
+
"tar cv -C ${pkgs.pkgsStatic.busybox} . | podman import - busybox"
+
)
+
pid = podman.succeed("podman run --rm busybox readlink /proc/self").strip()
+
assert pid == "1"
+
pid = podman.succeed("podman run --rm --init busybox readlink /proc/self").strip()
+
assert pid == "2"
'';
}
)
+39
pkgs/applications/virtualization/catatonit/default.nix
···
···
+
{ lib, stdenv, fetchFromGitHub, fetchpatch, autoreconfHook, glibc, nixosTests }:
+
+
stdenv.mkDerivation rec {
+
pname = "catatonit";
+
version = "0.1.5";
+
+
src = fetchFromGitHub {
+
owner = "openSUSE";
+
repo = pname;
+
rev = "v${version}";
+
sha256 = "ciJ1MI7jr5P2PgxIykQ+BiwNUO8lQHGt0+U8CNbc5bI=";
+
};
+
+
patches = [
+
# Fix compilation with musl
+
(fetchpatch {
+
url = "https://github.com/openSUSE/catatonit/commit/75014b1c3099245b7d0f44f24d7f6dc4888a45fd.patch";
+
sha256 = "sha256-9VMNUT1U90ocjvE7EXYfLxuodDwTXXHYg89qqa5Jq0g=";
+
})
+
];
+
+
nativeBuildInputs = [ autoreconfHook ];
+
buildInputs = lib.optionals (!stdenv.hostPlatform.isMusl) [ glibc glibc.static ];
+
+
doInstallCheck = true;
+
installCheckPhase = ''
+
readelf -d $out/bin/catatonit | grep 'There is no dynamic section in this file.'
+
'';
+
+
passthru.tests = { inherit (nixosTests) podman; };
+
+
meta = with lib; {
+
description = "A container init that is so simple it's effectively brain-dead";
+
homepage = "https://github.com/openSUSE/catatonit";
+
license = licenses.gpl3Plus;
+
maintainers = with maintainers; [ erosennin ] ++ teams.podman.members;
+
platforms = platforms.linux;
+
};
+
}
+2
pkgs/top-level/all-packages.nix
···
inherit (python3Packages) sphinx;
};
cen64 = callPackage ../misc/emulators/cen64 { };
cereal = callPackage ../development/libraries/cereal { };
···
inherit (python3Packages) sphinx;
};
+
catatonit = callPackage ../applications/virtualization/catatonit { };
+
cen64 = callPackage ../misc/emulators/cen64 { };
cereal = callPackage ../development/libraries/cereal { };