mirror of
https://github.com/truenas/scale-build.git
synced 2026-05-08 17:20:21 +01:00
fix build (#865)
This commit is contained in:
@@ -40,7 +40,10 @@ def build_update_image_impl():
|
||||
|
||||
# These files will be overwritten, so we should make sure that new build does not have any entities that
|
||||
# are not in our reference files.
|
||||
for reference_file, diff in compare_reference_files(cut_nonexistent_user_group_membership=True):
|
||||
for reference_file, diff in compare_reference_files(
|
||||
cut_nonexistent_user_group_membership=True,
|
||||
default_homedir='/var/empty'
|
||||
):
|
||||
if any(line.startswith('+') for line in diff):
|
||||
raise CallError(
|
||||
f'Reference file {reference_file!r} has new lines in newly installed system.\n'
|
||||
|
||||
@@ -6,7 +6,12 @@ from scale_build.exceptions import CallError
|
||||
from .paths import REFERENCE_FILES_DIR, REFERENCE_FILES, CHROOT_BASEDIR
|
||||
|
||||
|
||||
def compare_reference_files(cut_nonexistent_user_group_membership=False):
|
||||
def compare_reference_files(cut_nonexistent_user_group_membership: bool = False, default_homedir: str | None = None):
|
||||
"""Diff /conf/reference-files/etc/group|passwd with the respective files in chroot.
|
||||
|
||||
:param cut_nonexistent_user_group_membership:
|
||||
:param default_homedir: A home directory to replace Debian's default `/nonexistent` before running the diff.
|
||||
"""
|
||||
for reference_file in REFERENCE_FILES:
|
||||
with open(os.path.join(REFERENCE_FILES_DIR, reference_file)) as f:
|
||||
reference = f.readlines()
|
||||
@@ -29,6 +34,9 @@ def compare_reference_files(cut_nonexistent_user_group_membership=False):
|
||||
with open(os.path.join(CHROOT_BASEDIR, reference_file)) as f:
|
||||
real = f.readlines()
|
||||
|
||||
if default_homedir and reference_file == 'etc/passwd':
|
||||
real = [line.replace('/nonexistent', default_homedir) for line in real]
|
||||
|
||||
diff = list(difflib.unified_diff(reference, real))
|
||||
|
||||
yield reference_file, diff[3:]
|
||||
|
||||
Reference in New Issue
Block a user