commit python-kiwi for openSUSE:Factory
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-12-01 20:46:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-kiwi (Old) and /work/SRC/openSUSE:Factory/.python-kiwi.new.31177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python-kiwi" Wed Dec 1 20:46:25 2021 rev:87 rq:934738 version:9.24.10 Changes: -------- --- /work/SRC/openSUSE:Factory/python-kiwi/python-kiwi.changes 2021-11-22 23:04:19.425903904 +0100 +++ /work/SRC/openSUSE:Factory/.python-kiwi.new.31177/python-kiwi.changes 2021-12-02 02:23:27.020985188 +0100 @@ -1,0 +2,90 @@ +Tue Nov 23 15:10:26 CET 2021 - Marcus Sch��fer <marcus.schaefer@gmail.com> + +- Bump version: 9.24.9 ��� 9.24.10 + +------------------------------------------------------------------- +Tue Nov 23 10:43:10 CET 2021 - Marcus Sch��fer <marcus.schaefer@gmail.com> + +- Added documentation about sharing backends + + The kiwi boxbuild plugin supports several sharing + backends. Details about them and eventual pre-setup + steps prior use are mentioned in this document + +------------------------------------------------------------------- +Tue Nov 23 10:11:07 CET 2021 - Marcus Sch��fer <marcus.schaefer@gmail.com> + +- Fixed MicroOS build test + + snapper default config has moved from /etc to /usr/share + +------------------------------------------------------------------- +Mon Nov 22 22:27:44 CET 2021 - Marcus Sch��fer <marcus.schaefer@gmail.com> + +- Bump version: 9.24.8 ��� 9.24.9 + +------------------------------------------------------------------- +Mon Nov 22 17:18:07 CET 2021 - Marcus Sch��fer <marcus.schaefer@gmail.com> + +- Bump version: 9.24.7 ��� 9.24.8 + +------------------------------------------------------------------- +Mon Nov 22 17:15:47 CET 2021 - Marcus Sch��fer <marcus.schaefer@gmail.com> + +- Added support for reading metalink in info module + + For resolver operations through libsolv the 'kiwi image info' + module exists. So far it could not read the repos from + metalink repo definitions. This Fixes #1890 + +------------------------------------------------------------------- +Fri Nov 19 13:29:52 CET 2021 - David Cassany <dcassany@suse.com> + +- Force key attribute from signing element to be treated as a URI + + Signed-off-by: David Cassany <dcassany@suse.com> + +------------------------------------------------------------------- +Thu Nov 18 16:52:52 CET 2021 - David Cassany <dcassany@suse.com> + +- Pass signing keys from the XML to the repositories + + This commits makes sure signing keys are passed to + repositories setup in build task. + + Signed-off-by: David Cassany <dcassany@suse.com> + +------------------------------------------------------------------- +Thu Nov 18 09:23:46 CET 2021 - Marcus Sch��fer <marcus.schaefer@gmail.com> + +- Move static sle15 integration test to git + +------------------------------------------------------------------- +Tue Nov 16 16:29:49 CET 2021 - Marcus Sch��fer <marcus.schaefer@gmail.com> + +- Bump version: 9.24.6 ��� 9.24.7 + +------------------------------------------------------------------- +Mon Nov 15 16:40:37 CET 2021 - Marcus Sch��fer <marcus.schaefer@gmail.com> + +- Fixed raid integration test using extra boot part + + Due to changes in the distribution the tests needs some + adaptions. The kernel as provided now by TW uses symlinks + from boot to /usr/lib/modules/... to point to the kernel + binary. Of course this breaks for any system that uses + /boot on another partition. Those image tests which were + testing this aspect needs fixing. + +------------------------------------------------------------------- +Mon Nov 15 14:25:23 CET 2021 - Dan ��erm��k <dcermak@suse.com> + +- Make sure fedora-release is installed on Rawhide + + Follow up to #1957 and #1962: + The Fedora build tests were using the generic release package and not + fedora-release. This issue has been partially fixed in #1962, but we forgot to + port the fix to the rawhide images as well. This commit adds the missing package + to the Rawhide images as well. + +------------------------------------------------------------------- @@ -17,0 +108,21 @@ + +------------------------------------------------------------------- +Fri Nov 12 16:57:17 CET 2021 - Marcus Sch��fer <marcus.schaefer@gmail.com> + +- Allow to set sign keyfile in repository elements + + This commit adds a new and optional child element <signing> + to the repository/source element as shown in the following + example: + + <repository> + <source path="..."> + <signing key="keyfile"/> + </source> + </repository> + + The collection of all keyfiles from all repositories will be + added to the keyring as used by the selected package manager. + Signing keys specified on the commandline and signing keys + specified in the image description will be combined. + This Fixes #1883 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-kiwi.spec ++++++ --- /var/tmp/diff_new_pack.ruMqMT/_old 2021-12-02 02:23:27.516983458 +0100 +++ /var/tmp/diff_new_pack.ruMqMT/_new 2021-12-02 02:23:27.520983444 +0100 @@ -43,7 +43,7 @@ %endif Name: python-kiwi -Version: 9.24.6 +Version: 9.24.10 Provides: kiwi-schema = 7.4 Release: 0 Url: https://github.com/OSInside/kiwi ++++++ PKGBUILD ++++++ --- /var/tmp/diff_new_pack.ruMqMT/_old 2021-12-02 02:23:27.544983360 +0100 +++ /var/tmp/diff_new_pack.ruMqMT/_new 2021-12-02 02:23:27.548983346 +0100 @@ -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.24.6 +pkgver=9.24.10 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=('74cbc9283eb117626209c7f212f957a3') +md5sums=('166597cfdcba49bf6089b425c1cc5a12') build() { ++++++ python-kiwi.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/.bumpversion.cfg new/kiwi-9.24.10/.bumpversion.cfg --- old/kiwi-9.24.6/.bumpversion.cfg 2021-11-12 23:11:19.000000000 +0100 +++ new/kiwi-9.24.10/.bumpversion.cfg 2021-11-23 15:10:26.000000000 +0100 @@ -1,5 +1,5 @@ [bumpversion] -current_version = 9.24.6 +current_version = 9.24.10 commit = True tag = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/PKG-INFO new/kiwi-9.24.10/PKG-INFO --- old/kiwi-9.24.6/PKG-INFO 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/PKG-INFO 2021-11-23 15:12:44.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: kiwi -Version: 9.24.6 +Version: 9.24.10 Summary: KIWI - Appliance Builder (next generation) Home-page: https://osinside.github.io/kiwi Author: Marcus Schaefer Binary files old/kiwi-9.24.6/doc/build/latex/kiwi.pdf and new/kiwi-9.24.10/doc/build/latex/kiwi.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/build/man/kiwi.8 new/kiwi-9.24.10/doc/build/man/kiwi.8 --- old/kiwi-9.24.6/doc/build/man/kiwi.8 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/doc/build/man/kiwi.8 2021-11-23 15:12:43.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "KIWI" "8" "Nov 12, 2021" "9.24.6" "KIWI NG" +.TH "KIWI" "8" "Nov 23, 2021" "9.24.10" "KIWI NG" .SH NAME kiwi \- Creating Operating System Images .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/build/man/kiwi::image::info.8 new/kiwi-9.24.10/doc/build/man/kiwi::image::info.8 --- old/kiwi-9.24.6/doc/build/man/kiwi::image::info.8 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/doc/build/man/kiwi::image::info.8 2021-11-23 15:12:43.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "KIWI::IMAGE::INFO" "8" "Nov 12, 2021" "9.24.6" "KIWI NG" +.TH "KIWI::IMAGE::INFO" "8" "Nov 23, 2021" "9.24.10" "KIWI NG" .SH NAME kiwi::image::info \- Provide detailed information about an image description .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/build/man/kiwi::image::resize.8 new/kiwi-9.24.10/doc/build/man/kiwi::image::resize.8 --- old/kiwi-9.24.6/doc/build/man/kiwi::image::resize.8 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/doc/build/man/kiwi::image::resize.8 2021-11-23 15:12:43.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "KIWI::IMAGE::RESIZE" "8" "Nov 12, 2021" "9.24.6" "KIWI NG" +.TH "KIWI::IMAGE::RESIZE" "8" "Nov 23, 2021" "9.24.10" "KIWI NG" .SH NAME kiwi::image::resize \- Resize disk images to new geometry .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/build/man/kiwi::result::bundle.8 new/kiwi-9.24.10/doc/build/man/kiwi::result::bundle.8 --- old/kiwi-9.24.6/doc/build/man/kiwi::result::bundle.8 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/doc/build/man/kiwi::result::bundle.8 2021-11-23 15:12:43.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "KIWI::RESULT::BUNDLE" "8" "Nov 12, 2021" "9.24.6" "KIWI NG" +.TH "KIWI::RESULT::BUNDLE" "8" "Nov 23, 2021" "9.24.10" "KIWI NG" .SH NAME kiwi::result::bundle \- Bundle build results .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/build/man/kiwi::result::list.8 new/kiwi-9.24.10/doc/build/man/kiwi::result::list.8 --- old/kiwi-9.24.6/doc/build/man/kiwi::result::list.8 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/doc/build/man/kiwi::result::list.8 2021-11-23 15:12:43.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "KIWI::RESULT::LIST" "8" "Nov 12, 2021" "9.24.6" "KIWI NG" +.TH "KIWI::RESULT::LIST" "8" "Nov 23, 2021" "9.24.10" "KIWI NG" .SH NAME kiwi::result::list \- List build results .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/build/man/kiwi::system::build.8 new/kiwi-9.24.10/doc/build/man/kiwi::system::build.8 --- old/kiwi-9.24.6/doc/build/man/kiwi::system::build.8 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/doc/build/man/kiwi::system::build.8 2021-11-23 15:12:43.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "KIWI::SYSTEM::BUILD" "8" "Nov 12, 2021" "9.24.6" "KIWI NG" +.TH "KIWI::SYSTEM::BUILD" "8" "Nov 23, 2021" "9.24.10" "KIWI NG" .SH NAME kiwi::system::build \- Build image in combined prepare and create step .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/build/man/kiwi::system::create.8 new/kiwi-9.24.10/doc/build/man/kiwi::system::create.8 --- old/kiwi-9.24.6/doc/build/man/kiwi::system::create.8 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/doc/build/man/kiwi::system::create.8 2021-11-23 15:12:43.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "KIWI::SYSTEM::CREATE" "8" "Nov 12, 2021" "9.24.6" "KIWI NG" +.TH "KIWI::SYSTEM::CREATE" "8" "Nov 23, 2021" "9.24.10" "KIWI NG" .SH NAME kiwi::system::create \- Create image from prepared root system .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/build/man/kiwi::system::prepare.8 new/kiwi-9.24.10/doc/build/man/kiwi::system::prepare.8 --- old/kiwi-9.24.6/doc/build/man/kiwi::system::prepare.8 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/doc/build/man/kiwi::system::prepare.8 2021-11-23 15:12:43.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "KIWI::SYSTEM::PREPARE" "8" "Nov 12, 2021" "9.24.6" "KIWI NG" +.TH "KIWI::SYSTEM::PREPARE" "8" "Nov 23, 2021" "9.24.10" "KIWI NG" .SH NAME kiwi::system::prepare \- Prepare image root system .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/build/man/kiwi::system::update.8 new/kiwi-9.24.10/doc/build/man/kiwi::system::update.8 --- old/kiwi-9.24.6/doc/build/man/kiwi::system::update.8 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/doc/build/man/kiwi::system::update.8 2021-11-23 15:12:43.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "KIWI::SYSTEM::UPDATE" "8" "Nov 12, 2021" "9.24.6" "KIWI NG" +.TH "KIWI::SYSTEM::UPDATE" "8" "Nov 23, 2021" "9.24.10" "KIWI NG" .SH NAME kiwi::system::update \- Update/Upgrade image root system .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/source/conf.py new/kiwi-9.24.10/doc/source/conf.py --- old/kiwi-9.24.6/doc/source/conf.py 2021-11-12 23:11:19.000000000 +0100 +++ new/kiwi-9.24.10/doc/source/conf.py 2021-11-23 15:10:26.000000000 +0100 @@ -140,7 +140,7 @@ # built documents. # # The short X.Y version. -version = '9.24.6' +version = '9.24.10' # The full version, including alpha/beta/rc tags. release = version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/source/image_description/elements.rst new/kiwi-9.24.10/doc/source/image_description/elements.rst --- old/kiwi-9.24.6/doc/source/image_description/elements.rst 2021-11-12 22:23:40.000000000 +0100 +++ new/kiwi-9.24.10/doc/source/image_description/elements.rst 2021-11-16 16:29:43.000000000 +0100 @@ -793,7 +793,9 @@ to run repository signature validation. If not set, no value is appended into the repository configuration file. If set the relevant key information needs to be provided on the {kiwi} - commandline using the `--signing-key` option + commandline using the `--signing-key` option or via the `<signing>` + element as part of the `<repository><source>` setting in the + image description. customize="/path/to/custom_script" Custom script hook which is invoked with the repo file as parameter @@ -917,6 +919,23 @@ A placeholder for the Open Build Service (OBS) to indicate that all repositories are taken from the project configuration in OBS. +A repository `<source>` element can optionally contain one ore more +signing keys for the packages from this repository like shown in the +following example: + +.. code:: xml + + <repository alias="kiwi"> + <source path="{exc_kiwi_repo}"> + <signing key="/path/to/sign_key_a"/> + <signing key="/path/to/sign_key_b"/> + </source> + </repository> + +All signing keys from all repositories will be collected and +incorporated into the keyring as used by the selected package +manager. + .. _sec.packages: <packages> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/doc/source/plugins/self_contained.rst new/kiwi-9.24.10/doc/source/plugins/self_contained.rst --- old/kiwi-9.24.6/doc/source/plugins/self_contained.rst 2021-10-15 10:02:03.000000000 +0200 +++ new/kiwi-9.24.10/doc/source/plugins/self_contained.rst 2021-11-23 15:10:22.000000000 +0100 @@ -77,5 +77,55 @@ .. note:: The provided `--description` and `--target-dir` options are - setup as shared folders between the host and the guest. No other + setup as shared folders between the host and the box. No other data will be shared with the host. + +Sharing Backends +---------------- + +As mentioned above, the `boxbuild` call shares the two host directories +provided in `--description` and `--target-dir` with the box. To do this +the following sharing backends are supported: + +``--9p-sharing`` + With QEMU's `9pfs` you can create virtual filesystem devices + (virtio-9p-device) and expose them to the box. For more information + see `9pfs <https://wiki.qemu.org/Documentation/9psetup>`__. Using + this sharing backend does not require any setup procedure from the + user and is also the default for `boxbuild` + +``--sshfs-sharing`` + SSHFS is a FUSE-based filesystem client for mounting remote + directories over a Secure Shell connection (SSH). In `boxbuild` + this is used to mount directories from the host into the box. + Because this runs through an SSH connection the host must allow + connections from the box. If you plan to use `sshfs` add the + following SSH public key to the :file:`~/.ssh/authorized_keys` + file of the user which is expected to call `boxbuild` + + .. code:: bash + + echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCtiqDaYgEMkr7za7qc4iPXftgu/j3sodPOtpoG8PinwRX6/3xZteOJzCH2qCZjEgA5zsP9lxy/119cWXvdxFUvyEINjH77unzRnaHj/yTXPhHuhHgAiEubuHer2gZoOs+UH4cGJLKCrabjTjZdeK9KvL+hoAgJaWxDUvGsXYDQTBHXlKjniOL1MGbltDBHnYhu4k+PjjJ+UEBN+8+F74Y5fYgIovXXY88WQrybuEr1eAYjhvk/ln6TKw1P6uvVMuIbAGUgnZFntDCI91Qw8ps1j+lX3vNc8ZBoOwM6nHZqq4FAqbXuH+NvQFS/xDM6wwZQhAe+14dTQBA5F1mgCVf+fSbteb0/CraSGmgKIM8aPnK8rfF+BY6Jar3AJFKVRPshRzrQj6CWYu3BfmOLupCpqOK2XFyoU2lEpaZDejgPSJq/IBGZdjKplWJFF8ZRQ01a8eX8K2fjrQt/4k9c7Pjlg1aDH8Sf+5+vcehlSNs1d50wnFoaIPrgDdy04omiaJ8= kiwi@boxbuild" >> ~/.ssh/authorized_keys + + The public key mentioned here is associated with an SSH key pair + we provide in the pre-built box images. + + .. warning:: + + If the `sshfs` backend is used without the host trusting the box, + the `boxbuild` call will become interactive at the time of the sshfs + mount. In this case the user might be asked for a passphrase or + depending on the host `sshd` setup the request will be declined and + the boxbuild fails. + +``--virtiofs-sharing`` + QEMU virtio-fs shared file system daemon. Share a host directory tree + with a box through a virtio-fs device. For more information + see `virtiofs <https://qemu.readthedocs.io/en/latest/tools/virtiofsd.html>`__. + Using this sharing backend does not require any setup procedure from the + user + + .. warning:: + + virtiofs support was added but considered experimental and + not yet stable across the distributions. Feedback welcome. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/kiwi/schema/kiwi.rnc new/kiwi-9.24.10/kiwi/schema/kiwi.rnc --- old/kiwi-9.24.6/kiwi/schema/kiwi.rnc 2021-11-03 20:37:14.000000000 +0100 +++ new/kiwi-9.24.10/kiwi/schema/kiwi.rnc 2021-11-22 17:18:04.000000000 +0100 @@ -38,6 +38,7 @@ grub_console = xsd:token {pattern = "(console|gfxterm|serial)( (console|gfxterm|serial))*"} fs_attributes = xsd:token {pattern = "(no-copy-on-write|synchronous-updates)(,(no-copy-on-write|synchronous-updates))*"} package-version-type = xsd:token {pattern = "(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){3}"} +simple-uri-type = xsd:token {pattern = "(file:|https:|http:|ftp:).*"} #========================================== # start with image description @@ -1027,6 +1028,24 @@ } #========================================== +# common element <signing> +# +div { + k.signing.key.attribute = + ## Specify path to a signing key for this repo + attribute key { simple-uri-type } + k.signing.attlist = + k.signing.key.attribute + k.signing = + ## The signing element holds information about + ## repo/package signing keys + element signing { + k.signing.attlist, + empty + } +} + +#========================================== # common element <source> # div { @@ -1037,7 +1056,7 @@ ## as well as a path specification element source { k.source.attlist, - empty + k.signing* } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/kiwi/schema/kiwi.rng new/kiwi-9.24.10/kiwi/schema/kiwi.rng --- old/kiwi-9.24.6/kiwi/schema/kiwi.rng 2021-11-03 20:37:14.000000000 +0100 +++ new/kiwi-9.24.10/kiwi/schema/kiwi.rng 2021-11-22 17:18:04.000000000 +0100 @@ -91,6 +91,11 @@ <param name="pattern">(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){3}</param> </data> </define> + <define name="simple-uri-type"> + <data type="token"> + <param name="pattern">(file:|https:|http:|ftp:).*</param> + </data> + </define> <!-- ========================================== start with image description @@ -1573,6 +1578,30 @@ </div> <!-- ========================================== + common element <signing> + + --> + <div> + <define name="k.signing.key.attribute"> + <attribute name="key"> + <a:documentation>Specify path to a signing key for this repo</a:documentation> + <ref name="simple-uri-type"/> + </attribute> + </define> + <define name="k.signing.attlist"> + <ref name="k.signing.key.attribute"/> + </define> + <define name="k.signing"> + <element name="signing"> + <a:documentation>The signing element holds information about +repo/package signing keys</a:documentation> + <ref name="k.signing.attlist"/> + <empty/> + </element> + </define> + </div> + <!-- + ========================================== common element <source> --> @@ -1588,7 +1617,9 @@ <a:documentation>A Pointer to a data source. This can be a remote location as well as a path specification</a:documentation> <ref name="k.source.attlist"/> - <empty/> + <zeroOrMore> + <ref name="k.signing"/> + </zeroOrMore> </element> </define> </div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/kiwi/system/uri.py new/kiwi-9.24.10/kiwi/system/uri.py --- old/kiwi-9.24.6/kiwi/system/uri.py 2021-07-14 18:09:36.000000000 +0200 +++ new/kiwi-9.24.10/kiwi/system/uri.py 2021-11-23 09:57:42.000000000 +0100 @@ -17,9 +17,15 @@ # import os import logging -from urllib.parse import urlparse +from lxml import etree +from urllib.parse import ( + urlparse, ParseResult +) +from urllib.request import urlopen +from urllib.request import Request import requests import hashlib +from typing import Optional # project from kiwi.defaults import Defaults @@ -36,20 +42,30 @@ class Uri: """ - **Normalize url types** - - Allow to translate the available KIWI repo source types - into standard mime types - - :param str uri: URI, remote or local repository location - :param str repo_type: - repository type name, defaults to 'rpm-md' and is only - effectively used when building inside of the open - build service which maps local repositories to a - specific environment + **Normalize and manage URI types** """ - def __init__(self, uri: str, repo_type: str = 'rpm-md'): + def __init__( + self, uri: str, repo_type: str = 'rpm-md', source_type: str = '' + ): + """ + Manage kiwi source URIs and allow transformation into + standard URLs + + :param str uri: URI, remote, local or metalink repository location + :param str repo_type: + repository type name, defaults to 'rpm-md' and is only + effectively used when building inside of the open + build service which maps local repositories to a + specific environment + :param str source_type: + specify source type if the provided URI is a service. + Currently only the metalink source type is handled + """ self.runtime_config = RuntimeConfig() + + if source_type == 'metalink': + uri = self._resolve_metalink_uri(uri) + self.repo_type = repo_type self.uri = uri if not uri.startswith(os.sep) else ''.join( [Defaults.get_default_uri_type(), uri] @@ -147,7 +163,7 @@ query = {'credentials': 'kiwiRepoCredentials'} if uri: - query = dict(params.split('=') for params in uri.query.split('&')) + query = dict(params.split('=') for params in uri.query.split('&')) # type: ignore return query['credentials'] @@ -223,15 +239,17 @@ uri = urlparse(self.uri) return uri.fragment - def _get_credentials_uri(self): + def _get_credentials_uri(self) -> Optional[ParseResult]: uri = urlparse(self.uri) + credentials_uri = None if uri.query and uri.query.startswith('credentials='): - return uri + credentials_uri = uri + return credentials_uri - def _local_path(self, path): + def _local_path(self, path: str) -> str: return os.path.abspath(os.path.normpath(path)) - def _obs_project_download_link(self, name): + def _obs_project_download_link(self, name: str) -> str: name_parts = name.split(os.sep) repository = name_parts.pop() project = os.sep.join(name_parts) @@ -258,7 +276,9 @@ f'{download_link}: {issue}' ) - def _buildservice_path(self, name, urischeme, fragment=None): + def _buildservice_path( + self, name: str, urischeme: str, fragment: str = '' + ) -> str: """ Special to openSUSE buildservice. If the buildservice builds the image it arranges the repos for each build in a special @@ -281,3 +301,34 @@ [bs_source_dir, 'repos', name] ) return self._local_path(local_path) + + def _resolve_metalink_uri(self, uri: str) -> str: + selected_repo_source = uri + namespace_map = dict( + metalink="http://www.metalinker.org/" + ) + expression = '//metalink:file[@name="repomd.xml"]/metalink:resources/*' + try: + metalink_location = urlopen(Request(uri)) + xml = etree.parse(metalink_location) + url_list = xml.getroot().xpath( + expression, namespaces=namespace_map + ) + source_dict = {} + for url in url_list: + if url.get('protocol') == 'https': + source_dict[url.text] = int(url.get('preference')) + start_preference = 0 + for url in sorted(source_dict.keys()): + preference = source_dict[url] + if preference > start_preference: + selected_repo_source = url + start_preference = preference + except Exception as issue: + raise KiwiUriOpenError( + f'Failed to resolve metalink URI: {issue}' + ) + selected_repo_source = selected_repo_source.replace( + 'repodata/repomd.xml', '' + ) + return selected_repo_source diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/kiwi/tasks/image_info.py new/kiwi-9.24.10/kiwi/tasks/image_info.py --- old/kiwi-9.24.6/kiwi/tasks/image_info.py 2021-07-14 18:09:36.000000000 +0200 +++ new/kiwi-9.24.10/kiwi/tasks/image_info.py 2021-11-23 09:57:42.000000000 +0100 @@ -146,6 +146,7 @@ solver = Sat() for xml_repo in self.xml_state.get_repository_sections_used_for_build(): repo_source = xml_repo.get_source().get_path() + repo_sourcetype = xml_repo.get_sourcetype() or '' repo_user = xml_repo.get_username() repo_secret = xml_repo.get_password() repo_type = xml_repo.get_type() @@ -153,7 +154,8 @@ repo_components = xml_repo.get_components() if not repo_type: repo_type = SolverRepositoryBase( - Uri(repo_source), repo_user, repo_secret + Uri(uri=repo_source, source_type=repo_sourcetype), + repo_user, repo_secret ).get_repo_type() if repo_type == 'apt-deb': # Debian based repos can be setup for a specific @@ -173,14 +175,18 @@ ) solver.add_repository( SolverRepository.new( - Uri(repo_source_for_component, repo_type), + Uri( + repo_source_for_component, + repo_type, repo_sourcetype + ), repo_user, repo_secret ) ) continue solver.add_repository( SolverRepository.new( - Uri(repo_source, repo_type), repo_user, repo_secret + Uri(repo_source, repo_type, repo_sourcetype), + repo_user, repo_secret ) ) return solver diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/kiwi/tasks/system_build.py new/kiwi-9.24.10/kiwi/tasks/system_build.py --- old/kiwi-9.24.6/kiwi/tasks/system_build.py 2021-07-14 18:09:36.000000000 +0200 +++ new/kiwi-9.24.10/kiwi/tasks/system_build.py 2021-11-22 17:18:04.000000000 +0100 @@ -196,7 +196,9 @@ ) manager = system.setup_repositories( self.command_args['--clear-cache'], - self.command_args['--signing-key'], + self.command_args[ + '--signing-key' + ] + self.xml_state.get_repositories_signing_keys(), self.global_args['--target-arch'] ) system.install_bootstrap( @@ -281,7 +283,9 @@ abs_target_dir_path, image_root, custom_args={ - 'signing_keys': self.command_args['--signing-key'], + 'signing_keys': self.command_args[ + '--signing-key' + ] + self.xml_state.get_repositories_signing_keys(), 'xz_options': self.runtime_config.get_xz_options() } ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/kiwi/tasks/system_prepare.py new/kiwi-9.24.10/kiwi/tasks/system_prepare.py --- old/kiwi-9.24.6/kiwi/tasks/system_prepare.py 2021-11-12 23:11:06.000000000 +0100 +++ new/kiwi-9.24.10/kiwi/tasks/system_prepare.py 2021-11-16 16:29:43.000000000 +0100 @@ -181,7 +181,9 @@ ) manager = system.setup_repositories( self.command_args['--clear-cache'], - self.command_args['--signing-key'], + self.command_args[ + '--signing-key' + ] + self.xml_state.get_repositories_signing_keys(), self.global_args['--target-arch'] ) run_bootstrap = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/kiwi/version.py new/kiwi-9.24.10/kiwi/version.py --- old/kiwi-9.24.6/kiwi/version.py 2021-11-12 23:11:19.000000000 +0100 +++ new/kiwi-9.24.10/kiwi/version.py 2021-11-23 15:10:26.000000000 +0100 @@ -18,5 +18,5 @@ """ Global version information used in kiwi and the package """ -__version__ = '9.24.6' -__githash__ = '7935bdc2ed71661069459dff1097e14a9ce9812e' +__version__ = '9.24.10' +__githash__ = '6c258d7e708572f6456b26d1dd50eb10fd856879' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/kiwi/xml_parse.py new/kiwi-9.24.10/kiwi/xml_parse.py --- old/kiwi-9.24.6/kiwi/xml_parse.py 2021-11-03 20:37:14.000000000 +0100 +++ new/kiwi-9.24.10/kiwi/xml_parse.py 2021-11-22 17:18:04.000000000 +0100 @@ -16,7 +16,7 @@ # kiwi/schema/kiwi_for_generateDS.xsd # # Command line: -# /home/ms/Project/kiwi/.tox/3.6/bin/generateDS.py -f --external-encoding="utf-8" --no-dates --no-warnings -o "kiwi/xml_parse.py" kiwi/schema/kiwi_for_generateDS.xsd +# /home/david/work/kiwi/.tox/3/bin/generateDS.py -f --external-encoding="utf-8" --no-dates --no-warnings -o "kiwi/xml_parse.py" kiwi/schema/kiwi_for_generateDS.xsd # # Current working directory (os.getcwd()): # kiwi @@ -2208,14 +2208,98 @@ # end class repository +class signing(GeneratedsSuper): + """The signing element holds information about repo/package signing + keys""" + subclass = None + superclass = None + def __init__(self, key=None): + self.original_tagname_ = None + self.key = _cast(None, key) + def factory(*args_, **kwargs_): + if CurrentSubclassModule_ is not None: + subclass = getSubclassFromModule_( + CurrentSubclassModule_, signing) + if subclass is not None: + return subclass(*args_, **kwargs_) + if signing.subclass: + return signing.subclass(*args_, **kwargs_) + else: + return signing(*args_, **kwargs_) + factory = staticmethod(factory) + def get_key(self): return self.key + def set_key(self, key): self.key = key + def validate_simple_uri_type(self, value): + # Validate type simple-uri-type, a restriction on xs:token. + if value is not None and Validate_simpletypes_: + if not self.gds_validate_simple_patterns( + self.validate_simple_uri_type_patterns_, value): + warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_simple_uri_type_patterns_, )) + validate_simple_uri_type_patterns_ = [['^(file:|https:|http:|ftp:).*$']] + def hasContent_(self): + if ( + + ): + return True + else: + return False + def export(self, outfile, level, namespaceprefix_='', name_='signing', namespacedef_='', pretty_print=True): + imported_ns_def_ = GenerateDSNamespaceDefs_.get('signing') + if imported_ns_def_ is not None: + namespacedef_ = imported_ns_def_ + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ + showIndent(outfile, level, pretty_print) + outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) + already_processed = set() + self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='signing') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespaceprefix_='', name_='signing', pretty_print=pretty_print) + outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_)) + else: + outfile.write('/>%s' % (eol_, )) + def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='signing'): + if self.key is not None and 'key' not in already_processed: + already_processed.add('key') + outfile.write(' key=%s' % (quote_attrib(self.key), )) + def exportChildren(self, outfile, level, namespaceprefix_='', name_='signing', fromsubclass_=False, pretty_print=True): + pass + def build(self, node): + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) + for child in node: + nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] + self.buildChildren(child, node, nodeName_) + return self + def buildAttributes(self, node, attrs, already_processed): + value = find_attr_value_('key', node) + if value is not None and 'key' not in already_processed: + already_processed.add('key') + self.key = value + self.key = ' '.join(self.key.split()) + self.validate_simple_uri_type(self.key) # validate type simple-uri-type + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + pass +# end class signing + + class source(GeneratedsSuper): """A Pointer to a data source. This can be a remote location as well as a path specification""" subclass = None superclass = None - def __init__(self, path=None): + def __init__(self, path=None, signing=None): self.original_tagname_ = None self.path = _cast(None, path) + if signing is None: + self.signing = [] + else: + self.signing = signing def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( @@ -2227,11 +2311,16 @@ else: return source(*args_, **kwargs_) factory = staticmethod(factory) + def get_signing(self): return self.signing + def set_signing(self, signing): self.signing = signing + def add_signing(self, value): self.signing.append(value) + def insert_signing_at(self, index, value): self.signing.insert(index, value) + def replace_signing_at(self, index, value): self.signing[index] = value def get_path(self): return self.path def set_path(self, path): self.path = path def hasContent_(self): if ( - + self.signing ): return True else: @@ -2253,6 +2342,7 @@ if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, namespaceprefix_='', name_='source', pretty_print=pretty_print) + showIndent(outfile, level, pretty_print) outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) @@ -2261,7 +2351,12 @@ already_processed.add('path') outfile.write(' path=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.path), input_name='path')), )) def exportChildren(self, outfile, level, namespaceprefix_='', name_='source', fromsubclass_=False, pretty_print=True): - pass + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + for signing_ in self.signing: + signing_.export(outfile, level, namespaceprefix_, name_='signing', pretty_print=pretty_print) def build(self, node): already_processed = set() self.buildAttributes(node, node.attrib, already_processed) @@ -2275,7 +2370,11 @@ already_processed.add('path') self.path = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): - pass + if nodeName_ == 'signing': + obj_ = signing.factory() + obj_.build(child_) + self.signing.append(obj_) + obj_.original_tagname_ = 'signing' # end class source @@ -8266,6 +8365,7 @@ "profiles", "repository", "requires", + "signing", "size", "source", "strip", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/kiwi/xml_state.py new/kiwi-9.24.10/kiwi/xml_state.py --- old/kiwi-9.24.6/kiwi/xml_state.py 2021-11-03 20:37:14.000000000 +0100 +++ new/kiwi-9.24.10/kiwi/xml_state.py 2021-11-22 17:18:04.000000000 +0100 @@ -1721,6 +1721,16 @@ ] ) + def get_repositories_signing_keys(self) -> List[str]: + """ + Get list of signing keys specified on the repositories + """ + key_file_list: List[str] = [] + for repository in self.get_repository_sections() or []: + for signing in repository.get_source().get_signing() or []: + key_file_list.append(Uri(signing.get_key()).translate()) + return key_file_list + def set_repository( self, repo_source: str, repo_type: str, repo_alias: str, repo_prio: str, repo_imageinclude: bool = False, @@ -1755,7 +1765,8 @@ def add_repository( self, repo_source: str, repo_type: str, repo_alias: str = None, repo_prio: str = '', repo_imageinclude: bool = False, - repo_package_gpgcheck: Optional[bool] = None + repo_package_gpgcheck: Optional[bool] = None, + repo_signing_keys: List[str] = [] ) -> None: """ Add a new repository section at the end of the list @@ -1778,7 +1789,12 @@ type_=repo_type, alias=repo_alias, priority=priority_number, - source=xml_parse.source(path=repo_source), + source=xml_parse.source( + path=repo_source, + signing=[ + xml_parse.signing(key=k) for k in repo_signing_keys + ] + ), imageinclude=repo_imageinclude, package_gpgcheck=repo_package_gpgcheck ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/kiwi.egg-info/PKG-INFO new/kiwi-9.24.10/kiwi.egg-info/PKG-INFO --- old/kiwi-9.24.6/kiwi.egg-info/PKG-INFO 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/kiwi.egg-info/PKG-INFO 2021-11-23 15:12:44.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: kiwi -Version: 9.24.6 +Version: 9.24.10 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.24.6/kiwi.egg-info/SOURCES.txt new/kiwi-9.24.10/kiwi.egg-info/SOURCES.txt --- old/kiwi-9.24.6/kiwi.egg-info/SOURCES.txt 2021-11-12 23:12:47.000000000 +0100 +++ new/kiwi-9.24.10/kiwi.egg-info/SOURCES.txt 2021-11-23 15:12:44.000000000 +0100 @@ -436,6 +436,7 @@ test/data/info.xml test/data/iso_listing.txt test/data/key_value +test/data/metalink test/data/my_plugin.rnc test/data/my_plugin.rng test/data/nested_include.xml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/test/data/description/config.xml new/kiwi-9.24.10/test/data/description/config.xml --- old/kiwi-9.24.6/test/data/description/config.xml 2021-09-02 16:55:04.000000000 +0200 +++ new/kiwi-9.24.10/test/data/description/config.xml 2021-11-22 17:18:04.000000000 +0100 @@ -167,13 +167,17 @@ <user groups="kiwi,admin,users" pwdformat="plain" password="mypwd" name="kiwi"/> </users> <repository priority="42" sourcetype="baseurl"> - <source path="iso:///image/CDs/dvd.iso"/> + <source path="iso:///image/CDs/dvd.iso"> + <signing key="file:key_a"/> + </source> </repository> <repository type="rpm-md" imageinclude="true" customize="script"> <source path="obs://Devel:PubCloud:AmazonEC2/SLE_12_GA"/> </repository> <repository type="rpm-md" imageonly="true"> - <source path="obs://Devel:Docker:Images:SLE12SP2/SLE_12_SP2_Docker"/> + <source path="obs://Devel:Docker:Images:SLE12SP2/SLE_12_SP2_Docker"> + <signing key="file:key_b"/> + </source> </repository> <packages type="image" patternType="plusRecommended"> <namedCollection name="base"/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/test/data/description.buildservice/appliance.kiwi new/kiwi-9.24.10/test/data/description.buildservice/appliance.kiwi --- old/kiwi-9.24.6/test/data/description.buildservice/appliance.kiwi 2021-09-02 16:55:04.000000000 +0200 +++ new/kiwi-9.24.10/test/data/description.buildservice/appliance.kiwi 2021-11-22 17:18:04.000000000 +0100 @@ -167,13 +167,17 @@ <user groups="kiwi,admin,users" pwdformat="plain" password="mypwd" name="kiwi"/> </users> <repository priority="42" sourcetype="baseurl"> - <source path="iso:///image/CDs/dvd.iso"/> + <source path="iso:///image/CDs/dvd.iso"> + <signing key="file:key_a"/> + </source> </repository> <repository type="rpm-md" imageinclude="true" customize="script"> <source path="obs://Devel:PubCloud:AmazonEC2/SLE_12_GA"/> </repository> <repository type="rpm-md" imageonly="true"> - <source path="obs://Devel:Docker:Images:SLE12SP2/SLE_12_SP2_Docker"/> + <source path="obs://Devel:Docker:Images:SLE12SP2/SLE_12_SP2_Docker"> + <signing key="file:key_b"/> + </source> </repository> <packages type="image" patternType="plusRecommended"> <namedCollection name="base"/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/test/data/example_config.xml new/kiwi-9.24.10/test/data/example_config.xml --- old/kiwi-9.24.6/test/data/example_config.xml 2021-09-02 16:55:04.000000000 +0200 +++ new/kiwi-9.24.10/test/data/example_config.xml 2021-11-22 17:18:04.000000000 +0100 @@ -167,13 +167,17 @@ <user groups="kiwi,admin,users" pwdformat="plain" password="mypwd" name="kiwi"/> </users> <repository priority="42" sourcetype="baseurl"> - <source path="iso:///image/CDs/dvd.iso"/> + <source path="iso:///image/CDs/dvd.iso"> + <signing key="file:key_a"/> + </source> </repository> <repository type="rpm-md" imageinclude="true" customize="script"> <source path="obs://Devel:PubCloud:AmazonEC2/SLE_12_GA"/> </repository> <repository type="rpm-md" imageonly="true"> - <source path="obs://Devel:Docker:Images:SLE12SP2/SLE_12_SP2_Docker"/> + <source path="obs://Devel:Docker:Images:SLE12SP2/SLE_12_SP2_Docker"> + <signing key="file:key_b"/> + </source> </repository> <packages type="image" patternType="plusRecommended"> <namedCollection name="base"/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/test/data/metalink new/kiwi-9.24.10/test/data/metalink --- old/kiwi-9.24.6/test/data/metalink 1970-01-01 01:00:00.000000000 +0100 +++ new/kiwi-9.24.10/test/data/metalink 2021-11-23 09:57:42.000000000 +0100 @@ -0,0 +1,158 @@ +<?xml version="1.0" encoding="utf-8"?> +<metalink version="3.0" xmlns="http://www.metalinker.org/" type="dynamic" pubdate="Mon, 22 Nov 2021 11:33:26 GMT" generator="mirrormanager" xmlns:mm0="http://fedorahosted.org/mirrormanager"> + <files> + <file name="repomd.xml"> + <mm0:timestamp>1619174877</mm0:timestamp> + <size>6285</size> + <verification> + <hash type="md5">6d3f3d3b3489e7c3e63203a4accfec52</hash> + <hash type="sha1">8865764f043de7527533f07c530205d2f68ae4d4</hash> + <hash type="sha256">4e48e3e6131dd6956141407656318bde5ff226fa07164a015968133feaa154df</hash> + <hash type="sha512">30e6cab1ceeed36bf0ad111be66daf2e438bcb79ff420fd090b6c6418bd8d265178e0e5d6515b173834125a30bd4ade60956817efccff86da5f6529a4739ef20</hash> + </verification> + <resources maxconnections="1"> + <url protocol="http" type="http" location="DE" preference="91">http://mirror.dogado.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="DE" preference="91">https://mirror.dogado.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="DE" preference="98">https://ftp.plusline.net/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="DE" preference="98">rsync://ftp.plusline.net/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DE" preference="98">http://ftp.plusline.net/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DE" preference="97">http://mirror.speedpartner.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="DE" preference="96">https://ftp-stud.hs-esslingen.de/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DE" preference="100">http://mirror2.hs-esslingen.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="DE" preference="100">rsync://mirror2.hs-esslingen.de/fedora-linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="DE" preference="96">rsync://ftp-stud.hs-esslingen.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DE" preference="96">http://ftp-stud.hs-esslingen.de/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="DE" preference="95">rsync://ftp.halifax.rwth-aachen.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DE" preference="95">http://ftp.halifax.rwth-aachen.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="DE" preference="95">https://ftp.halifax.rwth-aachen.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DE" preference="94">http://mirror.netzwerge.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="DE" preference="94">https://mirror.netzwerge.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="DE" preference="94">rsync://mirror.netzwerge.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DE" preference="93">http://ftp.fau.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="DE" preference="93">https://ftp.fau.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="DE" preference="93">rsync://ftp.fau.de/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DE" preference="92">http://mirror.23m.com/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="DE" preference="92">https://mirror.23m.com/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="DE" preference="92">rsync://mirror.23m.com/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="DE" preference="91">https://mirrors.xtom.de/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DE" preference="91">http://mirrors.xtom.de/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="DE" preference="91">rsync://mirrors.xtom.de/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="DE" preference="90">rsync://fedora.tu-chemnitz.de/ftp/pub/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DE" preference="90">http://fedora.tu-chemnitz.de/pub/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="BG" preference="89">http://mirror.telepoint.bg/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="BG" preference="89">rsync://mirror.telepoint.bg/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="BG" preference="89">https://mirror.telepoint.bg/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="NL" preference="88">http://fedora.mirror.wearetriple.com/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="NL" preference="88">https://fedora.mirror.wearetriple.com/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="NL" preference="88">rsync://fedora.mirror.wearetriple.com/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="FI" preference="87">rsync://rsync.nic.funet.fi/ftp/pub/mirrors/fedora.redhat.com/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="FI" preference="87">http://www.nic.funet.fi/pub/mirrors/fedora.redhat.com/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="NL" preference="86">http://mirror.serverion.com/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="NL" preference="86">https://mirror.serverion.com/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="NL" preference="86">rsync://mirror.serverion.com/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="IT" preference="85">http://fedora.mirror.garr.it/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="IT" preference="85">https://fedora.mirror.garr.it/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="NL" preference="84">http://ftp.tudelft.nl/download.fedora.redhat.com/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="CZ" preference="83">http://mirror.karneval.cz/pub/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="CZ" preference="83">rsync://mirror.karneval.cz/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="CZ" preference="83">https://mirror.karneval.cz/pub/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="UA" preference="82">http://fedora.ip-connect.info/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="UA" preference="82">https://fedora.ip-connect.info/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="UA" preference="82">rsync://fedora.ip-connect.info/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="EE" preference="81">https://mirrors.xtom.ee/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="EE" preference="81">rsync://mirrors.xtom.ee/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="EE" preference="81">http://mirrors.xtom.ee/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="SE" preference="80">https://ftp.lysator.liu.se/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="SE" preference="80">http://ftp.lysator.liu.se/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="SE" preference="80">rsync://ftp.lysator.liu.se/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="PT" preference="79">http://mirrors.up.pt/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="PT" preference="79">rsync://mirrors.up.pt/pub/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="LT" preference="78">http://mirror.vpsnet.com/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="LT" preference="78">https://mirror.vpsnet.com/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="MD" preference="77">http://mirror.ihost.md/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="MD" preference="77">rsync://mirror.ihost.md/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="MD" preference="77">https://mirror.ihost.md/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="DK" preference="76">rsync://mirror.netsite.dk/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="DK" preference="76">https://mirror.netsite.dk/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DK" preference="76">http://mirror.netsite.dk/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="SK" preference="75">https://ftp.upjs.sk/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="SK" preference="75">http://ftp.upjs.sk/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="SK" preference="75">rsync://ftp.upjs.sk/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="NL" preference="74">http://fedora.mirror.liteserver.nl/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="NL" preference="74">rsync://mirror.liteserver.nl/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="NL" preference="74">https://fedora.mirror.liteserver.nl/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="DK" preference="73">http://mirror.easyspeedy.com/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="DK" preference="73">rsync://mirror.easyspeedy.com/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="BY" preference="72">http://ftp.byfly.by/pub/fedoraproject.org/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="BY" preference="72">https://ftp.byfly.by/pub/fedoraproject.org/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="BY" preference="72">rsync://ftp.byfly.by/fedora-linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="RU" preference="71">http://mirror.yandex.ru/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="RU" preference="71">rsync://mirror.yandex.ru/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="RU" preference="71">https://mirror.yandex.ru/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="SE" preference="70">https://ftp.acc.umu.se/mirror/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="SE" preference="70">http://ftp.acc.umu.se/mirror/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="SE" preference="70">rsync://ftp.acc.umu.se/mirror/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="GB" preference="69">https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="GB" preference="69">http://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="GB" preference="69">rsync://rsync.mirrorservice.org/dl.fedoraproject.org/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="UA" preference="68">http://fedora.astra.in.ua/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="UA" preference="68">rsync://fedora.astra.in.ua/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="UA" preference="68">https://fedora.astra.in.ua/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="RU" preference="67">http://mirror.linux-ia64.org/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="RU" preference="67">rsync://rsync.mirror.linux-ia64.org/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="RU" preference="67">https://mirror.linux-ia64.org/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="LU" preference="66">http://fedora.mirror.root.lu/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="CZ" preference="65">rsync://ftp.fi.muni.cz/pub/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="CZ" preference="65">http://ftp.fi.muni.cz/pub/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="BG" preference="64">http://fedora.ipacct.com/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="BG" preference="64">https://fedora.ipacct.com/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="BG" preference="64">rsync://fedora.ipacct.com/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="CH" preference="63">https://mirror.init7.net/fedora/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="CH" preference="63">http://mirror.init7.net/fedora/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="FR" preference="62">http://mirror.in2p3.fr/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="FR" preference="62">rsync://mirror.in2p3.fr/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="FR" preference="61">rsync://distrib-coffee.ipsl.jussieu.fr/pub/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="FR" preference="61">http://distrib-coffee.ipsl.jussieu.fr/pub/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="FR" preference="60">https://fr2.rpmfind.net/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="FR" preference="60">http://fr2.rpmfind.net/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="FR" preference="60">rsync://fr2.rpmfind.net/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="NL" preference="59">rsync://mirror.nl.leaseweb.net/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="NL" preference="59">http://mirror.nl.leaseweb.net/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="TR" preference="58">http://mirror.veriteknik.net.tr/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="TR" preference="58">rsync://mirror.veriteknik.net.tr/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="UA" preference="57">http://fedora.ip-connect.vn.ua/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="UA" preference="57">https://fedora.ip-connect.vn.ua/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="UA" preference="57">rsync://fedora.ip-connect.vn.ua/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="GR" preference="56">rsync://ftp.cc.uoc.gr/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="GR" preference="56">http://ftp.cc.uoc.gr/pub/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="GR" preference="56">https://ftp.cc.uoc.gr/pub/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="NL" preference="55">rsync://ftp.nluug.nl/Fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="NL" preference="55">http://ftp.nluug.nl/pub/os/Linux/distr/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="RS" preference="54">http://mirror.etf.bg.ac.rs/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="RO" preference="53">rsync://fedora.mirrors.telekom.ro/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="RO" preference="53">http://fedora.mirrors.telekom.ro/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="PT" preference="52">http://ftp.dei.uc.pt/pub/linux/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="FR" preference="51">http://ftp.lip6.fr/ftp/pub/linux/distributions/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="FR" preference="51">rsync://ftp.lip6.fr/Fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="FR" preference="51">https://ftp.lip6.fr/ftp/pub/linux/distributions/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="CY" preference="50">http://mirror.library.ucy.ac.cy/linux/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="CY" preference="50">rsync://mirror.library.ucy.ac.cy/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="BY" preference="49">rsync://mirror.datacenter.by/fedora-linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="BY" preference="49">https://mirror.datacenter.by/pub/fedoraproject.org/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="BY" preference="49">http://mirror.datacenter.by/pub/fedoraproject.org/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="https" type="https" location="HU" preference="48">https://mirror.szerverem.hu/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="HU" preference="48">rsync://mirror.szerverem.hu/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="HU" preference="48">http://mirror.szerverem.hu/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="CZ" preference="47">http://mirror.slu.cz/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="CZ" preference="47">rsync://mirror.slu.cz/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="FR" preference="46">http://mirrors.ircam.fr/pub/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="FR" preference="46">rsync://mirrors.ircam.fr/fedora-linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="GB" preference="45">http://mirror.bytemark.co.uk/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="GB" preference="45">rsync://mirror.bytemark.co.uk/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="rsync" type="rsync" location="MD" preference="44">rsync://repo.fedora.md/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="MD" preference="44">http://repo.fedora.md/fedora/linux/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + <url protocol="http" type="http" location="IL" preference="43">http://mirror.isoc.org.il/pub/fedora/releases/34/Everything/x86_64/os/repodata/repomd.xml</url> + </resources> + </file> + </files> +</metalink> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/test/data/root-dir/image/config.xml new/kiwi-9.24.10/test/data/root-dir/image/config.xml --- old/kiwi-9.24.6/test/data/root-dir/image/config.xml 2021-09-02 16:55:04.000000000 +0200 +++ new/kiwi-9.24.10/test/data/root-dir/image/config.xml 2021-11-22 17:18:04.000000000 +0100 @@ -167,13 +167,17 @@ <user groups="kiwi,admin,users" pwdformat="plain" password="mypwd" name="kiwi"/> </users> <repository priority="42" sourcetype="baseurl"> - <source path="iso:///image/CDs/dvd.iso"/> + <source path="iso:///image/CDs/dvd.iso"> + <signing key="file:key_a"/> + </source> </repository> <repository type="rpm-md" imageinclude="true" customize="script"> <source path="obs://Devel:PubCloud:AmazonEC2/SLE_12_GA"/> </repository> <repository type="rpm-md" imageonly="true"> - <source path="obs://Devel:Docker:Images:SLE12SP2/SLE_12_SP2_Docker"/> + <source path="obs://Devel:Docker:Images:SLE12SP2/SLE_12_SP2_Docker"> + <signing key="file:key_b"/> + </source> </repository> <packages type="image" patternType="plusRecommended"> <namedCollection name="base"/> Binary files old/kiwi-9.24.6/test/unit/.coverage and new/kiwi-9.24.10/test/unit/.coverage differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/test/unit/system/uri_test.py new/kiwi-9.24.10/test/unit/system/uri_test.py --- old/kiwi-9.24.6/test/unit/system/uri_test.py 2021-07-14 18:09:37.000000000 +0200 +++ new/kiwi-9.24.10/test/unit/system/uri_test.py 2021-11-23 09:57:42.000000000 +0100 @@ -243,3 +243,17 @@ mock_buildservice.return_value = True uri = Uri('obsrepositories:/') assert uri.translate() == '/usr/src/packages/SOURCES/repos' + + @patch('kiwi.system.uri.urlopen') + @patch('kiwi.system.uri.Request') + def test_translate_metalink_uri(self, mock_Request, mock_urlopen): + with open('../data/metalink') as metalink: + mock_urlopen.return_value = metalink + uri = Uri('https://metalink.com/foo', source_type='metalink') + assert uri.translate() == \ + 'https://ftp.plusline.net/fedora/linux/releases/34/Everything/' \ + 'x86_64/os/' + + mock_urlopen.side_effect = Exception + with raises(KiwiUriOpenError): + uri = Uri('https://metalink.com/foo', source_type='metalink') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/test/unit/tasks/image_info_test.py new/kiwi-9.24.10/test/unit/tasks/image_info_test.py --- old/kiwi-9.24.6/test/unit/tasks/image_info_test.py 2021-09-02 16:55:04.000000000 +0200 +++ new/kiwi-9.24.10/test/unit/tasks/image_info_test.py 2021-11-23 09:57:42.000000000 +0100 @@ -127,24 +127,24 @@ assert self.solver.add_repository.called assert mock_uri.call_args_list == [ - call('http://us.archive.ubuntu.com/ubuntu/'), + call(uri='http://us.archive.ubuntu.com/ubuntu/', source_type=''), call( 'http://us.archive.ubuntu.com/ubuntu/dists/focal/' - 'main/binary-amd64', 'apt-deb' + 'main/binary-amd64', 'apt-deb', '' ), call( 'http://us.archive.ubuntu.com/ubuntu/dists/focal/' - 'multiverse/binary-amd64', 'apt-deb' + 'multiverse/binary-amd64', 'apt-deb', '' ), call( 'http://us.archive.ubuntu.com/ubuntu/dists/focal/' - 'restricted/binary-amd64', 'apt-deb' + 'restricted/binary-amd64', 'apt-deb', '' ), call( 'http://us.archive.ubuntu.com/ubuntu/dists/focal/' - 'universe/binary-amd64', 'apt-deb' + 'universe/binary-amd64', 'apt-deb', '' ), - call('obs://Devel:PubCloud:AmazonEC2/SLE_12_GA', 'rpm-md') + call('obs://Devel:PubCloud:AmazonEC2/SLE_12_GA', 'rpm-md', '') ] mock_out.assert_called_once_with(self.result_info) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/test/unit/tasks/system_build_test.py new/kiwi-9.24.10/test/unit/tasks/system_build_test.py --- old/kiwi-9.24.6/test/unit/tasks/system_build_test.py 2021-07-14 18:09:37.000000000 +0200 +++ new/kiwi-9.24.10/test/unit/tasks/system_build_test.py 2021-11-22 17:18:04.000000000 +0100 @@ -96,10 +96,12 @@ self.task.command_args['--set-container-tag'] = None self.task.command_args['--add-container-label'] = [] self.task.command_args['--clear-cache'] = False - self.task.command_args['--signing-key'] = None + self.task.command_args['--signing-key'] = [] @patch('kiwi.logger.Logger.set_logfile') - def test_process_system_build(self, mock_log): + @patch('kiwi.xml_state.XMLState.get_repositories_signing_keys') + def test_process_system_build(self, mock_keys, mock_log): + mock_keys.return_value = ['some_key', 'some_other_key'] self._init_command_args() self.task.command_args['build'] = True self.task.process() @@ -156,7 +158,7 @@ check_architecture_supports_iso_firmware_setup.\ assert_called_once_with() self.system_prepare.setup_repositories.assert_called_once_with( - False, None, None + False, ['some_key', 'some_other_key'], None ) self.system_prepare.install_bootstrap.assert_called_once_with( self.manager, [] @@ -193,24 +195,28 @@ ) @patch('kiwi.logger.Logger.set_logfile') - def test_process_system_build_add_package(self, mock_log): + @patch('kiwi.xml_state.XMLState.get_repositories_signing_keys') + def test_process_system_build_add_package(self, mock_keys, mock_log): + mock_keys.return_value = ['some_key', 'some_other_key'] self._init_command_args() self.task.command_args['--add-package'] = ['vim'] self.task.process() self.system_prepare.setup_repositories.assert_called_once_with( - False, None, None + False, ['some_key', 'some_other_key'], None ) self.system_prepare.install_packages.assert_called_once_with( self.manager, ['vim'] ) @patch('kiwi.logger.Logger.set_logfile') - def test_process_system_update_delete_package(self, mock_log): + @patch('kiwi.xml_state.XMLState.get_repositories_signing_keys') + def test_process_system_update_delete_package(self, mock_keys, mock_log): + mock_keys.return_value = ['some_key', 'some_other_key'] self._init_command_args() self.task.command_args['--delete-package'] = ['vim'] self.task.process() self.system_prepare.setup_repositories.assert_called_once_with( - False, None, None + False, ['some_key', 'some_other_key'], None ) self.system_prepare.delete_packages.assert_called_once_with( self.manager, ['vim'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/test/unit/tasks/system_prepare_test.py new/kiwi-9.24.10/test/unit/tasks/system_prepare_test.py --- old/kiwi-9.24.6/test/unit/tasks/system_prepare_test.py 2021-11-12 23:11:06.000000000 +0100 +++ new/kiwi-9.24.10/test/unit/tasks/system_prepare_test.py 2021-11-22 17:18:04.000000000 +0100 @@ -89,9 +89,11 @@ self.task.command_args['--set-container-derived-from'] = None self.task.command_args['--set-container-tag'] = None self.task.command_args['--add-container-label'] = [] - self.task.command_args['--signing-key'] = None + self.task.command_args['--signing-key'] = [] - def test_process_system_prepare(self): + @patch('kiwi.xml_state.XMLState.get_repositories_signing_keys') + def test_process_system_prepare(self, mock_keys): + mock_keys.return_value = ['some_key', 'some_other_key'] self._init_command_args() self.task.command_args['prepare'] = True self.task.command_args['--clear-cache'] = True @@ -144,7 +146,7 @@ check_architecture_supports_iso_firmware_setup.\ assert_called_once_with() self.system_prepare.setup_repositories.assert_called_once_with( - True, None, None + True, ['some_key', 'some_other_key'], None ) self.system_prepare.install_bootstrap.assert_called_once_with( self.manager, [] @@ -195,23 +197,27 @@ self.task.process() assert not self.system_prepare.install_bootstrap.called - def test_process_system_prepare_add_package(self): + @patch('kiwi.xml_state.XMLState.get_repositories_signing_keys') + def test_process_system_prepare_add_package(self, mock_keys): + mock_keys.return_value = ['some_key', 'some_other_key'] self._init_command_args() self.task.command_args['--add-package'] = ['vim'] self.task.process() self.system_prepare.setup_repositories.assert_called_once_with( - False, None, None + False, ['some_key', 'some_other_key'], None ) self.system_prepare.install_packages.assert_called_once_with( self.manager, ['vim'] ) - def test_process_system_prepare_delete_package(self): + @patch('kiwi.xml_state.XMLState.get_repositories_signing_keys') + def test_process_system_prepare_delete_package(self, mock_keys): + mock_keys.return_value = ['some_key', 'some_other_key'] self._init_command_args() self.task.command_args['--delete-package'] = ['vim'] self.task.process() self.system_prepare.setup_repositories.assert_called_once_with( - False, None, None + False, ['some_key', 'some_other_key'], None ) self.system_prepare.delete_packages.assert_called_once_with( self.manager, ['vim'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.24.6/test/unit/xml_state_test.py new/kiwi-9.24.10/test/unit/xml_state_test.py --- old/kiwi-9.24.6/test/unit/xml_state_test.py 2021-11-03 20:37:14.000000000 +0100 +++ new/kiwi-9.24.10/test/unit/xml_state_test.py 2021-11-22 17:18:04.000000000 +0100 @@ -1006,3 +1006,8 @@ xml_data = self.description.load() state = XMLState(xml_data, ['vmxSimpleFlavour'], 'oem') state.get_installmedia_initrd_modules('add') == [] + + @patch('kiwi.system.uri.os.path.abspath') + def test_get_repositories_signing_keys(self, mock_root_path): + mock_root_path.side_effect = lambda x: f'/some/path/{x}' + assert self.state.get_repositories_signing_keys() == ['/some/path/key_a', '/some/path/key_b']
participants (1)
-
Source-Sync