svn commit: r221466 - in head/release: . amd64 i386 pc98 sun4v

Nathan Whitehorn nwhitehorn at FreeBSD.org
Wed May 4 23:41:12 UTC 2011


Author: nwhitehorn
Date: Wed May  4 23:41:11 2011
New Revision: 221466
URL: http://svn.freebsd.org/changeset/base/221466

Log:
  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.

Added:
  head/release/pc98/mkisoimages.sh
     - copied, changed from r221440, head/release/i386/mkisoimages.sh
  head/release/sun4v/mkisoimages.sh
     - copied unchanged from r221440, head/release/sparc64/mkisoimages.sh
Modified:
  head/release/Makefile.sysinstall
  head/release/amd64/mkisoimages.sh
  head/release/i386/mkisoimages.sh

Modified: head/release/Makefile.sysinstall
==============================================================================
--- head/release/Makefile.sysinstall	Wed May  4 23:34:10 2011	(r221465)
+++ head/release/Makefile.sysinstall	Wed May  4 23:41:11 2011	(r221466)
@@ -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
 
 #

Modified: head/release/amd64/mkisoimages.sh
==============================================================================
--- head/release/amd64/mkisoimages.sh	Wed May  4 23:34:10 2011	(r221465)
+++ head/release/amd64/mkisoimages.sh	Wed May  4 23:41:11 2011	(r221466)
@@ -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
-

Modified: head/release/i386/mkisoimages.sh
==============================================================================
--- head/release/i386/mkisoimages.sh	Wed May  4 23:34:10 2011	(r221465)
+++ head/release/i386/mkisoimages.sh	Wed May  4 23:41:11 2011	(r221466)
@@ -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
-

Copied and modified: head/release/pc98/mkisoimages.sh (from r221440, head/release/i386/mkisoimages.sh)
==============================================================================
--- head/release/i386/mkisoimages.sh	Wed May  4 13:50:37 2011	(r221440, copy source)
+++ head/release/pc98/mkisoimages.sh	Wed May  4 23:41:11 2011	(r221466)
@@ -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 generic-bootimage=$4/boot/cdboot"
 	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
-

Copied: head/release/sun4v/mkisoimages.sh (from r221440, head/release/sparc64/mkisoimages.sh)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/release/sun4v/mkisoimages.sh	Wed May  4 23:41:11 2011	(r221466, copy of r221440, head/release/sparc64/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}


More information about the svn-src-all mailing list