aboutsummaryrefslogtreecommitdiff
path: root/release
diff options
context:
space:
mode:
authorGlen Barber <gjb@FreeBSD.org>2015-05-09 21:08:12 +0000
committerGlen Barber <gjb@FreeBSD.org>2015-05-09 21:08:12 +0000
commit88feae84befe2bd0b9c669f57a9b4d57b85390cb (patch)
tree627dbc6b26833701d7e0ec9be45a5f5762624689 /release
parent44ec2b63c50ae6d0b2765d5cbdbffb0beb276ad4 (diff)
parentc083dc0321e53f9892df1116d4e7c808795a2fd1 (diff)
downloadsrc-88feae84befe2bd0b9c669f57a9b4d57b85390cb.tar.gz
src-88feae84befe2bd0b9c669f57a9b4d57b85390cb.zip
Merge ^/projects/release-arm-redux into ^/head.
Of note: - This commit adds native FreeBSD/arm release build support without requiring out-of-tree utilities. - Part of this merge removes the WANDBOARD-{SOLO,DUAL,QUAD} kernel configuration files, for which the IMX6 kernel configuration file should be used instead. - The resulting images have a 'freebsd' user (password 'freebsd'), to allow ssh(1) access when console access is not available (VGA or serial). The default 'root' user password is set to 'root'. - The /etc/ttys file for arm images now enable both ttyv0 and ttyu0 by default. Help from: many (boot testing, feedback, etc.) Sponsored by: The FreeBSD Foundation
Notes
Notes: svn path=/head/; revision=282693
Diffstat (limited to 'release')
-rw-r--r--release/arm/BEAGLEBONE.conf61
-rw-r--r--release/arm/PANDABOARD.conf60
-rw-r--r--release/arm/RPI-B.conf69
-rw-r--r--release/arm/RPI2.conf67
-rw-r--r--release/arm/WANDBOARD-QUAD.conf37
-rw-r--r--release/arm/WANDBOARD.conf41
-rw-r--r--release/arm/ZEDBOARD.conf36
-rwxr-xr-xrelease/arm/release.sh151
-rwxr-xr-xrelease/release.sh558
-rw-r--r--release/tools/arm.subr137
-rw-r--r--release/tools/arm/crochet-BEAGLEBONE.conf40
-rw-r--r--release/tools/arm/crochet-PANDABOARD.conf29
-rw-r--r--release/tools/arm/crochet-RPI-B.conf29
-rw-r--r--release/tools/arm/crochet-RPI2.conf29
-rw-r--r--release/tools/arm/crochet-WANDBOARD-QUAD.conf29
-rw-r--r--release/tools/arm/crochet-ZEDBOARD.conf29
16 files changed, 640 insertions, 762 deletions
diff --git a/release/arm/BEAGLEBONE.conf b/release/arm/BEAGLEBONE.conf
index 72337f831cc3..3ae48714fc33 100644
--- a/release/arm/BEAGLEBONE.conf
+++ b/release/arm/BEAGLEBONE.conf
@@ -3,36 +3,35 @@
# $FreeBSD$
#
-# Global variables.
-export SVNROOT="svn://svn.FreeBSD.org/"
-export SRCBRANCH="base/head@rHEAD"
-export DOCBRANCH="doc/head@rHEAD"
-export PORTBRANCH="ports/head@rHEAD"
-export NODOC=yes
-export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
-export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
-export CHROOTDIR="/scratch"
-export EMBEDDEDBUILD=1
-export EMBEDDEDPORTS="sysutils/u-boot-beaglebone"
+EMBEDDEDBUILD=1
+EMBEDDED_TARGET="arm"
+EMBEDDED_TARGET_ARCH="armv6"
+EMBEDDEDPORTS="sysutils/u-boot-beaglebone"
+KERNEL="BEAGLEBONE"
+WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x88000000"
+IMAGE_SIZE="1G"
+PART_SCHEME="MBR"
+FAT_SIZE="2m"
+FAT_TYPE="12"
+MD_ARGS="-x 63 -y 255"
+NODOC=1
-# Build chroot configuration
-load_chroot_env() {
- # Avoid collision with TARGET and XDEV.
- unset XDEV XDEV_ARCH KERNEL
- export TARGET="amd64"
- export TARGET_ARCH="amd64"
-}
-
-# Build target configuration
-load_target_env() {
- # Avoid collision with TARGET and XDEV.
- unset TARGET TARGET_ARCH
- export EMBEDDEDPORTS="lang/python textproc/gsed"
- export XDEV="arm"
- export XDEV_ARCH="armv6"
- export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
- export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
- export KERNEL="BEAGLEBONE"
- export CROCHETSRC="https://github.com/freebsd/crochet"
- export CROCHETBRANCH="trunk@rHEAD"
+arm_install_uboot() {
+ UBOOT_DIR="/usr/local/share/u-boot/u-boot-beaglebone"
+ FATMOUNT="${DESTDIR%${KERNEL}}/fat"
+ UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
+ chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
+ chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
+ chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
+ chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/MLO ${FATMOUNT}/MLO
+ chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/u-boot.img ${FATMOUNT}/u-boot.img
+ chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr ${FATMOUNT}/ubldr
+ chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
+ sync
+ umount_loop ${CHROOTDIR}/${FATMOUNT}
+ umount_loop ${CHROOTDIR}/${UFSMOUNT}
+ chroot ${CHROOTDIR} rmdir ${FATMOUNT}
+ chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
+
+ return 0
}
diff --git a/release/arm/PANDABOARD.conf b/release/arm/PANDABOARD.conf
index dc8952d333b4..b5a120e9041b 100644
--- a/release/arm/PANDABOARD.conf
+++ b/release/arm/PANDABOARD.conf
@@ -3,35 +3,35 @@
# $FreeBSD$
#
-# Global variables.
-export SVNROOT="svn://svn.FreeBSD.org/"
-export SRCBRANCH="base/head@rHEAD"
-export DOCBRANCH="doc/head@rHEAD"
-export PORTBRANCH="ports/head@rHEAD"
-export NODOC=yes
-export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
-export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
-export CHROOTDIR="/scratch"
-export EMBEDDEDBUILD=1
-export EMBEDDEDPORTS="lang/python textproc/gsed"
+EMBEDDEDBUILD=1
+EMBEDDED_TARGET="arm"
+EMBEDDED_TARGET_ARCH="armv6"
+EMBEDDEDPORTS="sysutils/u-boot-pandaboard"
+KERNEL="PANDABOARD"
+NODOC=1
+WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x88000000"
+IMAGE_SIZE="1G"
+PART_SCHEME="MBR"
+FAT_SIZE="2m"
+FAT_TYPE="12"
+MD_ARGS="-x 63 -y 255"
-# Build chroot configuration
-load_chroot_env() {
- # Avoid collision with TARGET and XDEV.
- unset XDEV XDEV_ARCH KERNEL
- export TARGET="amd64"
- export TARGET_ARCH="amd64"
-}
-
-# Build target configuration
-load_target_env() {
- # Avoid collision with TARGET and XDEV.
- unset TARGET TARGET_ARCH
- export XDEV="arm"
- export XDEV_ARCH="armv6"
- export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
- export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
- export KERNEL="PANDABOARD"
- export CROCHETSRC="https://github.com/freebsd/crochet"
- export CROCHETBRANCH="trunk@rHEAD"
+arm_install_uboot() {
+ UBOOT_DIR="/usr/local/share/u-boot/u-boot-pandaboard"
+ FATMOUNT="${DESTDIR%${KERNEL}}/fat"
+ UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
+ chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
+ chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
+ chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
+ chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/MLO ${FATMOUNT}/MLO
+ chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/u-boot.img ${FATMOUNT}/u-boot.img
+ chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr ${FATMOUNT}/ubldr
+ chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
+ sync
+ umount_loop ${CHROOTDIR}/${FATMOUNT}
+ umount_loop ${CHROOTDIR}/${UFSMOUNT}
+ chroot ${CHROOTDIR} rmdir ${FATMOUNT}
+ chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
+
+ return 0
}
diff --git a/release/arm/RPI-B.conf b/release/arm/RPI-B.conf
index aae60c9831a9..e5abaab9fd18 100644
--- a/release/arm/RPI-B.conf
+++ b/release/arm/RPI-B.conf
@@ -3,38 +3,41 @@
# $FreeBSD$
#
-# Global variables.
-export SVNROOT="svn://svn.FreeBSD.org/"
-export SRCBRANCH="base/head@rHEAD"
-export DOCBRANCH="doc/head@rHEAD"
-export PORTBRANCH="ports/head@rHEAD"
-export NODOC=yes
-export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
-export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
-export CHROOTDIR="/scratch"
-export EMBEDDEDBUILD=1
-export EMBEDDEDPORTS="lang/python textproc/gsed"
+EMBEDDEDBUILD=1
+EMBEDDED_TARGET="arm"
+EMBEDDED_TARGET_ARCH="armv6"
+EMBEDDEDPORTS="sysutils/u-boot-rpi"
+KERNEL="RPI-B"
+WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x2000000"
+IMAGE_SIZE="1G"
+PART_SCHEME="MBR"
+FAT_SIZE="17m"
+FAT_TYPE="16"
+MD_ARGS="-x 63 -y 255"
+NODOC=1
-# Build chroot configuration
-load_chroot_env() {
- # Avoid collision with TARGET and XDEV.
- unset XDEV XDEV_ARCH KERNEL
- export TARGET="amd64"
- export TARGET_ARCH="amd64"
-}
-
-# Build target configuration
-load_target_env() {
- # Avoid collision with TARGET and XDEV.
- unset TARGET TARGET_ARCH
- export XDEV="arm"
- export XDEV_ARCH="armv6"
- export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
- export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
- export KERNEL="RPI-B"
- export CROCHETSRC="https://github.com/freebsd/crochet"
- export CROCHETBRANCH="trunk@rHEAD"
- export UBOOTSRC="https://github.com/gonzoua/u-boot-pi"
- export UBOOTBRANCH="trunk"
- export UBOOTDIR="/tmp/crochet/u-boot-rpi"
+arm_install_uboot() {
+ UBOOT_DIR="/usr/local/share/u-boot/u-boot-rpi"
+ UBOOT_FILES="bootcode.bin config.txt fixup.dat fixup_cd.dat \
+ start.elf start_cd.elf u-boot.img"
+ FATMOUNT="${DESTDIR%${KERNEL}}/fat"
+ UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
+ chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
+ chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
+ chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
+ for _UF in ${UBOOT_FILES}; do
+ chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/${_UF} \
+ ${FATMOUNT}/${_UF}
+ done
+ chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr ${FATMOUNT}/ubldr
+ chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/dtb/rpi.dtb \
+ ${FATMOUNT}/rpi.dtb
+ chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
+ sync
+ umount_loop ${CHROOTDIR}/${FATMOUNT}
+ umount_loop ${CHROOTDIR}/${UFSMOUNT}
+ chroot ${CHROOTDIR} rmdir ${FATMOUNT}
+ chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
+
+ return 0
}
diff --git a/release/arm/RPI2.conf b/release/arm/RPI2.conf
index bb8ebe998ca9..e1d15d124425 100644
--- a/release/arm/RPI2.conf
+++ b/release/arm/RPI2.conf
@@ -3,36 +3,41 @@
# $FreeBSD$
#
-# Global variables.
-export SVNROOT="svn://svn.FreeBSD.org/"
-export SRCBRANCH="base/head@rHEAD"
-export DOCBRANCH="doc/head@rHEAD"
-export PORTBRANCH="ports/head@rHEAD"
-export NODOC=yes
-export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
-export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
-export CHROOTDIR="/scratch"
-export EMBEDDEDBUILD=1
-export EMBEDDEDPORTS="sysutils/u-boot-rpi2"
+EMBEDDEDBUILD=1
+EMBEDDED_TARGET="arm"
+EMBEDDED_TARGET_ARCH="armv6"
+EMBEDDEDPORTS="sysutils/u-boot-rpi2"
+KERNEL="RPI2"
+NODOC=1
+WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x2000000"
+IMAGE_SIZE="1G"
+PART_SCHEME="MBR"
+FAT_SIZE="50m"
+FAT_TYPE="16"
+MD_ARGS="-x 63 -y 255"
-# Build chroot configuration
-load_chroot_env() {
- # Avoid collision with TARGET and XDEV.
- unset XDEV XDEV_ARCH KERNEL
- export TARGET="amd64"
- export TARGET_ARCH="amd64"
+arm_install_uboot() {
+ UBOOT_DIR="/usr/local/share/u-boot/u-boot-rpi2"
+ UBOOT_FILES="bootcode.bin config.txt fixup.dat fixup_cd.dat \
+ fixup_x.dat start.elf start_cd.elf start_x.elf u-boot.bin"
+ FATMOUNT="${DESTDIR%${KERNEL}}/fat"
+ UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
+ chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
+ chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
+ chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
+ for _UF in ${UBOOT_FILES}; do
+ chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/${_UF} \
+ ${FATMOUNT}/${_UF}
+ done
+ chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr ${FATMOUNT}/ubldr
+ chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/dtb/rpi2.dtb \
+ ${FATMOUNT}/rpi2.dtb
+ chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
+ sync
+ umount_loop ${CHROOTDIR}/${FATMOUNT}
+ umount_loop ${CHROOTDIR}/${UFSMOUNT}
+ chroot ${CHROOTDIR} rmdir ${FATMOUNT}
+ chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
+
+ return 0
}
-
-# Build target configuration
-load_target_env() {
- # Avoid collision with TARGET and XDEV.
- unset TARGET TARGET_ARCH
- export XDEV="arm"
- export XDEV_ARCH="armv6"
- export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
- export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
- export KERNEL="RPI2"
- export CROCHETSRC="https://github.com/freebsd/crochet"
- export CROCHETBRANCH="trunk@rHEAD"
-}
-
diff --git a/release/arm/WANDBOARD-QUAD.conf b/release/arm/WANDBOARD-QUAD.conf
deleted file mode 100644
index c3fff91694ae..000000000000
--- a/release/arm/WANDBOARD-QUAD.conf
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-#
-# $FreeBSD$
-#
-
-# Global variables.
-export SVNROOT="svn://svn.FreeBSD.org/"
-export SRCBRANCH="base/head@rHEAD"
-export DOCBRANCH="doc/head@rHEAD"
-export PORTBRANCH="ports/head@rHEAD"
-export NODOC=yes
-export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
-export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
-export CHROOTDIR="/scratch"
-export EMBEDDEDBUILD=1
-export EMBEDDEDPORTS="lang/python textproc/gsed"
-
-# Build chroot configuration
-load_chroot_env() {
- # Avoid collision with TARGET and XDEV.
- unset XDEV XDEV_ARCH KERNEL
- export TARGET="amd64"
- export TARGET_ARCH="amd64"
-}
-
-# Build target configuration
-load_target_env() {
- # Avoid collision with TARGET and XDEV.
- unset TARGET TARGET_ARCH
- export XDEV="arm"
- export XDEV_ARCH="armv6"
- export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
- export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
- export KERNEL="WANDBOARD-QUAD"
- export CROCHETSRC="https://github.com/freebsd/crochet"
- export CROCHETBRANCH="trunk@rHEAD"
-}
diff --git a/release/arm/WANDBOARD.conf b/release/arm/WANDBOARD.conf
new file mode 100644
index 000000000000..42b452310a16
--- /dev/null
+++ b/release/arm/WANDBOARD.conf
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+EMBEDDEDBUILD=1
+EMBEDDED_TARGET="arm"
+EMBEDDED_TARGET_ARCH="armv6"
+EMBEDDEDPORTS="sysutils/u-boot-wandboard"
+KERNEL="IMX6"
+WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x11000000"
+IMAGE_SIZE="1G"
+PART_SCHEME="MBR"
+FAT_SIZE="50m -b 16384"
+FAT_TYPE="16"
+MD_ARGS="-x 63 -y 255"
+NODOC=1
+
+arm_install_uboot() {
+ UBOOT_DIR="/usr/local/share/u-boot/u-boot-wandboard"
+ UBOOT_FILES="u-boot.imx"
+ FATMOUNT="${DESTDIR%${KERNEL}}/fat"
+ UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
+ chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/${UBOOT_FILES} \
+ of=/dev/${mddev} bs=512 seek=2
+ chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
+ chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
+ chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
+ chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr ${FATMOUNT}/ubldr
+ chroot ${CHROOTDIR} /bin/sh -c 'echo \
+ setenv fdt_file wandboard-quad.dtb\; fatload mmc 0:1 11000000 ubldr\; bootelf 11000000\; \
+ > ${FATMOUNT}/boot.txt'
+ chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
+ sync
+ umount_loop ${CHROOTDIR}/${FATMOUNT}
+ umount_loop ${CHROOTDIR}/${UFSMOUNT}
+ chroot ${CHROOTDIR} rmdir ${FATMOUNT}
+ chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
+
+ return 0
+}
diff --git a/release/arm/ZEDBOARD.conf b/release/arm/ZEDBOARD.conf
deleted file mode 100644
index 4d0a4615ba6b..000000000000
--- a/release/arm/ZEDBOARD.conf
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-#
-# $FreeBSD$
-#
-
-# Global variables.
-export SVNROOT="svn://svn.FreeBSD.org/"
-export SRCBRANCH="base/head@rHEAD"
-export DOCBRANCH="doc/head@rHEAD"
-export PORTBRANCH="ports/head@rHEAD"
-export NODOC=yes
-export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
-export export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
-export CHROOTDIR="/scratch"
-export EMBEDDEDBUILD=1
-
-# Build chroot configuration
-load_chroot_env() {
- # Avoid collision with TARGET and XDEV.
- unset XDEV XDEV_ARCH KERNEL
- export TARGET="amd64"
- export TARGET_ARCH="amd64"
-}
-
-# Build target configuration
-load_target_env() {
- # Avoid collision with TARGET and XDEV.
- unset TARGET TARGET_ARCH
- export XDEV="arm"
- export XDEV_ARCH="armv6"
- export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
- export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
- export KERNEL="ZEDBOARD"
- export CROCHETSRC="https://github.com/freebsd/crochet"
- export CROCHETBRANCH="trunk@rHEAD"
-}
diff --git a/release/arm/release.sh b/release/arm/release.sh
deleted file mode 100755
index c68f812c7043..000000000000
--- a/release/arm/release.sh
+++ /dev/null
@@ -1,151 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2013, 2014 The FreeBSD Foundation
-# All rights reserved.
-#
-# This software was developed by Glen Barber
-# under sponsorship from the FreeBSD Foundation.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# $FreeBSD$
-#
-
-# This script is intended to be called by release/release.sh to build ARM
-# images for release. It is not intended to be run directly. This sets up
-# the software needed within a build chroot, then runs crochet to provide
-# downloadable images for embedded devices.
-
-set -e
-
-before_build() {
- WANT_UBOOT=
- KNOWNHASH=
- UBOOT_VERSION=
- case ${KERNEL} in
- PANDABOARD)
- WANT_UBOOT=1
- KNOWNHASH="e08e20a6979bfca6eebb9a2b0e42aa4416af3d796332fd63a3470495a089d496"
- UBOOT_VERSION="u-boot-2012.07"
- ;;
- WANDBOARD-QUAD)
- WANT_UBOOT=1
- KNOWNHASH="b4f83b8db325c21671a997198ec3a373e2e00dde2fcf17be9b9afd7cfd727f56"
- UBOOT_VERSION="u-boot-2014.07"
- ;;
- *)
- # Fallthrough.
- ;;
- esac
- if [ ! -z ${WANT_UBOOT} ]; then
- chroot ${CHROOTDIR} fetch -o /tmp/crochet/${UBOOT_VERSION}.tar.bz2 \
- http://people.freebsd.org/~gjb/${UBOOT_VERSION}.tar.bz2
- UBOOT_HASH="$(sha256 -q ${CHROOTDIR}/tmp/crochet/${UBOOT_VERSION}.tar.bz2)"
- if [ "${UBOOT_HASH}" != "${KNOWNHASH}" ]; then
- echo "Checksum mismatch! Exiting now."
- exit 1
- fi
- chroot ${CHROOTDIR} tar xf /tmp/crochet/${UBOOT_VERSION}.tar.bz2 \
- -C /tmp/crochet/
- fi
-}
-
-install_crochet() {
- chroot ${CHROOTDIR} svn co -q ${CROCHETSRC}/${CROCHETBRANCH} \
- /tmp/crochet
-}
-
-install_uboot() {
- # Only fetch u-boot sources if UBOOTSRC is set; otherwise it is
- # not needed.
- if [ -n "${UBOOTSRC}" ]; then
- continue
- else
- return 0
- fi
- chroot ${CHROOTDIR} svn co -q ${UBOOTSRC}/${UBOOTBRANCH} \
- /${UBOOTDIR}
-}
-
-main() {
- # Fix broken ports that use kern.osreldate.
- OSVERSION=$(chroot ${CHROOTDIR} /usr/bin/uname -U)
- export OSVERSION
- REVISION=$(chroot ${CHROOTDIR} make -C /usr/src/release -V REVISION)
- BRANCH=$(chroot ${CHROOTDIR} make -C /usr/src/release -V BRANCH)
- UNAME_r=${REVISION}-${BRANCH}
- export UNAME_r
- export XZ_CMD=$(chroot ${CHROOTDIR} make -C /usr/src/release -V XZ_CMD)
-
- # Build the 'xdev' target for crochet.
- eval chroot ${CHROOTDIR} make -C /usr/src \
- ${XDEV_FLAGS} XDEV=${XDEV} XDEV_ARCH=${XDEV_ARCH} \
- TARGET=${XDEV} TARGET_ARCH=${XDEV_ARCH} \
- ${WORLD_FLAGS} xdev
-
- # Install the cross-build symlinks to /usr/bin to make crochet
- # happy.
- eval chroot ${CHROOTDIR} make -C /usr/src \
- ${XDEV_FLAGS} XDEV=${XDEV} XDEV_ARCH=${XDEV_ARCH} \
- TARGET=${XDEV} TARGET_ARCH=${XDEV_ARCH} \
- ${WORLD_FLAGS} xdev-links || true
-
- # Run the ldconfig(8) startup script so /var/run/ld-elf*.so.hints
- # is created.
- eval chroot ${CHROOTDIR} /etc/rc.d/ldconfig forcerestart
- # Install security/ca_root_nss since we need to check the https
- # certificate of github.
- eval chroot ${CHROOTDIR} make -C /usr/ports/security/ca_root_nss \
- OPTIONS_SET="ETCSYMLINK" BATCH=1 FORCE_PKG_REGISTER=1 \
- install clean distclean
- EMBEDDEDPORTS="${EMBEDDEDPORTS} devel/subversion"
- for _PORT in ${EMBEDDEDPORTS}; do
- eval chroot ${CHROOTDIR} make -C /usr/ports/${_PORT} \
- BATCH=1 FORCE_PKG_REGISTER=1 install clean distclean
- done
-
- # Certain u-boot versions hardcode the use of a host gcc, and gcc's
- # build relies on having gperf installed.
- eval chroot ${CHROOTDIR} make -C /usr/src/gnu/usr.bin/gperf \
- WITH_GCC=1 ${WORLD_FLAGS} obj
- eval chroot ${CHROOTDIR} make -C /usr/src/gnu/usr.bin/gperf \
- WITH_GCC=1 ${WORLD_FLAGS} -j1 depend all
- eval chroot ${CHROOTDIR} make -C /usr/src/gnu/usr.bin/gperf \
- WITH_GCC=1 ${WORLD_FLAGS} -j1 install
- eval chroot ${CHROOTDIR} make -C /usr/src/gnu/usr.bin/cc \
- WITH_GCC=1 ${WORLD_FLAGS} -j1 obj depend all install
-
- mkdir -p ${CHROOTDIR}/tmp/crochet/work
- before_build
- install_crochet
- install_uboot
- eval chroot ${CHROOTDIR} /bin/sh /tmp/crochet/crochet.sh \
- -c /tmp/external/${XDEV}/crochet-${KERNEL}.conf
- mkdir -p ${CHROOTDIR}/R/
- cp -p ${CHROOTDIR}/usr/obj/*.img ${CHROOTDIR}/R/
- ${XZ_CMD} ${CHROOTDIR}/R/FreeBSD*.img
- cd ${CHROOTDIR}/R/ && sha256 FreeBSD*.img.xz > CHECKSUM.SHA256
- cd ${CHROOTDIR}/R/ && md5 FreeBSD*.img.xz > CHECKSUM.MD5
-}
-
-main "$@"
-exit 0
diff --git a/release/release.sh b/release/release.sh
index 158794f0c515..94a9bb62c00d 100755
--- a/release/release.sh
+++ b/release/release.sh
@@ -36,257 +36,359 @@
# $FreeBSD$
#
-PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
-export PATH
+export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
+
+VERSION=2
# Prototypes that can be redefined per-chroot or per-target.
load_chroot_env() { }
load_target_env() { }
buildenv_setup() { }
-# The directory within which the release will be built.
-CHROOTDIR="/scratch"
-RELENGDIR="$(realpath $(dirname $(basename ${0})))"
+usage() {
+ echo "Usage: $0 [-c release.conf]"
+ exit 1
+}
-# The default version control system command to obtain the sources.
-VCSCMD="svn checkout"
+# env_setup(): Set up the default build environment variables, such as the
+# CHROOTDIR, VCSCMD, SVNROOT, etc. This is called before the release.conf
+# file is sourced, if '-c <release.conf>' is specified.
+env_setup() {
+ # The directory within which the release will be built.
+ CHROOTDIR="/scratch"
+ RELENGDIR="$(dirname $(realpath ${0}))"
+
+ # The default version control system command to obtain the sources.
+ for _dir in /usr/bin /usr/local/bin; do
+ for _svn in svn svnlite; do
+ [ -x "${_dir}/${_svn}" ] && VCSCMD="${_dir}/${_svn}"
+ [ ! -z "${VCSCMD}" ] && break 2
+ done
+ done
+ VCSCMD="${VCSCMD} checkout"
+
+ # The default svn checkout server, and svn branches for src/, doc/,
+ # and ports/.
+ SVNROOT="svn://svn.FreeBSD.org/"
+ SRCBRANCH="base/head@rHEAD"
+ DOCBRANCH="doc/head@rHEAD"
+ PORTBRANCH="ports/head@rHEAD"
+
+ # Set for embedded device builds.
+ EMBEDDEDBUILD=
+
+ # Sometimes one needs to checkout src with --force svn option.
+ # If custom kernel configs copied to src tree before checkout, e.g.
+ SRC_FORCE_CHECKOUT=
+
+ # The default make.conf and src.conf to use. Set to /dev/null
+ # by default to avoid polluting the chroot(8) environment with
+ # non-default settings.
+ MAKE_CONF="/dev/null"
+ SRC_CONF="/dev/null"
+
+ # The number of make(1) jobs, defaults to the number of CPUs available
+ # for buildworld, and half of number of CPUs available for buildkernel.
+ WORLD_FLAGS="-j$(sysctl -n hw.ncpu)"
+ KERNEL_FLAGS="-j$(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2))"
+
+ MAKE_FLAGS="-s"
+
+ # The name of the kernel to build, defaults to GENERIC.
+ KERNEL="GENERIC"
+
+ # Set to non-empty value to disable checkout of doc/ and/or ports/.
+ # Disabling ports/ checkout also forces NODOC to be set.
+ NODOC=
+ NOPORTS=
+
+ # Set to non-empty value to build dvd1.iso as part of the release.
+ WITH_DVD=
+ WITH_COMPRESSED_IMAGES=
-# The default svn checkout server, and svn branches for src/, doc/,
-# and ports/.
-SVNROOT="svn://svn.FreeBSD.org/"
-SRCBRANCH="base/head@rHEAD"
-DOCBRANCH="doc/head@rHEAD"
-PORTBRANCH="ports/head@rHEAD"
+ # Set to non-empty value to build virtual machine images as part of
+ # the release.
+ WITH_VMIMAGES=
+ WITH_COMPRESSED_VMIMAGES=
+ XZ_THREADS=0
+
+ # Set to non-empty value to build virtual machine images for various
+ # cloud providers as part of the release.
+ WITH_CLOUDWARE=
+
+ return 0
+} # env_setup()
+
+# env_check(): Perform sanity tests on the build environment, such as ensuring
+# files/directories exist, as well as adding backwards-compatibility hacks if
+# necessary. This is called unconditionally, and overrides the defaults set
+# in env_setup() if '-c <release.conf>' is specified.
+env_check() {
+ chroot_build_release_cmd="chroot_build_release"
+ # Fix for backwards-compatibility with release.conf that does not have
+ # the trailing '/'.
+ case ${SVNROOT} in
+ *svn*)
+ SVNROOT="${SVNROOT}/"
+ ;;
+ *)
+ ;;
+ esac
-# Set for embedded device builds.
-EMBEDDEDBUILD=
+ # Prefix the branches with the SVNROOT for the full checkout URL.
+ SRCBRANCH="${SVNROOT}${SRCBRANCH}"
+ DOCBRANCH="${SVNROOT}${DOCBRANCH}"
+ PORTBRANCH="${SVNROOT}${PORTBRANCH}"
+
+ if [ -n "${EMBEDDEDBUILD}" ]; then
+ WITH_DVD=
+ WITH_COMPRESSED_IMAGES=
+ NODOC=yes
+ case ${EMBEDDED_TARGET}:${EMBEDDED_TARGET_ARCH} in
+ arm:armv6)
+ chroot_build_release_cmd="chroot_arm_armv6_build_release"
+ ;;
+ *)
+ esac
+ fi
-# Sometimes one needs to checkout src with --force svn option.
-# If custom kernel configs copied to src tree before checkout, e.g.
-SRC_FORCE_CHECKOUT=
+ # If PORTS is set and NODOC is unset, force NODOC=yes because the ports
+ # tree is required to build the documentation set.
+ if [ -n "${NOPORTS}" ] && [ -z "${NODOC}" ]; then
+ echo "*** NOTICE: Setting NODOC=1 since ports tree is required"
+ echo " and NOPORTS is set."
+ NODOC=yes
+ fi
-# The default make.conf and src.conf to use. Set to /dev/null
-# by default to avoid polluting the chroot(8) environment with
-# non-default settings.
-MAKE_CONF="/dev/null"
-SRC_CONF="/dev/null"
+ # If NOPORTS and/or NODOC are unset, they must not pass to make as
+ # variables. The release makefile verifies definedness of the
+ # NOPORTS/NODOC variables instead of their values.
+ DOCPORTS=
+ if [ -n "${NOPORTS}" ]; then
+ DOCPORTS="NOPORTS=yes "
+ fi
+ if [ -n "${NODOC}" ]; then
+ DOCPORTS="${DOCPORTS}NODOC=yes"
+ fi
-# The number of make(1) jobs, defaults to the number of CPUs available for
-# buildworld, and half of number of CPUs available for buildkernel.
-WORLD_FLAGS="-j$(sysctl -n hw.ncpu)"
-KERNEL_FLAGS="-j$(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2))"
+ # The aggregated build-time flags based upon variables defined within
+ # this file, unless overridden by release.conf. In most cases, these
+ # will not need to be changed.
+ CONF_FILES="__MAKE_CONF=${MAKE_CONF} SRCCONF=${SRC_CONF}"
+ if [ -n "${TARGET}" ] && [ -n "${TARGET_ARCH}" ]; then
+ ARCH_FLAGS="TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH}"
+ else
+ ARCH_FLAGS=
+ fi
+ # Force src checkout if configured
+ FORCE_SRC_KEY=
+ if [ -n "${SRC_FORCE_CHECKOUT}" ]; then
+ FORCE_SRC_KEY="--force"
+ fi
-MAKE_FLAGS="-s"
+ if [ -z "${CHROOTDIR}" ]; then
+ echo "Please set CHROOTDIR."
+ exit 1
+ fi
-# The name of the kernel to build, defaults to GENERIC.
-KERNEL="GENERIC"
+ if [ $(id -u) -ne 0 ]; then
+ echo "Needs to be run as root."
+ exit 1
+ fi
-# Set to non-empty value to disable checkout of doc/ and/or ports/. Disabling
-# ports/ checkout also forces NODOC to be set.
-NODOC=
-NOPORTS=
+ CHROOT_MAKEENV="${CHROOT_MAKEENV} \
+ MAKEOBJDIRPREFIX=${CHROOTDIR}/tmp/obj"
+ CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${CONF_FILES}"
+ CHROOT_IMAKEFLAGS="${CONF_FILES}"
+ CHROOT_DMAKEFLAGS="${CONF_FILES}"
+ RELEASE_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${ARCH_FLAGS} \
+ ${CONF_FILES}"
+ RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} \
+ KERNCONF=\"${KERNEL}\" ${ARCH_FLAGS} ${CONF_FILES}"
+ RELEASE_RMAKEFLAGS="${ARCH_FLAGS} \
+ KERNCONF=\"${KERNEL}\" ${CONF_FILES} ${DOCPORTS} \
+ WITH_DVD=${WITH_DVD} WITH_VMIMAGES=${WITH_VMIMAGES} \
+ WITH_CLOUDWARE=${WITH_CLOUDWARE} XZ_THREADS=${XZ_THREADS}"
+
+ return 0
+} # env_check()
+
+# chroot_setup(): Prepare the build chroot environment for the release build.
+chroot_setup() {
+ load_chroot_env
+ mkdir -p ${CHROOTDIR}/usr
+
+ if [ -z "${SRC_UPDATE_SKIP}" ]; then
+ ${VCSCMD} ${FORCE_SRC_KEY} ${SRCBRANCH} ${CHROOTDIR}/usr/src
+ fi
+ if [ -z "${NODOC}" ] && [ -z "${DOC_UPDATE_SKIP}" ]; then
+ ${VCSCMD} ${DOCBRANCH} ${CHROOTDIR}/usr/doc
+ fi
+ if [ -z "${NOPORTS}" ] && [ -z "${PORTS_UPDATE_SKIP}" ]; then
+ ${VCSCMD} ${PORTBRANCH} ${CHROOTDIR}/usr/ports
+ fi
-# Set to non-empty value to build dvd1.iso as part of the release.
-WITH_DVD=
-WITH_COMPRESSED_IMAGES=
+ if [ -z "${CHROOTBUILD_SKIP}" ]; then
+ cd ${CHROOTDIR}/usr/src
+ env ${CHROOT_MAKEENV} make ${CHROOT_WMAKEFLAGS} buildworld
+ env ${CHROOT_MAKEENV} make ${CHROOT_IMAKEFLAGS} installworld \
+ DESTDIR=${CHROOTDIR}
+ env ${CHROOT_MAKEENV} make ${CHROOT_DMAKEFLAGS} distribution \
+ DESTDIR=${CHROOTDIR}
+ fi
-# Set to non-empty value to build virtual machine images as part of
-# the release.
-WITH_VMIMAGES=
-WITH_COMPRESSED_VMIMAGES=
-XZ_THREADS=0
+ return 0
+} # chroot_setup()
-# Set to non-empty value to build virtual machine images for various
-# cloud providers as part of the release.
-WITH_CLOUDWARE=
+# extra_chroot_setup(): Prepare anything additional within the build
+# necessary for the release build.
+extra_chroot_setup() {
+ mkdir -p ${CHROOTDIR}/dev
+ mount -t devfs devfs ${CHROOTDIR}/dev
+ [ -e /etc/resolv.conf ] && cp /etc/resolv.conf \
+ ${CHROOTDIR}/etc/resolv.conf
+ # Run ldconfig(8) in the chroot directory so /var/run/ld-elf*.so.hints
+ # is created. This is needed by ports-mgmt/pkg.
+ eval chroot ${CHROOTDIR} /etc/rc.d/ldconfig forcerestart
-usage() {
- echo "Usage: $0 [-c release.conf]"
- exit 1
-}
+ # If MAKE_CONF and/or SRC_CONF are set and not character devices
+ # (/dev/null), copy them to the chroot.
+ if [ -e ${MAKE_CONF} ] && [ ! -c ${MAKE_CONF} ]; then
+ mkdir -p ${CHROOTDIR}/$(dirname ${MAKE_CONF})
+ cp ${MAKE_CONF} ${CHROOTDIR}/${MAKE_CONF}
+ fi
+ if [ -e ${SRC_CONF} ] && [ ! -c ${SRC_CONF} ]; then
+ mkdir -p ${CHROOTDIR}/$(dirname ${SRC_CONF})
+ cp ${SRC_CONF} ${CHROOTDIR}/${SRC_CONF}
+ fi
-while getopts c: opt; do
- case ${opt} in
- c)
- RELEASECONF="${OPTARG}"
- if [ ! -e "${RELEASECONF}" ]; then
- echo "ERROR: Configuration file ${RELEASECONF} does not exist."
- exit 1
+ if [ -d ${CHROOTDIR}/usr/ports ]; then
+ # Trick the ports 'run-autotools-fixup' target to do the right
+ # thing.
+ _OSVERSION=$(chroot ${CHROOTDIR} /usr/bin/uname -U)
+ REVISION=$(chroot ${CHROOTDIR} make -C /usr/src/release -V REVISION)
+ BRANCH=$(chroot ${CHROOTDIR} make -C /usr/src/release -V BRANCH)
+ UNAME_r=${REVISION}-${BRANCH}
+ if [ -d ${CHROOTDIR}/usr/doc ] && [ -z "${NODOC}" ]; then
+ PBUILD_FLAGS="OSVERSION=${_OSVERSION} BATCH=yes"
+ PBUILD_FLAGS="${PBUILD_FLAGS} UNAME_r=${UNAME_r}"
+ PBUILD_FLAGS="${PBUILD_FLAGS} OSREL=${REVISION}"
+ chroot ${CHROOTDIR} make -C /usr/ports/textproc/docproj \
+ ${PBUILD_FLAGS} OPTIONS_UNSET="FOP IGOR" \
+ install clean distclean
fi
- # Source the specified configuration file for overrides
- . ${RELEASECONF}
- ;;
- \?)
- usage
- ;;
- esac
-done
-shift $(($OPTIND - 1))
-
-# Fix for backwards-compatibility with release.conf that does not have the
-# trailing '/'.
-case ${SVNROOT} in
- *svn*)
- SVNROOT="${SVNROOT}/"
- ;;
- *)
- ;;
-esac
-
-# Prefix the branches with the SVNROOT for the full checkout URL.
-SRCBRANCH="${SVNROOT}${SRCBRANCH}"
-DOCBRANCH="${SVNROOT}${DOCBRANCH}"
-PORTBRANCH="${SVNROOT}${PORTBRANCH}"
-
-if [ -n "${EMBEDDEDBUILD}" ]; then
- WITH_DVD=
- WITH_COMPRESSED_IMAGES=
- NODOC=yes
-fi
-
-# If PORTS is set and NODOC is unset, force NODOC=yes because the ports tree
-# is required to build the documentation set.
-if [ -n "${NOPORTS}" ] && [ -z "${NODOC}" ]; then
- echo "*** NOTICE: Setting NODOC=1 since ports tree is required"
- echo " and NOPORTS is set."
- NODOC=yes
-fi
-
-# If NOPORTS and/or NODOC are unset, they must not pass to make as variables.
-# The release makefile verifies definedness of NOPORTS/NODOC variables
-# instead of their values.
-DOCPORTS=
-if [ -n "${NOPORTS}" ]; then
- DOCPORTS="NOPORTS=yes "
-fi
-if [ -n "${NODOC}" ]; then
- DOCPORTS="${DOCPORTS}NODOC=yes"
-fi
-
-# The aggregated build-time flags based upon variables defined within
-# this file, unless overridden by release.conf. In most cases, these
-# will not need to be changed.
-CONF_FILES="__MAKE_CONF=${MAKE_CONF} SRCCONF=${SRC_CONF}"
-if [ -n "${TARGET}" ] && [ -n "${TARGET_ARCH}" ]; then
- ARCH_FLAGS="TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH}"
-else
- ARCH_FLAGS=
-fi
-load_chroot_env
-CHROOT_MAKEENV="${CHROOT_MAKEENV} MAKEOBJDIRPREFIX=${CHROOTDIR}/tmp/obj"
-CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${CONF_FILES}"
-CHROOT_IMAKEFLAGS="${CONF_FILES}"
-CHROOT_DMAKEFLAGS="${CONF_FILES}"
-RELEASE_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${ARCH_FLAGS} ${CONF_FILES}"
-RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} KERNCONF=\"${KERNEL}\" ${ARCH_FLAGS} ${CONF_FILES}"
-RELEASE_RMAKEFLAGS="${ARCH_FLAGS} KERNCONF=\"${KERNEL}\" ${CONF_FILES} \
- ${DOCPORTS} WITH_DVD=${WITH_DVD} WITH_VMIMAGES=${WITH_VMIMAGES} \
- WITH_CLOUDWARE=${WITH_CLOUDWARE} XZ_THREADS=${XZ_THREADS}"
-
-# Force src checkout if configured
-FORCE_SRC_KEY=
-if [ -n "${SRC_FORCE_CHECKOUT}" ]; then
- FORCE_SRC_KEY="--force"
-fi
-
-if [ -z "${CHROOTDIR}" ]; then
- echo "Please set CHROOTDIR."
- exit 1
-fi
+ fi
+
+ if [ ! -z "${EMBEDDEDPORTS}" ]; then
+ for _PORT in ${EMBEDDEDPORTS}; do
+ eval chroot ${CHROOTDIR} make -C /usr/ports/${_PORT} \
+ BATCH=1 FORCE_PKG_REGISTER=1 install clean distclean
+ done
+ fi
-if [ $(id -u) -ne 0 ]; then
- echo "Needs to be run as root."
- exit 1
-fi
-
-set -e # Everything must succeed
-
-mkdir -p ${CHROOTDIR}/usr
-
-if [ -z "${SRC_UPDATE_SKIP}" ]; then
- ${VCSCMD} ${FORCE_SRC_KEY} ${SRCBRANCH} ${CHROOTDIR}/usr/src
-fi
-if [ -z "${NODOC}" ] && [ -z "${DOC_UPDATE_SKIP}" ]; then
- ${VCSCMD} ${DOCBRANCH} ${CHROOTDIR}/usr/doc
-fi
-if [ -z "${NOPORTS}" ] && [ -z "${PORTS_UPDATE_SKIP}" ]; then
- ${VCSCMD} ${PORTBRANCH} ${CHROOTDIR}/usr/ports
-fi
-
-if [ -z "${CHROOTBUILD_SKIP}" ]; then
- cd ${CHROOTDIR}/usr/src
- env ${CHROOT_MAKEENV} make ${CHROOT_WMAKEFLAGS} buildworld
- env ${CHROOT_MAKEENV} make ${CHROOT_IMAKEFLAGS} installworld \
- DESTDIR=${CHROOTDIR}
- env ${CHROOT_MAKEENV} make ${CHROOT_DMAKEFLAGS} distribution \
- DESTDIR=${CHROOTDIR}
-fi
-mount -t devfs devfs ${CHROOTDIR}/dev
-cp /etc/resolv.conf ${CHROOTDIR}/etc/resolv.conf
-trap "umount ${CHROOTDIR}/dev" EXIT # Clean up devfs mount on exit
-
-# If MAKE_CONF and/or SRC_CONF are set and not character devices (/dev/null),
-# copy them to the chroot.
-if [ -e ${MAKE_CONF} ] && [ ! -c ${MAKE_CONF} ]; then
- mkdir -p ${CHROOTDIR}/$(dirname ${MAKE_CONF})
- cp ${MAKE_CONF} ${CHROOTDIR}/${MAKE_CONF}
-fi
-if [ -e ${SRC_CONF} ] && [ ! -c ${SRC_CONF} ]; then
- mkdir -p ${CHROOTDIR}/$(dirname ${SRC_CONF})
- cp ${SRC_CONF} ${CHROOTDIR}/${SRC_CONF}
-fi
-
-# Embedded builds do not use the 'make release' target.
-if [ -n "${EMBEDDEDBUILD}" ]; then
buildenv_setup
- # If a crochet configuration file exists in *this* checkout of
- # release/, copy it to the /tmp/external directory within the chroot.
- # This allows building embedded releases without relying on updated
- # scripts and/or configurations to exist in the branch being built.
+
+ return 0
+} # extra_chroot_setup()
+
+# chroot_build_target(): Build the userland and kernel for the build target.
+chroot_build_target() {
load_target_env
- if [ -e ${RELENGDIR}/tools/${XDEV}/crochet-${KERNEL}.conf ] && \
- [ -e ${RELENGDIR}/${XDEV}/release.sh ]; then
- mkdir -p ${CHROOTDIR}/tmp/external/${XDEV}/
- cp ${RELENGDIR}/tools/${XDEV}/crochet-${KERNEL}.conf \
- ${CHROOTDIR}/tmp/external/${XDEV}/crochet-${KERNEL}.conf
- /bin/sh ${RELENGDIR}/${XDEV}/release.sh
+ if [ ! -z "${EMBEDDEDBUILD}" ]; then
+ RELEASE_WMAKEFLAGS="${RELEASE_WMAKEFLAGS} \
+ TARGET=${EMBEDDED_TARGET} \
+ TARGET_ARCH=${EMBEDDED_TARGET_ARCH}"
+ RELEASE_KMAKEFLAGS="${RELEASE_KMAKEFLAGS} \
+ TARGET=${EMBEDDED_TARGET} \
+ TARGET_ARCH=${EMBEDDED_TARGET_ARCH}"
fi
- # If the script does not exist for this architecture, exit.
- # This probably should be checked earlier, but allowing the rest
- # of the build process to get this far will at least set up the
- # chroot environment for testing.
- exit 0
-else
- # Not embedded.
- continue
-fi
-
-if [ -d ${CHROOTDIR}/usr/ports ]; then
- # Run ldconfig(8) in the chroot directory so /var/run/ld-elf*.so.hints
- # is created. This is needed by ports-mgmt/pkg.
- chroot ${CHROOTDIR} /etc/rc.d/ldconfig forcerestart
-
- ## Trick the ports 'run-autotools-fixup' target to do the right thing.
- _OSVERSION=$(sysctl -n kern.osreldate)
- REVISION=$(chroot ${CHROOTDIR} make -C /usr/src/release -V REVISION)
- BRANCH=$(chroot ${CHROOTDIR} make -C /usr/src/release -V BRANCH)
- UNAME_r=${REVISION}-${BRANCH}
- if [ -d ${CHROOTDIR}/usr/doc ] && [ -z "${NODOC}" ]; then
- PBUILD_FLAGS="OSVERSION=${_OSVERSION} BATCH=yes"
- PBUILD_FLAGS="${PBUILD_FLAGS} UNAME_r=${UNAME_r}"
- PBUILD_FLAGS="${PBUILD_FLAGS} OSREL=${REVISION}"
- chroot ${CHROOTDIR} make -C /usr/ports/textproc/docproj \
- ${PBUILD_FLAGS} OPTIONS_UNSET="FOP IGOR" \
- install clean distclean
+ eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_WMAKEFLAGS} buildworld
+ eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_KMAKEFLAGS} buildkernel
+
+ return 0
+} # chroot_build_target
+
+# chroot_build_release(): Invoke the 'make release' target.
+chroot_build_release() {
+ load_target_env
+ eval chroot ${CHROOTDIR} make -C /usr/src/release \
+ ${RELEASE_RMAKEFLAGS} release
+ eval chroot ${CHROOTDIR} make -C /usr/src/release \
+ ${RELEASE_RMAKEFLAGS} install DESTDIR=/R \
+ WITH_COMPRESSED_IMAGES=${WITH_COMPRESSED_IMAGES} \
+ WITH_COMPRESSED_VMIMAGES=${WITH_COMPRESSED_VMIMAGES}
+
+ return 0
+} # chroot_build_release()
+
+# chroot_arm_armv6_build_release(): Create arm/armv6 SD card image.
+chroot_arm_armv6_build_release() {
+ load_target_env
+ eval chroot ${CHROOTDIR} make -C /usr/src/release obj
+ if [ -e "${RELENGDIR}/tools/${EMBEDDED_TARGET}.subr" ]; then
+ . "${RELENGDIR}/tools/${EMBEDDED_TARGET}.subr"
+ fi
+ [ ! -z "${RELEASECONF}" ] && . "${RELEASECONF}"
+ WORLDDIR="$(eval chroot ${CHROOTDIR} make -C /usr/src/release -V WORLDDIR)"
+ OBJDIR="$(eval chroot ${CHROOTDIR} make -C /usr/src/release -V .OBJDIR)"
+ DESTDIR="${OBJDIR}/${KERNEL}"
+ IMGBASE="${CHROOTDIR}/${OBJDIR}/${KERNEL}.img"
+ OSRELEASE="$(eval chroot ${CHROOTDIR} make -C /usr/src/release \
+ TARGET=${EMBEDDED_TARGET} TARGET_ARCH=${EMBEDDED_TARGET_ARCH} \
+ -V OSRELEASE)"
+ chroot ${CHROOTDIR} mkdir -p ${DESTDIR}
+ chroot ${CHROOTDIR} truncate -s ${IMAGE_SIZE} ${IMGBASE##${CHROOTDIR}}
+ export mddev=$(chroot ${CHROOTDIR} \
+ mdconfig -f ${IMGBASE##${CHROOTDIR}} ${MD_ARGS})
+ arm_create_disk
+ arm_install_base
+ arm_install_uboot
+ mdconfig -d -u ${mddev}
+ chroot ${CHROOTDIR} rmdir ${DESTDIR}
+ mv ${IMGBASE} ${CHROOTDIR}/${OBJDIR}/${OSRELEASE}-${KERNEL}.img
+ chroot ${CHROOTDIR} mkdir -p /R
+ chroot ${CHROOTDIR} cp -p ${OBJDIR}/${OSRELEASE}-${KERNEL}.img \
+ /R/${OSRELEASE}-${KERNEL}.img
+ chroot ${CHROOTDIR} xz -T ${XZ_THREADS} /R/${OSRELEASE}-${KERNEL}.img
+ cd ${CHROOTDIR}/R && sha256 ${OSRELEASE}* \
+ > CHECKSUM.SHA256
+ cd ${CHROOTDIR}/R && md5 ${OSRELEASE}* \
+ > CHECKSUM.MD5
+
+ return 0
+} # chroot_arm_armv6_build_release()
+
+# main(): Start here.
+main() {
+ set -e # Everything must succeed
+ env_setup
+ while getopts c: opt; do
+ case ${opt} in
+ c)
+ RELEASECONF="${OPTARG}"
+ ;;
+ \?)
+ usage
+ ;;
+ esac
+ done
+ shift $(($OPTIND - 1))
+ if [ ! -z "${RELEASECONF}" ]; then
+ if [ -e "${RELEASECONF}" ]; then
+ . ${RELEASECONF}
+ else
+ echo "Nonexistent configuration file: ${RELEASECONF}"
+ echo "Using default build environment."
+ fi
fi
-fi
-
-buildenv_setup
-load_target_env
-eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_WMAKEFLAGS} buildworld
-eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_KMAKEFLAGS} buildkernel
-eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
- release
-eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
- install DESTDIR=/R WITH_COMPRESSED_IMAGES=${WITH_COMPRESSED_IMAGES} \
- WITH_COMPRESSED_VMIMAGES=${WITH_COMPRESSED_VMIMAGES}
+ env_check
+ trap "umount ${CHROOTDIR}/dev" EXIT # Clean up devfs mount on exit
+ chroot_setup
+ extra_chroot_setup
+ chroot_build_target
+ ${chroot_build_release_cmd}
+
+ return 0
+} # main()
+
+main "${@}"
diff --git a/release/tools/arm.subr b/release/tools/arm.subr
new file mode 100644
index 000000000000..5cc61e3708b0
--- /dev/null
+++ b/release/tools/arm.subr
@@ -0,0 +1,137 @@
+#!/bin/sh
+#-
+# Copyright (c) 2015 The FreeBSD Foundation
+# All rights reserved.
+#
+# Portions of this software were developed by Glen Barber
+# under sponsorship from the FreeBSD Foundation.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# Common subroutines used to build arm/armv6 images.
+#
+# $FreeBSD$
+#
+
+cleanup() {
+ if [ -c "${DESTDIR}/dev/null" ]; then
+ umount_loop ${DESTDIR}/dev 2>/dev/null
+ fi
+ umount_loop ${DESTDIR}
+ if [ ! -z "${mddev}" ]; then
+ mdconfig -d -u ${mddev}
+ fi
+
+ return 0
+}
+
+umount_loop() {
+ DIR=$1
+ i=0
+ sync
+ while ! umount ${DIR}; do
+ i=$(( $i + 1 ))
+ if [ $i -ge 10 ]; then
+ # This should never happen. But, it has happened.
+ echo "Cannot umount(8) ${DIR}"
+ echo "Something has gone horribly wrong."
+ return 1
+ fi
+ sleep 1
+ done
+
+ return 0
+}
+
+arm_create_disk() {
+ # Create the target raw file and temporary work directory.
+ chroot ${CHROOTDIR} gpart create -s ${PART_SCHEME} ${mddev}
+ chroot ${CHROOTDIR} gpart add -t '!12' -a 63 -s ${FAT_SIZE} ${mddev}
+ chroot ${CHROOTDIR} gpart set -a active -i 1 ${mddev}
+ chroot ${CHROOTDIR} newfs_msdos -L msdosboot -F ${FAT_TYPE} /dev/${mddev}s1
+ chroot ${CHROOTDIR} gpart add -t freebsd ${mddev}
+ chroot ${CHROOTDIR} gpart create -s bsd ${mddev}s2
+ chroot ${CHROOTDIR} gpart add -t freebsd-ufs -a 64k /dev/${mddev}s2
+ chroot ${CHROOTDIR} newfs -U -L rootfs /dev/${mddev}s2a
+ chroot ${CHROOTDIR} tunefs -j enable -N enable /dev/${mddev}s2a
+
+ return 0
+}
+
+arm_create_user() {
+ # Create a default user account 'freebsd' with the password 'freebsd',
+ # and set the default password for the 'root' user to 'root'.
+ chroot ${CHROOTDIR} /usr/sbin/pw groupadd freebsd -g 1001
+ chroot ${CHROOTDIR} /usr/sbin/pw useradd freebsd \
+ -m -M 0755 -w yes -n freebsd -u 1001 -g 1001 -G 0 \
+ -c 'FreeBSD User' -d '/home/freebsd' -s '/bin/csh'
+ chroot ${CHROOTDIR} /usr/sbin/pw usermod root -w yes
+
+ return 0
+}
+
+arm_install_base() {
+ chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${DESTDIR}
+ eval chroot ${CHROOTDIR} make -C ${WORLDDIR} \
+ TARGET=${EMBEDDED_TARGET} \
+ TARGET_ARCH=${EMBEDDED_TARGET_ARCH} \
+ DESTDIR=${DESTDIR} KERNCONF=${KERNEL} \
+ installworld installkernel distribution
+ chroot ${CHROOTDIR} mkdir -p ${DESTDIR}/boot/msdos
+
+ arm_create_user
+
+ echo '# Custom /etc/fstab for FreeBSD embedded images' \
+ > ${CHROOTDIR}/${DESTDIR}/etc/fstab
+ echo "/dev/ufs/rootfs / ufs rw 1 1" \
+ >> ${CHROOTDIR}/${DESTDIR}/etc/fstab
+ echo "/dev/msdosfs/MSDOSBOOT /boot/msdos msdosfs rw,noatime 0 0" \
+ >> ${CHROOTDIR}/${DESTDIR}/etc/fstab
+ echo "md /tmp mfs rw,noatime,-s30m 0 0" \
+ >> ${CHROOTDIR}/${DESTDIR}/etc/fstab
+ echo "md /var/log mfs rw,noatime,-s15m 0 0" \
+ >> ${CHROOTDIR}/${DESTDIR}/etc/fstab
+ echo "md /var/tmp mfs rw,noatime,-s12m 0 0" \
+ >> ${CHROOTDIR}/${DESTDIR}/etc/fstab
+
+ local hostname
+ hostname="$(echo ${KERNEL} | tr '[:upper:]' '[:lower:]')"
+ echo "hostname=\"${hostname}\"" > ${CHROOTDIR}/${DESTDIR}/etc/rc.conf
+ echo 'ifconfig_DEFAULT="DHCP"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf
+ echo 'sshd_enable="YES"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf
+ echo 'sendmail_enable="NONE"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf
+ echo 'sendmail_submit_enable="NO"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf
+ echo 'sendmail_outbound_enable="NO"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf
+ echo 'sendmail_msp_queue_enable="NO"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf
+ echo 'growfs_enable="YES"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf
+
+ sync
+ umount_loop ${CHROOTDIR}/${DESTDIR}
+
+ return 0
+}
+
+arm_install_uboot() {
+ # Override in the arm/KERNEL.conf file.
+
+ return 0
+}
diff --git a/release/tools/arm/crochet-BEAGLEBONE.conf b/release/tools/arm/crochet-BEAGLEBONE.conf
deleted file mode 100644
index 7a32542ed0f9..000000000000
--- a/release/tools/arm/crochet-BEAGLEBONE.conf
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# $FreeBSD$
-#
-
-# This is the configuration file for use with crochet to produce
-# FreeBSD BeagleBone images.
-
-board_setup BeagleBone
-option ImageSize 1gb
-option Growfs
-
-export MAKEOBJDIRPREFIX=/usr/obj
-FREEBSD_SRC=/usr/src
-__MAKE_CONF=/dev/null
-SRCCONF=/dev/null
-WORKDIR=/usr/obj
-_BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH)
-_REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION)
-KERNCONF=BEAGLEBONE
-TARGET=arm
-TARGET_ARCH=armv6
-FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}"
-FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}"
-FREEBSD_INSTALLWORLD_EXTRA_ARGS=""
-FREEBSD_INSTALLKERNEL_EXTRA_ARGS=""
-FREEBSD_WORLD_EXTRA_ARGS=""
-FREEBSD_KERNEL_EXTRA_ARGS=""
-FREEBSD_EXTRA_ARGS=""
-IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img
-BEAGLEBONE_UBOOT=/tmp/external/u-boot-beaglebone
-
-beaglebone_check_uboot() {
- mkdir -p "${BEAGLEBONE_UBOOT}"
- ln -fs /usr/local/share/u-boot/u-boot-beaglebone/MLO \
- ${BEAGLEBONE_UBOOT}/MLO
- ln -fs /usr/local/share/u-boot/u-boot-beaglebone/u-boot.img \
- ${BEAGLEBONE_UBOOT}/bb-uboot.img
- ln -fs ${BOARDDIR}/files/uEnv.txt \
- ${BEAGLEBONE_UBOOT}/bb-uenv.txt
-}
diff --git a/release/tools/arm/crochet-PANDABOARD.conf b/release/tools/arm/crochet-PANDABOARD.conf
deleted file mode 100644
index 366c4ccb5002..000000000000
--- a/release/tools/arm/crochet-PANDABOARD.conf
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# $FreeBSD$
-#
-
-# This is the configuration file for use with crochet to produce
-# FreeBSD PandaBoard images.
-
-board_setup PandaBoard
-option ImageSize 1gb
-option Growfs
-
-export MAKEOBJDIRPREFIX=/usr/obj
-FREEBSD_SRC=/usr/src
-__MAKE_CONF=/dev/null
-SRCCONF=/dev/null
-WORKDIR=/usr/obj
-_BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH)
-_REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION)
-KERNCONF=PANDABOARD
-TARGET=arm
-TARGET_ARCH=armv6
-FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}"
-FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}"
-FREEBSD_INSTALLWORLD_EXTRA_ARGS=""
-FREEBSD_INSTALLKERNEL_EXTRA_ARGS=""
-FREEBSD_WORLD_EXTRA_ARGS=""
-FREEBSD_KERNEL_EXTRA_ARGS=""
-FREEBSD_EXTRA_ARGS=""
-IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img
diff --git a/release/tools/arm/crochet-RPI-B.conf b/release/tools/arm/crochet-RPI-B.conf
deleted file mode 100644
index 352048faa2b7..000000000000
--- a/release/tools/arm/crochet-RPI-B.conf
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# $FreeBSD$
-#
-
-# This is the configuration file for use with crochet to produce
-# FreeBSD Raspberry Pi images.
-
-board_setup RaspberryPi
-option ImageSize 1gb
-option Growfs
-
-export MAKEOBJDIRPREFIX=/usr/obj
-FREEBSD_SRC=/usr/src
-__MAKE_CONF=/dev/null
-SRCCONF=/dev/null
-WORKDIR=/usr/obj
-_BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH)
-_REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION)
-KERNCONF=RPI-B
-TARGET=arm
-TARGET_ARCH=armv6
-FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}"
-FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}"
-FREEBSD_INSTALLWORLD_EXTRA_ARGS=""
-FREEBSD_INSTALLKERNEL_EXTRA_ARGS=""
-FREEBSD_WORLD_EXTRA_ARGS=""
-FREEBSD_KERNEL_EXTRA_ARGS=""
-FREEBSD_EXTRA_ARGS=""
-IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img
diff --git a/release/tools/arm/crochet-RPI2.conf b/release/tools/arm/crochet-RPI2.conf
deleted file mode 100644
index 7ecab4ca5b44..000000000000
--- a/release/tools/arm/crochet-RPI2.conf
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# $FreeBSD$
-#
-
-# This is the configuration file for use with crochet to produce
-# FreeBSD Raspberry Pi 2 images.
-
-board_setup RaspberryPi2
-option ImageSize 1gb
-option Growfs
-
-export MAKEOBJDIRPREFIX=/usr/obj
-FREEBSD_SRC=/usr/src
-__MAKE_CONF=/dev/null
-SRCCONF=/dev/null
-WORKDIR=/usr/obj
-_BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH)
-_REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION)
-KERNCONF=RPI2
-TARGET=arm
-TARGET_ARCH=armv6
-FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}"
-FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}"
-FREEBSD_INSTALLWORLD_EXTRA_ARGS=""
-FREEBSD_INSTALLKERNEL_EXTRA_ARGS=""
-FREEBSD_WORLD_EXTRA_ARGS=""
-FREEBSD_KERNEL_EXTRA_ARGS=""
-FREEBSD_EXTRA_ARGS=""
-IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img
diff --git a/release/tools/arm/crochet-WANDBOARD-QUAD.conf b/release/tools/arm/crochet-WANDBOARD-QUAD.conf
deleted file mode 100644
index d1e0062c869b..000000000000
--- a/release/tools/arm/crochet-WANDBOARD-QUAD.conf
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# $FreeBSD$
-#
-
-# This is the configuration file for use with crochet to produce
-# FreeBSD WandboardQuad images.
-
-board_setup Wandboard
-option ImageSize 1gb
-option Growfs
-
-export MAKEOBJDIRPREFIX=/usr/obj
-FREEBSD_SRC=/usr/src
-__MAKE_CONF=/dev/null
-SRCCONF=/dev/null
-WORKDIR=/usr/obj
-_BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH)
-_REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION)
-KERNCONF=WANDBOARD-QUAD
-TARGET=arm
-TARGET_ARCH=armv6
-FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}"
-FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}"
-FREEBSD_INSTALLWORLD_EXTRA_ARGS=""
-FREEBSD_INSTALLKERNEL_EXTRA_ARGS=""
-FREEBSD_WORLD_EXTRA_ARGS=""
-FREEBSD_KERNEL_EXTRA_ARGS=""
-FREEBSD_EXTRA_ARGS=""
-IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img
diff --git a/release/tools/arm/crochet-ZEDBOARD.conf b/release/tools/arm/crochet-ZEDBOARD.conf
deleted file mode 100644
index 8353038302d7..000000000000
--- a/release/tools/arm/crochet-ZEDBOARD.conf
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# $FreeBSD$
-#
-
-# This is the configuration file for use with crochet to produce
-# FreeBSD ZedBoard images.
-
-board_setup ZedBoard
-option ImageSize 1gb
-option Growfs
-
-export MAKEOBJDIRPREFIX=/usr/obj
-FREEBSD_SRC=/usr/src
-__MAKE_CONF=/dev/null
-SRCCONF=/dev/null
-WORKDIR=/usr/obj
-_BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH)
-_REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION)
-KERNCONF=ZEDBOARD
-TARGET=arm
-TARGET_ARCH=armv6
-FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}"
-FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}"
-FREEBSD_INSTALLWORLD_EXTRA_ARGS=""
-FREEBSD_INSTALLKERNEL_EXTRA_ARGS=""
-FREEBSD_WORLD_EXTRA_ARGS=""
-FREEBSD_KERNEL_EXTRA_ARGS=""
-FREEBSD_EXTRA_ARGS=""
-IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img