summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgjb <gjb@FreeBSD.org>2013-11-21 02:45:36 +0000
committergjb <gjb@FreeBSD.org>2013-11-21 02:45:36 +0000
commita2ed0ef7f6d3effa506eee672d738f5ec99b5254 (patch)
tree070bb5de1784384e98befaf097fe1d73e4c93e3e
parentf3237abb84118cd7a02056d37a0f085c420862fe (diff)
downloadFreeBSD-src-a2ed0ef7f6d3effa506eee672d738f5ec99b5254.zip
FreeBSD-src-a2ed0ef7f6d3effa506eee672d738f5ec99b5254.tar.gz
MFC r258305, r258307, r258308, r258309, r258310, r258314, r258317,
r258319, r258320: r258305: Use the IMAGES variable to determine which image files to remove as part of 'make -C /usr/src/release clean'. r258307: Add a script and configuration files to fetch pre-built packages from pkg.FreeBSD.org for inclusion on release medium (dvd1.iso). r258308: Unconditionally copy the build host /etc/resolv.conf into the chroot directory, since hostname resolution may be needed in the case of building a dvd image (with packages) and also setting 'NOPORTS=1'. r258309: Set the PKG_CACHEDIR directory to 'dvd/' instead of 'release/' in preparation of adding a 'dvd1.iso' target. r258310: Add the 'dvd1.iso' target. This mimics the 'release.iso' target, with the additional step of fetching packages for inclusion on the dvd image. The 'pkg-stage' target is used to run 'scripts/pkg-stage.sh' if the '${TARGET}/pkg-stage.conf' configuration file exists (currently only amd64 and i386). Allow dvd1.iso to be skipped if NODVD=1. r258314: Fix how ABI is evaluated so it matches more than a dot-zero case. r258317: Document the 'dvdrom' target. r258319: Remove WITHOUT_PROFILE=1 for the dvd1.iso medium. r258320: Simplify PKG_ABI for pkg-stage.sh. Approved by: re (hrs) Sponsored by: The FreeBSD Foundation
-rw-r--r--release/Makefile37
-rwxr-xr-xrelease/amd64/pkg-stage.conf36
-rwxr-xr-xrelease/i386/pkg-stage.conf36
-rwxr-xr-xrelease/release.sh2
-rwxr-xr-xrelease/scripts/pkg-stage.sh39
-rw-r--r--share/man/man7/release.718
6 files changed, 163 insertions, 5 deletions
diff --git a/release/Makefile b/release/Makefile
index 4921a0c..cf192e1 100644
--- a/release/Makefile
+++ b/release/Makefile
@@ -71,6 +71,10 @@ IMAGES=
.if exists(${.CURDIR}/${TARGET}/mkisoimages.sh)
RELEASE_TARGETS+= cdrom
IMAGES+= disc1.iso bootonly.iso
+. if(!defined(NODVD))
+RELEASE_TARGETS+= dvdrom
+IMAGES+= dvd1.iso
+. endif
.endif
.if exists(${.CURDIR}/${TARGET}/make-memstick.sh)
RELEASE_TARGETS+= memstick.img
@@ -160,10 +164,32 @@ bootonly: packagesystem
echo hostid_enable=\"NO\" >> bootonly/etc/rc.conf
cp ${.CURDIR}/rc.local bootonly/etc
+dvd:
+# Install system
+ mkdir -p ${.TARGET}
+ cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \
+ DESTDIR=${.OBJDIR}/${.TARGET} WITHOUT_RESCUE=1 WITHOUT_KERNEL_SYMBOLS=1
+# Copy distfiles
+ mkdir -p ${.TARGET}/usr/freebsd-dist
+ cp *.txz MANIFEST ${.TARGET}/usr/freebsd-dist
+# Copy documentation, if generated
+.if !defined(NODOC)
+ cp reldoc/* ${.TARGET}
+.endif
+# Set up installation environment
+ ln -fs /tmp/bsdinstall_etc/resolv.conf ${.TARGET}/etc/resolv.conf
+ echo sendmail_enable=\"NONE\" > ${.TARGET}/etc/rc.conf
+ echo hostid_enable=\"NO\" >> ${.TARGET}/etc/rc.conf
+ cp ${.CURDIR}/rc.local ${.TARGET}/etc
+ touch ${.TARGET}
+
release.iso: disc1.iso
disc1.iso: system
sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.TARGET} release
+dvd1.iso: dvd pkg-stage
+ sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.TARGET} dvd
+
bootonly.iso: bootonly
sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.TARGET} bootonly
@@ -175,7 +201,14 @@ packagesystem: base.txz kernel.txz ${EXTRA_PACKAGES}
sh ${.CURDIR}/scripts/make-manifest.sh *.txz > MANIFEST
touch ${.TARGET}
+pkg-stage:
+.if(exists(${.CURDIR}/${TARGET}/pkg-stage.conf))
+ sh ${.CURDIR}/scripts/pkg-stage.sh ${.CURDIR}/${TARGET}/pkg-stage.conf \
+ ${REVISION}
+.endif
+
cdrom: disc1.iso bootonly.iso
+dvdrom: dvd1.iso
ftp: packagesystem
rm -rf ftp
mkdir -p ftp
@@ -191,8 +224,8 @@ clean:
rm -f packagesystem
rm -f *.txz MANIFEST
rm -f system
- rm -rf release bootonly
- rm -f disc1.iso bootonly.iso memstick.img
+ rm -rf release bootonly dvd
+ rm -f ${IMAGES}
install:
.if defined(DESTDIR) && !empty(DESTDIR)
diff --git a/release/amd64/pkg-stage.conf b/release/amd64/pkg-stage.conf
new file mode 100755
index 0000000..4ea7dc4
--- /dev/null
+++ b/release/amd64/pkg-stage.conf
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+export PKG_ABI="freebsd:${REVISION%.[0-9]*}:x86:64"
+export ASSUME_ALWAYS_YES=1
+export __PKG_CONF="/etc/pkg/FreeBSD.conf"
+export PACKAGESITE="http://pkg.FreeBSD.org/${PKG_ABI}/latest"
+export MIRROR_TYPE="SRV"
+export REPO_AUTOUPDATE="NO"
+export PKG_DBDIR="/tmp/pkg"
+export PKG_CACHEDIR="dvd/packages/${PKG_ABI}"
+export PERMISSIVE="YES"
+export PKGCMD="/usr/sbin/pkg -d -C ${__PKG_CONF}"
+
+DVD_PACKAGES="archivers/unzip
+devel/subversion
+devel/subversion-static
+emulators/linux_base-f10
+misc/freebsd-doc-all
+net/mpd5
+net/rsync
+ports-mgmt/pkg
+ports-mgmt/portaudit
+ports-mgmt/portmaster
+shells/bash
+shells/zsh
+security/sudo
+sysutils/screen
+www/firefox
+www/links
+x11-drivers/xf86-video-vmware
+x11/gnome2
+x11/kde4
+x11/xorg"
diff --git a/release/i386/pkg-stage.conf b/release/i386/pkg-stage.conf
new file mode 100755
index 0000000..6d9e8ef
--- /dev/null
+++ b/release/i386/pkg-stage.conf
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+export PKG_ABI="freebsd:${REVISION%.[0-9]*}:x86:32"
+export ASSUME_ALWAYS_YES=1
+export __PKG_CONF="/etc/pkg/FreeBSD.conf"
+export PACKAGESITE="http://pkg.FreeBSD.org/${PKG_ABI}/latest"
+export MIRROR_TYPE="SRV"
+export REPO_AUTOUPDATE="NO"
+export PKG_DBDIR="/tmp/pkg"
+export PKG_CACHEDIR="dvd/packages/${PKG_ABI}"
+export PERMISSIVE="YES"
+export PKGCMD="/usr/sbin/pkg -d -C ${__PKG_CONF}"
+
+DVD_PACKAGES="archivers/unzip
+devel/subversion
+devel/subversion-static
+emulators/linux_base-f10
+misc/freebsd-doc-all
+net/mpd5
+net/rsync
+ports-mgmt/pkg
+ports-mgmt/portaudit
+ports-mgmt/portmaster
+shells/bash
+shells/zsh
+security/sudo
+sysutils/screen
+www/firefox
+www/links
+x11-drivers/xf86-video-vmware
+x11/gnome2
+x11/kde4
+x11/xorg"
diff --git a/release/release.sh b/release/release.sh
index 07c42a1..2baeeb5 100755
--- a/release/release.sh
+++ b/release/release.sh
@@ -159,6 +159,7 @@ if [ "x${NOPORTS}" = "x" ]; then
svn co ${SVNROOT}/${PORTBRANCH} ${CHROOTDIR}/usr/ports
fi
+cp /etc/resolv.conf ${CHROOTDIR}/etc/resolv.conf
cd ${CHROOTDIR}/usr/src
make ${CHROOT_WMAKEFLAGS} buildworld
make ${CHROOT_IMAKEFLAGS} installworld DESTDIR=${CHROOTDIR}
@@ -193,7 +194,6 @@ if [ -e ${SRC_CONF} ] && [ ! -c ${SRC_CONF} ]; then
fi
if [ -d ${CHROOTDIR}/usr/ports ]; then
- cp /etc/resolv.conf ${CHROOTDIR}/etc/resolv.conf
build_doc_ports ${CHROOTDIR}
fi
diff --git a/release/scripts/pkg-stage.sh b/release/scripts/pkg-stage.sh
new file mode 100755
index 0000000..348e153
--- /dev/null
+++ b/release/scripts/pkg-stage.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+set -e
+
+usage() {
+ echo "$(basename ${0}) /path/to/pkg-stage.conf revision"
+ exit 1
+}
+
+if [ ! -e "${1}" ]; then
+ echo "Configuration file not specified."
+ echo
+ usage
+fi
+
+if [ "$#" -lt 2 ]; then
+ usage
+fi
+
+# Source config file for this architecture.
+REVISION="${2}"
+. "${1}" || exit 1
+
+if [ ! -x /usr/local/sbin/pkg ]; then
+ /usr/sbin/pkg bootstrap
+fi
+
+/bin/mkdir -p ${PKG_CACHEDIR}
+
+${PKGCMD} update -f
+${PKGCMD} fetch -d ${DVD_PACKAGES}
+
+${PKGCMD} repo ${PKG_CACHEDIR}
+
+# Always exit '0', even if pkg(8) complains about conflicts.
+exit 0
diff --git a/share/man/man7/release.7 b/share/man/man7/release.7
index b126cd7..9941b01 100644
--- a/share/man/man7/release.7
+++ b/share/man/man7/release.7
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd August 14, 2013
+.Dd November 18, 2013
.Dt RELEASE 7
.Os
.Sh NAME
@@ -230,6 +230,10 @@ When set,
will prevent the
.Fa doc.txz
distribution package from being created.
+.It Va NODVD
+Set to a non-empty value to skip the
+.Cm dvdrom
+target.
.It Va NOPORTS
Set to a non-empty value to skip the
.Li ports/
@@ -270,6 +274,15 @@ This target produces files called
and
.Pa bootonly.iso
as its output.
+.It Cm dvdrom
+Builds installation DVD-ROM images.
+This may require the
+.Xr md 4
+(memory disk) device driver be present in the kernel
+(either by being compiled in or available as a module).
+This target produces the
+.Pa dvd1.iso
+file as its output.
.It Cm memstick
Builds an installation memory stick image named
.Pa memstick.img .
@@ -297,7 +310,8 @@ Builds a bootable installation system containing all the distribution files
packaged by the
.Cm packagesystem
target, and suitable for imaging by the
-.Cm cdrom
+.Cm cdrom ,
+.Cm dvdrom
and
.Cm memstick
targets.
OpenPOWER on IntegriCloud