Portage 3.0.57 (python 3.11.6-final-0, default/linux/sparc/17.0/64ul, gcc-13, glibc-2.37-r7, 6.6.7-gentoo-sparc64 sparc64) ================================================================= System uname: Linux-6.6.7-gentoo-sparc64-sparc64-sun4v-with-glibc2.37 KiB Mem: 32650448 total, 27336056 free KiB Swap: 0 total, 0 free Timestamp of repository gentoo: Tue, 19 Dec 2023 00:02:04 +0000 sh bash 5.1_p16-r6 ld GNU ld (Gentoo 2.40 p5) 2.40.0 app-misc/pax-utils: 1.3.7::gentoo app-shells/bash: 5.1_p16-r6::gentoo dev-lang/perl: 5.38.2-r1::gentoo dev-lang/python: 3.11.6::gentoo, 3.12.1::gentoo dev-lang/rust-bin: 1.71.1::gentoo dev-util/cmake: 3.27.7::gentoo dev-util/meson: 1.2.3::gentoo sys-apps/baselayout: 2.14-r1::gentoo sys-apps/openrc: 0.48::gentoo sys-apps/sandbox: 2.38::gentoo sys-devel/autoconf: 2.71-r6::gentoo sys-devel/automake: 1.16.5-r1::gentoo sys-devel/binutils: 2.40-r5::gentoo sys-devel/binutils-config: 5.5::gentoo sys-devel/gcc: 13.2.1_p20230826::gentoo sys-devel/gcc-config: 2.11::gentoo sys-devel/libtool: 2.4.7-r1::gentoo sys-devel/make: 4.4.1-r1::gentoo sys-kernel/linux-headers: 6.1::gentoo (virtual/os-headers) sys-libs/glibc: 2.37-r7::gentoo Repositories: gentoo location: /var/db/repos/gentoo sync-type: rsync sync-uri: rsync://rsync.gentoo.org/gentoo-portage priority: -1000 volatile: False sync-rsync-verify-metamanifest: yes sync-rsync-extra-opts: sync-rsync-verify-jobs: 1 sync-rsync-verify-max-age: 3 Binary Repositories: gentoobinhost priority: 1 sync-uri: https://gentoo.osuosl.org/releases/sparc/binpackages/17.0/64 ACCEPT_KEYWORDS="sparc" ACCEPT_LICENSE="@FREE" CBUILD="sparc64-unknown-linux-gnu" CFLAGS="-O2 -mcpu=ultrasparc -pipe" CHOST="sparc64-unknown-linux-gnu" CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-O2 -mcpu=ultrasparc -pipe" DISTDIR="/var/cache/distfiles" EMERGE_DEFAULT_OPTS="--autounmask=y --autounmask-continue=y" ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME" FCFLAGS="-O2 -mcpu=ultrasparc -pipe" FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync network-sandbox news pid-sandbox pkgdir-index-trusted preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" FFLAGS="-O2 -mcpu=ultrasparc -pipe" GENTOO_MIRRORS="http://distfiles.gentoo.org" LANG="en_US.utf8" LDFLAGS="-Wl,-O1 -Wl,--as-needed" LEX="flex" MAKEOPTS="-j30" PKGDIR="/var/cache/binpkgs" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git" PORTAGE_TMPDIR="/var/tmp" SHELL="/bin/bash" USE="acl big-endian bzip2 cli crypt dri fortran gdbm iconv ipv6 libtirpc llvm-libunwind ncurses nls nptl openmp pam pcre readline sparc split-usr ssl test-rust unicode xattr zlib" ADA_TARGET="gnat_2021" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_anon authn_dbm authn_file authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 ntrip navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-1" POSTGRES_TARGETS="postgres15" PYTHON_SINGLE_TARGET="python3_11" PYTHON_TARGETS="python3_11" RUBY_TARGETS="ruby31" VIDEO_CARDS="fbdev mga r128 radeon dummy" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account" Unset: ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LC_ALL, LD, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS * Package: app-admin/eclean-kernel-2.99.7:0 * Repository: gentoo * Maintainer: mgorny@gentoo.org * Upstream: mgorny@gentoo.org https://github.com/projg2/eclean-kernel2/issues/ * USE: elibc_glibc kernel_linux python_targets_python3_11 sparc test * FEATURES: keeptemp network-sandbox preserve-libs sandbox test userpriv usersandbox >>> Unpacking source... >>> Unpacking eclean_kernel-2.99.7.tar.gz to /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work >>> Source unpacked in /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work >>> Preparing source in /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7 ... * Build system packages: * dev-python/gpep517 : 15 * dev-python/installer : 0.7.0 * dev-python/flit-core : 3.9.0 >>> Source prepared. >>> Configuring source in /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7 ... >>> Source configured. >>> Compiling source in /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7 ... * python3_11: running distutils-r1_run_phase distutils-r1_python_compile * Building the wheel for eclean_kernel-2.99.7 via flit_core.buildapi python3.11 -m gpep517 build-wheel --prefix=/usr --backend flit_core.buildapi --output-fd 3 --wheel-dir /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7-python3_11/wheel 2023-12-19 00:59:07,028 gpep517 INFO Building wheel via backend flit_core.buildapi 2023-12-19 00:59:07,058 flit_core.wheel INFO Copying package file(s) from ecleankernel 2023-12-19 00:59:07,074 flit_core.wheel INFO Writing metadata files 2023-12-19 00:59:07,079 flit_core.wheel INFO Writing the record of files 2023-12-19 00:59:07,081 flit_core.wheel INFO Built wheel: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7-python3_11/wheel/eclean_kernel-2.99.7-py3-none-any.whl 2023-12-19 00:59:07,082 gpep517 INFO The backend produced /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7-python3_11/wheel/eclean_kernel-2.99.7-py3-none-any.whl * Installing eclean_kernel-2.99.7-py3-none-any.whl to /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7-python3_11/install python3.11 -m gpep517 install-wheel --destdir=/var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7-python3_11/install --interpreter=/usr/bin/python3.11 --prefix=/usr --optimize=all /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7-python3_11/wheel/eclean_kernel-2.99.7-py3-none-any.whl 2023-12-19 00:59:07,692 gpep517 INFO Installing /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7-python3_11/wheel/eclean_kernel-2.99.7-py3-none-any.whl into /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7-python3_11/install 2023-12-19 00:59:08,015 gpep517 INFO Installation complete >>> Source compiled. >>> Test phase: app-admin/eclean-kernel-2.99.7 * python3_11: running distutils-r1_run_phase python_test python3.11 -m pytest -vv -ra -l -Wdefault --color=yes -o console_output_style=count -p no:cov -p no:flake8 -p no:flakes -p no:pylint -p no:markdown -p no:sugar -p no:xvfb -p no:pytest-describe -p no:plus -p no:tavern -p no:salt-factories ========================================================================= test session starts ========================================================================= platform linux -- Python 3.11.6, pytest-7.4.3, pluggy-1.3.0 -- /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7-python3_11/install/usr/bin/python3.11 cachedir: .pytest_cache hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7/.hypothesis/examples')) rootdir: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7 plugins: timeout-2.2.0, hypothesis-6.90.0, xdist-3.5.0, anyio-4.1.0 collecting ... collected 58 items test/test_file.py::KernelImageTests::test_bad_file_magic PASSED [ 1/58] test/test_file.py::KernelImageTests::test_bad_magic PASSED [ 2/58] test/test_file.py::KernelImageTests::test_missing_decompressor PASSED [ 3/58] test/test_file.py::KernelImageTests::test_overflow_ver_string_bz PASSED [ 4/58] test/test_file.py::KernelImageTests::test_overflow_ver_string_raw PASSED [ 5/58] test/test_file.py::KernelImageTests::test_read_internal_version_bz FAILED [ 6/58] test/test_file.py::KernelImageTests::test_read_internal_version_compress PASSED [ 7/58] test/test_file.py::KernelImageTests::test_read_internal_version_efistub FAILED [ 8/58] test/test_file.py::KernelImageTests::test_read_internal_version_efistub_uname PASSED [ 9/58] test/test_file.py::KernelImageTests::test_read_internal_version_efistub_uname_nowhitespace PASSED [10/58] test/test_file.py::KernelImageTests::test_read_internal_version_raw PASSED [11/58] test/test_file.py::KernelImageTests::test_short PASSED [12/58] test/test_file.py::KernelImageTests::test_very_short PASSED [13/58] test/test_file.py::ModuleDirectoryTests::test_abs_symlink PASSED [14/58] test/test_file.py::ModuleDirectoryTests::test_rel_symlink PASSED [15/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_accept_EFI PASSED [16/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_accept_entry_token PASSED [17/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_accept_no_boot PASSED [18/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_accept_no_machine_id PASSED [19/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_accept_plain PASSED [20/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_exclude_build FAILED [21/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_exclude_misc FAILED [22/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_exclude_modules FAILED [23/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_find_modules FAILED [24/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_find_modules_EFI FAILED [25/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove FAILED [26/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove_all FAILED [27/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove_all_pretend FAILED [28/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove_n3 FAILED [29/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove_n3_pretend FAILED [30/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove_pretend FAILED [31/58] test/test_layout_blspec.py::BlSpecLayoutTests::test_wrong_layout_std PASSED [32/58] test/test_layout_std.py::StdLayoutTests::test_config_file_system FAILED [33/58] test/test_layout_std.py::StdLayoutTests::test_config_file_user FAILED [34/58] test/test_layout_std.py::StdLayoutTests::test_exclude_build FAILED [35/58] test/test_layout_std.py::StdLayoutTests::test_exclude_config FAILED [36/58] test/test_layout_std.py::StdLayoutTests::test_exclude_modules FAILED [37/58] test/test_layout_std.py::StdLayoutTests::test_find_modules FAILED [38/58] test/test_layout_std.py::StdLayoutTests::test_main_list_kernels FAILED [39/58] test/test_layout_std.py::StdLayoutTests::test_main_remove FAILED [40/58] test/test_layout_std.py::StdLayoutTests::test_main_remove_all FAILED [41/58] test/test_layout_std.py::StdLayoutTests::test_main_remove_all_pretend FAILED [42/58] test/test_layout_std.py::StdLayoutTests::test_main_remove_n2 FAILED [43/58] test/test_layout_std.py::StdLayoutTests::test_main_remove_n2_pretend FAILED [44/58] test/test_layout_std.py::StdLayoutTests::test_main_remove_pretend FAILED [45/58] test/test_layout_std.py::StdLayoutTests::test_modules_only PASSED [46/58] test/test_layout_std.py::StdLayoutTests::test_wrong_layout_blspec PASSED [47/58] test/test_process.py::KernelRemovalTests::test_get_removable_files FAILED [48/58] test/test_process.py::KernelRemovalTests::test_removal_bootloader FAILED [49/58] test/test_process.py::KernelRemovalTests::test_removal_bootloader_all_kernels FAILED [50/58] test/test_process.py::KernelRemovalTests::test_removal_current FAILED [51/58] test/test_process.py::KernelRemovalTests::test_removal_current_stray FAILED [52/58] test/test_process.py::KernelRemovalTests::test_removal_destructive FAILED [53/58] test/test_process.py::KernelRemovalTests::test_removal_no_bootloader FAILED [54/58] test/test_process.py::KernelRemovalTests::test_removal_no_limit FAILED [55/58] test/test_process.py::KernelRemovalTests::test_remove_stray FAILED [56/58] test/test_sort.py::SortTests::test_mtime PASSED [57/58] test/test_sort.py::SortTests::test_version PASSED [58/58] ============================================================================== FAILURES =============================================================================== ___________________________________________________________ KernelImageTests.test_read_internal_version_bz ____________________________________________________________ self = def test_read_internal_version_bz(self) -> None: path = Path(self.td.name) / 'vmlinuz' write_bzImage(path, b'1.2.3 built on test') self.assertEqual( > KernelImage(path).read_internal_version(), '1.2.3') path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpworbehai/vmlinuz') self = test/test_file.py:113: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpworbehai/vmlinuz') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpworbehai/vmlinuz')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpworbehai/vmlinuz'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpworbehai/vmlinuz')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpworbehai/vmlinuz')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpworbehai/vmlinuz'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpworbehai/vmlinuz terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpworbehai/vmlinuz'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpworbehai/vmlinuz')) ecleankernel/file.py:196: UnrecognizedKernelError _________________________________________________________ KernelImageTests.test_read_internal_version_efistub _________________________________________________________ self = def test_read_internal_version_efistub(self) -> None: path = Path(self.td.name) / "vmlinuz" write_efistub(path, b"1.2.3 built on test") self.assertEqual( > KernelImage(path).read_internal_version(), "1.2.3") path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz') self = test/test_file.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz')) ecleankernel/file.py:268: in read_version_from_efi verbuf = func(f) _ = 0 buf = (b'.linux\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' b'\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00') coff_offset = 128 f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz'> func = i = 3 initial_offset = 0 num_section = 4 offset = 424 opt_header_size = 8 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz')) size = 0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz')) ecleankernel/file.py:196: UnrecognizedKernelError ________________________________________________________________ BlSpecLayoutTests.test_exclude_build _________________________________________________________________ self = def test_exclude_build(self) -> None: with self.create_layout() as td: path = Path(td) blspath = path / f"boot/{self.machine_id}" ukipath = path / "boot/EFI/Linux" modules = path / 'lib/modules' self.assertEqual( sorted(kernel_paths( BlSpecLayout(root=path).find_kernels( exclusions=[KFT.BUILD])), key=lambda ver: ver[0]), [('1.2.1', [EmptyDirectory(blspath / '1.2.1'), GenericFile(blspath / '1.2.1/initrd', KFT.INITRAMFS), > KernelImage(blspath / '1.2.1/linux'), ModuleDirectory(modules / '1.2.1'), ], '1.2.1'), ('1.2.2', [EmptyDirectory(blspath / '1.2.2'), GenericFile(blspath / '1.2.2/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.2/linux'), ModuleDirectory(modules / '1.2.2'), ], '1.2.2'), ('1.2.3', [EmptyDirectory(blspath / '1.2.3'), GenericFile(blspath / '1.2.3/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.3/linux'), GenericFile(blspath / '1.2.3/misc', KFT.MISC), ModuleDirectory(modules / '1.2.3'), ], '1.2.3'), ('1.2.4', [EmptyDirectory(blspath / '1.2.4'), GenericFile(blspath / '1.2.4/initrd', KFT.INITRAMFS), ModuleDirectory(modules / '1.2.4'), ], None), ('1.2.5', [EmptyDirectory(blspath / '1.2.5'), GenericFile(blspath / '1.2.5/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.5/linux'), ModuleDirectory(modules / '1.2.5'), ], '1.2.5'), ('1.2.5', [KernelImage(ukipath / f"{self.machine_id}-1.2.5.efi"), ModuleDirectory(modules / '1.2.5'), ], '1.2.5'), ('1.2.6', [KernelImage(ukipath / f"{self.machine_id}-1.2.6.efi"), ModuleDirectory(modules / '1.2.6'), ], '1.2.6'), ]) blspath = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/0123456789abcdef0123456789abcdef') modules = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/lib/modules') path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_') self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_' ukipath = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/EFI/Linux') test/test_layout_blspec.py:397: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/0123456789abcdef0123456789abcdef/1.2.1/linux') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/0123456789abcdef0123456789abcdef/1.2.1/linux terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) ecleankernel/file.py:196: UnrecognizedKernelError _________________________________________________________________ BlSpecLayoutTests.test_exclude_misc _________________________________________________________________ self = def test_exclude_misc(self) -> None: with self.create_layout() as td: path = Path(td) blspath = path / f"boot/{self.machine_id}" ukipath = path / "boot/EFI/Linux" modules = path / 'lib/modules' self.assertEqual( sorted(kernel_paths( BlSpecLayout(root=path).find_kernels( exclusions=[KFT.MISC])), key=lambda ver: ver[0]), [('1.2.1', [EmptyDirectory(blspath / '1.2.1'), GenericFile(blspath / '1.2.1/initrd', KFT.INITRAMFS), > KernelImage(blspath / '1.2.1/linux'), ModuleDirectory(modules / '1.2.1'), ], '1.2.1'), ('1.2.2', [EmptyDirectory(blspath / '1.2.2'), GenericFile(blspath / '1.2.2/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.2/linux'), ModuleDirectory(modules / '1.2.2'), GenericFile(modules / '1.2.2/../../../usr/src/linux', KFT.BUILD), ], '1.2.2'), ('1.2.3', [EmptyDirectory(blspath / '1.2.3'), GenericFile(blspath / '1.2.3/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.3/linux'), ModuleDirectory(modules / '1.2.3'), GenericFile(modules / '1.2.3/../../../usr/src/linux', KFT.BUILD), ], '1.2.3'), ('1.2.4', [EmptyDirectory(blspath / '1.2.4'), GenericFile(blspath / '1.2.4/initrd', KFT.INITRAMFS), ModuleDirectory(modules / '1.2.4'), ], None), ('1.2.5', [EmptyDirectory(blspath / '1.2.5'), GenericFile(blspath / '1.2.5/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.5/linux'), ModuleDirectory(modules / '1.2.5'), GenericFile(modules / '1.2.5/../../../usr/src/linux', KFT.BUILD), ], '1.2.5'), ('1.2.5', [KernelImage(ukipath / f"{self.machine_id}-1.2.5.efi"), ModuleDirectory(modules / '1.2.5'), GenericFile(modules / '1.2.5/../../../usr/src/linux', KFT.BUILD), ], '1.2.5'), ('1.2.6', [KernelImage(ukipath / f"{self.machine_id}-1.2.6.efi"), ModuleDirectory(modules / '1.2.6'), GenericFile(modules / '1.2.6/../../../usr/src/linux', KFT.BUILD), ], '1.2.6'), ]) blspath = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/0123456789abcdef0123456789abcdef') modules = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/lib/modules') path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx') self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx' ukipath = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/EFI/Linux') test/test_layout_blspec.py:267: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/0123456789abcdef0123456789abcdef/1.2.1/linux') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/0123456789abcdef0123456789abcdef/1.2.1/linux terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) ecleankernel/file.py:196: UnrecognizedKernelError _______________________________________________________________ BlSpecLayoutTests.test_exclude_modules ________________________________________________________________ self = def test_exclude_modules(self) -> None: with self.create_layout() as td: path = Path(td) blspath = path / f"boot/{self.machine_id}" ukipath = path / "boot/EFI/Linux" modules = path / 'lib/modules' self.assertEqual( sorted(kernel_paths( BlSpecLayout(root=path).find_kernels( exclusions=[KFT.MODULES])), key=lambda ver: ver[0]), [('1.2.1', [EmptyDirectory(blspath / '1.2.1'), GenericFile(blspath / '1.2.1/initrd', KFT.INITRAMFS), > KernelImage(blspath / '1.2.1/linux'), ], '1.2.1'), ('1.2.2', [EmptyDirectory(blspath / '1.2.2'), GenericFile(blspath / '1.2.2/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.2/linux'), GenericFile(modules / '1.2.2/../../../usr/src/linux', KFT.BUILD), ], '1.2.2'), ('1.2.3', [EmptyDirectory(blspath / '1.2.3'), GenericFile(blspath / '1.2.3/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.3/linux'), GenericFile(blspath / '1.2.3/misc', KFT.MISC), GenericFile(modules / '1.2.3/../../../usr/src/linux', KFT.BUILD), ], '1.2.3'), ('1.2.4', [EmptyDirectory(blspath / '1.2.4'), GenericFile(blspath / '1.2.4/initrd', KFT.INITRAMFS), ], None), ('1.2.5', [EmptyDirectory(blspath / '1.2.5'), GenericFile(blspath / '1.2.5/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.5/linux'), GenericFile(modules / '1.2.5/../../../usr/src/linux', KFT.BUILD), ], '1.2.5'), ('1.2.5', [KernelImage(ukipath / f"{self.machine_id}-1.2.5.efi"), GenericFile(modules / '1.2.5/../../../usr/src/linux', KFT.BUILD), ], '1.2.5'), ('1.2.6', [KernelImage(ukipath / f"{self.machine_id}-1.2.6.efi"), GenericFile(modules / '1.2.6/../../../usr/src/linux', KFT.BUILD), ], '1.2.6'), ]) blspath = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/0123456789abcdef0123456789abcdef') modules = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/lib/modules') path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g') self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g' ukipath = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/EFI/Linux') test/test_layout_blspec.py:335: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/0123456789abcdef0123456789abcdef/1.2.1/linux') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/0123456789abcdef0123456789abcdef/1.2.1/linux terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) ecleankernel/file.py:196: UnrecognizedKernelError _________________________________________________________________ BlSpecLayoutTests.test_find_modules _________________________________________________________________ self = def test_find_modules(self) -> None: with self.create_layout() as td: path = Path(td) blspath = path / f"boot/{self.machine_id}" ukipath = path / "boot/EFI/Linux" modules = path / 'lib/modules' self.assertEqual( sorted(kernel_paths( BlSpecLayout(root=path).find_kernels()), key=lambda ver: ver[0]), [('1.2.1', [EmptyDirectory(blspath / '1.2.1'), GenericFile(blspath / '1.2.1/initrd', KFT.INITRAMFS), > KernelImage(blspath / '1.2.1/linux'), ModuleDirectory(modules / '1.2.1'), ], '1.2.1'), ('1.2.2', [EmptyDirectory(blspath / '1.2.2'), GenericFile(blspath / '1.2.2/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.2/linux'), ModuleDirectory(modules / '1.2.2'), GenericFile(modules / '1.2.2/../../../usr/src/linux', KFT.BUILD), ], '1.2.2'), ('1.2.3', [EmptyDirectory(blspath / '1.2.3'), GenericFile(blspath / '1.2.3/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.3/linux'), GenericFile(blspath / '1.2.3/misc', KFT.MISC), ModuleDirectory(modules / '1.2.3'), GenericFile(modules / '1.2.3/../../../usr/src/linux', KFT.BUILD), ], '1.2.3'), ('1.2.4', [EmptyDirectory(blspath / '1.2.4'), GenericFile(blspath / '1.2.4/initrd', KFT.INITRAMFS), ModuleDirectory(modules / '1.2.4'), ], None), ('1.2.5', [EmptyDirectory(blspath / '1.2.5'), GenericFile(blspath / '1.2.5/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.5/linux'), ModuleDirectory(modules / '1.2.5'), GenericFile(modules / '1.2.5/../../../usr/src/linux', KFT.BUILD), ], '1.2.5'), ('1.2.5', [KernelImage(ukipath / f"{self.machine_id}-1.2.5.efi"), ModuleDirectory(modules / '1.2.5'), GenericFile(modules / '1.2.5/../../../usr/src/linux', KFT.BUILD), ], '1.2.5'), ('1.2.6', [KernelImage(ukipath / f"{self.machine_id}-1.2.6.efi"), ModuleDirectory(modules / '1.2.6'), GenericFile(modules / '1.2.6/../../../usr/src/linux', KFT.BUILD), ], '1.2.6'), ]) blspath = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/0123456789abcdef0123456789abcdef') modules = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/lib/modules') path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb') self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb' ukipath = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/EFI/Linux') test/test_layout_blspec.py:198: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/0123456789abcdef0123456789abcdef/1.2.1/linux') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/0123456789abcdef0123456789abcdef/1.2.1/linux terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/0123456789abcdef0123456789abcdef/1.2.1/linux'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/0123456789abcdef0123456789abcdef/1.2.1/linux')) ecleankernel/file.py:196: UnrecognizedKernelError _______________________________________________________________ BlSpecLayoutTests.test_find_modules_EFI _______________________________________________________________ self = def test_find_modules_EFI(self) -> None: with self.create_layout(efi_subdir=True) as td: path = Path(td) blspath = path / f"boot/EFI/{self.machine_id}" ukipath = path / "boot/EFI/EFI/Linux" modules = path / 'lib/modules' self.assertEqual( sorted(kernel_paths( BlSpecLayout(root=path).find_kernels()), key=lambda ver: ver[0]), [('1.2.1', [EmptyDirectory(blspath / '1.2.1'), GenericFile(blspath / '1.2.1/initrd', KFT.INITRAMFS), > KernelImage(blspath / '1.2.1/linux'), ModuleDirectory(modules / '1.2.1'), ], '1.2.1'), ('1.2.2', [EmptyDirectory(blspath / '1.2.2'), GenericFile(blspath / '1.2.2/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.2/linux'), ModuleDirectory(modules / '1.2.2'), GenericFile(modules / '1.2.2/../../../usr/src/linux', KFT.BUILD), ], '1.2.2'), ('1.2.3', [EmptyDirectory(blspath / '1.2.3'), GenericFile(blspath / '1.2.3/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.3/linux'), GenericFile(blspath / '1.2.3/misc', KFT.MISC), ModuleDirectory(modules / '1.2.3'), GenericFile(modules / '1.2.3/../../../usr/src/linux', KFT.BUILD), ], '1.2.3'), ('1.2.4', [EmptyDirectory(blspath / '1.2.4'), GenericFile(blspath / '1.2.4/initrd', KFT.INITRAMFS), ModuleDirectory(modules / '1.2.4'), ], None), ('1.2.5', [EmptyDirectory(blspath / '1.2.5'), GenericFile(blspath / '1.2.5/initrd', KFT.INITRAMFS), KernelImage(blspath / '1.2.5/linux'), ModuleDirectory(modules / '1.2.5'), GenericFile(modules / '1.2.5/../../../usr/src/linux', KFT.BUILD), ], '1.2.5'), ('1.2.5', [KernelImage(ukipath / f"{self.machine_id}-1.2.5.efi"), ModuleDirectory(modules / '1.2.5'), GenericFile(modules / '1.2.5/../../../usr/src/linux', KFT.BUILD), ], '1.2.5'), ('1.2.6', [KernelImage(ukipath / f"{self.machine_id}-1.2.6.efi"), ModuleDirectory(modules / '1.2.6'), GenericFile(modules / '1.2.6/../../../usr/src/linux', KFT.BUILD), ], '1.2.6'), ]) blspath = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/0123456789abcdef0123456789abcdef') modules = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/lib/modules') path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy') self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy' ukipath = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/EFI/Linux') test/test_layout_blspec.py:455: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/0123456789abcdef0123456789abcdef/1.2.1/linux') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/0123456789abcdef0123456789abcdef/1.2.1/linux')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/0123456789abcdef0123456789abcdef/1.2.1/linux'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/0123456789abcdef0123456789abcdef/1.2.1/linux')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/0123456789abcdef0123456789abcdef/1.2.1/linux')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/0123456789abcdef0123456789abcdef/1.2.1/linux'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/0123456789abcdef0123456789abcdef/1.2.1/linux terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/0123456789abcdef0123456789abcdef/1.2.1/linux'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/0123456789abcdef0123456789abcdef/1.2.1/linux')) ecleankernel/file.py:196: UnrecognizedKernelError _________________________________________________________________ BlSpecLayoutTests.test_main_remove __________________________________________________________________ self = def test_main_remove(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--destructive', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1pzo7xwi' test/test_layout_blspec.py:512: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1pzo7xwi', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=False, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1pzo7xwi'), all=False, destructive=True, num=0, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1pzo7xwi', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), ...] sorter = , limit = 0, bootloader = destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.6', layout='uki') kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] limit = 0 remove_kernels = {Kernel(version='1.2.6', layout='uki'): ['vmlinuz does not exist'], Kernel(version='1.2.2', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.4', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.1', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='uki'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1pzo7xwi/boot/0123456789abcdef0123456789abcdef/1.2.3/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1pzo7xwi/boot/0123456789abcdef0123456789abcdef/1.2.5/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1pzo7xwi/boot/0123456789abcdef0123456789abcdef/1.2.2/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1pzo7xwi/boot/0123456789abcdef0123456789abcdef/1.2.1/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1pzo7xwi/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.5.efi terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1pzo7xwi/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.6.efi terminates before expected version string position (4608) DEBUG root:process.py:76 in get_removal_list() _______________________________________________________________ BlSpecLayoutTests.test_main_remove_all ________________________________________________________________ self = def test_main_remove_all(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--all', '--destructive', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9rztw94w' test/test_layout_blspec.py:529: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--all', '--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9rztw94w', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=False, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9rztw94w'), all=True, destructive=True, num=0, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--all', '--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9rztw94w', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), ...] sorter = , limit = None bootloader = , destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.6', layout='uki') kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] limit = None remove_kernels = {Kernel(version='1.2.2', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.4', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='uki'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.6', layout='uki'): ['vmlinuz does not exist'], Kernel(version='1.2.1', layout='bls'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9rztw94w/boot/0123456789abcdef0123456789abcdef/1.2.3/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9rztw94w/boot/0123456789abcdef0123456789abcdef/1.2.5/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9rztw94w/boot/0123456789abcdef0123456789abcdef/1.2.2/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9rztw94w/boot/0123456789abcdef0123456789abcdef/1.2.1/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9rztw94w/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.5.efi terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9rztw94w/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.6.efi terminates before expected version string position (4608) DEBUG root:process.py:76 in get_removal_list() ___________________________________________________________ BlSpecLayoutTests.test_main_remove_all_pretend ____________________________________________________________ self = def test_main_remove_all_pretend(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--all', '--destructive', '--pretend', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpenh35o1t' test/test_layout_blspec.py:543: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--all', '--destructive', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpenh35o1t', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=True, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpenh35o1t'), all=True, destructive=True, num=0, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--all', '--destructive', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpenh35o1t', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), ...] sorter = , limit = None bootloader = , destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.6', layout='uki') kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] limit = None remove_kernels = {Kernel(version='1.2.1', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.6', layout='uki'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='uki'): ['vmlinuz does not exist'], Kernel(version='1.2.4', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.2', layout='bls'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpenh35o1t/boot/0123456789abcdef0123456789abcdef/1.2.3/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpenh35o1t/boot/0123456789abcdef0123456789abcdef/1.2.5/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpenh35o1t/boot/0123456789abcdef0123456789abcdef/1.2.2/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpenh35o1t/boot/0123456789abcdef0123456789abcdef/1.2.1/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpenh35o1t/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.5.efi terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpenh35o1t/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.6.efi terminates before expected version string position (4608) DEBUG root:process.py:76 in get_removal_list() ________________________________________________________________ BlSpecLayoutTests.test_main_remove_n3 ________________________________________________________________ self = def test_main_remove_n3(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--destructive', '-n', '3', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz_b0lt82' test/test_layout_blspec.py:551: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--destructive', '-n', '3', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz_b0lt82', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=False, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz_b0lt82'), all=False, destructive=True, num=3, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--destructive', '-n', '3', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz_b0lt82', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), ...] sorter = , limit = 3, bootloader = destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.6', layout='uki') kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] limit = 3 remove_kernels = {Kernel(version='1.2.6', layout='uki'): ['vmlinuz does not exist'], Kernel(version='1.2.1', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.2', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.4', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='uki'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz_b0lt82/boot/0123456789abcdef0123456789abcdef/1.2.3/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz_b0lt82/boot/0123456789abcdef0123456789abcdef/1.2.5/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz_b0lt82/boot/0123456789abcdef0123456789abcdef/1.2.2/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz_b0lt82/boot/0123456789abcdef0123456789abcdef/1.2.1/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz_b0lt82/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.5.efi terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz_b0lt82/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.6.efi terminates before expected version string position (4608) DEBUG root:process.py:76 in get_removal_list() ____________________________________________________________ BlSpecLayoutTests.test_main_remove_n3_pretend ____________________________________________________________ self = def test_main_remove_n3_pretend(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--destructive', '-n', '3', '--pretend', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpc1zbawap' test/test_layout_blspec.py:563: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--destructive', '-n', '3', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpc1zbawap', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=True, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpc1zbawap'), all=False, destructive=True, num=3, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--destructive', '-n', '3', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpc1zbawap', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), ...] sorter = , limit = 3, bootloader = destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.6', layout='uki') kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] limit = 3 remove_kernels = {Kernel(version='1.2.6', layout='uki'): ['vmlinuz does not exist'], Kernel(version='1.2.1', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='uki'): ['vmlinuz does not exist'], Kernel(version='1.2.4', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.2', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='bls'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpc1zbawap/boot/0123456789abcdef0123456789abcdef/1.2.3/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpc1zbawap/boot/0123456789abcdef0123456789abcdef/1.2.5/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpc1zbawap/boot/0123456789abcdef0123456789abcdef/1.2.2/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpc1zbawap/boot/0123456789abcdef0123456789abcdef/1.2.1/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpc1zbawap/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.5.efi terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpc1zbawap/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.6.efi terminates before expected version string position (4608) DEBUG root:process.py:76 in get_removal_list() _____________________________________________________________ BlSpecLayoutTests.test_main_remove_pretend ______________________________________________________________ self = def test_main_remove_pretend(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--destructive', '--pretend', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpcdeitsrm' test/test_layout_blspec.py:521: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--destructive', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpcdeitsrm', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=True, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpcdeitsrm'), all=False, destructive=True, num=0, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--destructive', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpcdeitsrm', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), ...] sorter = , limit = 0, bootloader = destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.6', layout='uki') kernels = [Kernel(version='1.2.4', layout='bls'), Kernel(version='1.2.3', layout='bls'), Kernel(version='1.2.5', layout='bls'), Kernel(version='1.2.2', layout='bls'), Kernel(version='1.2.1', layout='bls'), Kernel(version='1.2.5', layout='uki'), Kernel(version='1.2.6', layout='uki')] limit = 0 remove_kernels = {Kernel(version='1.2.4', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='uki'): ['vmlinuz does not exist'], Kernel(version='1.2.1', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.6', layout='uki'): ['vmlinuz does not exist'], Kernel(version='1.2.2', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='bls'): ['vmlinuz does not exist'], Kernel(version='1.2.5', layout='bls'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpcdeitsrm/boot/0123456789abcdef0123456789abcdef/1.2.3/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpcdeitsrm/boot/0123456789abcdef0123456789abcdef/1.2.5/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpcdeitsrm/boot/0123456789abcdef0123456789abcdef/1.2.2/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpcdeitsrm/boot/0123456789abcdef0123456789abcdef/1.2.1/linux terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpcdeitsrm/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.5.efi terminates before expected version string position (4608) DEBUG root:blspec.py:82 Unrecognized potential kernel image: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpcdeitsrm/boot/EFI/Linux/0123456789abcdef0123456789abcdef-1.2.6.efi terminates before expected version string position (4608) DEBUG root:process.py:76 in get_removal_list() _______________________________________________________________ StdLayoutTests.test_config_file_system ________________________________________________________________ self = def test_config_file_system(self) -> None: with self.create_layout() as td: with open(Path(td) / 'eclean-kernel.rc', 'w') as f: f.write('-n "2"\n') os.environ['XDG_CONFIG_DIRS'] += f':{td}' self.assertEqual( > main(['--destructive', '--root', td, '--debug', '--no-mount']), 0) f = <_io.TextIOWrapper name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplkzslmsc/eclean-kernel.rc' mode='w' encoding='UTF-8'> self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplkzslmsc' test/test_layout_std.py:427: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['-n', '2', '--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplkzslmsc', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=False, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplkzslmsc'), all=False, destructive=True, num=2, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplkzslmsc', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplkzslmsc'] exclusions = [] f = <_io.TextIOWrapper name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplkzslmsc/eclean-kernel.rc' mode='r' encoding='UTF-8'> group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] sorter = , limit = 2, bootloader = destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.4', layout='other') kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] limit = 2 remove_kernels = {Kernel(version='1.2.4', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3.old', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.2', layout='other'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:215 Layout failed: ; exception: /etc/machine-id not found DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:process.py:76 in get_removal_list() ________________________________________________________________ StdLayoutTests.test_config_file_user _________________________________________________________________ self = def test_config_file_user(self) -> None: with self.create_layout() as td: path = Path(td) os.mkdir(path / 'system') with open(path / 'system/eclean-kernel.rc', 'w') as f: f.write('-n 1\n') with open(path / 'eclean-kernel.rc', 'w') as f: f.write('-n "2"\n') os.environ['XDG_CONFIG_DIRS'] = str(path / 'system') os.environ['XDG_CONFIG_HOME'] = td self.assertEqual( > main(['--destructive', '--root', td, '--debug', '--no-mount']), 0) f = <_io.TextIOWrapper name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpq_u7mmrk/eclean-kernel.rc' mode='w' encoding='UTF-8'> path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpq_u7mmrk') self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpq_u7mmrk' test/test_layout_std.py:446: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['-n', '1', '-n', '2', '--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpq_u7mmrk', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=False, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpq_u7mmrk'), all=False, destructive=True, num=2, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpq_u7mmrk', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpq_u7mmrk', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpq_u7mmrk/system'] exclusions = [] f = <_io.TextIOWrapper name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpq_u7mmrk/eclean-kernel.rc' mode='r' encoding='UTF-8'> group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] sorter = , limit = 2, bootloader = destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.4', layout='other') kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] limit = 2 remove_kernels = {Kernel(version='1.2.2', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.4', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3.old', layout='other'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:215 Layout failed: ; exception: /etc/machine-id not found DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:process.py:76 in get_removal_list() __________________________________________________________________ StdLayoutTests.test_exclude_build __________________________________________________________________ self = def test_exclude_build(self) -> None: with self.create_layout() as td: path = Path(td) boot = path / 'boot' modules = path / 'lib/modules' self.assertEqual( sorted(kernel_paths( StdLayout(root=path).find_kernels( exclusions=[KFT.BUILD]))), [('1.2.2', [GenericFile(boot / 'System.map-1.2.2', KFT.SYSTEM_MAP), > KernelImage(boot / 'vmlinuz-1.2.2'), ModuleDirectory(modules / '1.2.2'), ], '1.2.2'), ('1.2.3', [GenericFile(boot / 'System.map-1.2.3', KFT.SYSTEM_MAP), GenericFile(boot / 'config-1.2.3', KFT.CONFIG), GenericFile(boot / 'initrd-1.2.3.img', KFT.INITRAMFS), KernelImage(boot / 'vmlinuz-1.2.3'), ModuleDirectory(modules / '1.2.3'), ], '1.2.3'), ('1.2.3.old', [GenericFile(boot / 'System.map-1.2.3.old', KFT.SYSTEM_MAP), GenericFile(boot / 'config-1.2.3.old', KFT.CONFIG), GenericFile(boot / 'initrd-1.2.3.img.old', KFT.INITRAMFS), KernelImage(boot / 'vmlinuz-1.2.3.old'), ModuleDirectory(modules / '1.2.3'), ], '1.2.3'), ('1.2.4', [GenericFile(boot / 'config-1.2.4', KFT.CONFIG), ModuleDirectory(modules / '1.2.4'), ], None)]) boot = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/boot') modules = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/lib/modules') path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z') self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z' test/test_layout_std.py:270: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/boot/vmlinuz-1.2.2') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/boot/vmlinuz-1.2.2')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/boot/vmlinuz-1.2.2'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/boot/vmlinuz-1.2.2')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/boot/vmlinuz-1.2.2')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/boot/vmlinuz-1.2.2'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/boot/vmlinuz-1.2.2 terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/boot/vmlinuz-1.2.2'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/boot/vmlinuz-1.2.2')) ecleankernel/file.py:196: UnrecognizedKernelError _________________________________________________________________ StdLayoutTests.test_exclude_config __________________________________________________________________ self = def test_exclude_config(self) -> None: with self.create_layout() as td: path = Path(td) boot = path / 'boot' modules = path / 'lib/modules' self.assertEqual( sorted(kernel_paths( StdLayout(root=path).find_kernels( exclusions=[KFT.CONFIG]))), [('1.2.2', [GenericFile(boot / 'System.map-1.2.2', KFT.SYSTEM_MAP), > KernelImage(boot / 'vmlinuz-1.2.2'), ModuleDirectory(modules / '1.2.2'), GenericFile(modules / '1.2.2/../../../usr/src/linux', KFT.BUILD), ], '1.2.2'), ('1.2.3', [GenericFile(boot / 'System.map-1.2.3', KFT.SYSTEM_MAP), GenericFile(boot / 'initrd-1.2.3.img', KFT.INITRAMFS), KernelImage(boot / 'vmlinuz-1.2.3'), ModuleDirectory(modules / '1.2.3'), GenericFile(modules / '1.2.3/../../../usr/src/linux', KFT.BUILD), ], '1.2.3'), ('1.2.3.old', [GenericFile(boot / 'System.map-1.2.3.old', KFT.SYSTEM_MAP), GenericFile(boot / 'initrd-1.2.3.img.old', KFT.INITRAMFS), KernelImage(boot / 'vmlinuz-1.2.3.old'), ModuleDirectory(modules / '1.2.3'), GenericFile(modules / '1.2.3/../../../usr/src/linux', KFT.BUILD), ], '1.2.3'), ('1.2.4', [ModuleDirectory(modules / '1.2.4'), ], None)]) boot = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/boot') modules = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/lib/modules') path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz') self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz' test/test_layout_std.py:189: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/boot/vmlinuz-1.2.2') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/boot/vmlinuz-1.2.2')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/boot/vmlinuz-1.2.2'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/boot/vmlinuz-1.2.2')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/boot/vmlinuz-1.2.2')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/boot/vmlinuz-1.2.2'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/boot/vmlinuz-1.2.2 terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/boot/vmlinuz-1.2.2'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/boot/vmlinuz-1.2.2')) ecleankernel/file.py:196: UnrecognizedKernelError _________________________________________________________________ StdLayoutTests.test_exclude_modules _________________________________________________________________ self = def test_exclude_modules(self) -> None: with self.create_layout() as td: path = Path(td) boot = path / 'boot' modules = path / 'lib/modules' self.assertEqual( sorted(kernel_paths( StdLayout(root=path).find_kernels( exclusions=[KFT.MODULES]))), [('1.2.2', [GenericFile(boot / 'System.map-1.2.2', KFT.SYSTEM_MAP), > KernelImage(boot / 'vmlinuz-1.2.2'), GenericFile(modules / '1.2.2/../../../usr/src/linux', KFT.BUILD), ], '1.2.2'), ('1.2.3', [GenericFile(boot / 'System.map-1.2.3', KFT.SYSTEM_MAP), GenericFile(boot / 'config-1.2.3', KFT.CONFIG), GenericFile(boot / 'initrd-1.2.3.img', KFT.INITRAMFS), KernelImage(boot / 'vmlinuz-1.2.3'), GenericFile(modules / '1.2.3/../../../usr/src/linux', KFT.BUILD), ], '1.2.3'), ('1.2.3.old', [GenericFile(boot / 'System.map-1.2.3.old', KFT.SYSTEM_MAP), GenericFile(boot / 'config-1.2.3.old', KFT.CONFIG), GenericFile(boot / 'initrd-1.2.3.img.old', KFT.INITRAMFS), KernelImage(boot / 'vmlinuz-1.2.3.old'), GenericFile(modules / '1.2.3/../../../usr/src/linux', KFT.BUILD), ], '1.2.3'), ('1.2.4', [GenericFile(boot / 'config-1.2.4', KFT.CONFIG), ], None)]) boot = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/boot') modules = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/lib/modules') path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17') self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17' test/test_layout_std.py:230: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/boot/vmlinuz-1.2.2') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/boot/vmlinuz-1.2.2')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/boot/vmlinuz-1.2.2'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/boot/vmlinuz-1.2.2')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/boot/vmlinuz-1.2.2')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/boot/vmlinuz-1.2.2'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/boot/vmlinuz-1.2.2 terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/boot/vmlinuz-1.2.2'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/boot/vmlinuz-1.2.2')) ecleankernel/file.py:196: UnrecognizedKernelError __________________________________________________________________ StdLayoutTests.test_find_modules ___________________________________________________________________ self = def test_find_modules(self) -> None: with self.create_layout() as td: path = Path(td) boot = path / 'boot' modules = path / 'lib/modules' self.assertEqual( sorted(kernel_paths( StdLayout(root=path).find_kernels())), [('1.2.2', [GenericFile(boot / 'System.map-1.2.2', KFT.SYSTEM_MAP), > KernelImage(boot / 'vmlinuz-1.2.2'), ModuleDirectory(modules / '1.2.2'), GenericFile(modules / '1.2.2/../../../usr/src/linux', KFT.BUILD), ], '1.2.2'), ('1.2.3', [GenericFile(boot / 'System.map-1.2.3', KFT.SYSTEM_MAP), GenericFile(boot / 'config-1.2.3', KFT.CONFIG), GenericFile(boot / 'initrd-1.2.3.img', KFT.INITRAMFS), KernelImage(boot / 'vmlinuz-1.2.3'), ModuleDirectory(modules / '1.2.3'), GenericFile(modules / '1.2.3/../../../usr/src/linux', KFT.BUILD), ], '1.2.3'), ('1.2.3.old', [GenericFile(boot / 'System.map-1.2.3.old', KFT.SYSTEM_MAP), GenericFile(boot / 'config-1.2.3.old', KFT.CONFIG), GenericFile(boot / 'initrd-1.2.3.img.old', KFT.INITRAMFS), KernelImage(boot / 'vmlinuz-1.2.3.old'), ModuleDirectory(modules / '1.2.3'), GenericFile(modules / '1.2.3/../../../usr/src/linux', KFT.BUILD), ], '1.2.3'), ('1.2.4', [GenericFile(boot / 'config-1.2.4', KFT.CONFIG), ModuleDirectory(modules / '1.2.4'), ], None)]) boot = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/boot') modules = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/lib/modules') path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho') self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho' test/test_layout_std.py:145: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/boot/vmlinuz-1.2.2') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/boot/vmlinuz-1.2.2')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/boot/vmlinuz-1.2.2'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/boot/vmlinuz-1.2.2')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/boot/vmlinuz-1.2.2')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/boot/vmlinuz-1.2.2'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/boot/vmlinuz-1.2.2 terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/boot/vmlinuz-1.2.2'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/boot/vmlinuz-1.2.2')) ecleankernel/file.py:196: UnrecognizedKernelError ________________________________________________________________ StdLayoutTests.test_main_list_kernels ________________________________________________________________ self = , sout = <_io.StringIO object at 0xfff800010a4fb400> @patch('ecleankernel.__main__.sys.stdout', new_callable=io.StringIO) def test_main_list_kernels(self, sout: io.StringIO ) -> None: with self.create_layout() as td: self.assertEqual( main(['--list-kernels', '--root', td, '--debug']), 0) val = (x for x in sout.getvalue().splitlines() if not x.startswith('- last modified:')) > self.assertEqual('\n'.join(val), f''' other 1.2.4 [None] - config: {td}/boot/config-1.2.4 - modules: {td}/lib/modules/1.2.4 other 1.2.3 [1.2.3] - systemmap: {td}/boot/System.map-1.2.3 - config: {td}/boot/config-1.2.3 - initramfs: {td}/boot/initrd-1.2.3.img - vmlinuz: {td}/boot/vmlinuz-1.2.3 - modules: {td}/lib/modules/1.2.3 - build: {td}/lib/modules/1.2.3/../../../usr/src/linux other 1.2.3.old [1.2.3] - systemmap: {td}/boot/System.map-1.2.3.old - config: {td}/boot/config-1.2.3.old - initramfs: {td}/boot/initrd-1.2.3.img.old - vmlinuz: {td}/boot/vmlinuz-1.2.3.old - modules: {td}/lib/modules/1.2.3 - build: {td}/lib/modules/1.2.3/../../../usr/src/linux other 1.2.2 [1.2.2] - systemmap: {td}/boot/System.map-1.2.2 - vmlinuz: {td}/boot/vmlinuz-1.2.2 - modules: {td}/lib/modules/1.2.2 - build: {td}/lib/modules/1.2.2/../../../usr/src/linux'''.lstrip()) E AssertionError: 'othe[213 chars]2.3 [None]\n- systemmap: /var/tmp/portage/app-[1423 chars]inux' != 'othe[213 chars]2.3 [1.2.3]\n- systemmap: /var/tmp/portage/app[1637 chars]inux' E other 1.2.4 [None] E - config: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/boot/config-1.2.4 E - modules: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/lib/modules/1.2.4 E - other 1.2.3 [None] E ? ^^^^ E + other 1.2.3 [1.2.3] E ? ^^^^^ E - systemmap: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/boot/System.map-1.2.3 E - config: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/boot/config-1.2.3 E - initramfs: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/boot/initrd-1.2.3.img E - vmlinuz: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/boot/vmlinuz-1.2.3 E - modules: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/lib/modules/1.2.3 E - build: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/lib/modules/1.2.3/../../../usr/src/linux E - other 1.2.3.old [None] E ? ^^^^ E + other 1.2.3.old [1.2.3] E ? ^^^^^ E - systemmap: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/boot/System.map-1.2.3.old E - config: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/boot/config-1.2.3.old E - initramfs: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/boot/initrd-1.2.3.img.old E - vmlinuz: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/boot/vmlinuz-1.2.3.old E + - modules: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/lib/modules/1.2.3 E + - build: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/lib/modules/1.2.3/../../../usr/src/linux E - other 1.2.2 [None] E ? ^^^^ E + other 1.2.2 [1.2.2] E ? ^^^^^ E - systemmap: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/boot/System.map-1.2.2 E - vmlinuz: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/boot/vmlinuz-1.2.2 E - modules: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/lib/modules/1.2.2 E - build: /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi/lib/modules/1.2.2/../../../usr/src/linux self = sout = <_io.StringIO object at 0xfff800010a4fb400> td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp7vk4aymi' val = . at 0xfff8000109e3fe60> test/test_layout_std.py:332: AssertionError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:215 Layout failed: ; exception: /etc/machine-id not found DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: ___________________________________________________________________ StdLayoutTests.test_main_remove ___________________________________________________________________ self = def test_main_remove(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--destructive', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphtij5ka3' test/test_layout_std.py:360: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphtij5ka3', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=False, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphtij5ka3'), all=False, destructive=True, num=0, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphtij5ka3', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] sorter = , limit = 0, bootloader = destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.4', layout='other') kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] limit = 0 remove_kernels = {Kernel(version='1.2.4', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.2', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3.old', layout='other'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:215 Layout failed: ; exception: /etc/machine-id not found DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:process.py:76 in get_removal_list() _________________________________________________________________ StdLayoutTests.test_main_remove_all _________________________________________________________________ self = def test_main_remove_all(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--all', '--destructive', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpm7ssba7l' test/test_layout_std.py:377: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--all', '--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpm7ssba7l', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=False, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpm7ssba7l'), all=True, destructive=True, num=0, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--all', '--destructive', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpm7ssba7l', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] sorter = , limit = None bootloader = , destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.4', layout='other') kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] limit = None remove_kernels = {Kernel(version='1.2.4', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.2', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3.old', layout='other'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:215 Layout failed: ; exception: /etc/machine-id not found DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:process.py:76 in get_removal_list() _____________________________________________________________ StdLayoutTests.test_main_remove_all_pretend _____________________________________________________________ self = def test_main_remove_all_pretend(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--all', '--destructive', '--pretend', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpkdyto9l5' test/test_layout_std.py:389: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--all', '--destructive', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpkdyto9l5', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=True, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpkdyto9l5'), all=True, destructive=True, num=0, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--all', '--destructive', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpkdyto9l5', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] sorter = , limit = None bootloader = , destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.4', layout='other') kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] limit = None remove_kernels = {Kernel(version='1.2.2', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.4', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3.old', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='other'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:215 Layout failed: ; exception: /etc/machine-id not found DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:process.py:76 in get_removal_list() _________________________________________________________________ StdLayoutTests.test_main_remove_n2 __________________________________________________________________ self = def test_main_remove_n2(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--destructive', '-n', '2', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmptp85y1xr' test/test_layout_std.py:397: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--destructive', '-n', '2', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmptp85y1xr', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=False, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmptp85y1xr'), all=False, destructive=True, num=2, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--destructive', '-n', '2', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmptp85y1xr', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] sorter = , limit = 2, bootloader = destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.4', layout='other') kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] limit = 2 remove_kernels = {Kernel(version='1.2.2', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3.old', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.4', layout='other'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:215 Layout failed: ; exception: /etc/machine-id not found DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:process.py:76 in get_removal_list() _____________________________________________________________ StdLayoutTests.test_main_remove_n2_pretend ______________________________________________________________ self = def test_main_remove_n2_pretend(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--destructive', '-n', '2', '--pretend', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpgo4uffpv' test/test_layout_std.py:407: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--destructive', '-n', '2', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpgo4uffpv', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=True, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpgo4uffpv'), all=False, destructive=True, num=2, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--destructive', '-n', '2', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpgo4uffpv', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] sorter = , limit = 2, bootloader = destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.4', layout='other') kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] limit = 2 remove_kernels = {Kernel(version='1.2.2', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.4', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3.old', layout='other'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:215 Layout failed: ; exception: /etc/machine-id not found DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:process.py:76 in get_removal_list() _______________________________________________________________ StdLayoutTests.test_main_remove_pretend _______________________________________________________________ self = def test_main_remove_pretend(self) -> None: with self.create_layout() as td: self.assertEqual( > main(['--destructive', '--pretend', '--root', td, '--debug', '--no-mount']), 0) self = td = '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9alyjo86' test/test_layout_std.py:369: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/__main__.py:252: in main removals = get_removal_list( all_args = ['--destructive', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9alyjo86', '--debug', '--no-mount'] argp = ArgumentParser(prog='__main__.py', usage=None, description='Remove old kernel versions, keeping either N newest kernels (with -n)\nor only those which are referenced by a bootloader (with -a).', formatter_class=, conflict_handler='error', add_help=True) args = Namespace(ask=False, list_kernels=False, pretend=True, read_kernel_version=None, bootloader='auto', layout='auto', root=PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9alyjo86'), all=False, destructive=True, num=0, sort_order='version', debug=True, no_mount=True, no_bootloader_update=False, no_kernel_install=False, exclude='') argv = ['--destructive', '--pretend', '--root', '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp9alyjo86', '--debug', '--no-mount'] bootfs = bootloader = bootloader_cls = bootloaders = [, , , , ] config_dirs = ['/dev/null', '/dev/null'] exclusions = [] group = kernel_parts = ['vmlinuz', 'systemmap', 'config', 'initramfs', 'modules', 'build', 'misc', 'emptydir'] kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] layout = layout_cls = layouts = [, ] pymountboot = sort_cls = sorter = sorts = [, ] x = '' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] sorter = , limit = 0, bootloader = destructive = True def get_removal_list(kernels: typing.List[Kernel], sorter: KernelSort, limit: typing.Optional[int] = 0, bootloader: typing.Optional[Bootloader] = None, destructive: bool = False ) -> RemovableKernelDict: """ Get list of kernel files to remove Apply requested filters on `kernels`, and return a generator of `RemovableKernel` tuples. `limit` specifies how many newest kernels to keep, `bootloader` is the bootloader to reference in order to determine whether a kernel is used and `destructive` indicates whether bootloader references should be ignored. """ logging.debug('in get_removal_list()') remove_kernels: typing.Dict[Kernel, typing.List[str]] = {} for k in remove_stray(kernels): remove_kernels.setdefault(k, []).append('vmlinuz does not exist') if len(remove_kernels) == len(kernels): > raise SystemError( 'No vmlinuz found. This seems ridiculous, aborting.') E SystemError: No vmlinuz found. This seems ridiculous, aborting. bootloader = destructive = True k = Kernel(version='1.2.4', layout='other') kernels = [Kernel(version='1.2.3', layout='other'), Kernel(version='1.2.3.old', layout='other'), Kernel(version='1.2.2', layout='other'), Kernel(version='1.2.4', layout='other')] limit = 0 remove_kernels = {Kernel(version='1.2.3.old', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.2', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.4', layout='other'): ['vmlinuz does not exist'], Kernel(version='1.2.3', layout='other'): ['vmlinuz does not exist']} sorter = ecleankernel/process.py:82: SystemError -------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------- DEBUG root:__main__.py:187 Sorter: DEBUG root:__main__.py:215 Layout failed: ; exception: /etc/machine-id not found DEBUG root:__main__.py:221 Layout: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:230 Bootloader failed: DEBUG root:__main__.py:234 Bootloader: DEBUG root:process.py:76 in get_removal_list() _____________________________________________________________ KernelRemovalTests.test_get_removable_files _____________________________________________________________ self = def setUp(self) -> None: self.kernels = [ Kernel('1.old'), Kernel('2.new'), Kernel('3.stray'), Kernel('4.stray-files'), ] self.td = tempfile.TemporaryDirectory() td = Path(self.td.name) Path(td / 'symlink').symlink_to(td / 'kernel.old') write_bzImage(td / 'kernel.old', b'old built on test') write_bzImage(td / 'kernel.new', b'new built on test') with open(td / 'config-stray', 'w'): pass with open(td / 'initrd-stray.img', 'w'): pass os.mkdir(td / 'build') build = GenericFile(td / 'build', KernelFileType.BUILD) self.kernels[0].all_files = [ > KernelImage(td / 'kernel.old'), build, ] build = GenericFile(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb/build'), KernelFileType.'BUILD') self = td = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb') test/test_process.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb/kernel.old') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb/kernel.old')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb/kernel.old'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb/kernel.old')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb/kernel.old')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb/kernel.old'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb/kernel.old terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb/kernel.old'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb/kernel.old')) ecleankernel/file.py:196: UnrecognizedKernelError _____________________________________________________________ KernelRemovalTests.test_removal_bootloader ______________________________________________________________ self = def setUp(self) -> None: self.kernels = [ Kernel('1.old'), Kernel('2.new'), Kernel('3.stray'), Kernel('4.stray-files'), ] self.td = tempfile.TemporaryDirectory() td = Path(self.td.name) Path(td / 'symlink').symlink_to(td / 'kernel.old') write_bzImage(td / 'kernel.old', b'old built on test') write_bzImage(td / 'kernel.new', b'new built on test') with open(td / 'config-stray', 'w'): pass with open(td / 'initrd-stray.img', 'w'): pass os.mkdir(td / 'build') build = GenericFile(td / 'build', KernelFileType.BUILD) self.kernels[0].all_files = [ > KernelImage(td / 'kernel.old'), build, ] build = GenericFile(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh/build'), KernelFileType.'BUILD') self = td = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh') test/test_process.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh/kernel.old') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh/kernel.old')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh/kernel.old'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh/kernel.old')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh/kernel.old')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh/kernel.old'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh/kernel.old terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh/kernel.old'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh/kernel.old')) ecleankernel/file.py:196: UnrecognizedKernelError _______________________________________________________ KernelRemovalTests.test_removal_bootloader_all_kernels ________________________________________________________ self = def setUp(self) -> None: self.kernels = [ Kernel('1.old'), Kernel('2.new'), Kernel('3.stray'), Kernel('4.stray-files'), ] self.td = tempfile.TemporaryDirectory() td = Path(self.td.name) Path(td / 'symlink').symlink_to(td / 'kernel.old') write_bzImage(td / 'kernel.old', b'old built on test') write_bzImage(td / 'kernel.new', b'new built on test') with open(td / 'config-stray', 'w'): pass with open(td / 'initrd-stray.img', 'w'): pass os.mkdir(td / 'build') build = GenericFile(td / 'build', KernelFileType.BUILD) self.kernels[0].all_files = [ > KernelImage(td / 'kernel.old'), build, ] build = GenericFile(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg/build'), KernelFileType.'BUILD') self = td = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg') test/test_process.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg/kernel.old') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg/kernel.old')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg/kernel.old'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg/kernel.old')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg/kernel.old')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg/kernel.old'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg/kernel.old terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg/kernel.old'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg/kernel.old')) ecleankernel/file.py:196: UnrecognizedKernelError _______________________________________________________________ KernelRemovalTests.test_removal_current _______________________________________________________________ self = def setUp(self) -> None: self.kernels = [ Kernel('1.old'), Kernel('2.new'), Kernel('3.stray'), Kernel('4.stray-files'), ] self.td = tempfile.TemporaryDirectory() td = Path(self.td.name) Path(td / 'symlink').symlink_to(td / 'kernel.old') write_bzImage(td / 'kernel.old', b'old built on test') write_bzImage(td / 'kernel.new', b'new built on test') with open(td / 'config-stray', 'w'): pass with open(td / 'initrd-stray.img', 'w'): pass os.mkdir(td / 'build') build = GenericFile(td / 'build', KernelFileType.BUILD) self.kernels[0].all_files = [ > KernelImage(td / 'kernel.old'), build, ] build = GenericFile(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl/build'), KernelFileType.'BUILD') self = td = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl') test/test_process.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl/kernel.old') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl/kernel.old')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl/kernel.old'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl/kernel.old')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl/kernel.old')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl/kernel.old'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl/kernel.old terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl/kernel.old'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl/kernel.old')) ecleankernel/file.py:196: UnrecognizedKernelError ____________________________________________________________ KernelRemovalTests.test_removal_current_stray ____________________________________________________________ self = def setUp(self) -> None: self.kernels = [ Kernel('1.old'), Kernel('2.new'), Kernel('3.stray'), Kernel('4.stray-files'), ] self.td = tempfile.TemporaryDirectory() td = Path(self.td.name) Path(td / 'symlink').symlink_to(td / 'kernel.old') write_bzImage(td / 'kernel.old', b'old built on test') write_bzImage(td / 'kernel.new', b'new built on test') with open(td / 'config-stray', 'w'): pass with open(td / 'initrd-stray.img', 'w'): pass os.mkdir(td / 'build') build = GenericFile(td / 'build', KernelFileType.BUILD) self.kernels[0].all_files = [ > KernelImage(td / 'kernel.old'), build, ] build = GenericFile(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m/build'), KernelFileType.'BUILD') self = td = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m') test/test_process.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m/kernel.old') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m/kernel.old')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m/kernel.old'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m/kernel.old')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m/kernel.old')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m/kernel.old'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m/kernel.old terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m/kernel.old'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m/kernel.old')) ecleankernel/file.py:196: UnrecognizedKernelError _____________________________________________________________ KernelRemovalTests.test_removal_destructive _____________________________________________________________ self = def setUp(self) -> None: self.kernels = [ Kernel('1.old'), Kernel('2.new'), Kernel('3.stray'), Kernel('4.stray-files'), ] self.td = tempfile.TemporaryDirectory() td = Path(self.td.name) Path(td / 'symlink').symlink_to(td / 'kernel.old') write_bzImage(td / 'kernel.old', b'old built on test') write_bzImage(td / 'kernel.new', b'new built on test') with open(td / 'config-stray', 'w'): pass with open(td / 'initrd-stray.img', 'w'): pass os.mkdir(td / 'build') build = GenericFile(td / 'build', KernelFileType.BUILD) self.kernels[0].all_files = [ > KernelImage(td / 'kernel.old'), build, ] build = GenericFile(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f/build'), KernelFileType.'BUILD') self = td = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f') test/test_process.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f/kernel.old') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f/kernel.old')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f/kernel.old'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f/kernel.old')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f/kernel.old')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f/kernel.old'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f/kernel.old terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f/kernel.old'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f/kernel.old')) ecleankernel/file.py:196: UnrecognizedKernelError ____________________________________________________________ KernelRemovalTests.test_removal_no_bootloader ____________________________________________________________ self = def setUp(self) -> None: self.kernels = [ Kernel('1.old'), Kernel('2.new'), Kernel('3.stray'), Kernel('4.stray-files'), ] self.td = tempfile.TemporaryDirectory() td = Path(self.td.name) Path(td / 'symlink').symlink_to(td / 'kernel.old') write_bzImage(td / 'kernel.old', b'old built on test') write_bzImage(td / 'kernel.new', b'new built on test') with open(td / 'config-stray', 'w'): pass with open(td / 'initrd-stray.img', 'w'): pass os.mkdir(td / 'build') build = GenericFile(td / 'build', KernelFileType.BUILD) self.kernels[0].all_files = [ > KernelImage(td / 'kernel.old'), build, ] build = GenericFile(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f/build'), KernelFileType.'BUILD') self = td = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f') test/test_process.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f/kernel.old') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f/kernel.old')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f/kernel.old'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f/kernel.old')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f/kernel.old')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f/kernel.old'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f/kernel.old terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f/kernel.old'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f/kernel.old')) ecleankernel/file.py:196: UnrecognizedKernelError ______________________________________________________________ KernelRemovalTests.test_removal_no_limit _______________________________________________________________ self = def setUp(self) -> None: self.kernels = [ Kernel('1.old'), Kernel('2.new'), Kernel('3.stray'), Kernel('4.stray-files'), ] self.td = tempfile.TemporaryDirectory() td = Path(self.td.name) Path(td / 'symlink').symlink_to(td / 'kernel.old') write_bzImage(td / 'kernel.old', b'old built on test') write_bzImage(td / 'kernel.new', b'new built on test') with open(td / 'config-stray', 'w'): pass with open(td / 'initrd-stray.img', 'w'): pass os.mkdir(td / 'build') build = GenericFile(td / 'build', KernelFileType.BUILD) self.kernels[0].all_files = [ > KernelImage(td / 'kernel.old'), build, ] build = GenericFile(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g/build'), KernelFileType.'BUILD') self = td = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g') test/test_process.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g/kernel.old') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g/kernel.old')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g/kernel.old'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g/kernel.old')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g/kernel.old')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g/kernel.old'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g/kernel.old terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g/kernel.old'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g/kernel.old')) ecleankernel/file.py:196: UnrecognizedKernelError ________________________________________________________________ KernelRemovalTests.test_remove_stray _________________________________________________________________ self = def setUp(self) -> None: self.kernels = [ Kernel('1.old'), Kernel('2.new'), Kernel('3.stray'), Kernel('4.stray-files'), ] self.td = tempfile.TemporaryDirectory() td = Path(self.td.name) Path(td / 'symlink').symlink_to(td / 'kernel.old') write_bzImage(td / 'kernel.old', b'old built on test') write_bzImage(td / 'kernel.new', b'new built on test') with open(td / 'config-stray', 'w'): pass with open(td / 'initrd-stray.img', 'w'): pass os.mkdir(td / 'build') build = GenericFile(td / 'build', KernelFileType.BUILD) self.kernels[0].all_files = [ > KernelImage(td / 'kernel.old'), build, ] build = GenericFile(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7/build'), KernelFileType.'BUILD') self = td = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7') test/test_process.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ecleankernel/file.py:113: in __init__ self.internal_version = self.read_internal_version() __class__ = path = PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7/kernel.old') self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7/kernel.old')) ecleankernel/file.py:164: in read_internal_version verbuf = func(f) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7/kernel.old'> func = self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7/kernel.old')) verbuf = None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7/kernel.old')) f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7/kernel.old'> def read_version_from_bzimage(self, f: typing.IO[bytes], ) -> typing.Optional[bytes]: """Read version from bzImage, if the file is in that format""" with autorewind(f): f.seek(0x200, 1) # short seek would result in eof, so read() will return '' buf = f.read(0x10) if len(buf) != 0x10 or buf[2:6] != b"HdrS": return None offset = struct.unpack_from("H", buf, 0x0e)[0] f.seek(offset - 0x10, 1) buf = f.read(0x100) # XXX if not buf: > raise UnrecognizedKernelError( f"Kernel file {self.path} terminates before expected " f"version string position ({offset + 0x200})") E ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7/kernel.old terminates before expected version string position (4608) buf = b'' f = <_io.BufferedReader name='/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7/kernel.old'> offset = 4096 self = KernelImage(PosixPath('/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7/kernel.old')) ecleankernel/file.py:196: UnrecognizedKernelError ========================================================================== warnings summary =========================================================================== test/test_process.py::KernelRemovalTests::test_remove_stray /usr/lib/python3.11/tempfile.py:895: ResourceWarning: Implicitly cleaning up _warnings.warn(warn_message, ResourceWarning) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ======================================================================= short test summary info ======================================================================= FAILED test/test_file.py::KernelImageTests::test_read_internal_version_bz - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpworbehai/vmlinuz terminates before expected version... FAILED test/test_file.py::KernelImageTests::test_read_internal_version_efistub - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpz5bmbzm0/vmlinuz terminates before expected version... FAILED test/test_layout_blspec.py::BlSpecLayoutTests::test_exclude_build - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplsp0j_q_/boot/0123456789abcdef0123456789abcdef/1.2.... FAILED test/test_layout_blspec.py::BlSpecLayoutTests::test_exclude_misc - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmphcwes6sx/boot/0123456789abcdef0123456789abcdef/1.2.... FAILED test/test_layout_blspec.py::BlSpecLayoutTests::test_exclude_modules - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpxhoz6i5g/boot/0123456789abcdef0123456789abcdef/1.2.... FAILED test/test_layout_blspec.py::BlSpecLayoutTests::test_find_modules - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpdo82a7fb/boot/0123456789abcdef0123456789abcdef/1.2.... FAILED test/test_layout_blspec.py::BlSpecLayoutTests::test_find_modules_EFI - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpnksuwrpy/boot/EFI/0123456789abcdef0123456789abcdef/... FAILED test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove_all - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove_all_pretend - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove_n3 - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove_n3_pretend - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_blspec.py::BlSpecLayoutTests::test_main_remove_pretend - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_std.py::StdLayoutTests::test_config_file_system - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_std.py::StdLayoutTests::test_config_file_user - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_std.py::StdLayoutTests::test_exclude_build - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmplznazy5z/boot/vmlinuz-1.2.2 terminates before expec... FAILED test/test_layout_std.py::StdLayoutTests::test_exclude_config - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpqbu3hdvz/boot/vmlinuz-1.2.2 terminates before expec... FAILED test/test_layout_std.py::StdLayoutTests::test_exclude_modules - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpsdaypm17/boot/vmlinuz-1.2.2 terminates before expec... FAILED test/test_layout_std.py::StdLayoutTests::test_find_modules - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp3d9l_9ho/boot/vmlinuz-1.2.2 terminates before expec... FAILED test/test_layout_std.py::StdLayoutTests::test_main_list_kernels - AssertionError: 'othe[213 chars]2.3 [None]\n- systemmap: /var/tmp/portage/app-[1423 chars]inux' != 'othe[213 chars]2.3 [1.2.3]\n- systemmap: /var/tmp/portage/app[... FAILED test/test_layout_std.py::StdLayoutTests::test_main_remove - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_std.py::StdLayoutTests::test_main_remove_all - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_std.py::StdLayoutTests::test_main_remove_all_pretend - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_std.py::StdLayoutTests::test_main_remove_n2 - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_std.py::StdLayoutTests::test_main_remove_n2_pretend - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_layout_std.py::StdLayoutTests::test_main_remove_pretend - SystemError: No vmlinuz found. This seems ridiculous, aborting. FAILED test/test_process.py::KernelRemovalTests::test_get_removable_files - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp1mu8_tdb/kernel.old terminates before expected vers... FAILED test/test_process.py::KernelRemovalTests::test_removal_bootloader - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp04pzl0fh/kernel.old terminates before expected vers... FAILED test/test_process.py::KernelRemovalTests::test_removal_bootloader_all_kernels - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpe6x84peg/kernel.old terminates before expected vers... FAILED test/test_process.py::KernelRemovalTests::test_removal_current - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp2q7dx0hl/kernel.old terminates before expected vers... FAILED test/test_process.py::KernelRemovalTests::test_removal_current_stray - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvz73av8m/kernel.old terminates before expected vers... FAILED test/test_process.py::KernelRemovalTests::test_removal_destructive - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpuzedc55f/kernel.old terminates before expected vers... FAILED test/test_process.py::KernelRemovalTests::test_removal_no_bootloader - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpshtong7f/kernel.old terminates before expected vers... FAILED test/test_process.py::KernelRemovalTests::test_removal_no_limit - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmp6641qj5g/kernel.old terminates before expected vers... FAILED test/test_process.py::KernelRemovalTests::test_remove_stray - ecleankernel.file.UnrecognizedKernelError: Kernel file /var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/tmpvlj3mp_7/kernel.old terminates before expected vers... ============================================================== 35 failed, 23 passed, 1 warning in 14.90s ============================================================== * ERROR: app-admin/eclean-kernel-2.99.7::gentoo failed (test phase): * pytest failed with python3.11 * * Call stack: * ebuild.sh, line 136: Called src_test * environment, line 4022: Called distutils-r1_src_test * environment, line 2016: Called _distutils-r1_run_foreach_impl 'python_test' * environment, line 745: Called python_foreach_impl 'distutils-r1_run_phase' 'python_test' * environment, line 3626: Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' * environment, line 3132: Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' * environment, line 3130: Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'python_test' * environment, line 1242: Called distutils-r1_run_phase 'python_test' * environment, line 1939: Called python_test * environment, line 3909: Called distutils-r1_python_test * environment, line 1879: Called epytest * environment, line 2554: Called die * The specific snippet of code: * "${@}" || die -n "pytest failed with ${EPYTHON}"; * * If you need support, post the output of `emerge --info '=app-admin/eclean-kernel-2.99.7::gentoo'`, * the complete build log and the output of `emerge -pqv '=app-admin/eclean-kernel-2.99.7::gentoo'`. * The complete build log is located at '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/temp/environment'. * Working directory: '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7' * S: '/var/tmp/portage/app-admin/eclean-kernel-2.99.7/work/eclean_kernel-2.99.7'