From 087669567591a7a6240427b4fc59ec8fe849a9f5 Mon Sep 17 00:00:00 2001 From: Anne Nicolas Date: Tue, 6 Sep 2016 22:30:50 +0200 Subject: Script EFI buold for x86_64 isos (tmb) --- BCD/Genisoimage.pm | 153 +---------------------------------------------------- create_dvd.sh | 26 +++++++-- 2 files changed, 22 insertions(+), 157 deletions(-) mode change 100644 => 120000 BCD/Genisoimage.pm diff --git a/BCD/Genisoimage.pm b/BCD/Genisoimage.pm deleted file mode 100644 index a67d547..0000000 --- a/BCD/Genisoimage.pm +++ /dev/null @@ -1,152 +0,0 @@ -package BCD::Genisoimage; - -use strict; -use XML::Simple; -use BCD::Common qw(:DEFAULT $nameid $arch $isoconf $wd $name $arch $version $builddir $isodir $error_color $repo $based_on $support); -use BCD::Media qw(:DEFAULT parse_synthesis); -use URPM; - -our @ISA = qw(Exporter); -our @EXPORT = qw(main_iso create_idx); -our @EXPORT_OK = qw($isoname); - -my $LOG="GENISOIMAGE -"; -my $color = "green"; - -our $isoname = $isoconf->{nameid} . '-' . $isoconf->{mediainfo}{version} . '-' . $isoconf->{arch} . '-' . $isoconf->{support}; - -sub create_version { - # create the VERSION file available on the base of the ISO - my $version_file = "$builddir/VERSION"; - print_color("$LOG create the $version_file file", $color); - open my $VERSION, ">$version_file"; - my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime(time()); - $year += 1900; - my $tag = $isoconf->{iso}{tag}; - my $product = $isoconf->{iso}{product}; - my $publisher = $isoconf->{iso}{header}{publisherid}; - printf $VERSION "$publisher $name $tag %04d%02d%02d $hour:%02d\n", $year, $mon+1, $mday, $min; - close $VERSION; -} - -sub create_productid { - print_color("$LOG create the $builddir/product.id", $color); - my $productid_file = "$builddir/product.id"; - open my $product_id, ">$productid_file"; - print $product_id "vendor=$isoconf->{iso}{header}{publisherid},"; - print $product_id "distribution=$isoconf->{iso}{header}{systemid},"; - print $product_id "type=$isoconf->{iso}{type},"; - print $product_id "version=$isoconf->{based_on},"; - print $product_id "branch=$isoconf->{iso}{branch},"; - print $product_id "release=$isoconf->{iso}{minor}.$isoconf->{iso}{subversion},"; - print $product_id "arch=$arch,"; - print $product_id "product=$isoconf->{iso}{product}"; - close $product_id; -} - -sub create_idx { - print_color("$LOG create the IDX file from $builddir/pkg-$version-$isoconf->{iso}{tag}.idx", $color); - # pkg-2009.1-pauillac.idx - my $idx = "$builddir/pkg-$version-$isoconf->{iso}{tag}.idx"; - system("cp -vf /dev/null $idx"); - use Data::Dumper; - my $urpm = URPM->new; - my @hdlists = glob("$builddir/media/media_info/hdlist_*.cz"); - my @tab; - foreach (@hdlists) { - print_color("$LOG parsing $_ hslist", $color); - $urpm->parse_hdlist($_); - $urpm->traverse(sub { - my $pkg = shift; - my $pkgname = $pkg->name; - my $version = $pkg->version; - my $arch = $pkg->arch; - push @tab, "$pkgname-$version ($arch)"; - } - ); - } - my %hashtab = map { $_ => 1 } @tab; - my @orderedpkgs = sort keys %hashtab; - open my $FILE_IDX, ">>$idx"; - foreach (@orderedpkgs) { - print $FILE_IDX "$isoconf->{iso}{header}{volumeid} $_\n"; - } - close $FILE_IDX; - system("cp -v $builddir/pkg-$version-$isoconf->{iso}{tag}.idx $isodir/$isoname.idx"); -} - -sub create_iso { - # build the ISO with all args - # use -eltorito-alt-boot -e isolinux/efiboot.img -no-emul-boot for EFI - print_color("$LOG Building the ISO", $color); - - - my $cmd = "xorriso -as mkisofs $isoconf->{iso}{genisoimage}{options} \\ - -A '$isoconf->{iso}{header}{applicationid}' \\ - -publisher '$isoconf->{iso}{header}{publisherid}' \\ - -sysid '$isoconf->{iso}{header}{systemid}' \\ - -p '$isoconf->{iso}{header}{datapreparer}' \\ - -volset '$isoconf->{iso}{header}{volumesetid}' \\ - -V '$isoconf->{iso}{header}{volumeid}' \\ - -o '$isodir/$isoname.iso' \\ - -b isolinux/isolinux.bin \\ - -boot-info-table \\ - $builddir/../ - "; - -#-quiet \\ - print_color("\n------------\n $cmd", $color); - system($cmd); - system("du -h $isodir/$isoname.iso"); - system("du -sh $builddir/install"); - my $size_iso = -s "$isodir/$isoname.iso"; - if ($size_iso > 3900338176) { - print_color("WARNING: THE SIZE OF THE ISO IS TOO BIG. PLEASE CHECK AGAIN.", $error_color); - } - -} - -sub create_md5 { - # create the MD5 of the ISO - print_color("$LOG Create the MD5 and SHA1 of the ISO", $color); - my $ISOFILE = "$isodir/$isoname.iso"; - if (! -f $ISOFILE) { - print_color("$LOG can't find $ISOFILE", $error_color); - exit 1; - } else { - print_color("$LOG do a: md5sum $ISOFILE > $ISOFILE.md5", $color); - system("cd $isodir && md5sum $isoname.iso > $ISOFILE.md5 &"); - print_color("$LOG do a: sha1sum $ISOFILE > $ISOFILE.sha1", $color); - system("cd $isodir && sha1sum $isoname.iso > $ISOFILE.sha1 &"); - } -} - -sub isohybrid { - print_color("$LOG isohybrid the ISO", $color); - my $ISOFILE = "$isodir/$isoname.iso"; - system("isohybrid $isoconf->{iso}{isohybrid}{options} $ISOFILE") == 0 or die "$LOG system isohybrid failed: $?\n"; -} - -sub copy_textfiles { - map { system("cp -vf $repo/$based_on/$arch/$_ $builddir/"); - } qw(COPYING INSTALL.txt install.htm LICENSE.txt LICENSE-APPS.txt README.txt index.htm release-notes.html release-notes.txt); -} - -sub main_iso { - my ($option) = @_; - create_version; - create_productid; - copy_textfiles; - create_idx; - if ($option =~ /noiso/) { - print_color("$LOG skipping ISO creation", $color); - } else { - create_iso; - isohybrid; - create_md5; - } - -} - -1; - diff --git a/BCD/Genisoimage.pm b/BCD/Genisoimage.pm new file mode 120000 index 0000000..47145c7 --- /dev/null +++ b/BCD/Genisoimage.pm @@ -0,0 +1 @@ +Genisoimage.pm.x86_64 \ No newline at end of file diff --git a/create_dvd.sh b/create_dvd.sh index 8090108..cc116de 100755 --- a/create_dvd.sh +++ b/create_dvd.sh @@ -2,12 +2,22 @@ arch=$1 distrib=Mageia -version=6-dev1 +version=6-RC homebcd=/home/bcd/build_bcd bin=$homebcd/bcd pieces=$homebcd/pieces/iso build=$homebcd/build/$distrib-$version-$arch +# (tmb) move symlink depending on arch +pushd /home/bcd/build_bcd/bcd/BCD +if [ "$arch" = "x86_64" ] +then + ln -sf Genisoimage.pm.x86_64 Genisoimage.pm +else + ln -sf Genisoimage.pm.i586 Genisoimage.pm +fi +popd + $bin/bcd.pl dvd_free-$arch.xml all noiso #rm -rf $build/$arch/isolinux @@ -15,9 +25,8 @@ $bin/bcd.pl dvd_free-$arch.xml all noiso mv $homebcd/build/$distrib-$version-$arch/$arch/isolinux $homebcd/build/$distrib-$version-$arch cp $pieces/dvd/$arch.cfg $build/isolinux/isolinux.cfg cp $pieces/dvd/tools.cfg $build/isolinux/ + rm -f $build/isolinux/i386.cfg -#cp -f /home/bcd/message $build/isolinux/bootlogo -#cp -r $pieces/images/$arch $build/isolinux rm -f $build/$arch/install/images/*nonfree* @@ -26,11 +35,18 @@ then cd $build tar -xvJf $pieces/DVD-EFI.tar.xz cd - +else + rm -f $build/isolinux/i386.cfg + perl -pi -e 's/i586/i386/' $build/isolinux/isolinux.cfg fi +cp -f $pieces/message $build/isolinux/bootlogo + $bin/bcd.pl dvd_free-$arch.xml iso date > $homebcd/iso/$distrib-$version-$arch/DATE.txt -for i in md5 sha1 +cd $homebcd/iso/$distrib-$version-$arch + +for i in md5 sha1 sha512 do -${i}sum $homebcd/iso/$distrib-$version-$arch/$distrib-$version-$arch-DVD.iso > $homebcd/iso/$distrib-$version-$arch/$distrib-$version-$arch-DVD.iso.$i +${i}sum $distrib-$version-$arch-DVD.iso > $distrib-$version-$arch-DVD.iso.$i done -- cgit v1.2.1