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}
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to