From 2ef74d2289d8131a12adc35be452368f29ed5767 Mon Sep 17 00:00:00 2001 From: "Jordan K. Hubbard" Date: Mon, 23 Jul 2001 09:01:46 +0000 Subject: [PATCH] Add scripts and Makefile support for building ISO images automatically as part of the release if MAKE_ISOS is set. Will also build the first CD with packages (in addition to the "minimal" CD) if CD_EXTRA_BITS points to them. This probably need a bit more work to get fully useful, but it at least covers the basics for now. --- release/Makefile | 23 ++++++++++++++++ release/alpha/mkisoimages.sh | 51 ++++++++++++++++++++++++++++++++++++ release/amd64/mkisoimages.sh | 51 ++++++++++++++++++++++++++++++++++++ release/i386/mkisoimages.sh | 51 ++++++++++++++++++++++++++++++++++++ 4 files changed, 176 insertions(+) create mode 100644 release/alpha/mkisoimages.sh create mode 100644 release/amd64/mkisoimages.sh create mode 100644 release/i386/mkisoimages.sh diff --git a/release/Makefile b/release/Makefile index 9c4f9cacdb2e..654a43217bdc 100644 --- a/release/Makefile +++ b/release/Makefile @@ -219,6 +219,9 @@ EXTRAS= ftp.1 .else EXTRAS= cdrom.1 ftp.1 .endif +.if defined(MAKE_ISOS) +EXTRAS+= iso.1 +.endif .if !defined(NODOC) DOCREL= doc.1 doc.2 @@ -336,6 +339,9 @@ rerelease release: .if defined(NOPORTS) echo "export NOPORTS=${NOPORTS}" >> ${CHROOTDIR}/mk .endif +.if defined(MAKE_ISOS) + echo "export MAKE_ISOS=${MAKE_ISOS}" >> ${CHROOTDIR}/mk +.endif .if defined(DOMINIMALDOCPORTS) echo "export DOMINIMALDOCPORTS=${DOMINIMALDOCPORTS}" >> ${CHROOTDIR}/mk .endif @@ -761,6 +767,9 @@ cdrom.1: @ln -f ${CD_DISC2}/boot/cdboot ${CD_DISC1}/boot @ln -f ${CD_DISC1}/boot/loader.rc ${CD_DISC2}/boot @ln -f ${CD_DISC1}/kernel ${CD_DISC2}/kernel +.elif ${MACHINE_ARCH} == "i386" + @mkdir -p ${CD_DISC2}/floppies + @cp ${CD_DISC1}/floppies/boot.flp ${CD_DISC2}/floppies .endif .if !defined(NOPORTS) @-rm -rf /usr/ports/distfiles/* @@ -771,6 +780,20 @@ cdrom.1: .endif touch cdrom.1 +iso.1: + @if [ -x ${.CURDIR}/${MACHINE_ARCH}/mkisoimages.sh ]; then \ + echo "Creating ISO images..."; \ + ${.CURDIR}/${MACHINE_ARCH}/mkisoimages.sh -b fbsd_miniboot \ + ${CD}/miniboot.iso ${CD_DISC1}; \ + ${.CURDIR}/${MACHINE_ARCH}/mkisoimages.sh -b fbsd_livefs \ + ${CD}/disc2.iso ${CD_DISC2}; \ + if [ "x${CD_EXTRA_BITS}" != "x" ]; then \ + ${.CURDIR}/${MACHINE_ARCH}/mkisoimages.sh -b fbsd_boot \ + ${CD}/disc1.iso ${CD_DISC1} ${CD_EXTRA_BITS}; \ + fi \ + fi + touch iso.1 + # # --==## Documentation Project files such as the Handbook and FAQ ##==-- # diff --git a/release/alpha/mkisoimages.sh b/release/alpha/mkisoimages.sh new file mode 100644 index 000000000000..1019cba585d1 --- /dev/null +++ b/release/alpha/mkisoimages.sh @@ -0,0 +1,51 @@ +#!/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. + +if [ "x$1" = "x-b" ]; then + bootable="yes" + shift +fi + +if [ $# -lt 3 ]; then + echo Usage: $0 '[-b] image-label image-name base-bits-dir [extra-bits-dir]' + exit 1 +fi + +if [ ! -x /usr/local/bin/mkhybrid ]; then + echo The mkisofs port is not installed. Trying to get it now. + if ! pkg_add -r mkisofs; then + echo "Couldn't get it via pkg_add - please go install this" + echo "from the ports collection and run this script again." + exit 2 + fi +fi + +LABEL=$1; shift +NAME=$1; shift + +mkhybrid -r -J -h -V $LABEL -o $NAME $* +if [ "x$bootable" != "x" ]; then + setcdboot $NAME /boot/cdboot +fi diff --git a/release/amd64/mkisoimages.sh b/release/amd64/mkisoimages.sh new file mode 100644 index 000000000000..78221f9ccc30 --- /dev/null +++ b/release/amd64/mkisoimages.sh @@ -0,0 +1,51 @@ +#!/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. + +if [ "x$1" = "x-b" ]; then + # This is highly x86-centric and will be used directly below. + bootable="-b floppies/boot.flp -c floppies/boot.catalog" + 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 + +if [ ! -x /usr/local/bin/mkhybrid ]; then + echo The mkisofs port is not installed. Trying to get it now. + if ! pkg_add -r mkisofs; then + echo "Couldn't get it via pkg_add - please go install this" + echo "from the ports collection and run this script again." + exit 2 + fi +fi + +LABEL=$1; shift +NAME=$1; shift + +mkhybrid $bootable -r -J -h -V $LABEL -o $NAME $* diff --git a/release/i386/mkisoimages.sh b/release/i386/mkisoimages.sh new file mode 100644 index 000000000000..78221f9ccc30 --- /dev/null +++ b/release/i386/mkisoimages.sh @@ -0,0 +1,51 @@ +#!/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. + +if [ "x$1" = "x-b" ]; then + # This is highly x86-centric and will be used directly below. + bootable="-b floppies/boot.flp -c floppies/boot.catalog" + 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 + +if [ ! -x /usr/local/bin/mkhybrid ]; then + echo The mkisofs port is not installed. Trying to get it now. + if ! pkg_add -r mkisofs; then + echo "Couldn't get it via pkg_add - please go install this" + echo "from the ports collection and run this script again." + exit 2 + fi +fi + +LABEL=$1; shift +NAME=$1; shift + +mkhybrid $bootable -r -J -h -V $LABEL -o $NAME $*