if not (selinux := want_selinux_relabel(context.config, context.root)):
return
- policy, fc, binpolicy = selinux
+ setfiles, policy, fc, binpolicy = selinux
fc = Path("/buildroot") / fc.relative_to(context.root)
binpolicy = Path("/buildroot") / binpolicy.relative_to(context.root)
with complete_step(f"Relabeling files using {policy} policy"):
- run(["setfiles", "-mFr", "/buildroot", "-c", binpolicy, fc, "/buildroot"],
- sandbox=context.sandbox(binary="setfiles", mounts=[Mount(context.root, "/buildroot")]),
+ run([setfiles, "-mFr", "/buildroot", "-c", binpolicy, fc, "/buildroot"],
+ sandbox=context.sandbox(binary=setfiles, mounts=[Mount(context.root, "/buildroot")]),
check=context.config.selinux_relabel == ConfigFeature.enabled)
return json_transformer
-def want_selinux_relabel(config: Config, root: Path, fatal: bool = True) -> Optional[tuple[str, Path, Path]]:
+def want_selinux_relabel(config: Config, root: Path, fatal: bool = True) -> Optional[tuple[Path, str, Path, Path]]:
if config.selinux_relabel == ConfigFeature.disabled:
return None
die("SELinux relabel is requested but no selinux policy is configured in /etc/selinux/config")
return None
- if not config.find_binary("setfiles"):
+ if not (setfiles := config.find_binary("setfiles")):
if fatal and config.selinux_relabel == ConfigFeature.enabled:
die("SELinux relabel is requested but setfiles is not installed")
return None
binpolicy = sorted(policies, key=lambda p: GenericVersion(p.name), reverse=True)[0]
- return policy, fc, binpolicy
+ return setfiles, policy, fc, binpolicy
def systemd_tool_version(config: Config, tool: PathString) -> GenericVersion: