Hello community, here is the log from the commit of package kiwi for openSUSE:Factory checked in at 2015-02-10 20:20:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2015-01-25 21:14:11.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.kiwi.new/kiwi.changes 2015-02-10 20:20:46.000000000 +0100 @@ -1,0 +2,209 @@ +Mon Feb 9 11:43:29 CET 2015 - m...@suse.de + +- v7.02.25 released + +------------------------------------------------------------------- +Mon Feb 2 09:44:42 CET 2015 - m...@suse.de + +- DB: rebuild documentation + +------------------------------------------------------------------- +Mon Feb 2 09:43:48 CET 2015 - m...@suse.de + +- DB: man page clarify use of images.sh/config.sh + +------------------------------------------------------------------- +Sat Jan 31 15:07:37 CET 2015 - dmuel...@suse.de + +- aarch64: Load full EFI emulation size + +-boot-load-size 1 is not a recommended option. First of all + a loader size that is not divideable by 4 is rejected by + most EFI firmwares. In addition we need to load all of the + EFI code into memory. When the option is not set, genisoimage + uses the full length by default, which is what we want. + +------------------------------------------------------------------- +Fri Jan 30 11:04:09 CET 2015 - m...@suse.de + +- v7.02.24 released + +------------------------------------------------------------------- +Fri Jan 30 10:45:04 CET 2015 - m...@suse.de + +- Fixed callPartitioner + + Instead of making the decision for the correct partition tool + by the name of the device use a method which knows better about + the type of the storage device. This applies to s390 only were + a dasd device could be a real dasd with 4k blocksize or an + emulated dasd with 512byte blocksize. In the first case fdasd + is used and in the other case parted must be used. The decision + for the tool is now based on the result if isDASDDevice() + which returns false for emulated dasd devices because we + only distinguish a different handling if the blocksize of the + device is _not_ 512byte + +------------------------------------------------------------------- +Fri Jan 30 10:43:19 CET 2015 - m...@suse.de + +- Fixed critic testing via perlcritic + + perlcritic on 13.2 reports a module to not end with a true value + which is wrong and older versions of perlcritic do not complain + about the same code. As I don't want to dig into what perlcritic + does I decided to move the module in question to be not level 4 + clean + +------------------------------------------------------------------- +Fri Jan 30 09:37:09 CET 2015 - m...@suse.de + +- Fixed handling of zipl options + + For some reason it was not possible to provide the + information as commandline arguments. Thus we wrote + it into the menu section. In addition the verbose + zipl installation information is now part of the + kiwi build log file + +------------------------------------------------------------------- +Fri Jan 30 09:07:00 CET 2015 - m...@suse.de + +- Fixed import of emulated dasd device + + dasd_configure is required to be called but kiwi + skipped that step for emulated dasd devices and + thus they did not exist on boot + +------------------------------------------------------------------- +Fri Jan 30 08:57:24 CET 2015 - m...@suse.de + +- Added support for emulated DASD devices on s390 + + an emulated dasd is a dasd device in FBA mode using + 512byte blocksize. kiwi did not properly install zipl + to allow to boot from such devices + +------------------------------------------------------------------- +Thu Jan 29 16:03:33 CET 2015 - guillaume.gar...@suse.de + +- Fix ARM build + +------------------------------------------------------------------- +Thu Jan 29 15:37:59 CET 2015 - adr...@suse.de + +- collecting of -debuginfo packages from special suffixed packages + +------------------------------------------------------------------- +Thu Jan 29 12:13:26 CET 2015 - m...@suse.de + +- Fixed importHostPackageKeys + + Import on systems which doesn't have a + /usr/lib/rpm/gnupg/keys structure failed + +------------------------------------------------------------------- +Thu Jan 29 11:36:18 CET 2015 - m...@suse.de + +- Fixed exception handling if device type is unknown + +------------------------------------------------------------------- +Thu Jan 29 11:29:41 CET 2015 - m...@suse.de + +- Added support for s390 emulated DASD devices + + An emulated DASD device is a disk with 512byte blocksize + like it is the case for real zFCP (scsi) devices. Therefore + kiwi handles an emulated DASD like a zFCP device but does + not configure host and disk adapter for it + +------------------------------------------------------------------- +Wed Jan 28 16:31:10 CET 2015 - m...@suse.de + +- Fixed SLES12 s390 JeOS image template + + deleted obsolete packages, update pattern name + +------------------------------------------------------------------- +Wed Jan 28 15:27:50 CET 2015 - m...@suse.de + +- Fixed resetBootBind + + make sure the tmp directory is removed while moving the + boot data one hierarchy level up + +------------------------------------------------------------------- +Wed Jan 28 10:29:05 CET 2015 - m...@suse.de + +- DB: rebuild documentation + +------------------------------------------------------------------- +Wed Jan 28 10:27:47 CET 2015 - m...@suse.de + +- DB: update man page + +------------------------------------------------------------------- +Wed Jan 28 10:09:28 CET 2015 - m...@suse.de + +- Cleanup service handling config functions + + Enable/Disable a service is no longer done using the suse + specific insserv tool. Instead chkconfig for sysVInit or + systemctl for systemd based systems is used. This this + methods can be considered generic and should be base + functions + +------------------------------------------------------------------- +Wed Jan 28 10:00:21 CET 2015 - m...@suse.de + +- DB: rebuild documentation + +------------------------------------------------------------------- +Wed Jan 28 09:59:20 CET 2015 - m...@suse.de + +- DB: Update documentation and man page + +------------------------------------------------------------------- +Tue Jan 27 17:15:51 CET 2015 - m...@suse.de + +- v7.02.23 released + +------------------------------------------------------------------- +Tue Jan 27 17:08:29 CET 2015 - m...@suse.de + +- Fixed creation of split images + + The filename for the splitfile which is the read-write portion + of the image was build taking the displayname into account. + Only if the displayname was not set the filename was correct + because in that case the displayname and the diskname are the + same. If a custom displayname is set the splitfile name was + wrong and the read-write data was not included to the image + + In addition this patch uses the kiwi.buildinfo file to check + for the image type instead of taking weird assumptions based + on file names + +------------------------------------------------------------------- +Mon Jan 26 10:48:19 CET 2015 - m...@suse.de + +- Make sure to handle all udev daemon processes + + If the call to udevadm control for some reason did not + stop all udev daemon processes kiwi checks the pids it + found and kills them manually. However kiwi just looked + up one process even though there might be more + +------------------------------------------------------------------- ++++ 12 more lines (skipped) ++++ between /work/SRC/openSUSE:Factory/kiwi/kiwi.changes ++++ and /work/SRC/openSUSE:Factory/.kiwi.new/kiwi.changes ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kiwi.spec ++++++ --- /var/tmp/diff_new_pack.52Xa9l/_old 2015-02-10 20:20:48.000000000 +0100 +++ /var/tmp/diff_new_pack.52Xa9l/_new 2015-02-10 20:20:48.000000000 +0100 @@ -26,7 +26,7 @@ Group: System/Management Url: http://github.com/openSUSE/kiwi Name: kiwi -Version: 7.02.22 +Version: 7.02.25 Release: 0 Provides: kiwi-image:lxc Provides: kiwi-image:tbz @@ -736,7 +736,7 @@ fi %endif -%ifarch %ix86 x86_64 ppc ppc64 ppc64le s390 s390x +%ifarch %ix86 x86_64 ppc ppc64 ppc64le s390 s390x %arm aarch64 %post -n kiwi-templates #============================================================ ++++++ kiwi-docu.tar.bz2 ++++++ ++++ 10653 lines of diff (skipped) ++++++ kiwi-repo.tar.bz2 ++++++ ++++++ kiwi.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/.git-hooks/pre-commit new/kiwi/.git-hooks/pre-commit --- old/kiwi/.git-hooks/pre-commit 2014-12-15 14:32:37.000000000 +0100 +++ new/kiwi/.git-hooks/pre-commit 2015-01-30 21:18:58.000000000 +0100 @@ -521,6 +521,13 @@ kiwi.pl ); +# List of modules not clean to level 4 (harsh) of perlcritic +# imho perlcritic is wrong here, at the place in the code the +# critic information is simply wrong +my @notClean4 = qw ( + KIWIIsoLinux.pm +); + my @changedFiles; my $chld_in; my $chld_out; @@ -598,7 +605,7 @@ } } -my @criticLevelFiles = (\@notClean1, \@notClean2, \@notClean3); +my @criticLevelFiles = (\@notClean1, \@notClean2, \@notClean3, \@notClean4); # Verify the changed file against the strictest perlcritic level possible diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/.revision new/kiwi/.revision --- old/kiwi/.revision 2014-12-15 14:32:44.000000000 +0100 +++ new/kiwi/.revision 2014-12-19 08:24:00.000000000 +0100 @@ -1 +1 @@ -63fc5aa7fd1971ecdbea7c1882b62550fc13f30d +859dc050fac040e3b3bb7fdb3ea81af4fc4bd02a 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 2015-01-23 12:07:51.000000000 +0100 +++ new/kiwi/modules/KIWIBoot.pm 2015-01-30 09:40:20.000000000 +0100 @@ -26,6 +26,7 @@ use File::Basename; use File::Spec; use Math::BigFloat; +use Config::IniFiles; #========================================== # Base class @@ -111,15 +112,33 @@ return; } #========================================== - # find image type... + # find image type from buildinfo #------------------------------------------ if (($system) && (! defined $cmdL->getBuildType())) { - if (($initrd) && ($initrd =~ /oemboot/)) { - $cmdL -> setBuildType ("oem"); + my $result_dir = dirname($initrd); + my $buildinfo_file = $result_dir.'/kiwi.buildinfo'; + if (! -f $buildinfo_file) { + $kiwi -> error ( + "Can't find buildinfo file in image result at: $result_dir" + ); + $kiwi -> failed (); + return; } - if (($initrd) && ($initrd =~ /vmxboot/)) { - $cmdL -> setBuildType ("vmx"); + my $buildinfo = Config::IniFiles -> new ( + -file => $buildinfo_file, -allowedcommentchars => '#' + ); + my $imagetype = $buildinfo->val('main','image.type'); + if (! $imagetype) { + $kiwi -> error ( + "Can't find image type in buildinfo file: $buildinfo_file" + ); + $kiwi -> failed (); + return; + } + if ($imagetype eq 'split') { + $haveSplit = 1; } + $cmdL -> setBuildType($imagetype); } #========================================== # check system image file parameter @@ -251,9 +270,6 @@ if ($read_result{sysz_size}) { $syszip = $read_result{sysz_size}; } - if ($read_result{split}) { - $haveSplit = $read_result{split}; - } if ($read_result{originXMLPath}) { $this->{originXMLPath} = $read_result{originXMLPath}; } @@ -2054,8 +2070,8 @@ $label = $xml -> getImageDisplayName(); $version = $xml -> getPreferences() -> getVersion(); $diskname = $xml -> getImageName(); + $splitfile = $destdir."/".$diskname."-read-write.".$arch."-".$version; $diskname = $destdir."/".$diskname.".".$arch."-".$version.".raw"; - $splitfile = $destdir."/".$label."-read-write.".$arch."-".$version; $partidfile = $diskname; $partidfile =~ s/\.raw$/\.pids/; $this->{bootlabel}= $label; @@ -5895,16 +5911,15 @@ # Zipl #------------------------------------------ if ($loader eq "zipl") { - $kiwi -> info ("Installing zipl on device: $diskname"); - my $offset; + $kiwi -> info ("Installing zipl on device: $diskname\n"); my $haveRealDevice = 1; + my $offset; if (! -b $diskname) { #========================================== # detect disk offset of disk image file #------------------------------------------ $offset = $this -> diskOffset ($diskname); if (! $offset) { - $kiwi -> failed (); $kiwi -> error ("Failed to detect disk offset"); $kiwi -> failed (); return; @@ -5915,7 +5930,6 @@ # mount boot device... #------------------------------------------ if (! KIWIGlobals -> instance() -> mount ($bootdev, $mount)) { - $kiwi -> failed (); $kiwi -> error ("Can't mount boot partition: $status"); $kiwi -> failed (); $this -> cleanStack (); @@ -5931,7 +5945,6 @@ ); my $result = $? >> 8; if ($result != 0) { - $kiwi -> failed (); $kiwi -> error ( "Can't get block size for device $this->{loop}: $bsize" ); @@ -5942,20 +5955,26 @@ } chomp $bsize; #========================================== - # try to identify target type + # set target type #------------------------------------------ - my $type; - if ($bsize == 4096) { - $type = 'LDL'; - } else { - $type = 'SCSI'; + my $type = $xml -> getImageType() -> getZiplTargetType(); + if (! $type) { + if ($bsize == 4096) { + # we assume the target is a 4k dasd device in LDL mode + # this could be wrong, there are also CDL dasd devices + $type = 'LDL'; + } else { + # we assume the target is a 512b scsi device in SCSI mode + # this could be wrong, thre are also emulated dasd devices + # using 512b blocksize in FBA mode + $type = 'SCSI'; + } } #========================================== - # rewrite zipl.conf with additional params + # setup zipl caller options in zipl.conf #------------------------------------------ my $readzconf = FileHandle -> new(); if (! $readzconf -> open ($config)) { - $kiwi -> failed (); $kiwi -> error ("Can't open config file for reading: $!"); $kiwi -> failed (); KIWIQX::qxx ("umount $mount 2>&1"); @@ -5966,44 +5985,43 @@ $readzconf -> close(); my $zconffd = FileHandle -> new(); if (! $zconffd -> open (">$config")) { - $kiwi -> failed (); $kiwi -> error ("Can't open config file for writing: $!"); $kiwi -> failed (); KIWIQX::qxx ("umount $mount 2>&1"); $this -> cleanStack (); return; } - $kiwi -> loginfo ("zipl.conf target values:\n"); foreach my $line (@data) { print $zconffd $line; if ($line =~ /^:menu/) { - $kiwi -> loginfo ("targetbase = $this->{loop}\n"); - $kiwi -> loginfo ("targettype = $type\n"); - $kiwi -> loginfo ("targetblocksize = $bsize\n"); - $kiwi -> loginfo ("targetoffset = $offset\n"); + $kiwi -> info ("--> targetbase = $this->{loop}\n"); + $kiwi -> info ("--> targettype = $type\n"); + $kiwi -> info ("--> targetblocksize = $bsize\n"); + $kiwi -> info ("--> targetoffset = $offset\n"); print $zconffd "\t"."targetbase = $this->{loop}"."\n"; print $zconffd "\t"."targettype = $type"."\n"; print $zconffd "\t"."targetblocksize = $bsize"."\n"; print $zconffd "\t"."targetoffset = $offset"."\n"; - } + } } $zconffd -> close(); } #========================================== # call zipl... #------------------------------------------ - $status = KIWIQX::qxx ("cd $mount && zipl -c $config 2>&1"); + $status = KIWIQX::qxx ( + "cd $mount && zipl -V -c $config -m menu 2>&1" + ); $result = $? >> 8; if ($result != 0) { - $kiwi -> failed (); $kiwi -> error ("Couldn't install zipl on $diskname: $status"); $kiwi -> failed (); KIWIQX::qxx ("umount $mount 2>&1"); $this -> cleanStack (); return; } + $kiwi -> loginfo($status); KIWIQX::qxx ("umount $mount 2>&1"); - $kiwi -> done(); #========================================== # clean loop maps #------------------------------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWICollect.pm new/kiwi/modules/KIWICollect.pm --- old/kiwi/modules/KIWICollect.pm 2015-01-09 15:52:18.000000000 +0100 +++ new/kiwi/modules/KIWICollect.pm 2015-01-30 21:18:58.000000000 +0100 @@ -1247,27 +1247,23 @@ if ( $this->{m_debugmedium} > 0 ) { # Add debug packages, we do not know, # if they exist at all - my $suffix = ""; - my $basename = $packName; for my $tsuffix (qw(32bit 64bit x86)) { if ( $packName =~ /^(.*)(-$tsuffix)$/ ) { - $basename = $1; - $suffix = $2; - last; + # special handling of baselib packages. SLE 12 style + $this->addDebugPackage( + $1."-debuginfo".$2, + $arch, $packPointer + ); } } $this->addDebugPackage( - $srcname."-debuginfo".$suffix, + $packName."-debuginfo", $arch, $packPointer ); $this->addDebugPackage( $srcname."-debugsource", $arch, $packPointer ); - $this->addDebugPackage( - $basename."-debuginfo".$suffix, - $arch, $packPointer - ) unless $srcname eq $basename; } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIConfig.sh new/kiwi/modules/KIWIConfig.sh --- old/kiwi/modules/KIWIConfig.sh 2015-01-22 10:29:58.000000000 +0100 +++ new/kiwi/modules/KIWIConfig.sh 2015-01-28 10:35:07.000000000 +0100 @@ -32,6 +32,7 @@ ln -s /usr/bin/$tool /usr/sbin/$tool fi done + #====================================== # baseSystemdServiceInstalled #-------------------------------------- @@ -68,18 +69,19 @@ systemctl "$@" "$service" fi } + #====================================== -# suseInsertService +# baseInsertService #-------------------------------------- -function suseInsertService { +function baseInsertService { # /.../ - # Insert a service using either chkconfig or systemctl + # Enable a service using either chkconfig or systemctl # Examples: # - # suseInsertService sshd + # baseInsertService sshd # --> enable sshd service # - # suseInsertService sshd 35 + # baseInsertService sshd 35 # --> enable sshd service, if sysVInit in level 3+5 # ---- local service=$1 @@ -97,14 +99,14 @@ } #====================================== -# suseRemoveService +# baseRemoveService #-------------------------------------- -function suseRemoveService { +function baseRemoveService { # /.../ - # Remove a service using either chkconfig or systemctl + # Disable a service using either chkconfig or systemctl # Example: # - # suseRemoveService sshd + # baseRemoveService sshd # --> disable sshd service # ---- local service=$1 @@ -117,42 +119,58 @@ } #====================================== -# suseService +# baseService #-------------------------------------- -function suseService { +function baseService { # /.../ - # Enable | Disable a service transparently + # Enable or Disable a service transparently # for sysVInit and systemd # Examples: # - # suseService sshd on + # baseService sshd on # --> enable sshd service # - # suseService sshd off + # baseService sshd off # --> disable sshd service # - # suseService sshd 35 + # baseService sshd 35 # --> enable sshd service, if sysVInit in level 3+5 # ---- local service=$1 local target=$2 if [ -z "$target" ];then - echo "suseService: no target specified" + echo "baseService: no target specified" return fi if [ -z "$service" ];then - echo "suseService: no service name specified" + echo "baseService: no service name specified" return fi if [ $target = off ];then - suseRemoveService $service + baseRemoveService $service else - suseInsertService $service $target + baseInsertService $service $target fi } #====================================== -# suseServiceDefaultOn +# suseRemoveService +#-------------------------------------- +function suseRemoveService { + # function kept for compatibility + baseRemoveService "$@" +} + +#====================================== +# suseInsertService +#-------------------------------------- +function suseInsertService { + # function kept for compatibility + baseInsertService "$@" +} + +#====================================== +# suseActivateDefaultServices #-------------------------------------- function suseActivateDefaultServices { # /.../ @@ -185,7 +203,7 @@ fi for i in "${services[@]}";do echo "Activating service: $i" - suseInsertService $i + baseInsertService $i done } 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 2015-01-23 13:57:46.000000000 +0100 +++ new/kiwi/modules/KIWIGlobals.pm 2015-02-09 11:43:23.000000000 +0100 @@ -1706,7 +1706,6 @@ my $global = KIWIGlobals -> instance(); my $profile= $cmdL -> getBuildProfiles(); my $syszSize = 0; - my $haveSplit= 0; my $originXMLPath; if ((! $system) || (! $cmdL)) { return; @@ -1750,13 +1749,6 @@ $rootpath = $tmpdir; } #========================================== - # check for split type - #------------------------------------------ - if (-f "$rootpath/rootfs.tar") { - $cmdL -> setBuildType ("split"); - $haveSplit = 1; - } - #========================================== # read origin path of XML description #------------------------------------------ if (open my $FD, '<', "$rootpath/image/main::Prepare") { @@ -1814,7 +1806,6 @@ my %result = ( "xml" => $xml, "sysz_size" => $syszSize, - "split" => $haveSplit, "originXMLPath" => $originXMLPath ); return %result; @@ -1846,7 +1837,7 @@ # Globals (generic) #------------------------------------------ my %data; - $data{Version} = "7.02.22"; + $data{Version} = "7.02.25"; $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/KIWIIsoLinux.pm new/kiwi/modules/KIWIIsoLinux.pm --- old/kiwi/modules/KIWIIsoLinux.pm 2014-12-15 14:32:46.000000000 +0100 +++ new/kiwi/modules/KIWIIsoLinux.pm 2015-02-06 23:16:20.000000000 +0100 @@ -402,7 +402,7 @@ my $boot = $base{$arch}{boot}; my $loader= $base{$arch}{efi}; $para.= " -no-emul-boot"; - $para.= " -boot-load-size 1"; + # do not add -boot-load-size 1 here $para.= " -b $loader"; $para.= " -c $boot/boot.catalog"; $para.= " -hide $boot/boot.catalog -hide-joliet $boot/boot.catalog"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWILinuxRC.sh new/kiwi/modules/KIWILinuxRC.sh --- old/kiwi/modules/KIWILinuxRC.sh 2015-01-12 12:55:06.000000000 +0100 +++ new/kiwi/modules/KIWILinuxRC.sh 2015-01-30 21:18:58.000000000 +0100 @@ -694,7 +694,7 @@ "reboot" fi $udev_bin --daemon - export UDEVD_PID=$(pidof -s $udev_bin) + export UDEVD_PID=$(pidof $udev_bin | tr ' ' ,) } #====================================== # udevSystemStop @@ -704,9 +704,27 @@ # stop udev while in pre-init phase. # ---- local IFS=$IFS_ORIG - if kill -0 $UDEVD_PID &>/dev/null;then - udevPending - kill $UDEVD_PID + local udevadmExec=$(lookup udevadm 2>/dev/null) + local umountProc=0 + if [ ! -e "/proc/mounts" ];then + mount -t proc proc /proc + umountProc=1 + fi + if [ -x $udevadmExec ];then + $udevadmExec control --exit + fi + if [ -z "$UDEVD_PID" ];then + . /iprocs + fi + local IFS=, + for p in $UDEVD_PID; do + if kill -0 $p &>/dev/null;then + udevPending + kill $p + fi + done + if [ $umountProc -eq 1 ];then + umount /proc fi } #====================================== @@ -801,11 +819,7 @@ #-------------------------------------- function udevKill { local IFS=$IFS_ORIG - . /iprocs - if kill -0 $UDEVD_PID &>/dev/null;then - udevPending - kill $UDEVD_PID - fi + udevSystemStop } #====================================== # activeConsoles @@ -4144,9 +4158,10 @@ # is set to this device for further processing # ---- local IFS=$IFS_ORIG - local deviceID=0 local dpath=/dev/disk/by-path local ipl_type=$(cat /sys/firmware/ipl/ipl_type) + local deviceID=$(cat /sys/firmware/ipl/device) + local dev_type=$(cat /sys/bus/ccw/devices/$deviceID/devtype) local wwpn local slun #====================================== @@ -4163,25 +4178,34 @@ #====================================== # determine device type: dasd or zfcp #-------------------------------------- - if [ -z "$ipl_type" ];then + if [ -z "$deviceID" ];then systemException \ - "Can't find IPL type" \ + "Can't find IPL device" \ "reboot" fi if [ "$ipl_type" = "fcp" ];then + # plain FCP device 512b blocksize haveZFCP=1 elif [ "$ipl_type" = "ccw" ];then - haveDASD=1 + if [[ "$dev_type" =~ "3390" ]];then + # plain DASD device 4k blocksize + haveDASD=1 + elif [[ "$dev_type" =~ "9336" ]];then + # emulated DASD device 512b blocksize, handled as FCP device + # but don't configure host and disk as required for plain + # FCP devices + haveZFCP=1 + else + systemException \ + "Unknown Device type: $dev_type" \ + "reboot" + fi else systemException \ "Unknown IPL type: $ipl_type" \ "reboot" fi #====================================== - # store device bus / host id - #-------------------------------------- - deviceID=$(cat /sys/firmware/ipl/device) - #====================================== # check if we can find the device #-------------------------------------- if [ ! -e /sys/bus/ccw/devices/$deviceID ];then @@ -4190,16 +4214,23 @@ "reboot" fi #====================================== - # DASD + # DASD real in CDL / LDL mode #-------------------------------------- if [ $haveDASD -eq 1 ];then dasd_configure $deviceID 1 0 biosBootDevice="$dpath/ccw-$deviceID" fi #====================================== - # ZFCP + # DASD emulated in FBA mode #-------------------------------------- - if [ $haveZFCP -eq 1 ];then + if [ $haveZFCP -eq 1 ] && [ "$ipl_type" = "ccw" ];then + dasd_configure $deviceID 1 0 + biosBootDevice="$dpath/ccw-$deviceID" + fi + #====================================== + # ZFCP real in SCSI mode + #-------------------------------------- + if [ $haveZFCP -eq 1 ] && [ "$ipl_type" = "fcp" ];then wwpn=$(cat /sys/firmware/ipl/wwpn) slun=$(cat /sys/firmware/ipl/lun) zfcp_host_configure $deviceID 1 @@ -8756,7 +8787,7 @@ #-------------------------------------- function createPartitionerInput { local IFS=$IFS_ORIG - if echo $imageDiskDevice | grep -q 'dev\/dasd';then + if isDASDDevice; then PARTITIONER=fdasd fi if [ $PARTITIONER = "fdasd" ];then @@ -10488,7 +10519,7 @@ umount $bprefix/boot mv /$bootdir/boot /$bootdir/tmp mv /$bootdir/tmp/* /$bootdir - rmdir /$bootdir/tmp + rm -rf /$bootdir/tmp umount /$bootdir rmdir /$bootdir #====================================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIRoot.pm new/kiwi/modules/KIWIRoot.pm --- old/kiwi/modules/KIWIRoot.pm 2014-12-18 11:45:15.000000000 +0100 +++ new/kiwi/modules/KIWIRoot.pm 2015-01-30 08:02:53.000000000 +0100 @@ -1446,7 +1446,7 @@ return $this; } $data.= KIWIQX::qxx ( - "rpm -r $root --import $keydir/gpg-pubke* 2>&1" + "rpm -r $root --import $sigs/gpg-pubke* 2>&1" ); $code = $? >> 8; if ($code != 0) { @@ -1458,6 +1458,9 @@ } return $this; } + if (-d $sigs) { + KIWIQX::qxx ("rm -rf $sigs"); + } $kiwi -> done(); return $this; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWISchema.rnc new/kiwi/modules/KIWISchema.rnc --- old/kiwi/modules/KIWISchema.rnc 2014-12-15 14:32:47.000000000 +0100 +++ new/kiwi/modules/KIWISchema.rnc 2015-01-30 09:26:29.000000000 +0100 @@ -1590,6 +1590,13 @@ "extlinux" | "grub" | "grub2" | "syslinux" | "zipl" | "yaboot" | "uboot" | "berryboot" } + k.type.zipl_targettype.attribute = + ## The device type of the disk zipl should boot. On zFCP + ## devices use SCSI, on DASD devices use CDL or LDL on + ## emulated DASD devices use FBA + attribute zipl_targettype { + "CDL" | "LDL" | "FBA" | "SCSI" + } k.type.bootpartsize.attribute = ## For images with a separate boot partition this attribute ## specifies the size in MB. If not set the min bootpart @@ -1795,6 +1802,7 @@ k.type.firmware.attribute? & k.type.bootkernel.attribute? & k.type.bootloader.attribute? & + k.type.zipl_targettype.attribute? & k.type.bootpartition.attribute? & k.type.bootpartsize.attribute? & k.type.bootprofile.attribute? & diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWISchema.rng new/kiwi/modules/KIWISchema.rng --- old/kiwi/modules/KIWISchema.rng 2014-12-15 14:32:47.000000000 +0100 +++ new/kiwi/modules/KIWISchema.rng 2015-01-30 09:26:29.000000000 +0100 @@ -2098,6 +2098,19 @@ </choice> </attribute> </define> + <define name="k.type.zipl_targettype.attribute"> + <attribute name="zipl_targettype"> + <a:documentation>The device type of the disk zipl should boot. On zFCP +devices use SCSI, on DASD devices use CDL or LDL on +emulated DASD devices use FBA</a:documentation> + <choice> + <value>CDL</value> + <value>LDL</value> + <value>FBA</value> + <value>SCSI</value> + </choice> + </attribute> + </define> <define name="k.type.bootpartsize.attribute"> <attribute name="bootpartsize"> <a:documentation>For images with a separate boot partition this attribute @@ -2473,6 +2486,9 @@ <ref name="k.type.bootloader.attribute"/> </optional> <optional> + <ref name="k.type.zipl_targettype.attribute"/> + </optional> + <optional> <ref name="k.type.bootpartition.attribute"/> </optional> <optional> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIXML.pm new/kiwi/modules/KIWIXML.pm --- old/kiwi/modules/KIWIXML.pm 2014-12-15 14:32:47.000000000 +0100 +++ new/kiwi/modules/KIWIXML.pm 2015-01-30 09:26:29.000000000 +0100 @@ -3909,7 +3909,8 @@ 'mdraid', 'vga', 'vhdfixedtag', - 'volid' + 'volid', + 'zipl_targettype' ); #========================================== # store a value for the default type diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIXMLTypeData.pm new/kiwi/modules/KIWIXMLTypeData.pm --- old/kiwi/modules/KIWIXMLTypeData.pm 2014-12-15 14:32:47.000000000 +0100 +++ new/kiwi/modules/KIWIXMLTypeData.pm 2015-01-30 09:26:29.000000000 +0100 @@ -97,6 +97,7 @@ # vga = '' # vhdfixedtag = '' # volid = '' + # zipl_targettype = '' # } # --- #========================================== @@ -163,6 +164,7 @@ vga vhdfixedtag volid + zipl_targettype ); $this->{supportedKeywords} = \%keywords; my %boolKW = map { ($_ => 1) } qw( @@ -195,6 +197,7 @@ $this->{bootfilesystem} = $init->{bootfilesystem}; $this->{bootkernel} = $init->{bootkernel}; $this->{bootloader} = $init->{bootloader}; + $this->{zipl_targettype} = $init->{zipl_targettype}; $this->{bootpartsize} = $init->{bootpartsize}; $this->{bootprofile} = $init->{bootprofile}; $this->{boottimeout} = $init->{boottimeout}; @@ -295,6 +298,17 @@ } #========================================== +# getZiplTargetType +#------------------------------------------ +sub getZiplTargetType { + # ... + # Return the configured zypl target type + # --- + my $this = shift; + return $this->{zipl_targettype}; +} + +#========================================== # getBootPartitionSize #------------------------------------------ sub getBootPartitionSize { @@ -857,6 +871,10 @@ $element -> setAttribute('bootloader', $loader); } } + my $zipl_targettype = $this -> getZiplTargetType(); + if ($zipl_targettype) { + $element -> setAttribute('zipl_targettype', $zipl_targettype); + } my $bPartSize = $this -> getBootPartitionSize(); if ($bPartSize) { $element -> setAttribute('bootpartsize', $bPartSize); @@ -1102,6 +1120,22 @@ } #========================================== +# setZiplTargetType +#------------------------------------------ +sub setZiplTargetType { + # ... + # Set the configuration for the zipl target type + # --- + my $this = shift; + my $zipl_type = shift; + if (! $this -> __isValidZiplTargetType($zipl_type, 'setZiplTargetType')) { + return; + } + $this->{zipl_targettype} = $zipl_type; + return $this; +} + +#========================================== # setBootPartitionSize #------------------------------------------ sub setBootPartitionSize { @@ -1941,6 +1975,52 @@ return; } } + if ($init->{zipl_targettype}) { + if (! $this->__isValidZiplTargetType( + $init->{zipl_targettype}, 'object initialization')) { + return; + } + } + return 1; +} + +#========================================== +# __isValidZiplTargetType +#------------------------------------------ +sub __isValidZiplTargetType { + # ... + # Verify that the given zipl target type is supported + # --- + my $this = shift; + my $zipl_type = shift; + my $caller = shift; + my $kiwi = $this->{kiwi}; + if (! $caller ) { + my $msg = 'Internal error __isValidZiplTargetType called without ' + . 'call origin argument.'; + $kiwi -> info($msg); + $kiwi -> oops(); + } + if (! $zipl_type ) { + my $msg = "$caller: no zipl target type argument specified, retaining " + . 'current data.'; + $kiwi -> error($msg); + $kiwi -> failed(); + return; + } + my %supported = map { ($_ => 1) } qw( + CDL + LDL + FBA + SCSI + ); + if (! $supported{$zipl_type} ) { + my $msg = "$caller: specified zipl target type '$zipl_type' is not " + . 'supported.'; + $kiwi -> error($msg); + $kiwi -> failed(); + return; + } return 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/template/s390/suse-SLE12-JeOS/config.xml new/kiwi/template/s390/suse-SLE12-JeOS/config.xml --- old/kiwi/template/s390/suse-SLE12-JeOS/config.xml 2014-12-15 14:32:50.000000000 +0100 +++ new/kiwi/template/s390/suse-SLE12-JeOS/config.xml 2015-01-28 21:14:06.000000000 +0100 @@ -30,23 +30,20 @@ <user password="$1$wYJUgpM5$RXMMeASDc035eX.NbYWFl0" home="/root" name="root"/> </users> <repository type="yast2"> - <source path="obs://SUSE:SLE-12:GA/standard"/> + <source path="http://download.suse.de/install/SLP/SLE-12-Server-GM/s390x/DVD1"/> </repository> <packages type="image"> - <namedCollection name="base"/> + <namedCollection name="Minimal"/> <product name="SUSE_SLES"/> <package name="cmsfs"/> <package name="kernel-default"/> - <package name="ifplugd"/> <package name="iputils"/> <package name="vim"/> <package name="s390-tools"/> - <package name="syslog-ng"/> </packages> <packages type="bootstrap"> <package name="filesystem"/> <package name="glibc-locale"/> <package name="cracklib-dict-full"/> - <package name="openssl-certs"/> </packages> </image> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/tests/unit/lib/Test/kiwiXMLTypeData.pm new/kiwi/tests/unit/lib/Test/kiwiXMLTypeData.pm --- old/kiwi/tests/unit/lib/Test/kiwiXMLTypeData.pm 2014-12-15 14:32:51.000000000 +0100 +++ new/kiwi/tests/unit/lib/Test/kiwiXMLTypeData.pm 2015-01-30 09:26:29.000000000 +0100 @@ -502,6 +502,34 @@ } #========================================== +# test_ctor_initUnsupportedZiplTargetType +#------------------------------------------ +sub test_ctor_initUnsupportedZiplTargetType { + # ... + # Test the TypeData constructor with an initialization hash + # that contains unsupported data for the zipl_targettype + # --- + my $this = shift; + my $kiwi = $this -> {kiwi}; + my %init = ( + zipl_targettype => 'foo', + image => 'split' + ); + my $typeDataObj = KIWIXMLTypeData -> new(\%init); + my $msg = $kiwi -> getMessage(); + my $expected = 'object initialization: specified zipl target type ' + . "'foo' is not supported."; + $this -> assert_str_equals($expected, $msg); + my $msgT = $kiwi -> getMessageType(); + $this -> assert_str_equals('error', $msgT); + my $state = $kiwi -> getState(); + $this -> assert_str_equals('failed', $state); + # Test this condition last to get potential error messages + $this -> assert_null($typeDataObj); + return; +} + +#========================================== # test_ctor_initUnsupportedData #------------------------------------------ sub test_ctor_initUnsupportedData { @@ -884,6 +912,27 @@ } #========================================== +# test_getZiplTargetType +#------------------------------------------ +sub test_getZiplTargetType { + # ... + # Test the getZiplTargetType method + # --- + my $this = shift; + my $kiwi = $this -> {kiwi}; + my $typeDataObj = $this -> __getTypeObj(); + my $name = $typeDataObj -> getZiplTargetType(); + my $msg = $kiwi -> getMessage(); + $this -> assert_str_equals('No messages set', $msg); + my $msgT = $kiwi -> getMessageType(); + $this -> assert_str_equals('none', $msgT); + my $state = $kiwi -> getState(); + $this -> assert_str_equals('No state set', $state); + $this -> assert_str_equals('FBA', $name); + return; +} + +#========================================== # test_getBootLoaderDefault #------------------------------------------ sub test_getBootLoaderDefault { @@ -1823,6 +1872,7 @@ . 'bootfilesystem="fat32" ' . 'bootkernel="xenk" ' . 'bootloader="grub2" ' + . 'zipl_targettype="FBA" ' . 'bootpartsize="512" ' . 'bootpartition="true" ' . 'bootprofile="std" ' @@ -2074,6 +2124,35 @@ } #========================================== +# test_setZiplTargetType +#------------------------------------------ +sub test_setZiplTargetType { + # ... + # Test the setZiplTargetType method + # --- + my $this = shift; + my $kiwi = $this -> {kiwi}; + my $typeDataObj = $this -> __getTypeObj(); + $typeDataObj = $typeDataObj -> setZiplTargetType('CDL'); + my $msg = $kiwi -> getMessage(); + $this -> assert_str_equals('No messages set', $msg); + my $msgT = $kiwi -> getMessageType(); + $this -> assert_str_equals('none', $msgT); + my $state = $kiwi -> getState(); + $this -> assert_str_equals('No state set', $state); + $this -> assert_not_null($typeDataObj); + my $bootL = $typeDataObj -> getZiplTargetType(); + $msg = $kiwi -> getMessage(); + $this -> assert_str_equals('No messages set', $msg); + $msgT = $kiwi -> getMessageType(); + $this -> assert_str_equals('none', $msgT); + $state = $kiwi -> getState(); + $this -> assert_str_equals('No state set', $state); + $this -> assert_str_equals('CDL', $bootL); + return; +} + +#========================================== # test_setBootLoaderInvalidArg #------------------------------------------ sub test_setBootLoaderInvalidArg { @@ -5120,6 +5199,7 @@ bootfilesystem => 'fat32', bootkernel => 'xenk', bootloader => 'grub2', + zipl_targettype => 'FBA', bootpartition => 'true', bootpartsize => '512', bootprofile => 'std', -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org