Hello community, here is the log from the commit of package python-kiwi for openSUSE:Factory checked in at 2018-03-08 10:56:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-kiwi (Old) and /work/SRC/openSUSE:Factory/.python-kiwi.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-kiwi" Thu Mar 8 10:56:21 2018 rev:22 rq:583474 version:9.13.5 Changes: -------- --- /work/SRC/openSUSE:Factory/python-kiwi/python-kiwi.changes 2018-03-01 12:00:59.736764616 +0100 +++ /work/SRC/openSUSE:Factory/.python-kiwi.new/python-kiwi.changes 2018-03-08 10:56:21.959785424 +0100 @@ -1,0 +2,174 @@ +Tue Mar 6 17:01:58 CET 2018 - m...@suse.de + +- Bump version: 9.13.4 → 9.13.5 + +------------------------------------------------------------------- +Tue Mar 6 16:43:35 CET 2018 - m...@suse.de + +- Fixed btrfs search path in earlyboot script + + If kiwi generates its own efi image for the boot process + it does not setup the btrfs relative path setup in the + earlyboot script embedded into the generated efi image. + This has a bad impact on the file search because the + btrfs setup done in kiwi puts root below the @ volume + which we then need to specify of the relative lookup + is not activated. Fixes bsc#1082155 + +------------------------------------------------------------------- +Tue Mar 6 15:51:52 CET 2018 - m...@suse.de + +- Bump version: 9.13.3 → 9.13.4 + +------------------------------------------------------------------- +Mon Mar 5 18:00:26 CET 2018 - dcass...@suse.com + +- Use LABEL for the swap partition + + If multipath and device maps are active the fstab entry should use + the LABEL reference. Systemd calls swapon and it only works properly + with multipath devices when LABEL reference is used or calling directly + on the /dev/dm-* device file. + +------------------------------------------------------------------- +Sat Mar 3 18:29:01 CET 2018 - m...@suse.de + +- Bump version: 9.13.2 → 9.13.3 + +------------------------------------------------------------------- +Fri Mar 2 16:39:44 CET 2018 - m...@suse.de + +- The order of the options for mkisofs matters + + Setting -eltorito-platform after -b causes mkisofs to fail + +------------------------------------------------------------------- +Fri Mar 2 16:31:14 CET 2018 - m...@suse.de + +- Resize partition table after image resize + + The command 'kiwi image resize' allows to resize the size + of a disk image. Depending on the partition table type it + is also required to resize the partition table inside of + the image to let the file size change become effective + This Fixes #534 + +------------------------------------------------------------------- +Fri Mar 2 16:18:13 CET 2018 - michalmar...@eaton.com + +- APT: Support patternType in the bootstrap phase + + With patternType="onlyRequired" (the default), run debootstrap with +--variant=minbase to install only essential packages. With + patternType="plusRecommended", let debootstrap also install important + packages. This is not exactly what the patternType keyword means with + other targets, but it allows to choose between an absolutely minimal + image and a small but usable system. + +------------------------------------------------------------------- +Fri Mar 2 14:56:28 CET 2018 - m...@suse.de + +- Bump version: 9.13.1 → 9.13.2 + +------------------------------------------------------------------- +Fri Mar 2 10:56:11 CET 2018 - dcass...@suse.com + +- Reactivate device mappings after repart. Fixes #645 + + This commit recreates removed device maps and triggers again + systemd generators in order to adapt again device units to the + new context. Fixes #645 + +------------------------------------------------------------------- +Fri Mar 2 10:05:48 CET 2018 - m...@suse.de + +- Refactor ovftool check + + The way this was done mask errors from the call + with the check if the tool exists on the host. + This patch refactors this and makes clear where + we check for the tool to be installed and where + we actually call it + +------------------------------------------------------------------- +Fri Mar 2 10:04:13 CET 2018 - m...@suse.de + +- Extend has_option_in_help to also check error data + +------------------------------------------------------------------- +Thu Mar 1 14:58:38 CET 2018 - m...@suse.de + +- Check if isotool supports eltorito-platform option + + Along with the change there is a small refactoring to + populate the iso tool search to the public api of the + Iso class + +------------------------------------------------------------------- +Thu Mar 1 10:23:52 CET 2018 - m...@suse.de + +- Set eltorito-platform for efi + + The default eltorito platform is set to "x86_64 PC", however + in an alternative bootloader spec for efi this would be the + wrong platform spec. This patch adds the correct platform + to the alt-boot setup for efi. References #643 + +------------------------------------------------------------------- +Wed Feb 28 15:41:58 CET 2018 - m...@suse.de + +- Fixup obs test status helper + + Use osc results output to get better status information + +------------------------------------------------------------------- +Wed Feb 28 10:47:29 CET 2018 - m...@suse.de + +- Fixed get_free_disk_bytes in dracut kiwi-lib + + The method used any device from the lsblk output, but it can + happen that some device nodes with different name point to + the same physical device. The method would then calculate + the free space wrong. This patch takes the PARTUUID value + into account to make sure any partition device size is used + only once. This Fixes #648 + +------------------------------------------------------------------- +Tue Feb 27 12:34:52 CET 2018 - tom_s...@web.de + +- Use pytest instead of py.test + + From pytest 3.0, it is recommended to use "pytest" as the main + command. The use of "py.test" is deprecated and is potentially removed + in the future. + +------------------------------------------------------------------- +Tue Feb 27 11:04:15 CET 2018 - m...@suse.de + +- Update tox setup + + Add python 3.6 target and activate it for the travis + and the local make targets + + Use major python version for the check(flake) and doc + targets where the interpreter minor version is not + primarily important + + This references #641 + +------------------------------------------------------------------- +Tue Feb 27 10:52:39 CET 2018 - m...@suse.de + +- Update yast setup documentation + + Incorporate changes per review by Tom + +------------------------------------------------------------------- +Mon Feb 26 18:03:38 CET 2018 - m...@suse.de + +- Fixed oem build test + + bind-utils explicitly required for obs to be able + to resolve the package dependencies + +------------------------------------------------------------------- @@ -29,0 +204,5 @@ +Fri Feb 23 12:20:52 CET 2018 - ama...@suse.de + +- Use mkisofs instead of wodim + +------------------------------------------------------------------- @@ -108,0 +288,9 @@ + +------------------------------------------------------------------- +Tue Feb 20 13:41:36 CET 2018 - michalmar...@eaton.com + +- APT: Run debootstrap with --variant=minbase + + This selects only packages with Priority: required, which is more in + line with what the other package managers are doing. A patch for + kiwi-descriptions has been submitted to adapt to this new behavior. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-kiwi.spec ++++++ --- /var/tmp/diff_new_pack.IhRAfs/_old 2018-03-08 10:56:23.007747700 +0100 +++ /var/tmp/diff_new_pack.IhRAfs/_new 2018-03-08 10:56:23.011747556 +0100 @@ -38,7 +38,7 @@ %endif Name: python-kiwi -Version: 9.13.1 +Version: 9.13.5 Provides: kiwi-schema = 6.6 Release: 0 Url: https://github.com/SUSE/kiwi @@ -136,7 +136,11 @@ %endif Requires: dosfstools Requires: e2fsprogs +%if 0%{?suse_version} >= 1500 +Requires: mkisofs +%else Requires: genisoimage +%endif Requires: grub2 Requires: kiwi-man-pages Requires: kiwi-tools @@ -210,7 +214,11 @@ %endif Requires: dosfstools Requires: e2fsprogs +%if 0%{?suse_version} >= 1500 +Requires: mkisofs +%else Requires: genisoimage +%endif Requires: grub2 Requires: kiwi-man-pages Requires: kiwi-tools @@ -372,11 +380,15 @@ Requires: device-mapper %endif Requires: dracut +%if 0%{?suse_version} >= 1500 +Requires: mkisofs +%else %if 0%{?fedora} || 0%{?rhel} || 0%{?debian} || 0%{?ubuntu} Requires: genisoimage %else Requires: cdrkit-cdrtools-compat %endif +%endif License: GPL-3.0+ Group: %{sysgroup} ++++++ python-kiwi.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/.bumpversion.cfg new/kiwi-9.13.5/.bumpversion.cfg --- old/kiwi-9.13.1/.bumpversion.cfg 2018-02-26 17:46:55.000000000 +0100 +++ new/kiwi-9.13.5/.bumpversion.cfg 2018-03-06 17:01:58.000000000 +0100 @@ -1,5 +1,5 @@ [bumpversion] -current_version = 9.13.1 +current_version = 9.13.5 commit = True tag = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/.travis.requirements.txt new/kiwi-9.13.5/.travis.requirements.txt --- old/kiwi-9.13.1/.travis.requirements.txt 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/.travis.requirements.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -tox diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/.travis.yml new/kiwi-9.13.5/.travis.yml --- old/kiwi-9.13.1/.travis.yml 2017-11-30 08:54:06.000000000 +0100 +++ new/kiwi-9.13.5/.travis.yml 2018-02-27 11:49:54.000000000 +0100 @@ -4,10 +4,10 @@ - gh-pages matrix: include: - - python: 3.4 - env: TOXENV=unit_py3,check,doc_travis + - python: 3.6 + env: TOXENV=unit_py3_6,check,doc_travis - python: 2.7 - env: TOXENV=unit_py2,check,doc_travis + env: TOXENV=unit_py2_7,check,doc_travis before_install: - sudo apt-get update -qq - sudo apt-get install -y git @@ -17,7 +17,7 @@ - sudo apt-get install -y shellcheck install: - pip install --upgrade pip -- pip install -r .travis.requirements.txt +- pip install tox script: - tox after_success: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/Makefile new/kiwi-9.13.5/Makefile --- old/kiwi-9.13.1/Makefile 2018-02-15 12:00:05.000000000 +0100 +++ new/kiwi-9.13.5/Makefile 2018-02-27 11:49:54.000000000 +0100 @@ -12,7 +12,8 @@ .PHONY: test test: - tox -e unit_py3 + tox -e unit_py3_4 + tox -e unit_py3_6 flake: tox -e check diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/PKG-INFO new/kiwi-9.13.5/PKG-INFO --- old/kiwi-9.13.1/PKG-INFO 2018-02-26 17:51:55.000000000 +0100 +++ new/kiwi-9.13.5/PKG-INFO 2018-03-06 17:07:19.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: kiwi -Version: 9.13.1 +Version: 9.13.5 Summary: KIWI - Appliance Builder (next generation) Home-page: http://suse.github.io/kiwi Author: Marcus Schaefer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/doc/build/man/kiwi.8 new/kiwi-9.13.5/doc/build/man/kiwi.8 --- old/kiwi-9.13.1/doc/build/man/kiwi.8 2018-02-26 17:51:50.000000000 +0100 +++ new/kiwi-9.13.5/doc/build/man/kiwi.8 2018-03-06 17:07:13.000000000 +0100 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI" "8" "Feb 26, 2018" "9.13.1" "kiwi" +.TH "KIWI" "8" "Mar 06, 2018" "9.13.5" "kiwi" .SH NAME kiwi \- Creating Operating System Images . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/doc/build/man/kiwi::image::info.8 new/kiwi-9.13.5/doc/build/man/kiwi::image::info.8 --- old/kiwi-9.13.1/doc/build/man/kiwi::image::info.8 2018-02-26 17:51:50.000000000 +0100 +++ new/kiwi-9.13.5/doc/build/man/kiwi::image::info.8 2018-03-06 17:07:13.000000000 +0100 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::IMAGE::INFO" "8" "Feb 26, 2018" "9.13.1" "kiwi" +.TH "KIWI::IMAGE::INFO" "8" "Mar 06, 2018" "9.13.5" "kiwi" .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.13.1/doc/build/man/kiwi::image::resize.8 new/kiwi-9.13.5/doc/build/man/kiwi::image::resize.8 --- old/kiwi-9.13.1/doc/build/man/kiwi::image::resize.8 2018-02-26 17:51:50.000000000 +0100 +++ new/kiwi-9.13.5/doc/build/man/kiwi::image::resize.8 2018-03-06 17:07:13.000000000 +0100 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::IMAGE::RESIZE" "8" "Feb 26, 2018" "9.13.1" "kiwi" +.TH "KIWI::IMAGE::RESIZE" "8" "Mar 06, 2018" "9.13.5" "kiwi" .SH NAME kiwi::image::resize \- Resize disk images to new geometry . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/doc/build/man/kiwi::result::bundle.8 new/kiwi-9.13.5/doc/build/man/kiwi::result::bundle.8 --- old/kiwi-9.13.1/doc/build/man/kiwi::result::bundle.8 2018-02-26 17:51:50.000000000 +0100 +++ new/kiwi-9.13.5/doc/build/man/kiwi::result::bundle.8 2018-03-06 17:07:13.000000000 +0100 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::RESULT::BUNDLE" "8" "Feb 26, 2018" "9.13.1" "kiwi" +.TH "KIWI::RESULT::BUNDLE" "8" "Mar 06, 2018" "9.13.5" "kiwi" .SH NAME kiwi::result::bundle \- Bundle build results . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/doc/build/man/kiwi::result::list.8 new/kiwi-9.13.5/doc/build/man/kiwi::result::list.8 --- old/kiwi-9.13.1/doc/build/man/kiwi::result::list.8 2018-02-26 17:51:50.000000000 +0100 +++ new/kiwi-9.13.5/doc/build/man/kiwi::result::list.8 2018-03-06 17:07:13.000000000 +0100 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::RESULT::LIST" "8" "Feb 26, 2018" "9.13.1" "kiwi" +.TH "KIWI::RESULT::LIST" "8" "Mar 06, 2018" "9.13.5" "kiwi" .SH NAME kiwi::result::list \- List build results . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/doc/build/man/kiwi::system::build.8 new/kiwi-9.13.5/doc/build/man/kiwi::system::build.8 --- old/kiwi-9.13.1/doc/build/man/kiwi::system::build.8 2018-02-26 17:51:50.000000000 +0100 +++ new/kiwi-9.13.5/doc/build/man/kiwi::system::build.8 2018-03-06 17:07:13.000000000 +0100 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::SYSTEM::BUILD" "8" "Feb 26, 2018" "9.13.1" "kiwi" +.TH "KIWI::SYSTEM::BUILD" "8" "Mar 06, 2018" "9.13.5" "kiwi" .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.13.1/doc/build/man/kiwi::system::create.8 new/kiwi-9.13.5/doc/build/man/kiwi::system::create.8 --- old/kiwi-9.13.1/doc/build/man/kiwi::system::create.8 2018-02-26 17:51:50.000000000 +0100 +++ new/kiwi-9.13.5/doc/build/man/kiwi::system::create.8 2018-03-06 17:07:13.000000000 +0100 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::SYSTEM::CREATE" "8" "Feb 26, 2018" "9.13.1" "kiwi" +.TH "KIWI::SYSTEM::CREATE" "8" "Mar 06, 2018" "9.13.5" "kiwi" .SH NAME kiwi::system::create \- Create image from prepared root system . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/doc/build/man/kiwi::system::prepare.8 new/kiwi-9.13.5/doc/build/man/kiwi::system::prepare.8 --- old/kiwi-9.13.1/doc/build/man/kiwi::system::prepare.8 2018-02-26 17:51:50.000000000 +0100 +++ new/kiwi-9.13.5/doc/build/man/kiwi::system::prepare.8 2018-03-06 17:07:13.000000000 +0100 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::SYSTEM::PREPARE" "8" "Feb 26, 2018" "9.13.1" "kiwi" +.TH "KIWI::SYSTEM::PREPARE" "8" "Mar 06, 2018" "9.13.5" "kiwi" .SH NAME kiwi::system::prepare \- Prepare image root system . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/doc/build/man/kiwi::system::update.8 new/kiwi-9.13.5/doc/build/man/kiwi::system::update.8 --- old/kiwi-9.13.1/doc/build/man/kiwi::system::update.8 2018-02-26 17:51:50.000000000 +0100 +++ new/kiwi-9.13.5/doc/build/man/kiwi::system::update.8 2018-03-06 17:07:13.000000000 +0100 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KIWI::SYSTEM::UPDATE" "8" "Feb 26, 2018" "9.13.1" "kiwi" +.TH "KIWI::SYSTEM::UPDATE" "8" "Mar 06, 2018" "9.13.5" "kiwi" .SH NAME kiwi::system::update \- Update/Upgrade image root system . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/doc/source/building/working_with_images/setup_yast_on_first_boot.rst new/kiwi-9.13.5/doc/source/building/working_with_images/setup_yast_on_first_boot.rst --- old/kiwi-9.13.1/doc/source/building/working_with_images/setup_yast_on_first_boot.rst 2018-02-26 16:34:13.000000000 +0100 +++ new/kiwi-9.13.5/doc/source/building/working_with_images/setup_yast_on_first_boot.rst 2018-02-27 10:52:25.000000000 +0100 @@ -1,23 +1,23 @@ .. _yast-on-boot: -Setting Up YAST at First Boot +Setting Up YaST at First Boot ============================= .. sidebar:: Abstract This page provides information how to setup the KIWI - XML description to start the SUSE YAST system setup + XML description to start the SUSE YaST system setup utility at first boot of the image -To be able to use YAST in a non interactive way, you need to -create a YAST profile which tells it what to do. To create the -profile, run: +To be able to use YaST in a non interactive way, create a +YaST profile which tells the autoyast module what to do. +To create the profile, run: .. code:: bash yast autoyast -Once the YAST profile exists, update the KIWI XML description +Once the YaST profile exists, update the KIWI XML description as follows: 1. Edit the KIWI XML file and add the following package to @@ -27,7 +27,7 @@ <package name="yast2-firstboot"/> -2. Copy the YAST profile file as overlay file to your KIWI image +2. Copy the YaST profile file as overlay file to your KIWI image description overlay directory: .. code:: bash @@ -36,9 +36,9 @@ mkdir -p root/etc/YaST2 cp PROFILE_FILE root/etc/YaST2/firstboot.xml -3. Copy and activate the YAST firstboot template. +3. Copy and activate the YaST firstboot template. This is done by the following instructions which needs to be written - into the KIWI :file:`config.sh` which also lives in the image + into the KIWI :file:`config.sh` which is stored in the image description directory: .. code:: bash diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/doc/source/conf.py new/kiwi-9.13.5/doc/source/conf.py --- old/kiwi-9.13.1/doc/source/conf.py 2018-02-26 17:46:55.000000000 +0100 +++ new/kiwi-9.13.5/doc/source/conf.py 2018-03-06 17:01:58.000000000 +0100 @@ -93,7 +93,7 @@ # built documents. # # The short X.Y version. -version = u'9.13.1' +version = u'9.13.5' # The full version, including alpha/beta/rc tags. release = version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/dracut/modules.d/90kiwi-repart/kiwi-repart-disk.sh new/kiwi-9.13.5/dracut/modules.d/90kiwi-repart/kiwi-repart-disk.sh --- old/kiwi-9.13.1/dracut/modules.d/90kiwi-repart/kiwi-repart-disk.sh 2018-01-26 10:03:31.000000000 +0100 +++ new/kiwi-9.13.5/dracut/modules.d/90kiwi-repart/kiwi-repart-disk.sh 2018-03-06 15:51:31.000000000 +0100 @@ -77,6 +77,13 @@ deactivate_all_device_maps } +function activate_device_mappings { + if type multipath &> /dev/null; then + multipath -r + systemctl daemon-reload + fi +} + function finalize_disk_repart { declare kiwi_RootPart=${kiwi_RootPart} finalize_partition_table "${disk}" @@ -113,14 +120,14 @@ if [ "${kiwi_oemswap}" = "true" ];then new_parts=$((new_parts + 1)) fi - # deactivate all active device mappings - deactivate_device_mappings # check if we can repart this disk if ! check_repart_possible \ ${disk_root_mbytes} ${disk_free_mbytes} ${min_additional_mbytes} then return 1 fi + # deactivate all active device mappings + deactivate_device_mappings # repart root partition local command_query local root_part_size=+${disk_have_root_system_mbytes}M @@ -167,14 +174,14 @@ if [ "${min_additional_mbytes}" -lt 5 ];then min_additional_mbytes=5 fi - # deactivate all active device mappings - deactivate_device_mappings # check if we can repart this disk if ! check_repart_possible \ ${disk_root_mbytes} ${disk_free_mbytes} ${min_additional_mbytes} then return 1 fi + # deactivate all active device mappings + deactivate_device_mappings # create lvm.conf appropriate for resize setup_lvm_config # repart lvm partition @@ -311,3 +318,6 @@ # create swap space create_swap "$(get_swap_map)" + +# recreate device maps and retrigger systemd generators +activate_device_mappings diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/dracut/modules.d/99kiwi-lib/kiwi-filesystem-lib.sh new/kiwi-9.13.5/dracut/modules.d/99kiwi-lib/kiwi-filesystem-lib.sh --- old/kiwi-9.13.1/dracut/modules.d/99kiwi-lib/kiwi-filesystem-lib.sh 2018-01-25 09:53:29.000000000 +0100 +++ new/kiwi-9.13.5/dracut/modules.d/99kiwi-lib/kiwi-filesystem-lib.sh 2018-03-06 15:51:31.000000000 +0100 @@ -86,11 +86,12 @@ # hook to update the system fstab # """ local device=$1 + local swap_label="SWAP" test -n "${device}" || return - if ! mkswap "${device}" 1>&2;then + if ! mkswap "${device}" --label "${swap_label}" 1>&2;then die "Failed to create swap signature" fi - echo "${device} swap swap defaults 0 0" > /fstab.swap + echo "LABEL=${swap_label} swap swap defaults 0 0" > /fstab.swap } function merge_swap_to_fstab { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/dracut/modules.d/99kiwi-lib/kiwi-partitions-lib.sh new/kiwi-9.13.5/dracut/modules.d/99kiwi-lib/kiwi-partitions-lib.sh --- old/kiwi-9.13.1/dracut/modules.d/99kiwi-lib/kiwi-partitions-lib.sh 2018-01-22 19:28:52.000000000 +0100 +++ new/kiwi-9.13.5/dracut/modules.d/99kiwi-lib/kiwi-partitions-lib.sh 2018-02-28 14:43:13.000000000 +0100 @@ -267,10 +267,26 @@ local rest_bytes rest_bytes=${disk_bytes} local part_bytes=0 + local part_count=0 + local part_uuids for part in $( lsblk -p -r -o NAME,TYPE "${disk}" | grep part | cut -f1 -d ' ' );do - part_bytes=$((part_bytes + $(blockdev --getsize64 "${part}"))) + current_part_uuid=$(get_partition_uuid "${part}") + for part_uuid in ${part_uuids[*]};do + if [ "${current_part_uuid}" = "${part_uuid}" ];then + # this partition uuid was already handled. The device + # node is pointing to the same physical device and + # should only be taken into account once + unset part + break + fi + done + if [ ! -z "${part}" ]; then + part_bytes=$((part_bytes + $(blockdev --getsize64 "${part}"))) + part_uuids[${part_count}]=${current_part_uuid} + part_count=$((part_count + 1)) + fi done rest_bytes=$((rest_bytes - part_bytes)) echo ${rest_bytes} @@ -280,6 +296,10 @@ blkid -s PTTYPE -o value "$1" } +function get_partition_uuid { + blkid -s PARTUUID -o value "$1" +} + function relocate_gpt_at_end_of_disk { local cmd local cmd_file=/part.input diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/bootloader/config/grub2.py new/kiwi-9.13.5/kiwi/bootloader/config/grub2.py --- old/kiwi-9.13.1/kiwi/bootloader/config/grub2.py 2018-02-16 16:13:10.000000000 +0100 +++ new/kiwi-9.13.5/kiwi/bootloader/config/grub2.py 2018-03-06 17:01:45.000000000 +0100 @@ -652,21 +652,31 @@ def _create_early_boot_script_for_uuid_search(self, filename, uuid): with open(filename, 'w') as early_boot: early_boot.write( - 'search --fs-uuid --set=root %s\n' % uuid + 'set btrfs_relative_path="yes"{0}'.format(os.linesep) ) early_boot.write( - 'set prefix=($root)%s/%s\n' % ( - self.get_boot_path(), self.boot_directory_name + 'search --fs-uuid --set=root {0}{1}'.format(uuid, os.linesep) + ) + early_boot.write( + 'set prefix=($root){0}/{1}{2}'.format( + self.get_boot_path(), self.boot_directory_name, os.linesep ) ) def _create_early_boot_script_for_mbrid_search(self, filename, mbrid): with open(filename, 'w') as early_boot: early_boot.write( - 'search --file --set=root /boot/%s\n' % mbrid.get_id() + 'set btrfs_relative_path="yes"{0}'.format(os.linesep) + ) + early_boot.write( + 'search --file --set=root /boot/{0}{1}'.format( + mbrid.get_id(), os.linesep + ) ) early_boot.write( - 'set prefix=($root)/boot/%s\n' % self.boot_directory_name + 'set prefix=($root)/boot/{0}{1}'.format( + self.boot_directory_name, os.linesep + ) ) def _get_grub2_boot_path(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/filesystem/isofs.py new/kiwi-9.13.5/kiwi/filesystem/isofs.py --- old/kiwi-9.13.1/kiwi/filesystem/isofs.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/kiwi/filesystem/isofs.py 2018-03-06 09:32:32.000000000 +0100 @@ -19,9 +19,6 @@ from kiwi.filesystem.base import FileSystemBase from kiwi.command import Command from kiwi.iso import Iso -from kiwi.path import Path - -from kiwi.exceptions import KiwiIsoToolError class FileSystemIsoFs(FileSystemBase): @@ -46,7 +43,7 @@ iso.add_efi_loader_parameters() Command.run( [ - self._find_iso_creation_tool() + Iso.get_iso_creation_tool() ] + iso.get_iso_creation_parameters() + [ '-o', filename, self.root_dir ] @@ -54,7 +51,7 @@ hybrid_offset = iso.create_header_end_block(filename) Command.run( [ - self._find_iso_creation_tool(), + Iso.get_iso_creation_tool(), '-hide', iso.header_end_name, '-hide-joliet', iso.header_end_name ] + iso.get_iso_creation_parameters() + [ @@ -64,19 +61,3 @@ iso.relocate_boot_catalog(filename) iso.fix_boot_catalog(filename) return hybrid_offset - - def _find_iso_creation_tool(self): - """ - There are tools by J.Schilling and tools from the community - Depending on what is installed a decision needs to be made - """ - iso_creation_tools = ['mkisofs', 'genisoimage'] - for tool in iso_creation_tools: - tool_found = Path.which(tool) - if tool_found: - return tool_found - - raise KiwiIsoToolError( - 'No iso creation tool found, searched for: %s' % - iso_creation_tools - ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/iso.py new/kiwi-9.13.5/kiwi/iso.py --- old/kiwi-9.13.1/kiwi/iso.py 2017-11-15 11:11:58.000000000 +0100 +++ new/kiwi-9.13.5/kiwi/iso.py 2018-03-06 11:24:25.000000000 +0100 @@ -29,6 +29,7 @@ from builtins import bytes # project +from .utils.command_capabilities import CommandCapabilities from .logger import log from .path import Path from .command import Command @@ -272,6 +273,39 @@ ) log.debug('Fixed iso catalog contents') + @classmethod + def get_iso_creation_tool(self): + """ + There are tools by J.Schilling and tools from the community + Depending on what is installed a decision needs to be made + """ + iso_creation_tools = ['mkisofs', 'genisoimage'] + for tool in iso_creation_tools: + tool_found = Path.which(tool) + if tool_found: + return tool_found + + raise KiwiIsoToolError( + 'No iso creation tool found, searched for: %s' % + iso_creation_tools + ) + + @classmethod + def get_isoinfo_tool(self): + """ + There are tools by J.Schilling and tools from the community + Depending on what is installed a decision needs to be done + """ + alternative_lookup_paths = ['/usr/lib/genisoimage'] + isoinfo = Path.which('isoinfo', alternative_lookup_paths) + if isoinfo: + return isoinfo + + raise KiwiIsoToolError( + 'No isoinfo tool found, searched in PATH: %s and %s' % + (os.environ.get('PATH'), alternative_lookup_paths) + ) + def init_iso_creation_parameters(self, custom_args=None): """ Create a set of standard parameters for the main isolinux loader @@ -322,9 +356,14 @@ """ loader_file = self.boot_path + '/efi' if os.path.exists(os.sep.join([self.source_dir, loader_file])): + self.iso_loaders.append('-eltorito-alt-boot') + iso_tool = self.get_iso_creation_tool() + if iso_tool and CommandCapabilities.has_option_in_help( + iso_tool, '-eltorito-platform', raise_on_error=False + ): + self.iso_loaders += ['-eltorito-platform', 'efi'] self.iso_loaders += [ - '-eltorito-alt-boot', '-b', loader_file, - '-no-emul-boot', '-joliet-long' + '-b', loader_file, '-no-emul-boot', '-joliet-long' ] loader_file_512_byte_blocks = os.path.getsize( os.sep.join([self.source_dir, loader_file]) @@ -406,7 +445,7 @@ 'listing_type', ['name', 'filetype', 'start'] ) listing = Command.run( - [self._find_isoinfo_tool(), '-R', '-l', '-i', isofile] + [self.get_isoinfo_tool(), '-R', '-l', '-i', isofile] ) listing_result = {} for line in listing.output.split('\n'): @@ -458,20 +497,6 @@ ['bash', '-c', bash_command] ) - def _find_isoinfo_tool(self): - """ - There are tools by J.Schilling and tools from the community - Depending on what is installed a decision needs to be done - """ - alternative_lookup_paths = ['/usr/lib/genisoimage'] - isoinfo = Path.which('isoinfo', alternative_lookup_paths) - if isoinfo: - return isoinfo - raise KiwiIsoToolError( - 'No isoinfo tool found, searched in PATH: %s and %s' % - (os.environ.get('PATH'), alternative_lookup_paths) - ) - def _create_sortfile(self): catalog_file = \ self.source_dir + '/' + self.boot_path + '/boot.catalog' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/package_manager/apt.py new/kiwi-9.13.5/kiwi/package_manager/apt.py --- old/kiwi-9.13.1/kiwi/package_manager/apt.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/kiwi/package_manager/apt.py 2018-03-06 11:24:25.000000000 +0100 @@ -54,6 +54,7 @@ self.custom_args = custom_args if not custom_args: self.custom_args = [] + self.deboostrap_minbase = True runtime_config = self.repository.runtime_config() self.apt_get_args = runtime_config['apt_get_args'] @@ -139,12 +140,13 @@ 'provided key will only be used inside the chroot ' 'environment' ) - Command.run( - [ - 'debootstrap', '--no-check-gpg', self.distribution, - bootstrap_dir, self.distribution_path - ], self.command_env - ) + cmd = ['debootstrap', '--no-check-gpg'] + if self.deboostrap_minbase: + cmd.append('--variant=minbase') + cmd.extend([ + self.distribution, bootstrap_dir, self.distribution_path + ]) + Command.run(cmd, self.command_env) data = DataSync( bootstrap_dir + '/', self.root_dir ) @@ -223,6 +225,7 @@ """ if '--no-install-recommends' not in self.custom_args: self.custom_args.append('--no-install-recommends') + self.deboostrap_minbase = True def process_plus_recommended(self): """ @@ -230,6 +233,7 @@ """ if '--no-install-recommends' in self.custom_args: self.custom_args.remove('--no-install-recommends') + self.deboostrap_minbase = False def match_package_installed(self, package_name, apt_get_output): """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/partitioner/base.py new/kiwi-9.13.5/kiwi/partitioner/base.py --- old/kiwi-9.13.1/kiwi/partitioner/base.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/kiwi/partitioner/base.py 2018-03-06 15:51:31.000000000 +0100 @@ -98,3 +98,11 @@ Implementation in specialized partitioner class """ raise NotImplementedError + + def resize_table(self, entries=None): + """ + Resize partition table + + :param int entries: unused + """ + raise NotImplementedError diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/partitioner/dasd.py new/kiwi-9.13.5/kiwi/partitioner/dasd.py --- old/kiwi-9.13.1/kiwi/partitioner/dasd.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/kiwi/partitioner/dasd.py 2018-03-06 15:51:31.000000000 +0100 @@ -76,3 +76,11 @@ # are not able to detect real errors with the fdasd operation at # that point. log.debug('potential fdasd errors were ignored') + + def resize_table(self, entries=None): + """ + Resize partition table + + Nothing to be done here for DASD devices + """ + pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/partitioner/gpt.py new/kiwi-9.13.5/kiwi/partitioner/gpt.py --- old/kiwi-9.13.1/kiwi/partitioner/gpt.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/kiwi/partitioner/gpt.py 2018-03-06 15:51:31.000000000 +0100 @@ -136,3 +136,16 @@ if efi_partition_number: # turn former EFI partition into standard linux partition self.set_flag(efi_partition_number, 't.linux') + + def resize_table(self, entries=128): + """ + Resize partition table + + :param int entries: default entries + """ + Command.run( + [ + 'sgdisk', '--resize-table', '{0}'.format(entries), + self.disk_device + ] + ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/partitioner/msdos.py new/kiwi-9.13.5/kiwi/partitioner/msdos.py --- old/kiwi-9.13.1/kiwi/partitioner/msdos.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/kiwi/partitioner/msdos.py 2018-03-06 15:51:31.000000000 +0100 @@ -120,3 +120,11 @@ ) else: log.warning('Flag %s ignored on msdos', flag_name) + + def resize_table(self, entries=None): + """ + Resize partition table + + Nothing to be done here for msdos table + """ + pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/storage/loop_device.py new/kiwi-9.13.5/kiwi/storage/loop_device.py --- old/kiwi-9.13.1/kiwi/storage/loop_device.py 2017-11-15 11:11:58.000000000 +0100 +++ new/kiwi-9.13.5/kiwi/storage/loop_device.py 2018-03-06 15:51:31.000000000 +0100 @@ -72,14 +72,19 @@ """ return True - def create(self): + def create(self, overwrite=True): """ - Setup a loop device of the specified size and blocksize + Setup a loop device of the blocksize given in the constructor + The file to loop is created with the size specified in the + constructor unless an existing one should not be overwritten + + :param bool overwrite: overwrite existing file to loop """ - qemu_img_size = format(self.filesize_mbytes) + 'M' - Command.run( - ['qemu-img', 'create', self.filename, qemu_img_size] - ) + if overwrite: + qemu_img_size = format(self.filesize_mbytes) + 'M' + Command.run( + ['qemu-img', 'create', self.filename, qemu_img_size] + ) loop_options = [] if self.blocksize_bytes and self.blocksize_bytes != 512: loop_options.append('--logical-blocksize') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/storage/subformat/ova.py new/kiwi-9.13.5/kiwi/storage/subformat/ova.py --- old/kiwi-9.13.1/kiwi/storage/subformat/ova.py 2018-02-07 14:10:14.000000000 +0100 +++ new/kiwi-9.13.5/kiwi/storage/subformat/ova.py 2018-03-06 09:32:32.000000000 +0100 @@ -17,12 +17,13 @@ # import os import stat +from textwrap import dedent # project from kiwi.storage.subformat.vmdk import DiskFormatVmdk from kiwi.command import Command -from kiwi.logger import log from kiwi.utils.command_capabilities import CommandCapabilities +from kiwi.path import Path from kiwi.exceptions import ( KiwiFormatSetupError, @@ -55,26 +56,42 @@ self.options = self.get_qemu_option_list(custom_args) def create_image_format(self): - # Creates the vmdk disk image and vmx config + # Check for required ovftool + ovftool = Path.which(filename='ovftool', access_mode=os.X_OK) + if not ovftool: + tool_not_found_message = dedent('''\n + Required tool {0} not found in PATH on the build host + + Building OVA images requires VMware's {0} tool which + can be installed from the following location + + https://www.vmware.com/support/developer/ovf + ''') + raise KiwiCommandNotFound( + tool_not_found_message.format(ovftool) + ) + + # Create the vmdk disk image and vmx config super(DiskFormatOva, self).create_image_format() - # Converts to ova using ovftool + + # Convert to ova using ovftool vmx = self.get_target_file_path_for_format('vmx') ova = self.get_target_file_path_for_format('ova') try: os.unlink(ova) except OSError: pass - ovftool_cmd = ['ovftool'] + ovftool_options = [] if CommandCapabilities.has_option_in_help( - 'ovftool', '--shaAlgorithm', raise_on_error=False): - ovftool_cmd.append('--shaAlgorithm=SHA1') - ovftool_cmd.extend([vmx, ova]) - try: - Command.run(ovftool_cmd) - except KiwiCommandNotFound as e: - log.info('Building OVA images requires VMware\'s ovftool, get it from https://www.vmware.com/support/developer/ovf/') - raise e - # ovftool ignores the umask and creates files with 0600 for some reason + ovftool, '--shaAlgorithm', raise_on_error=False + ): + ovftool_options.append('--shaAlgorithm=SHA1') + Command.run( + [ovftool] + ovftool_options + [vmx, ova] + ) + # ovftool ignores the umask and creates files with 0600 + # apply file permission bits set in the vmx file to the + # ova file st = os.stat(vmx) os.chmod(ova, stat.S_IMODE(st.st_mode)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/tasks/image_resize.py new/kiwi-9.13.5/kiwi/tasks/image_resize.py --- old/kiwi-9.13.1/kiwi/tasks/image_resize.py 2017-11-22 09:06:34.000000000 +0100 +++ new/kiwi-9.13.5/kiwi/tasks/image_resize.py 2018-03-06 15:51:31.000000000 +0100 @@ -46,6 +46,9 @@ import os # project +from kiwi.firmware import FirmWare +from kiwi.storage.loop_device import LoopDevice +from kiwi.partitioner import Partitioner from kiwi.tasks.base import CliTask from kiwi.help import Help from kiwi.logger import log @@ -107,10 +110,23 @@ new_disk_size = StringToSize.to_bytes(self.command_args['--size']) + # resize raw disk log.info( 'Resizing raw disk to {0} bytes'.format(new_disk_size) ) resize_result = image_format.resize_raw_disk(new_disk_size) + + # resize raw disk partition table + firmware = FirmWare(self.xml_state) + loop_provider = LoopDevice(image_format.diskname) + loop_provider.create(overwrite=False) + partitioner = Partitioner( + firmware.get_partition_table_type(), loop_provider + ) + partitioner.resize_table() + del loop_provider + + # resize disk format from resized raw disk if disk_format and resize_result is True: log.info( 'Creating {0} disk format from resized raw disk'.format( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/utils/command_capabilities.py new/kiwi-9.13.5/kiwi/utils/command_capabilities.py --- old/kiwi-9.13.1/kiwi/utils/command_capabilities.py 2018-01-22 19:28:47.000000000 +0100 +++ new/kiwi-9.13.5/kiwi/utils/command_capabilities.py 2018-03-06 09:32:32.000000000 +0100 @@ -55,6 +55,9 @@ for line in command.output.splitlines(): if flag in line: return True + for line in command.error.splitlines(): + if flag in line: + return True except Exception: message = 'Could not parse {} output'.format(call) if raise_on_error: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi/version.py new/kiwi-9.13.5/kiwi/version.py --- old/kiwi-9.13.1/kiwi/version.py 2018-02-26 17:46:55.000000000 +0100 +++ new/kiwi-9.13.5/kiwi/version.py 2018-03-06 17:01:58.000000000 +0100 @@ -18,5 +18,5 @@ """ Global version information used in kiwi and the package """ -__version__ = '9.13.1' -__githash__ = 'c0bd6ed9d860b4e993cc922a83a90894b2a2c476' +__version__ = '9.13.5' +__githash__ = '272af8560d4884b675f3c6489a0ada57d519ce42' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi.egg-info/PKG-INFO new/kiwi-9.13.5/kiwi.egg-info/PKG-INFO --- old/kiwi-9.13.1/kiwi.egg-info/PKG-INFO 2018-02-26 17:51:55.000000000 +0100 +++ new/kiwi-9.13.5/kiwi.egg-info/PKG-INFO 2018-03-06 17:07:19.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: kiwi -Version: 9.13.1 +Version: 9.13.5 Summary: KIWI - Appliance Builder (next generation) Home-page: http://suse.github.io/kiwi Author: Marcus Schaefer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/kiwi.egg-info/SOURCES.txt new/kiwi-9.13.5/kiwi.egg-info/SOURCES.txt --- old/kiwi-9.13.1/kiwi.egg-info/SOURCES.txt 2018-02-26 17:51:55.000000000 +0100 +++ new/kiwi-9.13.5/kiwi.egg-info/SOURCES.txt 2018-03-06 17:07:19.000000000 +0100 @@ -1,7 +1,6 @@ .bumpversion.cfg .coverage .landscape.yml -.travis.requirements.txt .travis.yml .virtualenv.dev-requirements.txt .virtualenv.requirements.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/package/python-kiwi-spec-template new/kiwi-9.13.5/package/python-kiwi-spec-template --- old/kiwi-9.13.1/package/python-kiwi-spec-template 2018-02-15 12:00:05.000000000 +0100 +++ new/kiwi-9.13.5/package/python-kiwi-spec-template 2018-03-06 09:32:32.000000000 +0100 @@ -136,7 +136,11 @@ %endif Requires: dosfstools Requires: e2fsprogs +%if 0%{?suse_version} >= 1500 +Requires: mkisofs +%else Requires: genisoimage +%endif Requires: grub2 Requires: kiwi-man-pages Requires: kiwi-tools @@ -210,7 +214,11 @@ %endif Requires: dosfstools Requires: e2fsprogs +%if 0%{?suse_version} >= 1500 +Requires: mkisofs +%else Requires: genisoimage +%endif Requires: grub2 Requires: kiwi-man-pages Requires: kiwi-tools @@ -372,11 +380,15 @@ Requires: device-mapper %endif Requires: dracut +%if 0%{?suse_version} >= 1500 +Requires: mkisofs +%else %if 0%{?fedora} || 0%{?rhel} || 0%{?debian} || 0%{?ubuntu} Requires: genisoimage %else Requires: cdrkit-cdrtools-compat %endif +%endif License: GPL-3.0+ Group: %{sysgroup} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/test/unit/bootloader_config_grub2_test.py new/kiwi-9.13.5/test/unit/bootloader_config_grub2_test.py --- old/kiwi-9.13.1/test/unit/bootloader_config_grub2_test.py 2018-02-14 10:18:04.000000000 +0100 +++ new/kiwi-9.13.5/test/unit/bootloader_config_grub2_test.py 2018-03-06 17:01:45.000000000 +0100 @@ -574,6 +574,7 @@ 'root_dir/boot/efi/EFI/BOOT/earlyboot.cfg', 'w' ) assert file_mock.write.call_args_list == [ + call('set btrfs_relative_path="yes"\n'), call('search --fs-uuid --set=root 0815\n'), call('set prefix=($root)//grub2\n') ] @@ -791,6 +792,7 @@ call('root_dir//EFI/BOOT/earlyboot.cfg', 'w') ] assert file_mock.write.call_args_list == [ + call('set btrfs_relative_path="yes"\n'), call('search --file --set=root /boot/0xffffffff\n'), call('set prefix=($root)/boot/grub2\n') ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/test/unit/filesystem_isofs_test.py new/kiwi-9.13.5/test/unit/filesystem_isofs_test.py --- old/kiwi-9.13.1/test/unit/filesystem_isofs_test.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/test/unit/filesystem_isofs_test.py 2018-03-06 09:32:32.000000000 +0100 @@ -3,10 +3,6 @@ import mock -from .test_helper import raises - -from kiwi.exceptions import KiwiIsoToolError - from kiwi.filesystem.isofs import FileSystemIsoFs @@ -22,36 +18,19 @@ assert self.isofs.custom_args['mount_options'] == [] assert self.isofs.custom_args['some_args'] == 'data' - @raises(KiwiIsoToolError) - @patch('kiwi.filesystem.isofs.Command.run') - @patch('kiwi.filesystem.isofs.Iso') - @patch('kiwi.filesystem.isofs.Path.which') - def test_create_on_file_no_tool_found( - self, mock_which, mock_iso, mock_command - ): - mock_which.return_value = None - self.isofs.create_on_file('myimage', None) - @patch('kiwi.filesystem.isofs.Command.run') + @patch('kiwi.filesystem.isofs.Iso.get_iso_creation_tool') @patch('kiwi.filesystem.isofs.Iso') - @patch('kiwi.filesystem.isofs.Path.which') - def test_create_on_file_mkisofs( - self, mock_which, mock_iso, mock_command + def test_create_on_file( + self, mock_iso, mock_get_iso_creation_tool, mock_command ): iso = mock.Mock() iso.header_end_name = 'header_end' iso.get_iso_creation_parameters = mock.Mock( return_value=['args'] ) + mock_get_iso_creation_tool.return_value = '/usr/bin/mkisofs' mock_iso.return_value = iso - path_return_values = [ - '/usr/bin/mkisofs', '/usr/bin/mkisofs' - ] - - def side_effect(arg): - return path_return_values.pop() - - mock_which.side_effect = side_effect self.isofs.create_on_file('myimage', None) iso.init_iso_creation_parameters.assert_called_once_with([]) iso.add_efi_loader_parameters.assert_called_once_with() @@ -67,49 +46,6 @@ '-hide-joliet', 'header_end', 'args', '-o', 'myimage', 'root_dir' ]) - ] - iso.relocate_boot_catalog.assert_called_once_with( - 'myimage' - ) - iso.fix_boot_catalog.assert_called_once_with( - 'myimage' - ) - - @patch('kiwi.filesystem.isofs.Command.run') - @patch('kiwi.filesystem.isofs.Iso') - @patch('kiwi.filesystem.isofs.Path.which') - def test_create_on_file_genisoimage( - self, mock_which, mock_iso, mock_command - ): - iso = mock.Mock() - iso.header_end_name = 'header_end' - iso.get_iso_creation_parameters = mock.Mock( - return_value=['args'] - ) - mock_iso.return_value = iso - path_return_values = [ - '/usr/bin/genisoimage', None, '/usr/bin/genisoimage', None - ] - - def side_effect(arg): - return path_return_values.pop() - - mock_which.side_effect = side_effect - self.isofs.create_on_file('myimage', None) - iso.init_iso_creation_parameters.assert_called_once_with([]) - iso.add_efi_loader_parameters.assert_called_once_with() - iso.create_header_end_block.assert_called_once_with( - 'myimage' - ) - assert mock_command.call_args_list == [ - call([ - '/usr/bin/genisoimage', 'args', '-o', 'myimage', 'root_dir' - ]), - call([ - '/usr/bin/genisoimage', '-hide', 'header_end', - '-hide-joliet', 'header_end', 'args', '-o', 'myimage', - 'root_dir' - ]) ] iso.relocate_boot_catalog.assert_called_once_with( 'myimage' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/test/unit/iso_test.py new/kiwi-9.13.5/test/unit/iso_test.py --- old/kiwi-9.13.1/test/unit/iso_test.py 2017-11-15 11:11:58.000000000 +0100 +++ new/kiwi-9.13.5/test/unit/iso_test.py 2018-03-06 11:24:25.000000000 +0100 @@ -136,20 +136,28 @@ @patch('os.path.exists') @patch('os.path.getsize') - def test_add_efi_loader_parameters(self, mock_getsize, mock_exists): + @patch('kiwi.iso.CommandCapabilities.has_option_in_help') + def test_add_efi_loader_parameters( + self, mock_has_option_in_help, mock_getsize, mock_exists + ): + mock_has_option_in_help.return_value = True mock_getsize.return_value = 4096 mock_exists.return_value = True self.iso.add_efi_loader_parameters() assert self.iso.iso_loaders == [ - '-eltorito-alt-boot', '-b', 'boot/x86_64/efi', - '-no-emul-boot', '-joliet-long', '-boot-load-size', '8' + '-eltorito-alt-boot', '-eltorito-platform', 'efi', + '-b', 'boot/x86_64/efi', + '-no-emul-boot', '-joliet-long', + '-boot-load-size', '8' ] @patch('os.path.exists') @patch('os.path.getsize') + @patch('kiwi.iso.CommandCapabilities.has_option_in_help') def test_add_efi_loader_parameters_big_loader( - self, mock_getsize, mock_exists + self, mock_has_option_in_help, mock_getsize, mock_exists ): + mock_has_option_in_help.return_value = False mock_getsize.return_value = 33554432 mock_exists.return_value = True self.iso.add_efi_loader_parameters() @@ -165,6 +173,12 @@ @raises(KiwiIsoToolError) @patch('os.path.exists') + def test_get_iso_creation_tool_no_tool_found(self, mock_exists): + mock_exists.return_value = False + self.iso.get_iso_creation_tool() + + @raises(KiwiIsoToolError) + @patch('os.path.exists') def test_isols_no_tool_found(self, mock_exists): mock_exists.return_value = False self.iso.isols('some-iso') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/test/unit/package_manager_apt_test.py new/kiwi-9.13.5/test/unit/package_manager_apt_test.py --- old/kiwi-9.13.1/test/unit/package_manager_apt_test.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/test/unit/package_manager_apt_test.py 2018-03-06 11:24:25.000000000 +0100 @@ -101,8 +101,8 @@ assert mock_run.call_args_list == [ call(command=['mountpoint', 'root-dir/dev'], raise_on_error=False), call([ - 'debootstrap', '--no-check-gpg', 'xenial', - 'root-dir.debootstrap', 'xenial_path'], + 'debootstrap', '--no-check-gpg', '--variant=minbase', + 'xenial', 'root-dir.debootstrap', 'xenial_path'], ['env']), call([ 'chroot', 'root-dir', 'apt-key', 'add', 'key-file.asc' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/test/unit/partitioner_base_test.py new/kiwi-9.13.5/test/unit/partitioner_base_test.py --- old/kiwi-9.13.1/test/unit/partitioner_base_test.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/test/unit/partitioner_base_test.py 2018-03-06 15:51:31.000000000 +0100 @@ -31,3 +31,7 @@ @raises(NotImplementedError) def test_set_mbr(self): self.partitioner.set_mbr() + + @raises(NotImplementedError) + def test_resize_table(self): + self.partitioner.resize_table() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/test/unit/partitioner_dasd_test.py new/kiwi-9.13.5/test/unit/partitioner_dasd_test.py --- old/kiwi-9.13.1/test/unit/partitioner_dasd_test.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/test/unit/partitioner_dasd_test.py 2018-03-06 15:51:31.000000000 +0100 @@ -65,3 +65,6 @@ self.file_mock.write.assert_called_once_with( 'n\np\n\n\nw\nq\n' ) + + def test_resize_table(self): + self.partitioner.resize_table() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/test/unit/partitioner_gpt_test.py new/kiwi-9.13.5/test/unit/partitioner_gpt_test.py --- old/kiwi-9.13.1/test/unit/partitioner_gpt_test.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/test/unit/partitioner_gpt_test.py 2018-03-06 15:51:31.000000000 +0100 @@ -77,3 +77,10 @@ call(['sgdisk', '-m', '1:2:3:4', '/dev/loop0']), call(['sgdisk', '-t', '4:8300', '/dev/loop0']) ] + + @patch('kiwi.partitioner.gpt.Command.run') + def test_resize_table(self, mock_command): + self.partitioner.resize_table(42) + mock_command.assert_called_once_with( + ['sgdisk', '--resize-table', '42', '/dev/loop0'] + ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/test/unit/partitioner_msdos_test.py new/kiwi-9.13.5/test/unit/partitioner_msdos_test.py --- old/kiwi-9.13.1/test/unit/partitioner_msdos_test.py 2017-09-15 10:37:16.000000000 +0200 +++ new/kiwi-9.13.5/test/unit/partitioner_msdos_test.py 2018-03-06 15:51:31.000000000 +0100 @@ -106,3 +106,6 @@ def test_set_flag_ignored(self, mock_warn): self.partitioner.set_flag(1, 't.csm') assert mock_warn.called + + def test_resize_table(self): + self.partitioner.resize_table() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/test/unit/storage_subformat_ova_test.py new/kiwi-9.13.5/test/unit/storage_subformat_ova_test.py --- old/kiwi-9.13.1/test/unit/storage_subformat_ova_test.py 2018-02-07 14:10:14.000000000 +0100 +++ new/kiwi-9.13.5/test/unit/storage_subformat_ova_test.py 2018-03-06 09:32:32.000000000 +0100 @@ -82,13 +82,15 @@ ) ] + @patch('kiwi.storage.subformat.ova.Path.which') @patch('kiwi.storage.subformat.ova.Command.run') @patch('os.stat') @patch('os.chmod') @patch_open def test_create_image_format( - self, mock_open, mock_chmod, mock_stat, mock_command + self, mock_open, mock_chmod, mock_stat, mock_command, mock_which ): + mock_which.return_value = 'ovftool' qemu_img_result = mock.Mock() ovftool_help_result = mock.Mock() ovftool_help_result.output = """This is a new ovftool @@ -114,25 +116,8 @@ 'target_dir/some-disk-image.x86_64-1.2.3.ova' ]) - @patch('kiwi.storage.subformat.ova.Command.run') - @patch_open + @patch('kiwi.storage.subformat.ova.Path.which') @raises(KiwiCommandNotFound) - def test_create_image_format_no_ovftool( - self, mock_open, mock_command - ): - qemu_img_result = mock.Mock() - ovftool_help_result = mock.Mock() - ovftool_help_result.output = "" - - command_results = [ - ovftool_help_result, qemu_img_result - ] - - def side_effect(arg): - if len(command_results) == 0: - raise KiwiCommandNotFound('ovftool not found') - return command_results.pop() - - mock_command.side_effect = side_effect - mock_open.return_value = self.context_manager_mock + def test_create_image_format_no_ovftool(self, mock_which): + mock_which.return_value = None self.disk_format.create_image_format() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/test/unit/tasks_image_resize_test.py new/kiwi-9.13.5/test/unit/tasks_image_resize_test.py --- old/kiwi-9.13.1/test/unit/tasks_image_resize_test.py 2017-11-22 09:06:34.000000000 +0100 +++ new/kiwi-9.13.5/test/unit/tasks_image_resize_test.py 2018-03-06 15:51:31.000000000 +0100 @@ -29,12 +29,27 @@ return_value=mock.Mock() ) + self.firmware = mock.Mock() + self.firmware.get_partition_table_type = mock.Mock( + return_value='gpt' + ) + self.partitioner = mock.Mock() + self.loop_provider = mock.Mock() self.image_format = mock.Mock() self.image_format.has_raw_disk = mock.Mock() self.image_format.diskname = 'some-disk.raw' kiwi.tasks.image_resize.DiskFormat = mock.Mock( return_value=self.image_format ) + kiwi.tasks.image_resize.FirmWare = mock.Mock( + return_value=self.firmware + ) + kiwi.tasks.image_resize.LoopDevice = mock.Mock( + return_value=self.loop_provider + ) + kiwi.tasks.image_resize.Partitioner = mock.Mock( + return_value=self.partitioner + ) self.task = ImageResizeTask() @@ -74,6 +89,8 @@ self.task.command_args['resize'] = True self.image_format.resize_raw_disk.return_value = True self.task.process() + self.loop_provider.create.assert_called_once_with(overwrite=False) + self.partitioner.resize_table.assert_called_once_with() self.image_format.resize_raw_disk.assert_called_once_with( 42 * 1024 * 1024 * 1024 ) @@ -85,6 +102,8 @@ self.task.command_args['--size'] = '42m' self.image_format.resize_raw_disk.return_value = True self.task.process() + self.loop_provider.create.assert_called_once_with(overwrite=False) + self.partitioner.resize_table.assert_called_once_with() self.image_format.resize_raw_disk.assert_called_once_with( 42 * 1024 * 1024 ) @@ -96,6 +115,8 @@ self.task.command_args['--size'] = '42' self.image_format.resize_raw_disk.return_value = True self.task.process() + self.loop_provider.create.assert_called_once_with(overwrite=False) + self.partitioner.resize_table.assert_called_once_with() self.image_format.resize_raw_disk.assert_called_once_with( 42 ) @@ -108,6 +129,8 @@ self.task.command_args['--size'] = '42' self.image_format.resize_raw_disk.return_value = False self.task.process() + self.loop_provider.create.assert_called_once_with(overwrite=False) + self.partitioner.resize_table.assert_called_once_with() self.image_format.resize_raw_disk.assert_called_once_with( 42 ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/test/unit/utils_command_capabilities_test.py new/kiwi-9.13.5/test/unit/utils_command_capabilities_test.py --- old/kiwi-9.13.1/test/unit/utils_command_capabilities_test.py 2018-01-22 19:28:47.000000000 +0100 +++ new/kiwi-9.13.5/test/unit/utils_command_capabilities_test.py 2018-03-06 09:32:32.000000000 +0100 @@ -11,11 +11,13 @@ class TestCommandCapabilities(object): @patch('kiwi.command.Command.run') def test_has_option_in_help(self, mock_run): - command_type = namedtuple('command', ['output']) + command_type = namedtuple('command', ['output', 'error']) mock_run.return_value = command_type( - output="Dummy line\n\t--some-flag\n\t--some-other-flag" + output="Dummy line\n\t--some-flag\n\t--some-other-flag", + error="Dummy line\n\t--error-flag\n\t--some-other-flag" ) assert CommandCapabilities.has_option_in_help('command', '--some-flag') + assert CommandCapabilities.has_option_in_help('command', '--error-flag') assert CommandCapabilities.has_option_in_help( 'command', '--some-flag', help_flags=['subcommand', '-h'] ) @@ -28,6 +30,7 @@ ) mock_run.assert_has_calls([ call(['command', '--help']), + call(['command', '--help']), call(['command', 'subcommand', '-h']), call(['chroot', 'root_dir', 'command', 'subcommand', '-h']), call(['command', '--help']) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi-9.13.1/tox.ini new/kiwi-9.13.5/tox.ini --- old/kiwi-9.13.1/tox.ini 2018-02-26 17:46:50.000000000 +0100 +++ new/kiwi-9.13.5/tox.ini 2018-02-27 16:05:14.000000000 +0100 @@ -15,8 +15,9 @@ skipsdist = True envlist = check, - unit_py3, - unit_py2, + unit_py3_6, + unit_py3_4, + unit_py2_7, doc @@ -29,13 +30,15 @@ /usr/bin/shellcheck /bin/bash basepython = - {check,doc,doc_travis,doc_travis_deploy}: python3.4 - unit_py3: python3.4 - unit_py2: python2.7 + {check,doc,doc_travis,doc_travis_deploy}: python3 + unit_py3_6: python3.6 + unit_py3_4: python3.4 + unit_py2_7: python2.7 envdir = - {check,doc,doc_travis,doc_travis_deploy}: {toxworkdir}/3.4 - unit_py3: {toxworkdir}/3.4 - unit_py2: {toxworkdir}/2.7 + {check,doc,doc_travis,doc_travis_deploy}: {toxworkdir}/3 + unit_py3_6: {toxworkdir}/3.6 + unit_py3_4: {toxworkdir}/3.4 + unit_py2_7: {toxworkdir}/2.7 passenv = * usedevelop = True @@ -43,8 +46,8 @@ -r.virtualenv.dev-requirements.txt -# Unit Test run with basepython set to 2.x -[testenv:unit_py2] +# Unit Test run with basepython set to 2.7 +[testenv:unit_py2_7] skip_install = True usedevelop = True setenv = @@ -57,12 +60,12 @@ changedir=test/unit commands = bash -c 'cd ../../ && ./setup.py develop' - py.test --no-cov-on-fail --cov=kiwi \ + pytest --no-cov-on-fail --cov=kiwi \ --cov-report=term-missing --cov-fail-under=100 --cov-config .coveragerc -# Unit Test run with basepython set to 3.x -[testenv:unit_py3] +# Unit Test run with basepython set to 3.4 +[testenv:unit_py3_4] skip_install = True usedevelop = True setenv = @@ -75,7 +78,25 @@ changedir=test/unit commands = bash -c 'cd ../../ && ./setup.py develop' - py.test --no-cov-on-fail --cov=kiwi \ + pytest --no-cov-on-fail --cov=kiwi \ + --cov-report=term-missing --cov-fail-under=100 --cov-config .coveragerc + + +# Unit Test run with basepython set to 3.6 +[testenv:unit_py3_6] +skip_install = True +usedevelop = True +setenv = + PYTHONPATH={toxinidir}/test + PYTHONUNBUFFERED=yes + WITH_COVERAGE=yes +passenv = + * +deps = {[testenv]deps} +changedir=test/unit +commands = + bash -c 'cd ../../ && ./setup.py develop' + pytest --no-cov-on-fail --cov=kiwi \ --cov-report=term-missing --cov-fail-under=100 --cov-config .coveragerc