Hello community, here is the log from the commit of package product-builder for openSUSE:Factory checked in at 2018-09-11 17:10:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/product-builder (Old) and /work/SRC/openSUSE:Factory/.product-builder.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "product-builder" Tue Sep 11 17:10:32 2018 rev:24 rq:631391 version:1.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/product-builder/product-builder.changes 2018-06-08 23:20:08.293936992 +0200 +++ /work/SRC/openSUSE:Factory/.product-builder.new/product-builder.changes 2018-09-11 17:10:36.876029891 +0200 @@ -1,0 +2,6 @@ +Fri Aug 24 12:36:16 UTC 2018 - Adrian Schröter <adr...@suse.de> + +- 1.2.0 + * Add special RPi hybrid mode + +------------------------------------------------------------------- Old: ---- product-builder-1.1.3.obscpio New: ---- product-builder-1.2.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ product-builder.spec ++++++ --- /var/tmp/diff_new_pack.ueuNXF/_old 2018-09-11 17:10:37.532028870 +0200 +++ /var/tmp/diff_new_pack.ueuNXF/_new 2018-09-11 17:10:37.532028870 +0200 @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -23,7 +23,7 @@ Name: product-builder Conflicts: kiwi Conflicts: kiwi-instsource -Version: 1.1.3 +Version: 1.2.0 Release: 0 Provides: kiwi-schema = 6.2 Source: product-builder-%version.tar.xz ++++++ _service ++++++ --- /var/tmp/diff_new_pack.ueuNXF/_old 2018-09-11 17:10:37.556028833 +0200 +++ /var/tmp/diff_new_pack.ueuNXF/_new 2018-09-11 17:10:37.556028833 +0200 @@ -1,8 +1,8 @@ <services> <service name="obs_scm" mode="disabled"> <param name="url">https://github.com/openSUSE/product-builder.git</param> - <param name="revision">1.1.3</param> - <param name="version">1.1.3</param> + <param name="revision">1.2.0</param> + <param name="version">1.2.0</param> <param name="scm">git</param> <param name="extract">rpm/product-builder.spec</param> </service> ++++++ product-builder-1.1.3.obscpio -> product-builder-1.2.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/product-builder-1.1.3/modules/KIWICollect.pm new/product-builder-1.2.0/modules/KIWICollect.pm --- old/product-builder-1.1.3/modules/KIWICollect.pm 2018-06-06 10:52:39.000000000 +0200 +++ new/product-builder-1.2.0/modules/KIWICollect.pm 2018-08-24 15:08:40.000000000 +0200 @@ -787,10 +787,10 @@ $checkmedia = "checkmedia"; } my $hybridmedia; - if ( defined($this->{m_proddata}->getVar("RUN_ISOHYBRID")) - && $this->{m_proddata}->getVar("RUN_ISOHYBRID") eq "true" - ) { - $hybridmedia = 1 ; + my $rpihybridmedia; + if (defined($this->{m_proddata}->getVar("RUN_ISOHYBRID"))) { + $hybridmedia = 1 if $this->{m_proddata}->getVar("RUN_ISOHYBRID") eq "true"; + $rpihybridmedia = 1 if $this->{m_proddata}->getVar("RUN_ISOHYBRID") eq "rpi" } $iso = KIWIIsoLinux -> new( $this->{m_basesubdir}->{$cd}, @@ -828,6 +828,13 @@ $this->logMsg('I', "Isohybrid call successful"); } } + if ($rpihybridmedia) { + if(!$iso->createRPiHybrid()) { + $this->logMsg('W', "Failed to create RPi Hybrid ISO"); + } else { + $this->logMsg('I', "Successfully created RPi Hybrid ISO"); + } + } } if(!$iso->checkImage()) { $this->logMsg('E', "Tagmedia call failed"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/product-builder-1.1.3/modules/KIWIIsoLinux.pm new/product-builder-1.2.0/modules/KIWIIsoLinux.pm --- old/product-builder-1.1.3/modules/KIWIIsoLinux.pm 2018-06-06 10:52:39.000000000 +0200 +++ new/product-builder-1.2.0/modules/KIWIIsoLinux.pm 2018-08-24 15:08:40.000000000 +0200 @@ -461,8 +461,18 @@ my $arch = shift; my %base = %{$this->{base}}; my $para = $this -> {params}; + my $magicID= $this -> {magicID}; my $boot = $base{$arch}{boot}; my $loader= $base{$arch}{efi}; + my $sort = $this -> createLegacySortFile ("aarch64"); + my $src = $this -> {source}; + KIWIQX::qxx ("echo $src/boot/$arch/efi 1000001 >> $sort"); + #========================================== + # add end-of-header marker + #------------------------------------------ + KIWIQX::qxx ("echo $magicID > ".$this->{tmpdir}."/glump"); + KIWIQX::qxx ("echo ".$this->{tmpdir}."/glump 1000000 >> $sort") if $sort; + $para.= " -sort $sort" if $sort; $para.= " -no-emul-boot"; # do not add -boot-load-size 1 here $para.= " -b $loader"; @@ -521,7 +531,9 @@ $this -> cleanISO(); return; } - find ({wanted => $wref,follow => 0 },$src."/".$base{$arch}{boot}."/loader"); + if ($arch ne "aarch64") { + find ({wanted => $wref,follow => 0 },$src."/".$base{$arch}{boot}."/loader"); + } print $FD "$ldir/".$base{$arch}{boot}."/boot.catalog 3"."\n"; print $FD $base{$arch}{boot}."/boot.catalog 3"."\n"; print $FD "$src/".$base{$arch}{boot}."/boot.catalog 3"."\n"; @@ -1169,6 +1181,69 @@ return $this; } +#========================================== +# createRPiHybrid +#------------------------------------------ +sub createRPiHybrid { + # ... + # create hybrid ISO that only injects MBR awareness, + # but without using the isohybrid tool. This is needed + # to directly boot the iso on a Raspberry Pi. + # --- + my $this = shift; + my $mbrid = shift; + my $kiwi = $this->{kiwi}; + my $iso = $this->{dest}; + my $xml = $this->{xml}; + my $data; + my $code; + my $mbr; + my $iso_fd = FileHandle -> new(); + + if (! $iso_fd -> open("+<".$iso)) { + $kiwi -> error ("Can not open hybrid iso"); + $kiwi -> failed (); + return; + } + + # Create MBR + my $bootcode = pack("a446", ""); + my $empty_part = pack("a16", ""); + + my $iso_start = $this->{magic_offset}; + my $iso_size = (sysseek($iso_fd, 0, 2) / 512) - $iso_start; + my $iso_part = pack("C8VV", 0, 0xff, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, $iso_start, $iso_size); + + my $efi_start = hex(KIWIQX::qxx("echo -n `isoinfo -d -i $iso | grep Bootoff | cut -d f -f 3 | cut -d ' ' -f 2`")) * 4; + my $efi_size = hex(KIWIQX::qxx("echo -n `isoinfo -d -i $iso | grep Nsect | cut -d t -f 2 | sed 's/ //g'`")); + my $efi_part = pack("C8VV", 0x80, 0xff, 0xff, 0xff, 0xc, 0xff, 0xff, 0xff, $efi_start, $efi_size); + + if (!$efi_start || !$efi_size) { + $kiwi -> error ("Can not parse el torito information on hybrid iso"); + $kiwi -> failed (); + return; + } + + $mbr = pack("a446", ""); + $mbr .= $efi_part; + $mbr .= $iso_part; + $mbr .= $empty_part; + $mbr .= $empty_part; + $mbr .= pack("C2", 0x55, 0xaa); + + # Write MBR into iso + sysseek $iso_fd, 0, 0; + if (! syswrite($iso_fd, $mbr, 512) == 512) { + $kiwi -> error ("Can not write iso MBR"); + $kiwi -> failed (); + return; + } + + $iso_fd -> close(); + + return $this; +} + #========================================== # relocateCatalog #------------------------------------------ ++++++ product-builder.obsinfo ++++++ --- /var/tmp/diff_new_pack.ueuNXF/_old 2018-09-11 17:10:37.696028615 +0200 +++ /var/tmp/diff_new_pack.ueuNXF/_new 2018-09-11 17:10:37.696028615 +0200 @@ -1,5 +1,5 @@ name: product-builder -version: 1.1.3 -mtime: 1528275159 -commit: 717e1875568f05082a116dc015563f7bde4ec255 +version: 1.2.0 +mtime: 1535116120 +commit: 2eaf4a9a9d0ff1b8a6e40a45dce57c1640b75787