import base64
import contextlib
import crypt
-import dataclasses
import datetime
import errno
import hashlib
format_rlimit,
patch_file,
prepend_to_environ_path,
- set_umask,
tmp_dir,
)
return f"{num_bytes}B"
-def btrfs_subvol_create(path: Path, mode: int = 0o755) -> None:
- with set_umask(~mode & 0o7777):
- run(["btrfs", "subvol", "create", path])
-
-
@contextlib.contextmanager
def mount_image(state: MkosiState) -> Iterator[None]:
with complete_step("Mounting image…", "Unmounting image…"), contextlib.ExitStack() as stack:
clean_paths(root, paths, tool='/bin/yum', always=always)
-def clean_zypper_metadata(root: Path, always: bool) -> None:
- """Remove zypper metadata if /usr/bin/zypper is not present in the image"""
- paths = [
- "/var/lib/zypp",
- "/var/log/zypp",
- "/var/cache/zypp",
- ]
-
- clean_paths(root, paths, tool='/usr/bin/zypper', always=always)
-
-
def clean_rpm_metadata(root: Path, always: bool) -> None:
"""Remove rpm metadata if /bin/rpm is not present in the image"""
paths = [
clean_apt_metadata(state.root, always=always)
clean_dpkg_metadata(state.root, always=always)
clean_pacman_metadata(state.root, always=always)
- clean_zypper_metadata(state.root, always=always)
- # FIXME: implement cleanup for other package managers: swupd
def remove_files(state: MkosiState) -> None:
else:
die(f"Unsupported base tree source {path}")
- if path.is_dir():
- copy_path(path, state.root)
- else:
- shutil.unpack_archive(path, state.root)
-
def install_skeleton_trees(state: MkosiState) -> None:
if not state.config.skeleton_trees:
save_cache(state)
with complete_step("Building image"):
- state = dataclasses.replace(state, )
build_image(state, manifest=manifest, for_cache=False)
maybe_compress(state,
# SPDX-License-Identifier: LGPL-2.1+
-import os
-
from mkosi.util import (
Compression,
Distribution,
PackageType,
- set_umask,
)
def test_distribution() -> None:
assert str(Distribution.fedora) == "fedora"
-def test_set_umask() -> None:
- with set_umask(0o767):
- tmp1 = os.umask(0o777)
- with set_umask(0o757):
- tmp2 = os.umask(0o727)
- tmp3 = os.umask(0o727)
-
- assert tmp1 == 0o767
- assert tmp2 == 0o757
- assert tmp3 == 0o777
-
-
def test_compression_enum_creation() -> None:
assert Compression(None) == Compression.none
assert Compression("zst") == Compression.zst