From 3a0f89209ce8f063a162c5c44aa86271d49a17c9 Mon Sep 17 00:00:00 2001 From: nwhitehorn Date: Wed, 4 May 2011 23:41:11 +0000 Subject: Repair release CD generation on PC98 and sun4v after release building changes, and backport the new logic (ISO images are TARGET dependant, not TARGET_CPUARCH dependant) to Makefile.sysinstall. While modifying ISO image scripts, change several archs to use makefs (from base) instead of mkisofs (from ports) which makes release CD generation both faster and self-hosting. --- release/Makefile.sysinstall | 16 +++++----- release/amd64/mkisoimages.sh | 21 ++----------- release/i386/mkisoimages.sh | 28 +++-------------- release/pc98/mkisoimages.sh | 45 +++++++++++++++++++++++++++ release/sun4v/mkisoimages.sh | 72 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 133 insertions(+), 49 deletions(-) create mode 100644 release/pc98/mkisoimages.sh create mode 100644 release/sun4v/mkisoimages.sh (limited to 'release') diff --git a/release/Makefile.sysinstall b/release/Makefile.sysinstall index fd1a314..71a0a57 100644 --- a/release/Makefile.sysinstall +++ b/release/Makefile.sysinstall @@ -1136,35 +1136,35 @@ CD_DVD1_PKGS= ${CD_PACKAGE_TREE}/dvd1 .endif iso.1: -.if exists(${.CURDIR}/${TARGET_CPUARCH}/mkisoimages.sh) +.if exists(${.CURDIR}/${TARGET}/mkisoimages.sh) @echo "Creating ISO images..." .if defined(CD_BOOT) - @sh ${.CURDIR}/${TARGET_CPUARCH}/mkisoimages.sh ${BOOTABLE} \ + @sh ${.CURDIR}/${TARGET}/mkisoimages.sh ${BOOTABLE} \ FreeBSD_bootonly \ ${CD}/FreeBSD-${BUILDNAME}-${TARGET}-bootonly.iso ${CD_BOOT} .endif - @sh ${.CURDIR}/${TARGET_CPUARCH}/mkisoimages.sh ${BOOTABLE} \ + @sh ${.CURDIR}/${TARGET}/mkisoimages.sh ${BOOTABLE} \ FreeBSD_Install \ ${CD}/FreeBSD-${BUILDNAME}-${TARGET}-disc1.iso ${CD_DISC1} \ ${CD_DISC1_PKGS} - @sh ${.CURDIR}/${TARGET_CPUARCH}/mkisoimages.sh \ + @sh ${.CURDIR}/${TARGET}/mkisoimages.sh \ FreeBSD_Packages \ ${CD}/FreeBSD-${BUILDNAME}-${TARGET}-disc2.iso ${CD_DISC2} \ ${CD_DISC2_PKGS} .if defined(MAKE_DVD) - @sh ${.CURDIR}/${TARGET_CPUARCH}/mkisoimages.sh ${BOOTABLE} \ + @sh ${.CURDIR}/${TARGET}/mkisoimages.sh ${BOOTABLE} \ FreeBSD_Install \ ${CD}/FreeBSD-${BUILDNAME}-${TARGET}-dvd1.iso ${CD_DVD1} \ ${CD_DVD1_PKGS} .endif .if !defined(NODOC) - @sh ${.CURDIR}/${TARGET_CPUARCH}/mkisoimages.sh \ + @sh ${.CURDIR}/${TARGET}/mkisoimages.sh \ FreeBSD_Documentation \ ${CD}/FreeBSD-${BUILDNAME}-${TARGET}-disc3.iso ${CD_DOCS} \ ${CD_DOCS_PKGS} .endif .if defined(SEPARATE_LIVEFS) - @sh ${.CURDIR}/${TARGET_CPUARCH}/mkisoimages.sh ${BOOTABLE} \ + @sh ${.CURDIR}/${TARGET}/mkisoimages.sh ${BOOTABLE} \ FreeBSD_LiveFS \ ${CD}/FreeBSD-${BUILDNAME}-${TARGET}-livefs.iso ${CD_LIVEFS} .endif @@ -1173,7 +1173,7 @@ iso.1: @(cd ${CD} && sha256 *.iso > FreeBSD-${BUILDNAME}-${TARGET}-iso.CHECKSUM.SHA256) touch ${.TARGET} .else - @echo "Do not know how to create an ISO for ${TARGET_CPUARCH}." + @echo "Do not know how to create an ISO for ${TARGET}." .endif # diff --git a/release/amd64/mkisoimages.sh b/release/amd64/mkisoimages.sh index c8c1986..384f44f 100644 --- a/release/amd64/mkisoimages.sh +++ b/release/amd64/mkisoimages.sh @@ -26,7 +26,7 @@ publisher="The FreeBSD Project. http://www.freebsd.org/" if [ "x$1" = "x-b" ]; then # This is highly x86-centric and will be used directly below. - bootable="-b boot/cdboot -no-emul-boot" + bootable="-o bootimage=i386;$4/boot/cdboot -o no-emul-boot" shift else bootable="" @@ -37,24 +37,9 @@ if [ $# -lt 3 ]; then exit 1 fi -type mkisofs 2>&1 | grep " is " >/dev/null -if [ $? -ne 0 ]; then - echo The cdrtools port is not installed. Trying to get it now. - if [ -f /usr/ports/sysutils/cdrtools/Makefile ]; then - cd /usr/ports/sysutils/cdrtools && make install BATCH=yes && make clean - else - if ! pkg_add -r cdrtools; then - echo "Could not get it via pkg_add - please go install this" - echo "from the ports collection and run this script again." - exit 2 - fi - fi -fi - LABEL=$1; shift NAME=$1; shift -echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > $1/etc/fstab -mkisofs $bootable -r -J -V $LABEL -publisher "$publisher" -o $NAME $* +echo "/dev/iso9660/`echo $LABEL | tr '[:lower:]' '[:upper:]'` / cd9660 ro 0 0" > $1/etc/fstab +makefs -t cd9660 $bootable -o rockridge -o label=$LABEL $NAME $* rm $1/etc/fstab - diff --git a/release/i386/mkisoimages.sh b/release/i386/mkisoimages.sh index d5570dc..384f44f 100644 --- a/release/i386/mkisoimages.sh +++ b/release/i386/mkisoimages.sh @@ -24,40 +24,22 @@ # into base-bits-dir as part of making the image. publisher="The FreeBSD Project. http://www.freebsd.org/" - if [ "x$1" = "x-b" ]; then - bootable="-b boot/cdboot -no-emul-boot" - shift -elif [ "x$1" = "x-G" ]; then - bootable="-G /R/cdrom/bootonly/boot/cdboot" + # This is highly x86-centric and will be used directly below. + bootable="-o bootimage=i386;$4/boot/cdboot -o no-emul-boot" shift else bootable="" fi if [ $# -lt 3 ]; then - echo Usage: $0 '[-bG] image-label image-name base-bits-dir [extra-bits-dir]' + echo Usage: $0 '[-b] image-label image-name base-bits-dir [extra-bits-dir]' exit 1 fi -type mkisofs 2>&1 | grep " is " >/dev/null -if [ $? -ne 0 ]; then - echo The cdrtools port is not installed. Trying to get it now. - if [ -f /usr/ports/sysutils/cdrtools/Makefile ]; then - cd /usr/ports/sysutils/cdrtools && make install BATCH=yes && make clean - else - if ! pkg_add -r cdrtools; then - echo "Could not get it via pkg_add - please go install this" - echo "from the ports collection and run this script again." - exit 2 - fi - fi -fi - LABEL=$1; shift NAME=$1; shift -echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > $1/etc/fstab -mkisofs $bootable -r -J -V $LABEL -publisher "$publisher" -o $NAME $* +echo "/dev/iso9660/`echo $LABEL | tr '[:lower:]' '[:upper:]'` / cd9660 ro 0 0" > $1/etc/fstab +makefs -t cd9660 $bootable -o rockridge -o label=$LABEL $NAME $* rm $1/etc/fstab - diff --git a/release/pc98/mkisoimages.sh b/release/pc98/mkisoimages.sh new file mode 100644 index 0000000..45b4c7c --- /dev/null +++ b/release/pc98/mkisoimages.sh @@ -0,0 +1,45 @@ +#!/bin/sh +# +# Module: mkisoimages.sh +# Author: Jordan K Hubbard +# Date: 22 June 2001 +# +# $FreeBSD$ +# +# This script is used by release/Makefile to build the (optional) ISO images +# for a FreeBSD release. It is considered architecture dependent since each +# platform has a slightly unique way of making bootable CDs. This script +# is also allowed to generate any number of images since that is more of +# publishing decision than anything else. +# +# Usage: +# +# mkisoimages.sh [-b] image-label image-name base-bits-dir [extra-bits-dir] +# +# Where -b is passed if the ISO image should be made "bootable" by +# whatever standards this architecture supports (may be unsupported), +# image-label is the ISO image label, image-name is the filename of the +# resulting ISO image, base-bits-dir contains the image contents and +# extra-bits-dir, if provided, contains additional files to be merged +# into base-bits-dir as part of making the image. + +publisher="The FreeBSD Project. http://www.freebsd.org/" +if [ "x$1" = "x-b" ]; then + # This is highly x86-centric and will be used directly below. + bootable="-o generic-bootimage=$4/boot/cdboot" + shift +else + bootable="" +fi + +if [ $# -lt 3 ]; then + echo Usage: $0 '[-b] image-label image-name base-bits-dir [extra-bits-dir]' + exit 1 +fi + +LABEL=$1; shift +NAME=$1; shift + +echo "/dev/iso9660/`echo $LABEL | tr '[:lower:]' '[:upper:]'` / cd9660 ro 0 0" > $1/etc/fstab +makefs -t cd9660 $bootable -o rockridge -o label=$LABEL $NAME $* +rm $1/etc/fstab diff --git a/release/sun4v/mkisoimages.sh b/release/sun4v/mkisoimages.sh new file mode 100644 index 0000000..c2937cb --- /dev/null +++ b/release/sun4v/mkisoimages.sh @@ -0,0 +1,72 @@ +#!/bin/sh +# +# Module: mkisoimages.sh +# Author: Jordan K Hubbard +# Date: 22 June 2001 +# +# $FreeBSD$ +# +# This script is used by release/Makefile to build the (optional) ISO images +# for a FreeBSD release. It is considered architecture dependent since each +# platform has a slightly unique way of making bootable CDs. This script +# is also allowed to generate any number of images since that is more of +# publishing decision than anything else. +# +# Usage: +# +# mkisoimages.sh [-b] image-label image-name base-bits-dir [extra-bits-dir] +# +# Where -b is passed if the ISO image should be made "bootable" by +# whatever standards this architecture supports (may be unsupported), +# image-label is the ISO image label, image-name is the filename of the +# resulting ISO image, base-bits-dir contains the image contents and +# extra-bits-dir, if provided, contains additional files to be merged +# into base-bits-dir as part of making the image. + +publisher="The FreeBSD Project. http://www.freebsd.org/" +IMG=/tmp/bootfs +MNT=/mnt + +if [ "x$1" = "x-b" ]; then + dd if=/dev/zero of=${IMG} bs=512 count=1024 + MD=`mdconfig -a -t vnode -f ${IMG}` + sunlabel -w -B -b $4/boot/boot1 ${MD} auto + newfs -O1 -o space -m 0 /dev/${MD} + mount /dev/${MD} ${MNT} + mkdir ${MNT}/boot + cp $4/boot/loader ${MNT}/boot + umount ${MNT} + mdconfig -d -u ${MD#md} + bootable="-B ,,,,${IMG}" + shift +else + bootable="" +fi + +if [ $# -lt 3 ]; then + echo Usage: $0 '[-b] image-label image-name base-bits-dir [extra-bits-dir]' + rm -f ${IMG} + exit 1 +fi + +type mkisofs 2>&1 | grep " is " >/dev/null +if [ $? -ne 0 ]; then + echo The cdrtools port is not installed. Trying to get it now. + if [ -f /usr/ports/sysutils/cdrtools/Makefile ]; then + cd /usr/ports/sysutils/cdrtools && make install BATCH=yes && make clean + else + if ! pkg_add -r cdrtools; then + echo "Could not get it via pkg_add - please go install this" + echo "from the ports collection and run this script again." + exit 2 + fi + fi +fi + +LABEL=$1; shift +NAME=$1; shift + +echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > $1/etc/fstab +mkisofs $bootable -r -J -V $LABEL -publisher "$publisher" -o $NAME $* +rm $1/etc/fstab +rm -f ${IMG} -- cgit v1.1