Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-kiwi for openSUSE:Factory checked in at 2021-05-15 23:15:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-kiwi (Old) and /work/SRC/openSUSE:Factory/.python-kiwi.new.2988 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-kiwi" Sat May 15 23:15:56 2021 rev:78 rq:892684 version:9.23.28 Changes: -------- --- /work/SRC/openSUSE:Factory/python-kiwi/python-kiwi.changes 2021-04-24 23:06:37.467180255 +0200 +++ /work/SRC/openSUSE:Factory/.python-kiwi.new.2988/python-kiwi.changes 2021-05-15 23:17:01.932538176 +0200 @@ -1,0 +2,173 @@ +Mon May 03 12:40:09 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Bump version: 9.23.27 ??? 9.23.28 + +------------------------------------------------------------------- +Fri Apr 30 14:39:10 CEST 2021 - David Cassany <dcass...@suse.com> + +- Upgrade tests accoring to #1805 + + This commit is a follow up of #1805 which missed to update the related + unit test. + +------------------------------------------------------------------- +Fri Apr 30 09:40:05 CEST 2021 - David Cassany <dcass...@suse.com> + +- Make installation media unattended + + This commit configures install media of several tests to run unattended + installation. This is done to facilitate the logic of functional tests. + +------------------------------------------------------------------- +Wed Apr 28 15:14:27 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Fixed unit tests for parallel invocation + + With the change to allow the platform architecture to be + set application global, the unit tests might fail if tests + run in parallel and using different mock architectures + for the test. Thus test that runs depending on a platform + name needs to set the name in the test + +------------------------------------------------------------------- +Wed Apr 28 14:41:48 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Update Debian integration test for UEFI testing + + Updated the Virtual disk profile to make use of the EFI + secure boot feature. + +------------------------------------------------------------------- +Tue Apr 27 20:23:08 CEST 2021 - Jeff Kowalczyk <jkowalc...@suse.com> + +- Fix WSL appx filemap relative paths not preserved + + During WSL appx image type creation step the file hierarchy under metadata_path + is written to a temporary file for eventual use as argument to utility appx. + The file hierarchy information is dropped resulting in all filemap entries + appearing to be at the metadata_path root. The resulting image will side load + and run but without icon and other resources. Stricter checks at Windows Store + submission will fail due to mismatch between image manifest and contents. + + Fix by preserving relative path of filemap entries relative to metadata_path. + Add log output showing both input absolute path and output relative path. + +------------------------------------------------------------------- +Tue Apr 27 16:07:02 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Update Ubuntu integration test for UEFI testing + + Updated the Virtual disk profile to make use of the EFI + secure boot feature. + +------------------------------------------------------------------- +Tue Apr 27 16:01:35 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Added support for UEFI on Debian based distros + + The Debian/Ubuntu folks have a different system to support + EFI secure boot. In order to make use of it kiwi needs some + adaptions done in this pull request. This Fixes #1743 + +------------------------------------------------------------------- +Tue Apr 20 10:53:42 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Bump version: 9.23.26 ??? 9.23.27 + +------------------------------------------------------------------- +Mon Apr 19 10:15:21 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Fixed spec file on Debian tool settings + + debootstrap should always come with dpkg because we don't + want to handle the architecture names used on Debian when + dpkg knows them better than we do. since debootstrap itself + considers the possibility of being called without dpkg on + the system we generate the dependency by a spec change + here. This Fixes #1778 + +------------------------------------------------------------------- +Mon Apr 19 09:40:34 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Change zypper download mode to in-advance + + In relation to upcoming zypper changes e.g to make use of librpm on + single transaction operations there is the possibility that file + triggers start being used. To ensure zypper behaves consistently + DownloadInAdvance mode should be used, this way the transaction + happens as a whole and with the upcoming zypper changes zypper + will still be capable to handle the file triggers. + This Fixes #1789 + +------------------------------------------------------------------- +Sun Apr 18 17:49:05 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Added shadow package to pxe integration test + + Tools like usermod were moved from coreutils to shadow + +------------------------------------------------------------------- +Sun Apr 18 17:33:11 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Added shadow package to integration test + + Tools like usermod were moved from coreutils to shadow + +------------------------------------------------------------------- +Fri Apr 16 15:50:09 CEST 2021 - David Cassany <dcass...@suse.com> + +- Fix appx manifest for WSL containers + + This commit prevents KIWI from setting Identity Name attribute and + DisplayName and PublisherDisplayName elements. + + Fixes #1780 + +------------------------------------------------------------------- +Fri Apr 16 15:03:46 CEST 2021 - David Cassany <dcass...@suse.com> + +- Do not apply default subcommand for derivate containers + + This commit does not apply the default subcommand for derivate + containers. + + Fixes bsc#1184823 + +------------------------------------------------------------------- +Fri Apr 16 10:30:19 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Fixed integration tests requesting grub + + For some reason two integration tests requests the "grub" and + the "grub2" package. On TW there is now no longer a provider of + grub and thus the image build became unresolvable. There is + only grub2 for quite some time, so I deleted this package + setting from the tests in question + +------------------------------------------------------------------- +Fri Apr 16 10:24:14 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Bump version: 9.23.25 ??? 9.23.26 + +------------------------------------------------------------------- +Thu Apr 15 11:05:24 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Fixed platform setup for vagrant unit tests + +------------------------------------------------------------------- +Thu Apr 15 10:53:34 CEST 2021 - Marcus Sch??fer <m...@suse.de> + +- Add support for a custom exclude file + + The new optional metadata file image/exclude_files.yaml can + be placed inside of the local image root tree. At creation time of + the image binary the file contents are used to extend the default + exclude list with additional information. The structure of the + file must be as follows: + + ```yaml + exclude: + - exclude-name-used-in-rsync + ``` + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-kiwi.spec ++++++ --- /var/tmp/diff_new_pack.wAlL5u/_old 2021-05-15 23:17:02.508535927 +0200 +++ /var/tmp/diff_new_pack.wAlL5u/_new 2021-05-15 23:17:02.508535927 +0200 @@ -43,7 +43,7 @@ %endif Name: python-kiwi -Version: 9.23.25 +Version: 9.23.28 Provides: kiwi-schema = 7.4 Release: 0 Url: https://github.com/OSInside/kiwi @@ -83,15 +83,19 @@ %if "%{_vendor}" != "debbuild" Provides: kiwi-image:tbz %endif -# tools used by kiwi +# tools conditionally used by kiwi %if 0%{?fedora} || 0%{?rhel} >= 8 Recommends: gnupg2 +Recommends: debootstrap +Recommends: dpkg %endif %if 0%{?suse_version} -# If it's available, let's pull it in -Recommends: dnf Recommends: gpg2 +Recommends: dnf +Recommends: debootstrap +Recommends: dpkg %endif +# package managers required by distro %if 0%{?fedora} || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1550 Provides: kiwi-packagemanager:microdnf Requires: microdnf @@ -107,8 +111,10 @@ %endif %if 0%{?debian} || 0%{?ubuntu} Requires: debootstrap +Requires: dpkg Requires: gnupg %endif +# tools required by kiwi Requires: kiwi-tools Requires: mtools Requires: rsync ++++++ PKGBUILD ++++++ --- /var/tmp/diff_new_pack.wAlL5u/_old 2021-05-15 23:17:02.564535709 +0200 +++ /var/tmp/diff_new_pack.wAlL5u/_new 2021-05-15 23:17:02.564535709 +0200 @@ -3,7 +3,7 @@ pkgname=('python-kiwi' 'kiwi-man-pages' 'dracut-kiwi-lib' 'dracut-kiwi-oem-repart' 'dracut-kiwi-oem-dump' 'dracut-kiwi-live' 'dracut-kiwi-overlay') arch=(x86_64) -pkgver=9.23.25 +pkgver=9.23.28 pkgrel=0 pkgdesc="KIWI - Appliance Builder Next Generation" url="https://github.com/SUSE/kiwi/tarball/master" @@ -12,7 +12,7 @@ provides=(kiwi-ng kiwi) source=("${pkgname}.tar.gz") changelog="${pkgname}.changes" -md5sums=('907db8e1dabc9172cc618974e74d77ff') +md5sums=('0feb60a13a1fe74672daea876f0d3659') build() { ++++++ python-kiwi.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/.bumpversion.cfg new/kiwi-9.23.28/.bumpversion.cfg --- old/kiwi-9.23.25/.bumpversion.cfg 2021-04-14 20:52:04.000000000 +0200 +++ new/kiwi-9.23.28/.bumpversion.cfg 2021-05-03 12:40:09.000000000 +0200 @@ -1,5 +1,5 @@ [bumpversion] -current_version = 9.23.25 +current_version = 9.23.28 commit = True tag = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/PKG-INFO new/kiwi-9.23.28/PKG-INFO --- old/kiwi-9.23.25/PKG-INFO 2021-04-14 20:55:35.000000000 +0200 +++ new/kiwi-9.23.28/PKG-INFO 2021-05-06 14:11:07.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: kiwi -Version: 9.23.25 +Version: 9.23.28 Summary: KIWI - Appliance Builder (next generation) Home-page: https://osinside.github.io/kiwi Author: Marcus Schaefer Binary files old/kiwi-9.23.25/doc/build/latex/kiwi.pdf and new/kiwi-9.23.28/doc/build/latex/kiwi.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/doc/build/man/kiwi.8 new/kiwi-9.23.28/doc/build/man/kiwi.8 --- old/kiwi-9.23.25/doc/build/man/kiwi.8 2021-04-14 20:55:34.000000000 +0200 +++ new/kiwi-9.23.28/doc/build/man/kiwi.8 2021-05-06 14:11:06.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI" "8" "Apr 14, 2021" "9.23.25" "KIWI NG" +.TH "KIWI" "8" "May 06, 2021" "9.23.28" "KIWI NG" .SH NAME kiwi \- Creating Operating System Images . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/doc/build/man/kiwi::image::info.8 new/kiwi-9.23.28/doc/build/man/kiwi::image::info.8 --- old/kiwi-9.23.25/doc/build/man/kiwi::image::info.8 2021-04-14 20:55:34.000000000 +0200 +++ new/kiwi-9.23.28/doc/build/man/kiwi::image::info.8 2021-05-06 14:11:06.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::IMAGE::INFO" "8" "Apr 14, 2021" "9.23.25" "KIWI NG" +.TH "KIWI::IMAGE::INFO" "8" "May 06, 2021" "9.23.28" "KIWI NG" .SH NAME kiwi::image::info \- Provide detailed information about an image description . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/doc/build/man/kiwi::image::resize.8 new/kiwi-9.23.28/doc/build/man/kiwi::image::resize.8 --- old/kiwi-9.23.25/doc/build/man/kiwi::image::resize.8 2021-04-14 20:55:34.000000000 +0200 +++ new/kiwi-9.23.28/doc/build/man/kiwi::image::resize.8 2021-05-06 14:11:06.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::IMAGE::RESIZE" "8" "Apr 14, 2021" "9.23.25" "KIWI NG" +.TH "KIWI::IMAGE::RESIZE" "8" "May 06, 2021" "9.23.28" "KIWI NG" .SH NAME kiwi::image::resize \- Resize disk images to new geometry . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/doc/build/man/kiwi::result::bundle.8 new/kiwi-9.23.28/doc/build/man/kiwi::result::bundle.8 --- old/kiwi-9.23.25/doc/build/man/kiwi::result::bundle.8 2021-04-14 20:55:34.000000000 +0200 +++ new/kiwi-9.23.28/doc/build/man/kiwi::result::bundle.8 2021-05-06 14:11:06.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::RESULT::BUNDLE" "8" "Apr 14, 2021" "9.23.25" "KIWI NG" +.TH "KIWI::RESULT::BUNDLE" "8" "May 06, 2021" "9.23.28" "KIWI NG" .SH NAME kiwi::result::bundle \- Bundle build results . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/doc/build/man/kiwi::result::list.8 new/kiwi-9.23.28/doc/build/man/kiwi::result::list.8 --- old/kiwi-9.23.25/doc/build/man/kiwi::result::list.8 2021-04-14 20:55:34.000000000 +0200 +++ new/kiwi-9.23.28/doc/build/man/kiwi::result::list.8 2021-05-06 14:11:06.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::RESULT::LIST" "8" "Apr 14, 2021" "9.23.25" "KIWI NG" +.TH "KIWI::RESULT::LIST" "8" "May 06, 2021" "9.23.28" "KIWI NG" .SH NAME kiwi::result::list \- List build results . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/doc/build/man/kiwi::system::build.8 new/kiwi-9.23.28/doc/build/man/kiwi::system::build.8 --- old/kiwi-9.23.25/doc/build/man/kiwi::system::build.8 2021-04-14 20:55:34.000000000 +0200 +++ new/kiwi-9.23.28/doc/build/man/kiwi::system::build.8 2021-05-06 14:11:06.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::SYSTEM::BUILD" "8" "Apr 14, 2021" "9.23.25" "KIWI NG" +.TH "KIWI::SYSTEM::BUILD" "8" "May 06, 2021" "9.23.28" "KIWI NG" .SH NAME kiwi::system::build \- Build image in combined prepare and create step . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/doc/build/man/kiwi::system::create.8 new/kiwi-9.23.28/doc/build/man/kiwi::system::create.8 --- old/kiwi-9.23.25/doc/build/man/kiwi::system::create.8 2021-04-14 20:55:34.000000000 +0200 +++ new/kiwi-9.23.28/doc/build/man/kiwi::system::create.8 2021-05-06 14:11:06.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::SYSTEM::CREATE" "8" "Apr 14, 2021" "9.23.25" "KIWI NG" +.TH "KIWI::SYSTEM::CREATE" "8" "May 06, 2021" "9.23.28" "KIWI NG" .SH NAME kiwi::system::create \- Create image from prepared root system . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/doc/build/man/kiwi::system::prepare.8 new/kiwi-9.23.28/doc/build/man/kiwi::system::prepare.8 --- old/kiwi-9.23.25/doc/build/man/kiwi::system::prepare.8 2021-04-14 20:55:34.000000000 +0200 +++ new/kiwi-9.23.28/doc/build/man/kiwi::system::prepare.8 2021-05-06 14:11:06.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::SYSTEM::PREPARE" "8" "Apr 14, 2021" "9.23.25" "KIWI NG" +.TH "KIWI::SYSTEM::PREPARE" "8" "May 06, 2021" "9.23.28" "KIWI NG" .SH NAME kiwi::system::prepare \- Prepare image root system . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/doc/build/man/kiwi::system::update.8 new/kiwi-9.23.28/doc/build/man/kiwi::system::update.8 --- old/kiwi-9.23.25/doc/build/man/kiwi::system::update.8 2021-04-14 20:55:34.000000000 +0200 +++ new/kiwi-9.23.28/doc/build/man/kiwi::system::update.8 2021-05-06 14:11:06.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::SYSTEM::UPDATE" "8" "Apr 14, 2021" "9.23.25" "KIWI NG" +.TH "KIWI::SYSTEM::UPDATE" "8" "May 06, 2021" "9.23.28" "KIWI NG" .SH NAME kiwi::system::update \- Update/Upgrade image root system . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/bootloader/config/grub2.py new/kiwi-9.23.28/kiwi/bootloader/config/grub2.py --- old/kiwi-9.23.25/kiwi/bootloader/config/grub2.py 2021-04-04 19:04:28.000000000 +0200 +++ new/kiwi-9.23.28/kiwi/bootloader/config/grub2.py 2021-05-03 12:38:26.000000000 +0200 @@ -486,6 +486,24 @@ root_path ) if not efi_boot_path: + # not all distributors installs a vendor directory but + # have them in their encoded early boot script. Thus + # the following code tries to look up the vendor string + # from the signed grub binary + grub_image = Defaults.get_signed_grub_loader(self.root_dir) + if grub_image and grub_image.filename: + bash_command = [ + 'strings', grub_image.filename, '|', 'grep', 'EFI\/' + ] + efi_boot_path = Command.run( + ['bash', '-c', ' '.join(bash_command)], + raise_on_error=False + ).output + if efi_boot_path: + efi_boot_path = os.path.normpath( + os.sep.join([root_path, efi_boot_path.strip()]) + ) + if not efi_boot_path: efi_boot_path = os.path.normpath( os.sep.join([root_path, 'EFI/BOOT']) ) @@ -727,13 +745,16 @@ ['cp', shim_image, self._get_efi_image_name()] ) Command.run( - ['cp', grub_image, self.efi_boot_path] + [ + 'cp', grub_image.filename, + os.sep.join([self.efi_boot_path, grub_image.binaryname]) + ] ) else: # Without shim a self signed grub image is used that # gets loaded by the firmware Command.run( - ['cp', grub_image, self._get_efi_image_name()] + ['cp', grub_image.filename, self._get_efi_image_name()] ) self._create_efi_config_search(uuid, mbrid) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/builder/archive.py new/kiwi-9.23.28/kiwi/builder/archive.py --- old/kiwi-9.23.25/kiwi/builder/archive.py 2021-04-11 20:38:18.000000000 +0200 +++ new/kiwi-9.23.28/kiwi/builder/archive.py 2021-04-16 10:24:05.000000000 +0200 @@ -88,7 +88,9 @@ ) archive.create_xz_compressed( self.root_dir, xz_options=self.xz_options, - exclude=Defaults.get_exclude_list_for_root_data_sync() + exclude=Defaults. + get_exclude_list_for_root_data_sync() + Defaults. + get_exclude_list_from_custom_exclude_files(self.root_dir) ) Result.verify_image_size( self.runtime_config.get_max_size_constraint(), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/builder/disk.py new/kiwi-9.23.28/kiwi/builder/disk.py --- old/kiwi-9.23.25/kiwi/builder/disk.py 2021-04-11 20:38:18.000000000 +0200 +++ new/kiwi-9.23.28/kiwi/builder/disk.py 2021-04-16 10:24:05.000000000 +0200 @@ -622,7 +622,9 @@ ) def _get_exclude_list_for_root_data_sync(self, device_map: Dict) -> list: - exclude_list = Defaults.get_exclude_list_for_root_data_sync() + exclude_list = Defaults.\ + get_exclude_list_for_root_data_sync() + Defaults.\ + get_exclude_list_from_custom_exclude_files(self.root_dir) if 'spare' in device_map and self.spare_part_mountpoint: exclude_list.append( '{0}/*'.format(self.spare_part_mountpoint.lstrip(os.sep)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/builder/filesystem.py new/kiwi-9.23.28/kiwi/builder/filesystem.py --- old/kiwi-9.23.25/kiwi/builder/filesystem.py 2021-04-11 20:38:18.000000000 +0200 +++ new/kiwi-9.23.28/kiwi/builder/filesystem.py 2021-04-16 10:24:05.000000000 +0200 @@ -181,7 +181,9 @@ f'--> Syncing data to filesystem on {loop_provider.get_device()}' ) filesystem.sync_data( - Defaults.get_exclude_list_for_root_data_sync() + Defaults. + get_exclude_list_for_root_data_sync() + Defaults. + get_exclude_list_from_custom_exclude_files(self.root_dir) ) def _operate_on_file(self) -> None: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/builder/live.py new/kiwi-9.23.28/kiwi/builder/live.py --- old/kiwi-9.23.25/kiwi/builder/live.py 2021-04-11 20:38:18.000000000 +0200 +++ new/kiwi-9.23.28/kiwi/builder/live.py 2021-04-16 10:24:05.000000000 +0200 @@ -243,7 +243,9 @@ '--> Syncing data to {0} root image'.format(root_filesystem) ) live_filesystem.sync_data( - Defaults.get_exclude_list_for_root_data_sync() + Defaults. + get_exclude_list_for_root_data_sync() + Defaults. + get_exclude_list_from_custom_exclude_files(self.root_dir) ) live_filesystem.umount() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/container/appx.py new/kiwi-9.23.28/kiwi/container/appx.py --- old/kiwi-9.23.25/kiwi/container/appx.py 2021-02-07 20:24:40.000000000 +0100 +++ new/kiwi-9.23.28/kiwi/container/appx.py 2021-05-03 12:38:26.000000000 +0200 @@ -75,7 +75,9 @@ :param string filename: archive file name :param string base_image: not-supported """ - exclude_list = Defaults.get_exclude_list_for_root_data_sync() + exclude_list = Defaults.\ + get_exclude_list_for_root_data_sync() + Defaults.\ + get_exclude_list_from_custom_exclude_files(self.root_dir) exclude_list.append('boot') exclude_list.append('dev') exclude_list.append('sys') @@ -103,12 +105,13 @@ for entry in sorted(dirs + files): if entry in files: mapfile = os.sep.join([topdir, entry]) + mapfile_relative = os.path.relpath(mapfile, start=self.meta_data_path) log.info( - 'Adding {0} to Appx filemap'.format(mapfile) + 'Adding {0} to Appx filemap as relative path {1}'.format(mapfile, mapfile_relative) ) filemap.write( '"{0}" "{1}"{2}'.format( - mapfile, os.path.basename(mapfile), os.linesep + mapfile, mapfile_relative, os.linesep ) ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/container/oci.py new/kiwi-9.23.28/kiwi/container/oci.py --- old/kiwi-9.23.25/kiwi/container/oci.py 2021-02-07 20:24:40.000000000 +0100 +++ new/kiwi-9.23.28/kiwi/container/oci.py 2021-04-19 08:48:31.000000000 +0200 @@ -95,11 +95,6 @@ self.oci_config['container_tag'] = \ Defaults.get_default_container_tag() - if 'entry_command' not in self.oci_config and \ - 'entry_subcommand' not in self.oci_config: - self.oci_config['entry_subcommand'] = \ - Defaults.get_default_container_subcommand() - if 'history' not in self.oci_config: self.oci_config['history'] = {} if 'created_by' not in self.oci_config['history']: @@ -113,7 +108,9 @@ :param string filename: archive file name :param string base_image: archive used as a base image """ - exclude_list = Defaults.get_exclude_list_for_root_data_sync() + exclude_list = Defaults.\ + get_exclude_list_for_root_data_sync() + Defaults.\ + get_exclude_list_from_custom_exclude_files(self.root_dir) exclude_list.append('dev/*') exclude_list.append('sys/*') exclude_list.append('proc/*') @@ -126,6 +123,11 @@ ) ) else: + # Apply default subcommand only for base images + if 'entry_command' not in self.oci_config and \ + 'entry_subcommand' not in self.oci_config: + self.oci_config['entry_subcommand'] = \ + Defaults.get_default_container_subcommand() oci.init_container() image_ref = '{0}:{1}'.format( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/container/setup/appx.py new/kiwi-9.23.28/kiwi/container/setup/appx.py --- old/kiwi-9.23.25/kiwi/container/setup/appx.py 2021-02-07 20:24:40.000000000 +0100 +++ new/kiwi-9.23.28/kiwi/container/setup/appx.py 2021-04-20 10:53:38.000000000 +0200 @@ -96,40 +96,15 @@ identity.set('Version', history.get('package_version')) if history.get('created_by'): identity.set('Publisher', history.get('created_by')) - if history.get('author'): - identity.set('Name', history.get('author')) def _update_desktop_visual(self): history = self.custom_args.get('history') or {} - displaynames = self._get_xpath( - '//wsl:Properties/wsl:DisplayName' - ) - published_displaynames = self._get_xpath( - '//wsl:Properties/wsl:PublisherDisplayName' - ) visuals = self._get_xpath( '//wsl:Applications/wsl:Application/uap:VisualElements' ) - titles = self._get_xpath( - '//wsl:Applications/wsl:Application/' - 'uap:VisualElements/uap:DefaultTile' - ) - if self.custom_args.get('container_name'): - for displayname in displaynames: - displayname.text = \ - self.custom_args.get('container_name') - for published_displayname in published_displaynames: - published_displayname.text = \ - self.custom_args.get('container_name') for visual in visuals: - if self.custom_args.get('container_name'): - visual.set( - 'DisplayName', self.custom_args.get('container_name') - ) if history.get('comment'): visual.set('Description', history.get('comment')) - for titel in titles: - titel.set('ShortName', self.custom_args.get('container_name')) def _update_application_metadata(self): history = self.custom_args.get('history') or {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/defaults.py new/kiwi-9.23.28/kiwi/defaults.py --- old/kiwi-9.23.25/kiwi/defaults.py 2021-04-14 20:51:36.000000000 +0200 +++ new/kiwi-9.23.28/kiwi/defaults.py 2021-05-03 12:38:26.000000000 +0200 @@ -15,11 +15,16 @@ # You should have received a copy of the GNU General Public License # along with kiwi. If not, see <http://www.gnu.org/licenses/> # +import logging import os import glob from collections import namedtuple import platform +import yaml from pkg_resources import resource_filename +from typing import ( + List, NamedTuple, Optional +) # project from kiwi.path import Path @@ -43,6 +48,15 @@ CUSTOM_RUNTIME_CONFIG_FILE = None PLATFORM_MACHINE = platform.machine() +log = logging.getLogger('kiwi') + +grub_loader_type = NamedTuple( + 'grub_loader_type', [ + ('filename', str), + ('binaryname', str) + ] +) + class Defaults: """ @@ -287,6 +301,37 @@ return exclude_list @staticmethod + def get_exclude_list_from_custom_exclude_files(root_dir: str) -> List: + """ + Provides the list of folders that are excluded by the + optional metadata file image/exclude_files.yaml + + :return: list of file and directory names + + :param string root_dir: image root directory + + :rtype: list + """ + exclude_file = os.sep.join( + [root_dir, 'image', 'exclude_files.yaml'] + ) + exclude_list = [] + if os.path.isfile(exclude_file): + with open(exclude_file) as exclude: + exclude_dict = yaml.safe_load(exclude) + exclude_data = exclude_dict.get('exclude') + if exclude_data and isinstance(exclude_data, list): + for exclude_file in exclude_data: + exclude_list.append( + exclude_file.lstrip(os.sep) + ) + else: + log.warning( + f'invalid yaml structure in {exclude_file}, ignored' + ) + return exclude_list + + @staticmethod def get_exclude_list_for_non_physical_devices(): """ Provides the list of folders that are not associated @@ -654,7 +699,8 @@ shim_file_patterns = [ '/usr/share/efi/*/shim.efi', '/usr/lib64/efi/shim.efi', - '/boot/efi/EFI/*/shim.efi' + '/boot/efi/EFI/*/shim.efi', + '/usr/lib/shim/shim*.efi' ] for shim_file_pattern in shim_file_patterns: for shim_file in glob.iglob(root_path + shim_file_pattern): @@ -784,28 +830,50 @@ return 'eltorito.img' @staticmethod - def get_signed_grub_loader(root_path): + def get_signed_grub_loader(root_path: str) -> Optional[grub_loader_type]: """ Provides shim signed grub loader file path Searches distribution specific locations to find grub.efi below the given root path - :param string root_path: image root path + :param str root_path: image root path - :return: file path or None + :return: grub_loader_type | None - :rtype: str + :rtype: NamedTuple """ + grub_pattern_type = namedtuple( + 'grub_pattern_type', ['pattern', 'binaryname'] + ) signed_grub_file_patterns = [ - '/usr/share/efi/*/grub.efi', - '/usr/lib64/efi/grub.efi', - '/boot/efi/EFI/*/grub*.efi', - '/usr/share/grub*/*-efi/grub.efi' - ] - for signed_grub_pattern in signed_grub_file_patterns: - for signed_grub in glob.iglob(root_path + signed_grub_pattern): - return signed_grub + grub_pattern_type( + '/usr/share/efi/*/grub.efi', None + ), + grub_pattern_type( + '/usr/lib64/efi/grub.efi', None + ), + grub_pattern_type( + '/boot/efi/EFI/*/grub*.efi', None + ), + grub_pattern_type( + '/usr/share/grub*/*-efi/grub.efi', None + ), + grub_pattern_type( + '/usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed', + 'grubx64.efi' + ) + ] + for signed_grub in signed_grub_file_patterns: + for signed_grub_file in glob.iglob(root_path + signed_grub.pattern): + if not signed_grub.binaryname: + binaryname = os.path.basename(signed_grub_file) + else: + binaryname = signed_grub.binaryname + return grub_loader_type( + signed_grub_file, binaryname + ) + return None @staticmethod def get_efi_vendor_directory(efi_path): @@ -824,7 +892,9 @@ 'EFI/fedora', 'EFI/redhat', 'EFI/centos', - 'EFI/opensuse' + 'EFI/opensuse', + 'EFI/ubuntu', + 'EFI/debian' ] for efi_vendor_directory in efi_vendor_directories: efi_vendor_directory = os.sep.join([efi_path, efi_vendor_directory]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/package_manager/zypper.py new/kiwi-9.23.28/kiwi/package_manager/zypper.py --- old/kiwi-9.23.25/kiwi/package_manager/zypper.py 2021-04-11 20:38:18.000000000 +0200 +++ new/kiwi-9.23.28/kiwi/package_manager/zypper.py 2021-04-19 16:51:59.000000000 +0200 @@ -113,7 +113,8 @@ """ command = ['zypper'] + self.zypper_args + [ '--root', self.root_dir, - 'install', '--auto-agree-with-licenses' + 'install', '--download', 'in-advance', + '--auto-agree-with-licenses' ] + self.custom_args + ['--'] + self._install_items() return Command.call( command, self.command_env @@ -144,7 +145,8 @@ ) return Command.call( ['chroot', self.root_dir, 'zypper'] + self.chroot_zypper_args + [ - 'install', '--auto-agree-with-licenses' + 'install', '--download', 'in-advance', + '--auto-agree-with-licenses' ] + self.custom_args + ['--'] + self._install_items(), self.chroot_command_env ) @@ -201,7 +203,8 @@ """ return Command.call( ['chroot', self.root_dir, 'zypper'] + self.chroot_zypper_args + [ - 'update', '--auto-agree-with-licenses' + 'update', '--download', 'in-advance', + '--auto-agree-with-licenses' ] + self.custom_args, self.chroot_command_env ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/schema/xsi.xsd new/kiwi-9.23.28/kiwi/schema/xsi.xsd --- old/kiwi-9.23.25/kiwi/schema/xsi.xsd 1970-01-01 01:00:00.000000000 +0100 +++ new/kiwi-9.23.28/kiwi/schema/xsi.xsd 2021-03-29 16:51:51.000000000 +0200 @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <xs:import schemaLocation="kiwi_for_generateDS.xsd"/> + <xs:attribute name="noNamespaceSchemaLocation" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>The location of the XSD Schema (not relevant for RELAX NG or DTD)</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="schemaLocation" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>A pair of URI references: First is a namespace name, +second the location of the XSD Schema +(not relevant for RELAX NG or DTD)</xs:documentation> + </xs:annotation> + </xs:attribute> +</xs:schema> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi/version.py new/kiwi-9.23.28/kiwi/version.py --- old/kiwi-9.23.25/kiwi/version.py 2021-04-14 20:52:04.000000000 +0200 +++ new/kiwi-9.23.28/kiwi/version.py 2021-05-03 12:40:09.000000000 +0200 @@ -18,5 +18,5 @@ """ Global version information used in kiwi and the package """ -__version__ = '9.23.25' -__githash__ = '835134f3d8143d03bbb872287215dcdc0fbebc9e' +__version__ = '9.23.28' +__githash__ = 'dfac4e7ec3207b57ff0911e93952148b63c97e9f' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi.egg-info/PKG-INFO new/kiwi-9.23.28/kiwi.egg-info/PKG-INFO --- old/kiwi-9.23.25/kiwi.egg-info/PKG-INFO 2021-04-14 20:55:34.000000000 +0200 +++ new/kiwi-9.23.28/kiwi.egg-info/PKG-INFO 2021-05-06 14:11:06.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: kiwi -Version: 9.23.25 +Version: 9.23.28 Summary: KIWI - Appliance Builder (next generation) Home-page: https://osinside.github.io/kiwi Author: Marcus Schaefer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/kiwi.egg-info/SOURCES.txt new/kiwi-9.23.28/kiwi.egg-info/SOURCES.txt --- old/kiwi-9.23.25/kiwi.egg-info/SOURCES.txt 2021-04-14 20:55:34.000000000 +0200 +++ new/kiwi-9.23.28/kiwi.egg-info/SOURCES.txt 2021-05-06 14:11:07.000000000 +0200 @@ -174,6 +174,7 @@ kiwi/repository/template/apt.py kiwi/schema/kiwi.rnc kiwi/schema/kiwi.rng +kiwi/schema/xsi.xsd kiwi/solver/__init__.py kiwi/solver/sat.py kiwi/solver/repository/__init__.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/package/python-kiwi-spec-template new/kiwi-9.23.28/package/python-kiwi-spec-template --- old/kiwi-9.23.25/package/python-kiwi-spec-template 2021-04-14 20:51:36.000000000 +0200 +++ new/kiwi-9.23.28/package/python-kiwi-spec-template 2021-04-19 16:52:03.000000000 +0200 @@ -83,15 +83,19 @@ %if "%{_vendor}" != "debbuild" Provides: kiwi-image:tbz %endif -# tools used by kiwi +# tools conditionally used by kiwi %if 0%{?fedora} || 0%{?rhel} >= 8 Recommends: gnupg2 +Recommends: debootstrap +Recommends: dpkg %endif %if 0%{?suse_version} -# If it's available, let's pull it in -Recommends: dnf Recommends: gpg2 +Recommends: dnf +Recommends: debootstrap +Recommends: dpkg %endif +# package managers required by distro %if 0%{?fedora} || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1550 Provides: kiwi-packagemanager:microdnf Requires: microdnf @@ -107,8 +111,10 @@ %endif %if 0%{?debian} || 0%{?ubuntu} Requires: debootstrap +Requires: dpkg Requires: gnupg %endif +# tools required by kiwi Requires: kiwi-tools Requires: mtools Requires: rsync diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/test/unit/bootloader/config/grub2_test.py new/kiwi-9.23.28/test/unit/bootloader/config/grub2_test.py --- old/kiwi-9.23.25/test/unit/bootloader/config/grub2_test.py 2021-04-14 20:51:36.000000000 +0200 +++ new/kiwi-9.23.28/test/unit/bootloader/config/grub2_test.py 2021-05-03 12:38:26.000000000 +0200 @@ -12,6 +12,7 @@ import kiwi from kiwi.defaults import Defaults +from kiwi.defaults import grub_loader_type from kiwi.xml_state import XMLState from kiwi.xml_description import XMLDescription from kiwi.bootloader.config.grub2 import BootLoaderConfigGrub2 @@ -316,11 +317,16 @@ @patch('glob.iglob') @patch('shutil.copy') @patch('kiwi.bootloader.config.grub2.Path.create') + @patch('kiwi.bootloader.config.grub2.Command.run') + @patch('kiwi.bootloader.config.grub2.Defaults.get_signed_grub_loader') def test_copy_grub_config_to_efi_path( - self, mock_Path_create, mock_shutil_copy, mock_glob + self, mock_get_signed_grub_loader, mock_Command, + mock_Path_create, mock_shutil_copy, mock_glob ): + mock_get_signed_grub_loader.return_value = None mock_glob.return_value = [] + # 1. run: check default handling self.bootloader._copy_grub_config_to_efi_path( 'root_dir', 'config_file' ) @@ -331,10 +337,32 @@ mock_shutil_copy.assert_called_once_with( 'config_file', 'root_dir/EFI/BOOT/grub.cfg' ) + + # 2. run: check with vendor directory read from grub binary mock_shutil_copy.reset_mock() mock_Path_create.reset_mock() - mock_glob.return_value = ['root_dir/EFI/fedora/shim.efi'] + strings_out = Mock() + strings_out.output = '/EFI/ubuntu' + mock_get_signed_grub_loader.return_value = grub_loader_type( + 'some-loader', None + ) + mock_Command.return_value = strings_out + self.bootloader._copy_grub_config_to_efi_path( + 'root_dir', 'config_file' + ) + mock_Path_create.assert_called_once_with( + 'root_dir/EFI/ubuntu' + ) + mock_shutil_copy.assert_called_once_with( + 'config_file', 'root_dir/EFI/ubuntu/grub.cfg' + ) + + # 3. run: check with installed vendor directory + mock_shutil_copy.reset_mock() + mock_Path_create.reset_mock() + mock_get_signed_grub_loader.return_value = None + mock_glob.return_value = ['root_dir/EFI/fedora/shim.efi'] self.bootloader._copy_grub_config_to_efi_path( 'root_dir', 'config_file' ) @@ -1327,7 +1355,7 @@ call( [ 'cp', 'root_dir/usr/lib64/efi/grub.efi', - 'root_dir/boot/efi/EFI/BOOT' + 'root_dir/boot/efi/EFI/BOOT/grub.efi' ] ) ] @@ -1691,7 +1719,7 @@ call( [ 'cp', 'root_dir/usr/lib64/efi/grub.efi', - 'root_dir/EFI/BOOT' + 'root_dir/EFI/BOOT/grub.efi' ] ) ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/test/unit/container/appx_test.py new/kiwi-9.23.28/test/unit/container/appx_test.py --- old/kiwi-9.23.25/test/unit/container/appx_test.py 2021-02-07 20:24:40.000000000 +0100 +++ new/kiwi-9.23.28/test/unit/container/appx_test.py 2021-05-03 12:38:26.000000000 +0200 @@ -36,11 +36,13 @@ @patch('kiwi.container.appx.ArchiveTar') @patch('kiwi.container.appx.Compress') @patch('kiwi.container.appx.Defaults.get_exclude_list_for_root_data_sync') + @patch('kiwi.container.appx.Defaults.get_exclude_list_from_custom_exclude_files') @patch('kiwi.container.appx.NamedTemporaryFile') @patch('kiwi.container.appx.Command.run') @patch('os.walk') def test_create( self, mock_os_walk, mock_Command_run, mock_NamedTemporaryFile, + mock_get_exclude_list_from_custom_exclude_files, mock_get_exclude_list_for_root_data_sync, mock_Compress, mock_ArchiveTar ): @@ -62,12 +64,14 @@ self.appx.create('target_dir/image.appx') assert file_handle.write.call_args_list == [ call('[Files]\n'), - call('"source/baz/baz_file" "baz_file"\n') + call('"source/baz/baz_file" "../../source/baz/baz_file"\n') ] mock_ArchiveTar.assert_called_once_with('meta/data/install.tar') archive.create.assert_called_once_with( 'root_dir', - exclude=mock_get_exclude_list_for_root_data_sync.return_value + exclude=mock_get_exclude_list_for_root_data_sync. + return_value + mock_get_exclude_list_from_custom_exclude_files. + return_value ) mock_Compress.assert_called_once_with( archive.create.return_value diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/test/unit/container/oci_test.py new/kiwi-9.23.28/test/unit/container/oci_test.py --- old/kiwi-9.23.25/test/unit/container/oci_test.py 2021-03-21 17:50:42.000000000 +0100 +++ new/kiwi-9.23.28/test/unit/container/oci_test.py 2021-04-19 08:48:31.000000000 +0200 @@ -63,7 +63,6 @@ assert container.oci_config == { 'container_name': 'kiwi-container', 'container_tag': 'latest', - 'entry_subcommand': ['/bin/bash'], 'history': {'created_by': 'KIWI {0}'.format(__version__)} } @@ -188,14 +187,12 @@ 'container_name': 'foo/bar', 'additional_tags': ['current', 'foobar'], 'container_tag': 'latest', - 'entry_subcommand': ['/bin/bash'], 'history': {'created_by': 'KIWI {0}'.format(__version__)} }) mock_oci.set_config.assert_called_once_with({ 'container_name': 'foo/bar', 'additional_tags': ['current', 'foobar'], 'container_tag': 'latest', - 'entry_subcommand': ['/bin/bash'], 'history': {'created_by': 'KIWI {0}'.format(__version__)} }) mock_oci.post_process.assert_called_once_with() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/test/unit/defaults_test.py new/kiwi-9.23.28/test/unit/defaults_test.py --- old/kiwi-9.23.25/test/unit/defaults_test.py 2021-04-14 20:51:36.000000000 +0200 +++ new/kiwi-9.23.28/test/unit/defaults_test.py 2021-05-03 12:38:26.000000000 +0200 @@ -1,15 +1,21 @@ +import logging from mock import patch import sys - -import mock +from mock import MagicMock +from pytest import fixture from .test_helper import argv_kiwi_tests from kiwi.defaults import Defaults +from kiwi.defaults import grub_loader_type class TestDefaults: + @fixture(autouse=True) + def inject_fixtures(self, caplog): + self._caplog = caplog + def setup(self): self.defaults = Defaults() @@ -26,7 +32,7 @@ assert self.defaults.get('kiwi_revision') def test_to_profile(self): - profile = mock.MagicMock() + profile = MagicMock() self.defaults.to_profile(profile) profile.add.assert_any_call('kiwi_align', 1048576) profile.add.assert_any_call('kiwi_startsector', 2048) @@ -86,3 +92,58 @@ mock_path_exists.return_value = True assert Defaults.get_vendor_grubenv('boot/efi') == \ 'boot/efi/EFI/fedora/grubenv' + + def test_get_exclude_list_from_custom_exclude_files(self): + assert Defaults.get_exclude_list_from_custom_exclude_files( + '../data/root-dir' + ) == [ + 'usr/bin/qemu-binfmt', + 'usr/bin/qemu-x86_64-binfmt', + 'usr/bin/qemu-x86_64' + ] + + @patch('yaml.safe_load') + def test_get_exclude_list_from_custom_exclude_files_is_invalid( + self, mock_yaml_safe_load + ): + mock_yaml_safe_load.return_value = {'invalid': 'artificial'} + with self._caplog.at_level(logging.WARNING): + assert Defaults.get_exclude_list_from_custom_exclude_files( + '../data/root-dir' + ) == [] + + @patch('glob.iglob') + def test_get_signed_grub_loader(self, mock_iglob): + def iglob_no_matches(pattern): + return [] + + def iglob_simple_match(pattern): + if '/boot/efi/EFI/*/grub*.efi' in pattern: + return ['root_path/boot/efi/EFI/BOOT/grub.efi'] + else: + return [] + + def iglob_custom_binary_match(pattern): + if '/usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed' in pattern: + return [ + 'root_path' + '/usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed' + ] + else: + return [] + + mock_iglob.side_effect = iglob_no_matches + assert Defaults.get_signed_grub_loader('root_path') is None + + mock_iglob.side_effect = iglob_simple_match + assert Defaults.get_signed_grub_loader('root_path') == grub_loader_type( + filename='root_path/boot/efi/EFI/BOOT/grub.efi', + binaryname='grub.efi' + ) + + mock_iglob.side_effect = iglob_custom_binary_match + assert Defaults.get_signed_grub_loader('root_path') == grub_loader_type( + filename='root_path' + '/usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed', + binaryname='grubx64.efi' + ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/test/unit/package_manager/zypper_test.py new/kiwi-9.23.28/test/unit/package_manager/zypper_test.py --- old/kiwi-9.23.25/test/unit/package_manager/zypper_test.py 2021-02-07 20:24:40.000000000 +0100 +++ new/kiwi-9.23.28/test/unit/package_manager/zypper_test.py 2021-04-19 16:51:59.000000000 +0200 @@ -56,7 +56,8 @@ [ 'zypper', '--reposd-dir', 'root-dir/my/repos', '--root', 'root-dir', - 'install', '--auto-agree-with-licenses' + 'install', '--download', 'in-advance', + '--auto-agree-with-licenses' ] + self.manager.custom_args + ['--', 'vim'], self.command_env ) @@ -79,7 +80,8 @@ ) mock_call.assert_called_once_with( ['chroot', 'root-dir', 'zypper'] + self.chroot_zypper_args + [ - 'install', '--auto-agree-with-licenses' + 'install', '--download', 'in-advance', + '--auto-agree-with-licenses' ] + self.manager.custom_args + ['--', 'vim'], self.chroot_command_env ) @@ -122,7 +124,8 @@ self.manager.update() mock_call.assert_called_once_with( ['chroot', 'root-dir', 'zypper'] + self.chroot_zypper_args + [ - 'update', '--auto-agree-with-licenses' + 'update', '--download', 'in-advance', + '--auto-agree-with-licenses' ] + self.manager.custom_args, self.chroot_command_env ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/test/unit/storage/subformat/vagrant_base_test.py new/kiwi-9.23.28/test/unit/storage/subformat/vagrant_base_test.py --- old/kiwi-9.23.25/test/unit/storage/subformat/vagrant_base_test.py 2021-04-11 20:38:18.000000000 +0200 +++ new/kiwi-9.23.28/test/unit/storage/subformat/vagrant_base_test.py 2021-04-15 11:06:15.000000000 +0200 @@ -9,6 +9,7 @@ import kiwi +from kiwi.defaults import Defaults from kiwi.exceptions import KiwiFormatSetupError from kiwi.storage.subformat.vagrant_base import DiskFormatVagrantBase @@ -17,6 +18,7 @@ class TestDiskFormatVagrantBase: def setup(self): + Defaults.set_platform_name('x86_64') xml_data = Mock() xml_data.get_name = Mock( return_value='some-disk-image' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/test/unit/storage/subformat/vagrant_libvirt_test.py new/kiwi-9.23.28/test/unit/storage/subformat/vagrant_libvirt_test.py --- old/kiwi-9.23.25/test/unit/storage/subformat/vagrant_libvirt_test.py 2021-02-09 20:38:59.000000000 +0100 +++ new/kiwi-9.23.28/test/unit/storage/subformat/vagrant_libvirt_test.py 2021-04-15 11:06:15.000000000 +0200 @@ -5,11 +5,13 @@ import kiwi +from kiwi.defaults import Defaults from kiwi.storage.subformat.vagrant_libvirt import DiskFormatVagrantLibVirt class TestDiskFormatVagrantLibVirt: def setup(self): + Defaults.set_platform_name('x86_64') xml_data = Mock() xml_data.get_name = Mock( return_value='some-disk-image' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/test/unit/storage/subformat/vagrant_virtualbox_test.py new/kiwi-9.23.28/test/unit/storage/subformat/vagrant_virtualbox_test.py --- old/kiwi-9.23.25/test/unit/storage/subformat/vagrant_virtualbox_test.py 2021-02-09 20:38:59.000000000 +0100 +++ new/kiwi-9.23.28/test/unit/storage/subformat/vagrant_virtualbox_test.py 2021-04-15 11:06:15.000000000 +0200 @@ -13,6 +13,7 @@ class TestDiskFormatVagrantVirtualBox: def setup(self): + Defaults.set_platform_name('x86_64') with open("../data/vagrant_virtualbox.ovf", "r") as ovf_file: self.Leap_15_ovf = ovf_file.read(-1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/test/unit/system/prepare_test.py new/kiwi-9.23.28/test/unit/system/prepare_test.py --- old/kiwi-9.23.25/test/unit/system/prepare_test.py 2021-02-07 20:24:40.000000000 +0100 +++ new/kiwi-9.23.28/test/unit/system/prepare_test.py 2021-05-03 12:38:26.000000000 +0200 @@ -16,6 +16,7 @@ KiwiPackagesDeletePhaseFailed ) +from kiwi.defaults import Defaults from kiwi.system.prepare import SystemPrepare from kiwi.xml_description import XMLDescription from kiwi.xml_state import XMLState @@ -30,6 +31,7 @@ @patch('kiwi.system.prepare.RootBind') @patch('kiwi.logger.Logger.get_logfile') def setup(self, mock_get_logfile, mock_root_bind, mock_root_init): + Defaults.set_platform_name('x86_64') mock_get_logfile.return_value = None description = XMLDescription( description='../data/example_config.xml', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.23.25/test/unit/tasks/base_test.py new/kiwi-9.23.28/test/unit/tasks/base_test.py --- old/kiwi-9.23.25/test/unit/tasks/base_test.py 2021-02-07 20:24:40.000000000 +0100 +++ new/kiwi-9.23.28/test/unit/tasks/base_test.py 2021-05-03 12:38:26.000000000 +0200 @@ -10,6 +10,7 @@ import kiwi.xml_parse from kiwi.tasks.base import CliTask +from kiwi.defaults import Defaults from kiwi.exceptions import KiwiConfigFileNotFound @@ -31,6 +32,7 @@ mock_load_command, mock_help_check, mock_color, mock_setlog, mock_setlevel ): + Defaults.set_platform_name('x86_64') mock_global_args.return_value = { '--debug': True, '--logfile': 'log',