--- builds_bin/build_ISO 2007/05/19 21:55:09 1.10 +++ builds_bin/build_ISO 2020/06/15 04:27:12 1.44 @@ -1,87 +1,249 @@ #!/bin/sh -[ -d cdrom.image ] || (echo "No cdrom.image directory?"; exit 1) - distname='SME Server' disttag='smeserver' -distvers=$(basename $(pwd)) - -[ -f cdrom.image/updates/anaconda ] && chmod a+rx cdrom.image/updates/anaconda +distvers=$(basename $(readlink -f $(pwd))) +distrel=${distvers%%.*} +distarch=$(uname -i) +user=$(whoami) + +exec < /dev/null +exec &> build_ISO.$distarch + +if ! [ -d $distarch ] +then + echo "No $distarch directory?" + exit 1 +fi -for img in product updates +for img in product updates EFI do - /usr/bin/mkcramfs \ - $(pwd)/cdrom.image/$img \ - $(pwd)/cdrom.image/CentOS/base/$img.img + if [ "$distrel" == "10" -a "$img" = "updates" ] + then + echo "SME10 do nothing with updates.img, yet" + elif [ -d "$(pwd)/$distarch/$img" -a "$img" = "EFI" ] + then + echo "building efiboot.img" + # the content of the img should be /EFI/BOOT* and not /BOOT/*, so we need to copy the content in a temp dir + sudo mount -o loop $(pwd)/$distarch/efiboot.img /tmp/loop + sudo cp -a $(pwd)/$distarch/EFI/BOOT/grub.cfg /tmp/loop/EFI/BOOT/ + sudo umount /tmp/loop +# sudo rm -rf /tmp/efiboot +# mkdir -p /tmp/efiboot +# cp -a $(pwd)/$distarch/$img /tmp/efiboot +# /sbin/mksquashfs \ +# /tmp/efiboot \ +# $(pwd)/$distarch/images/efiboot.img \ +# -all-root -no-fragments -noappend +# sudo chmod 664 $(pwd)/$distarch/images/efiboot.img +# sudo rm -rf /tmp/efiboot + elif [ -d "$(pwd)/$distarch/$img" ] + then + echo "building $img.img...." + /sbin/mksquashfs \ + $(pwd)/$distarch/$img \ + $(pwd)/$distarch/images/$img.img \ + -all-root -no-fragments -noappend + sudo chmod 664 $(pwd)/$distarch/images/$img.img + fi done -PYTHONPATH=/usr/lib/anaconda/ /usr/lib/anaconda-runtime/genhdlist \ - --withnumbers \ - $(pwd)/cdrom.image/ - -PYTHONPATH=/usr/lib/anaconda/ /usr/lib/anaconda-runtime/pkgorder \ - $(pwd)/cdrom.image \ - $(uname -i) > pkgorder - -PYTHONPATH=/usr/lib/anaconda/ /usr/lib/anaconda-runtime/genhdlist \ - --withnumbers \ - --fileorder pkgorder \ - $(pwd)/cdrom.image/ - -rm -f $disttag-$distvers.iso smeserver.iso - -cd cdrom.image - -createrepo . -repoview . +rm -f ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso* ../iso/$distrel/$distarch/$disttag-$distarch.iso +rm -f ../iso/$distrel/$distarch/$disttag-$distvers-$distarch-netinstall.iso* +rm -f ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.jigdo ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.template + +if [ "$distrel" == "9" -o "$distrel" == "10" ] +then + mkdir -p $(pwd)/$distarch/repodata/ + rm -f $(pwd)/$distarch/repodata/*comps.xml* + /bin/cp -af $(pwd)/$distarch/Packages/base/comps.xml $(pwd)/$distarch/repodata/ + createrepo --database --update --skip-symlinks --simple-md-filenames --groupfile repodata/comps.xml $(pwd)/$distarch/ +fi +sync; rm -rf $(pwd)/$distarch/.olddata $(pwd)/$distarch/repodata/repoview $(pwd)/$distarch/repoview +repoview $(pwd)/$distarch/ +sync; rm -rf $(pwd)/$distarch/.repodata bootimg='isolinux/isolinux.bin' bootcat='isolinux/boot.cat' -#mkisopts='-r -N -L -d -D -J' -mkisopts='-r -J' +efi_boot_file='images/efiboot.img' +mkisopts='-v -U -J -r -T' today="$(date '+%d %b %Y')" -mkisofs $mkisopts \ - -V "$distname $distvers" \ - -A "$distname created on $today" \ - -b "$bootimg" \ - -c "$bootcat" \ - -no-emul-boot -boot-load-size 4 -boot-info-table \ - -x lost+found \ - -x CVS \ - -o "../$disttag-$distvers".iso \ - . - -cd .. -/usr/lib/anaconda-runtime/implantisomd5 $disttag-$distvers.iso -dd if=/dev/zero bs=2048 count=150 >> $disttag-$distvers.iso -md5sum $disttag-$distvers.iso > $disttag-$distvers.iso.md5sum -ls -lRt > $disttag-$distvers.iso.ls-lRt -zsyncmake $disttag-$distvers.iso -mv $disttag-$distvers.iso $disttag.iso -ln -sf $disttag.iso $disttag-$distvers.iso - -[ -d SRPMS ] || (echo "No SRPMS directory?"; exit 1) - -echo "Building SRPMS ISO" - -rm -f $disttag-SRPMS.iso $disttag-$distvers-SRPMS.iso - -mkisofs $mkisopts \ - -V "$distname $distvers SRPMS" \ - -A "$distname SRPMS created on $today" \ - -x lost+found \ - -x CVS \ - -x cdrom.image \ - -o "$disttag-$distvers-SRPMS".iso \ - --graft-points \ - ./SRPMS=SRPMS \ - GPL=cdrom.image/GPL \ - RPM-GPG-KEY-SMEServer7=cdrom.image/RPM-GPG-KEY-SMEServer - -md5sum $disttag-$distvers-SRPMS.iso > $disttag-$distvers-SRPMS.iso.md5sum -zsyncmake $disttag-$distvers-SRPMS.iso -mv $disttag-$distvers-SRPMS.iso $disttag-SRPMS.iso -ln -sf $disttag-SRPMS.iso $disttag-$distvers-SRPMS.iso +if [ "$distrel" == "10" ] +then +#Caton +#xorriso -as mkisofs \ +#-o ../custom-SME10.iso \ +#-V "SME Server" \ +#-A "SME Server" \ +#-joliet-long \ +#-isohybrid-mbr images/efiboot.img \ +#-c isolinux/boot.cat \ +#-b isolinux/isolinux.bin \ +#-no-emul-boot \ +#-boot-load-size 4 \ +#-boot-info-table \ +#-eltorito-alt-boot \ +#-e images/efiboot.img -no-emul-boot \ +#-isohybrid-gpt-basdat \ +#-R -J -v -T . + +/usr/bin/xorriso -as mkisofs -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \ + $mkisopts -joliet-long \ + -V "$distname" \ + -A "$distname" \ + -volset "$distname" \ + -c "$bootcat" -b "$bootimg" \ + -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot \ + -e "$efi_boot_file" \ + -no-emul-boot -isohybrid-gpt-basdat \ + -x boot.iso -x lost+found -x product -x updates -x efiboot -x 'buildinstall.tree.*' -x CVS \ + -o ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso \ + $(pwd)/$distarch/ + +#mkisofs $mkisopts -joliet-long -V "$distname" \ +# -A "$distname" \ +# -volset "$distname" \ +# -b "$bootimg" -c "$bootcat" \ +# -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot \ +# -efi-boot "$efi_boot_file" \ +# -no-emul-boot -isohybrid-gpt-basdat \ +# -x boot.iso -x lost+found -x product -x updates -x 'buildinstall.tree.*' -x CVS \ +# -o ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso \ +# $(pwd)/$distarch/ + +else +mkisofs $mkisopts -V "$distname" \ + -A "$distname $distvers created on $today" \ + -b "$bootimg" -c "$bootcat" \ + -no-emul-boot -boot-load-size 4 -boot-info-table -x boot.iso \ + -x lost+found -x product -x updates -x 'buildinstall.tree.*' -x CVS \ + -o ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso \ + $(pwd)/$distarch/ +fi + +if [ "$distrel" == "10" ] +then + #creating a root for netinstall + mkdir -p /tmp/{loop,remaster} + sudo mount -o loop $(pwd)/$distarch/images/boot.iso /tmp/loop + # --no-perms --no-owner --no-group + sudo rsync -av /tmp/loop/ /tmp/remaster/; sudo umount /tmp/loop + sudo chown $user /tmp/remaster -R + sudo chmod u+w /tmp/remaster -R + #cp netinstall/ks.cfg /tmp/remaster/ + cp -a $(pwd)/$distarch/netinstall/* /tmp/remaster/ + cp -a $(pwd)/$distarch/images/product.img /tmp/remaster/images/ + # rebuild the EFI efiboot.img for netinstall + + echo "building efiboot.img for netinstall" + # the content of the img should be /EFI/BOOT* and not /BOOT/*, so we need to copy the content in a temp dir +# sudo rm -rf /tmp/remaster/efiboot + sudo mount -o loop /tmp/remaster/efiboot.img /tmp/loop + sudo cp -a /tmp/remaster/EFI/BOOT/grub.cfg /tmp/loop/EFI/BOOT/ + sudo umount /tmp/loop +# mkdir -p /tmp/remaster/efiboot +# cp -a /tmp/remaster/EFI $(pwd)/$distarch/efiboot +# /sbin/mksquashfs \ +# /tmp/remaster/efiboot \ +# /tmp/remaster/images/efiboot.img \ +# -all-root -no-fragments -noappend + sudo chmod 664 /tmp/remaster/images/efiboot.img +# sudo rm -rf /tmp/remaster/efiboot + #rebuild iso for netinstall + +# /usr/bin/xorriso -as mkisofs -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \ + /usr/bin/xorriso -as mkisofs \ + $mkisopts -joliet-long \ + -V "$distname" \ + -A "$distname" \ + -volset "$distname" \ + -c "$bootcat" -b "$bootimg" \ + -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot \ + -e "$efi_boot_file" \ + -no-emul-boot -isohybrid-gpt-basdat \ + -x boot.iso -x lost+found -x product -x updates -x efiboot -x 'buildinstall.tree.*' -x CVS \ + -o ../iso/$distrel/$distarch/$disttag-$distvers-$distarch-netinstall.iso \ + /tmp/remaster/ + rm -rf /tmp/loop + sudo rm -rf /tmp/remaster + +else + cp -a $(pwd)/$distarch/images/boot.iso ../iso/$distrel/$distarch/$disttag-$distvers-$distarch-netinstall.iso +fi + +if [ "$distrel" == "10" ] +then + echo "xorriso doing it, no need for isohybrid" +else + if [ -x /usr/bin/isohybrid ] + then + #needs syslinux; should implement efi ? --uefi ? + # should not be necessary with centos7 : mkisofs/mkhybrids and genisoimage have been merged + isohybrid ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso + else + # alternative with mkhybrid ?? + echo "isohybrid not available; you should install syslinux or use genisoimage options" + fi +fi + +if [ -x /usr/lib/anaconda-runtime/implantisomd5 ] +then + /usr/lib/anaconda-runtime/implantisomd5 ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso + #do it for the netinstall + /usr/lib/anaconda-runtime/implantisomd5 ../iso/$distrel/$distarch/$disttag-$distvers-$distarch-netinstall.iso +else + implantisomd5 ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso + #do it for the netinstall + implantisomd5 ../iso/$distrel/$distarch/$disttag-$distvers-$distarch-netinstall.iso +fi +md5sum ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso | sed 's,\.\..*/,,' > ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso.md5sum +sha1sum ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso | sed 's,\.\..*/,,' > ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso.sha1sum +zsyncmake -u $disttag-$distvers-$distarch.iso -o ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso.zsync ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso +mv ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso ../iso/$distrel/$distarch/$disttag-$distarch.iso +ln -sf $disttag-$distarch.iso ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso +# for netinstall +md5sum ../iso/$distrel/$distarch/$disttag-$distvers-$distarch-netinstall.iso | sed 's,\.\..*/,,' > ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso.md5sum +sha1sum ../iso/$distrel/$distarch/$disttag-$distvers-$distarch-netinstall.iso | sed 's,\.\..*/,,' > ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso.sha1sum + + +rsync -a --delete --delete-excluded \ + --exclude 'repodata/' --exclude 'product/' --exclude 'updates/' --exclude 'efiboot/' --exclude 'repoview/' \ + --exclude 'lost+found/' --exclude 'CVS/' --exclude 'buildinstall.tree.*/' \ + --link-dest=../$distarch/ $distarch/ $distarch.jigdo/ + +jigdo-file make-template --force \ + -i ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.iso \ + -j ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.jigdo \ + -t ../iso/$distrel/$distarch/$disttag-$distvers-$distarch.template \ + --label SMEmirror=$distarch.jigdo/ \ + --uri SMEmirror=http://mirror.contribs.org/releases/testing/$distrel/smeos/$distarch/ \ + $distarch.jigdo// +rm -rf $distarch.jigdo/ + +if [ -d SRPMS ] && [ "$distarch" == "i386" -o "$distrel" == "10" ] +then + rm -f ../iso/$distrel/source/$disttag-$distvers-SRPMS.iso* ../iso/$distrel/source/$disttag-SRPMS.iso* + + mkisofs $mkisopts -V "$distname" \ + -A "$distname $distvers SRPMS created on $today" \ + -x lost+found -x product -x updates -x efiboot -x 'buildinstall.tree.*' -x CVS \ + -o ../iso/$distrel/source/$disttag-$distvers-SRPMS.iso \ + --graft-points ./SRPMS=SRPMS GPL=$distarch/GPL \ + RPM-GPG-KEY-SMEServer=$distarch/RPM-GPG-KEY-SMEServer + + md5sum ../iso/$distrel/source/$disttag-$distvers-SRPMS.iso | sed 's,\.\..*/,,' > ../iso/$distrel/source/$disttag-$distvers-SRPMS.iso.md5sum + sha1sum ../iso/$distrel/source/$disttag-$distvers-SRPMS.iso | sed 's,\.\..*/,,' > ../iso/$distrel/source/$disttag-$distvers-SRPMS.iso.sha1sum + zsyncmake -u $disttag-$distvers-SRPMS.iso -o ../iso/$distrel/source/$disttag-$distvers-SRPMS.iso.zsync ../iso/$distrel/source/$disttag-$distvers-SRPMS.iso + mv ../iso/$distrel/source/$disttag-$distvers-SRPMS.iso ../iso/$distrel/source/$disttag-SRPMS.iso + ln -sf $disttag-SRPMS.iso ../iso/$distrel/source/$disttag-$distvers-SRPMS.iso + + jigdo-file make-template --force \ + -i ../iso/$distrel/source/$disttag-$distvers-SRPMS.iso \ + -j ../iso/$distrel/source/$disttag-$distvers-SRPMS.jigdo \ + -t ../iso/$distrel/source/$disttag-$distvers-SRPMS.template \ + --label SMEmirror=SRPMS/ \ + --uri SMEmirror=http://mirror.contribs.org/releases/testing/$distrel/smeos/SRPMS/ \ + SRPMS/ +fi # That's it. -