![](https://seccdn.libravatar.org/avatar/e2145bc5cf53dda95c308a3c75e8fef3.jpg?s=120&d=mm&r=g)
Hello community, here is the log from the commit of package kiwi for openSUSE:Factory checked in at 2016-03-18 21:30:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kiwi (Old) and /work/SRC/openSUSE:Factory/.kiwi.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "kiwi" Changes: -------- --- /work/SRC/openSUSE:Factory/kiwi/kiwi.changes 2016-03-04 19:29:43.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.kiwi.new/kiwi.changes 2016-03-18 21:30:26.000000000 +0100 @@ -1,0 +2,101 @@ +Mon Mar 14 10:29:13 CET 2016 - ms@suse.de + +- v7.03.64 released + +------------------------------------------------------------------- +Mon Mar 14 10:28:54 CET 2016 - ms@suse.de + +- Revert "Added pv kernel profile" + + There is no kernel-pv + This reverts commit 8ca75eeee4bd7999a20ed050d9ebe4ba75607c5d. + +------------------------------------------------------------------- +Sun Mar 13 12:04:53 CET 2016 - ms@suse.de + +- v7.03.63 released + +------------------------------------------------------------------- +Sun Mar 13 12:03:31 CET 2016 - ms@suse.de + +- Use shim-install to setup EFI secure boot + + This fixes (bnc#968475) + +------------------------------------------------------------------- +Fri Mar 11 15:20:25 CET 2016 - ms@suse.de + +- Added pv kernel profile + +------------------------------------------------------------------- +Fri Mar 4 18:47:53 CET 2016 - asarai@suse.de + +- rpm: require tar>=1.2.7 for --xattrs support + + tar 1.2.6 and earlier doesn't have support for the --xattrs options + (which is necessary in order to build valid Docker image root + filesystems). + + Signed-off-by: Aleksa Sarai <asarai@suse.com> + +------------------------------------------------------------------- +Fri Mar 4 17:27:33 CET 2016 - asarai@suse.de + +- travis: install newest version of GNU tar from trusty source + +--xattrs support was added quite some time ago, but Travis doesn't seem + to have a recent enough version of GNU tar. Realistically, most + up-to-date systems do, so we can just install the latest version here. + + In order to install the latest version, we have to build it from the + Ubuntu 14.04 source repo. + + Signed-off-by: Aleksa Sarai <asarai@suse.com> + +------------------------------------------------------------------- +Fri Mar 4 16:42:05 CET 2016 - asarai@suse.de + +- modules: KIWIContainerBuilder: preserve xattrs + + tar doesn't preserve extended attributes by default, causing Docker + images to not have any correct set-capabilities bits set on binaries + such as ping. Fix this by adding the --xattrs flag to the tar command + run to generate the root filesystem image. + + Signed-off-by: Aleksa Sarai <asarai@suse.com> + +------------------------------------------------------------------- +Fri Mar 4 10:04:57 CET 2016 - ms@suse.de + +- v7.03.62 released + +------------------------------------------------------------------- +Thu Mar 3 11:08:06 CET 2016 - ms@suse.de + +- v7.03.61 released + +------------------------------------------------------------------- +Thu Mar 3 11:07:41 CET 2016 - ms@suse.de + +- Fixed gce disk format + + The order of the files in the tarball is important. The first + entry must be the manifest.json followed by disk.raw. In addition + the style of the manifest.json has been adapted too. A space after + colon seems to be required for gce to accept the data + +------------------------------------------------------------------- +Tue Mar 1 17:45:46 CET 2016 - ms@suse.de + +- v7.03.60 released + +------------------------------------------------------------------- +Tue Mar 1 17:42:51 CET 2016 - ms@suse.de + +- Fixed global mount method + + There could be a max of four partitions in the image setup + bios_grub/prep | EFI | boot | root. Thus the search should + expect the layout correctly. Fixes #554 + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kiwi.spec ++++++ --- /var/tmp/diff_new_pack.rNLBhZ/_old 2016-03-18 21:30:28.000000000 +0100 +++ /var/tmp/diff_new_pack.rNLBhZ/_new 2016-03-18 21:30:28.000000000 +0100 @@ -27,7 +27,7 @@ Name: kiwi License: GPL-2.0 Group: System/Management -Version: 7.03.59 +Version: 7.03.64 Provides: kiwi-schema = 6.2 Provides: kiwi-image:aci Provides: kiwi-image:lxc @@ -90,7 +90,7 @@ Requires: perl-libwww-perl Requires: rsync Requires: screen -Requires: tar +Requires: tar >= 1.2.7 Requires: psmisc Requires: util-linux %if 0%{?suse_version} == 1110 ++++++ kiwi-docu.tar.bz2 ++++++ ++++++ kiwi-repo.tar.bz2 ++++++ ++++++ kiwi.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/.revision new/kiwi/.revision --- old/kiwi/.revision 2015-12-17 09:28:28.000000000 +0100 +++ new/kiwi/.revision 2016-03-10 16:36:42.000000000 +0100 @@ -1 +1 @@ -4a1e250ae109e86ae8577239c6b0b0879b2ae8a3 +abefa16730fcf356afb2b45b71d93d13dae02780 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/.travis.yml new/kiwi/.travis.yml --- old/kiwi/.travis.yml 2014-12-15 14:32:37.000000000 +0100 +++ new/kiwi/.travis.yml 2016-03-10 16:36:42.000000000 +0100 @@ -11,6 +11,9 @@ - sudo apt-get update -qq - sudo apt-get install -y xsltproc - sudo apt-get install -y syslinux + - echo "deb http://archive.ubuntu.com/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list + - sudo apt-get update + - sudo apt-get install -y -t trusty tar install: - cpanm -f -n $(cat .perlmodules | tr "\n" " ") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIBoot.pm new/kiwi/modules/KIWIBoot.pm --- old/kiwi/modules/KIWIBoot.pm 2016-03-01 12:13:56.000000000 +0100 +++ new/kiwi/modules/KIWIBoot.pm 2016-03-12 21:32:25.000000000 +0100 @@ -3932,77 +3932,77 @@ #========================================== # Use signed EFI modules from packages UEFI #------------------------------------------ - if ($firmware eq "uefi") { - $kiwi -> info ("Importing grub2 shim/signed efi modules"); - my $s_data = $stages{efi}{data}; - my $s_shim_ms = $stages{efi}{shim_ms}; - my $s_shim_suse = $stages{efi}{shim_suse}; - my $s_signed = $stages{efi}{signed}; - my $fo_bin; - if ($arch eq 'x86_64') { - $fo_bin = 'bootx64.efi'; - } elsif ($arch =~ /i.86/) { - $fo_bin = 'bootx32.efi'; - } elsif (($arch eq 'aarch64') || ($arch eq 'arm64')) { - $fo_bin = 'bootaa64.efi'; - } elsif ($arch =~ /arm/) { - $fo_bin = 'bootarm.efi'; - } - $result = 0; - if ($zipped) { - $status= KIWIQX::qxx ( - "$unzip | (cd $tmpdir && cpio -i -d $s_data 2>&1)" - ); - } else { - $status= KIWIQX::qxx ( - "cat $initrd | (cd $tmpdir && cpio -i -d $s_data 2>&1)" - ); - } - if ((! -e "$tmpdir/$s_shim_ms") && (! -e "$tmpdir/$s_shim_suse")) { - my $s_shim = "$tmpdir/$s_shim_ms"; - if (-e $s_shim) { - $s_shim = "$tmpdir/$s_shim_suse" - } - $kiwi -> failed (); - $kiwi -> error ( - "Can't find shim $s_shim in initrd"); - $kiwi -> failed (); - return; - } - if (! -e "$tmpdir/$s_signed") { - $kiwi -> failed (); - $kiwi -> error ( - "Can't find grub2 $s_signed in initrd"); - $kiwi -> failed (); - return; - } - $status = KIWIQX::qxx ( - "cp $tmpdir/$s_shim_ms $tmpdir/EFI/BOOT/$fo_bin 2>&1" - ); - $result = $? >> 8; - if ($result != 0) { - $status = KIWIQX::qxx ( - "cp $tmpdir/$s_shim_suse $tmpdir/EFI/BOOT/$fo_bin 2>&1" - ); - $result = $? >> 8; - } - if ($result != 0) { - $kiwi -> failed (); - $kiwi -> error ("Failed to copy shim module: $status"); - $kiwi -> failed (); - return; - } - $status = KIWIQX::qxx ( - "cp $tmpdir/$s_signed $tmpdir/EFI/BOOT/grub.efi 2>&1"); - $result = $? >> 8; - if ($result != 0) { - $kiwi -> failed (); - $kiwi -> error ("Failed to copy signed module: $status"); - $kiwi -> failed (); - return; - } - $kiwi -> done(); - } + #if ($firmware eq "uefi") { + # $kiwi -> info ("Importing grub2 shim/signed efi modules"); + # my $s_data = $stages{efi}{data}; + # my $s_shim_ms = $stages{efi}{shim_ms}; + # my $s_shim_suse = $stages{efi}{shim_suse}; + # my $s_signed = $stages{efi}{signed}; + # my $fo_bin; + # if ($arch eq 'x86_64') { + # $fo_bin = 'bootx64.efi'; + # } elsif ($arch =~ /i.86/) { + # $fo_bin = 'bootx32.efi'; + # } elsif (($arch eq 'aarch64') || ($arch eq 'arm64')) { + # $fo_bin = 'bootaa64.efi'; + # } elsif ($arch =~ /arm/) { + # $fo_bin = 'bootarm.efi'; + # } + # $result = 0; + # if ($zipped) { + # $status= KIWIQX::qxx ( + # "$unzip | (cd $tmpdir && cpio -i -d $s_data 2>&1)" + # ); + # } else { + # $status= KIWIQX::qxx ( + # "cat $initrd | (cd $tmpdir && cpio -i -d $s_data 2>&1)" + # ); + # } + # if ((! -e "$tmpdir/$s_shim_ms") && (! -e "$tmpdir/$s_shim_suse")) { + # my $s_shim = "$tmpdir/$s_shim_ms"; + # if (-e $s_shim) { + # $s_shim = "$tmpdir/$s_shim_suse" + # } + # $kiwi -> failed (); + # $kiwi -> error ( + # "Can't find shim $s_shim in initrd"); + # $kiwi -> failed (); + # return; + # } + # if (! -e "$tmpdir/$s_signed") { + # $kiwi -> failed (); + # $kiwi -> error ( + # "Can't find grub2 $s_signed in initrd"); + # $kiwi -> failed (); + # return; + # } + # $status = KIWIQX::qxx ( + # "cp $tmpdir/$s_shim_ms $tmpdir/EFI/BOOT/$fo_bin 2>&1" + # ); + # $result = $? >> 8; + # if ($result != 0) { + # $status = KIWIQX::qxx ( + # "cp $tmpdir/$s_shim_suse $tmpdir/EFI/BOOT/$fo_bin 2>&1" + # ); + # $result = $? >> 8; + # } + # if ($result != 0) { + # $kiwi -> failed (); + # $kiwi -> error ("Failed to copy shim module: $status"); + # $kiwi -> failed (); + # return; + # } + # $status = KIWIQX::qxx ( + # "cp $tmpdir/$s_signed $tmpdir/EFI/BOOT/grub.efi 2>&1"); + # $result = $? >> 8; + # if ($result != 0) { + # $kiwi -> failed (); + # $kiwi -> error ("Failed to copy signed module: $status"); + # $kiwi -> failed (); + # return; + # } + # $kiwi -> done(); + #} #========================================== # Create OFW grub2 boot images #------------------------------------------ @@ -5746,15 +5746,57 @@ $grubarch = "powerpc-ieee1275"; } #========================================== - # Mount boot partition + # Mount system #------------------------------------------ if (! KIWIGlobals -> instance() -> mount ( - $bootdev, $mount, undef, $xml + $deviceMap->{root}, $mount, undef, $xml )) { - $kiwi -> error ("Couldn't mount boot partition: $bootdev"); + $kiwi -> error ("Couldn't mount root partition: $bootdev"); $kiwi -> failed (); return; } + if (($deviceMap->{boot}) && ($deviceMap->{boot} ne $deviceMap->{root})){ + my $bootdir = KIWIQX::qxx ("mktemp -qdt kiwibootdev.XXXXXX"); + chomp $bootdir; + KIWIGlobals -> instance() -> push_to_umount_stack ( + "rmdir $bootdir" + ); + if (! KIWIGlobals -> instance() -> mount ( + $deviceMap->{boot}, $bootdir, undef, $xml + )) { + $kiwi -> error ("Couldn't mount boot partition: $bootdev"); + $kiwi -> failed (); + $this -> cleanStack (); + return; + } + KIWIQX::qxx ("mount --bind $bootdir/boot $mount/boot"); + KIWIGlobals -> instance() -> push_to_umount_stack ( + "umount $mount/boot" + ); + } + if ($firmware eq "uefi") { + KIWIQX::qxx ("mkdir -p $mount/boot/efi"); + if (! KIWIGlobals -> instance() -> mount ( + $deviceMap->{jump}, "$mount/boot/efi", undef, $xml + )) { + $kiwi -> error ("Couldn't mount efi boot partition: $bootdev"); + $kiwi -> failed (); + $this -> cleanStack (); + return; + } + KIWIQX::qxx ("mount --bind /proc $mount/proc"); + KIWIGlobals -> instance() -> push_to_umount_stack ( + "umount $mount/proc" + ); + KIWIQX::qxx ("mount --bind /sys $mount/sys"); + KIWIGlobals -> instance() -> push_to_umount_stack ( + "umount $mount/sys" + ); + KIWIQX::qxx ("mount --bind /dev $mount/dev"); + KIWIGlobals -> instance() -> push_to_umount_stack ( + "umount $mount/dev" + ); + } my $stages = $mount."/boot/grub2/$grubarch"; if (($firmware =~ /ec2|bios|ofw/) && (! -e "$stages/$grubimg")) { $kiwi -> error ("Mandatory grub2 modules not found"); @@ -5815,6 +5857,7 @@ "grub2 ppc core.elf module not found" ); $kiwi -> failed(); + $this -> cleanStack (); return; } } @@ -5822,6 +5865,7 @@ if (! $grubtool) { $kiwi -> error ("Mandatory $grubtool not found"); $kiwi -> failed (); + $this -> cleanStack (); return; } $kiwi -> info ("Installing grub2:\n"); @@ -5835,8 +5879,33 @@ "Couldn't install $loader on $loaderTarget: $status" ); $kiwi -> failed (); + $this -> cleanStack (); return; } + if ($firmware eq "uefi") { + my $grub2_install = "$mount/usr/sbin/grub2-install"; + KIWIQX::qxx ( + "cp $grub2_install $grub2_install".".orig" + ); + KIWIQX::qxx ( + "cp $mount/bin/true $grub2_install" + ); + $status = KIWIQX::qxx ( + "chroot $mount shim-install --removable $this->{loop}" + ); + $result = $? >> 8; + KIWIQX::qxx ( + "cp $grub2_install".".orig"." $grub2_install" + ); + if ($result != 0) { + $kiwi -> error ( + "Couldn't install shim data: $status" + ); + $kiwi -> failed (); + $this -> cleanStack (); + return; + } + } } #========================================== # Clean loop maps diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIContainerBuilder.pm new/kiwi/modules/KIWIContainerBuilder.pm --- old/kiwi/modules/KIWIContainerBuilder.pm 2015-09-21 16:23:18.000000000 +0200 +++ new/kiwi/modules/KIWIContainerBuilder.pm 2016-03-10 16:36:42.000000000 +0100 @@ -367,7 +367,7 @@ return; } my $data = KIWIQX::qxx ( - "$tar -C $origin -cJf $baseBuildDir/$imgFlName @dirlist 2>&1" + "$tar --xattrs -C $origin -cJf $baseBuildDir/$imgFlName @dirlist 2>&1" ); my $code = $? >> 8; if ($code != 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIGlobals.pm new/kiwi/modules/KIWIGlobals.pm --- old/kiwi/modules/KIWIGlobals.pm 2016-03-01 17:19:42.000000000 +0100 +++ new/kiwi/modules/KIWIGlobals.pm 2016-03-14 10:29:08.000000000 +0100 @@ -239,6 +239,18 @@ } #========================================== +# push_to_umount_stack +#------------------------------------------ +sub push_to_umount_stack { + my $this = shift; + my $entry = shift; + my @UmountStack = @{$this->{UmountStack}}; + push @UmountStack, $entry; + $this->{UmountStack} = \@UmountStack; + return $this; +} + +#========================================== # mount #------------------------------------------ sub mount { @@ -326,7 +338,10 @@ push @UmountStack,"kpartx -sd $loop"; $this->{UmountStack} = \@UmountStack; $loop =~ s/\/dev\///; - $source = "/dev/mapper/".$loop."p3"; + $source = "/dev/mapper/".$loop."p4"; + if (! -b $source) { + $source = "/dev/mapper/".$loop."p3"; + } if (! -b $source) { $source = "/dev/mapper/".$loop."p2"; } @@ -2001,7 +2016,7 @@ # Globals (generic) #------------------------------------------ my %data; - $data{Version} = "7.03.59"; + $data{Version} = "7.03.64"; $data{Publisher} = "SUSE LINUX GmbH"; $data{Preparer} = "KIWI - http://opensuse.github.com/kiwi"; $data{ConfigName} = "config.xml"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIImageFormat.pm new/kiwi/modules/KIWIImageFormat.pm --- old/kiwi/modules/KIWIImageFormat.pm 2015-11-17 16:38:19.000000000 +0100 +++ new/kiwi/modules/KIWIImageFormat.pm 2016-03-10 16:36:42.000000000 +0100 @@ -610,7 +610,7 @@ $target = $dist."-guest-gce-".$version.".tar.gz"; $status = KIWIQX::qxx ("mv $source $gce_source 2>&1"); $result = $? >> 8; - my @content= ('disk.raw'); + my @content; if ($result != 0) { $kiwi -> error ("Failed to prepare source image: $status"); $kiwi -> failed (); @@ -624,6 +624,10 @@ my %json_data; $json_data{licenses} = [ $license ]; my $json_text = $json_ref ->encode( \%json_data ); + # gce is so picky on the style, even though every json parser + # can read and validate the encode result, gce can't, space after + # colon seems required + $json_text =~ s/:\[/: \[/; if (! $json_fd -> open (">$json_meta")) { $kiwi -> failed (); $kiwi -> error ( @@ -637,6 +641,7 @@ push @content, 'manifest.json'; $kiwi -> done(); } + push @content, 'disk.raw'; $kiwi -> info("--> Creating GNU tar archive"); $status = KIWIQX::qxx ( "cd $src_dirname && tar --format=gnu -cSzf $target @content 2>&1"