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',

Reply via email to