Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Feb 2014 23:18:35 +0000 (UTC)
From:      Glen Barber <gjb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r262314 - in projects/release-embedded/release: . arm tools tools/arm
Message-ID:  <201402212318.s1LNIZUN014454@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gjb
Date: Fri Feb 21 23:18:35 2014
New Revision: 262314
URL: http://svnweb.freebsd.org/changeset/base/262314

Log:
  Merge the following:
   ^/user/gjb/hacking/release-embedded:
  	259994,260000,260895-260896,261139,261152,
  	261174,261176,261210,261221,261237,261239,
  	261448,261489
   ^/user/gjb/release-embedded:
  	262305,262307
  
  svn:mergeinfo is intentionally not included in the commit, so it does
  not propagate to head/.
  
  Sponsored by:	The FreeBSD Foundation

Added:
  projects/release-embedded/release/arm/
     - copied from r259994, user/gjb/hacking/release-embedded/release/arm/
  projects/release-embedded/release/arm/BEAGLEBONE.conf
     - copied, changed from r261139, user/gjb/hacking/release-embedded/release/arm/BEAGLEBONE.conf
  projects/release-embedded/release/arm/PANDABOARD.conf
     - copied, changed from r261221, user/gjb/hacking/release-embedded/release/arm/PANDABOARD.conf
  projects/release-embedded/release/arm/WANDBOARD-QUAD.conf
     - copied unchanged from r262305, user/gjb/release-embedded/release/arm/WANDBOARD-QUAD.conf
  projects/release-embedded/release/tools/
     - copied from r260895, user/gjb/hacking/release-embedded/release/tools/
  projects/release-embedded/release/tools/arm/crochet-BEAGLEBONE.conf
     - copied, changed from r261139, user/gjb/hacking/release-embedded/release/tools/arm/crochet-BEAGLEBONE.conf
  projects/release-embedded/release/tools/arm/crochet-PANDABOARD.conf
     - copied, changed from r261221, user/gjb/hacking/release-embedded/release/tools/arm/crochet-PANDABOARD.conf
  projects/release-embedded/release/tools/arm/crochet-WANDBOARD-QUAD.conf
     - copied unchanged from r262305, user/gjb/release-embedded/release/tools/arm/crochet-WANDBOARD-QUAD.conf
Modified:
  projects/release-embedded/release/arm/RPI-B.conf
  projects/release-embedded/release/arm/release.sh
  projects/release-embedded/release/release.conf.sample
  projects/release-embedded/release/release.sh
  projects/release-embedded/release/tools/arm/crochet-RPI-B.conf

Copied and modified: projects/release-embedded/release/arm/BEAGLEBONE.conf (from r261139, user/gjb/hacking/release-embedded/release/arm/BEAGLEBONE.conf)
==============================================================================
--- user/gjb/hacking/release-embedded/release/arm/BEAGLEBONE.conf	Fri Jan 24 22:12:59 2014	(r261139, copy source)
+++ projects/release-embedded/release/arm/BEAGLEBONE.conf	Fri Feb 21 23:18:35 2014	(r262314)
@@ -17,18 +17,19 @@ SVNROOT="svn://svn.FreeBSD.org"
 SRCBRANCH="base/head@rHEAD"
 DOCBRANCH="doc/head@rHEAD"
 PORTBRANCH="ports/head@rHEAD"
-EMBEDDED_WORLD_FLAGS="WITH_GCC=1"
 NODOC=yes
 
 # Build target configuration
 # Since this file is sourced by a script that runs another
 # script, these must be exported.
 set -a
+WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
+KERNEL_FLAGS="-j $(expr \( $(sysctl -n hw.ncpu) + 1 \) / 2)"
 CHROOTDIR="/scratch"
 EMBEDDEDBUILD=1
 EMBEDDEDPORTS="lang/python textproc/gsed"
 XDEV="arm"
-XDEV_ARCH="arm"
+XDEV_ARCH="armv6"
 KERNEL="BEAGLEBONE"
 CROCHETSRC="https://github.com/kientzle/crochet-freebsd"
 CROCHETBRANCH="trunk"

Copied and modified: projects/release-embedded/release/arm/PANDABOARD.conf (from r261221, user/gjb/hacking/release-embedded/release/arm/PANDABOARD.conf)
==============================================================================
--- user/gjb/hacking/release-embedded/release/arm/PANDABOARD.conf	Tue Jan 28 03:09:57 2014	(r261221, copy source)
+++ projects/release-embedded/release/arm/PANDABOARD.conf	Fri Feb 21 23:18:35 2014	(r262314)
@@ -23,6 +23,8 @@ NODOC=yes
 # Since this file is sourced by a script that runs another
 # script, these must be exported.
 set -a
+WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
+KERNEL_FLAGS="-j $(expr \( $(sysctl -n hw.ncpu) + 1 \) / 2)"
 CHROOTDIR="/scratch"
 EMBEDDEDBUILD=1
 EMBEDDEDPORTS="lang/python textproc/gsed"

Modified: projects/release-embedded/release/arm/RPI-B.conf
==============================================================================
--- user/gjb/hacking/release-embedded/release/arm/RPI-B.conf	Sat Dec 28 02:27:06 2013	(r259994)
+++ projects/release-embedded/release/arm/RPI-B.conf	Fri Feb 21 23:18:35 2014	(r262314)
@@ -23,11 +23,13 @@ NODOC=yes
 # Since this file is sourced by a script that runs another
 # script, these must be exported.
 set -a
+WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
+KERNEL_FLAGS="-j $(expr \( $(sysctl -n hw.ncpu) + 1 \) / 2)"
 CHROOTDIR="/scratch"
 EMBEDDEDBUILD=1
 EMBEDDEDPORTS="lang/python textproc/gsed"
 XDEV="arm"
-XDEV_ARCH="arm"
+XDEV_ARCH="armv6"
 KERNEL="RPI-B"
 CROCHETSRC="https://github.com/kientzle/crochet-freebsd"
 CROCHETBRANCH="trunk"

Copied: projects/release-embedded/release/arm/WANDBOARD-QUAD.conf (from r262305, user/gjb/release-embedded/release/arm/WANDBOARD-QUAD.conf)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/release-embedded/release/arm/WANDBOARD-QUAD.conf	Fri Feb 21 23:18:35 2014	(r262314, copy of r262305, user/gjb/release-embedded/release/arm/WANDBOARD-QUAD.conf)
@@ -0,0 +1,37 @@
+#
+# $FreeBSD$
+#
+
+# This is only supported on amd64 right now.  It may work on
+# i386, but I do not have the hardware to test, so until I get
+# a VM set up to make sure, be cautious and assume it will not.
+if [ "$(uname -p)" != "amd64" ] || [ "$(uname -m)" != "amd64" ]; then
+    echo "This is only supported on amd64 right now."
+    exit 0
+fi
+
+# Build chroot configuration
+TARGET="amd64"
+TARGET_ARCH="amd64"
+SVNROOT="svn://svn.FreeBSD.org"
+SRCBRANCH="base/head@rHEAD"
+DOCBRANCH="doc/head@rHEAD"
+PORTBRANCH="ports/head@rHEAD"
+NODOC=yes
+
+# Build target configuration
+# Since this file is sourced by a script that runs another
+# script, these must be exported.
+set -a
+WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
+KERNEL_FLAGS="-j $(expr \( $(sysctl -n hw.ncpu) + 1 \) / 2)"
+CHROOTDIR="/scratch"
+EMBEDDEDBUILD=1
+EMBEDDEDPORTS="lang/python textproc/gsed"
+XDEV="arm"
+XDEV_ARCH="armv6"
+KERNEL="WANDBOARD-QUAD"
+CROCHETSRC="https://github.com/kientzle/crochet-freebsd"
+CROCHETBRANCH="trunk"
+set +a
+

Modified: projects/release-embedded/release/arm/release.sh
==============================================================================
--- user/gjb/hacking/release-embedded/release/arm/release.sh	Sat Dec 28 02:27:06 2013	(r259994)
+++ projects/release-embedded/release/arm/release.sh	Fri Feb 21 23:18:35 2014	(r262314)
@@ -10,6 +10,43 @@
 
 set -e
 
+before_build() {
+	WANT_UBOOT=
+	KNOWNHASH=
+	UBOOT_VERSION=
+	case ${KERNEL} in
+		BEAGLEBONE)
+			WANT_UBOOT=1
+			KNOWNHASH="4150e5a4480707c55a8d5b4570262e43af68d8ed3bdc0a433d8e7df47989a69e"
+			UBOOT_VERSION="u-boot-2013.04"
+			;;
+		PANDABOARD)
+			WANT_UBOOT=1
+			KNOWNHASH="e08e20a6979bfca6eebb9a2b0e42aa4416af3d796332fd63a3470495a089d496"
+			UBOOT_VERSION="u-boot-2012.07"
+			;;
+		WANDBOARD-QUAD)
+			WANT_UBOOT=1
+			KNOWNHASH="0d71e62beb952b41ebafb20a7ee4df2f960db64c31b054721ceb79ff14014c55"
+			UBOOT_VERSION="u-boot-2013.10"
+			;;
+		*)
+			# 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
@@ -28,9 +65,15 @@ install_uboot() {
 }
 
 main() {
+	# Build gcc for use in the chroot for arm builds.
+	# This is not '-j'-safe, so force '-j1' to allow using
+	# additional, non-'-j' options specified in WORLD_FLAGS.
+	eval chroot ${CHROOTDIR} make -C /usr/src/gnu/usr.bin/cc \
+		WITH_GCC=1 ${WORLD_FLAGS} -j1 obj depend all install
 	# Build the 'xdev' target for crochet.
 	eval chroot ${CHROOTDIR} make -C /usr/src \
-		XDEV=${XDEV} XDEV_ARCH=${XDEV_ARCH} WITH_GCC=1 xdev
+		XDEV=${XDEV} XDEV_ARCH=${XDEV_ARCH} WITH_GCC=1 \
+		${WORLD_FLAGS} xdev
 
 	# Run the ldconfig(8) startup script so /var/run/ld-elf*.so.hints
 	# is created.
@@ -46,11 +89,17 @@ main() {
 			BATCH=1 FORCE_PKG_REGISTER=1 install clean distclean
 	done
 
+	mkdir -p ${CHROOTDIR}/tmp/crochet/work
+	before_build
 	install_crochet
 	install_uboot
-	mkdir -p ${CHROOTDIR}/tmp/crochet/work
 	eval chroot ${CHROOTDIR} /bin/sh /tmp/crochet/crochet.sh \
-		-c /usr/src/tools/release/${XDEV}/crochet-${KERNEL}.conf
+		-c /tmp/external/${XDEV}/crochet-${KERNEL}.conf
+	mkdir -p ${CHROOTDIR}/R/
+	cp -p ${CHROOTDIR}/usr/obj/*.img ${CHROOTDIR}/R/
+	bzip2 ${CHROOTDIR}/R/FreeBSD*.img
+	cd ${CHROOTDIR}/R/ && sha256 FreeBSD*.img.bz2 > CHECKSUM.SHA256
+	cd ${CHROOTDIR}/R/ && md5 FreeBSD*.img.bz2 > CHECKSUM.MD5
 }
 
 main "$@"

Modified: projects/release-embedded/release/release.conf.sample
==============================================================================
--- projects/release-embedded/release/release.conf.sample	Fri Feb 21 23:12:07 2014	(r262313)
+++ projects/release-embedded/release/release.conf.sample	Fri Feb 21 23:18:35 2014	(r262314)
@@ -40,3 +40,11 @@ PORTBRANCH="ports/head@rHEAD"
 #NOPORTS=
 #RELSTRING=
 #WITH_DVD=
+
+## Set when building embedded images.
+#EMBEDDEDBUILD=
+
+## Set to specify userland-specific make(1) flags that affect the
+## build chroot environment.
+#EMBEDDED_WORLD_FLAGS=""
+

Modified: projects/release-embedded/release/release.sh
==============================================================================
--- projects/release-embedded/release/release.sh	Fri Feb 21 23:12:07 2014	(r262313)
+++ projects/release-embedded/release/release.sh	Fri Feb 21 23:18:35 2014	(r262314)
@@ -37,6 +37,7 @@ export PATH
 
 # The directory within which the release will be built.
 CHROOTDIR="/scratch"
+RELENGDIR="$(realpath $(dirname $(basename ${0})))"
 
 # The default svn checkout server, and svn branches for src/, doc/,
 # and ports/.
@@ -45,6 +46,9 @@ 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=
@@ -98,6 +102,11 @@ while getopts c: opt; do
 done
 shift $(($OPTIND - 1))
 
+if [ "x${EMBEDDEDBUILD}" != "x" ]; then
+	WITH_DVD=
+	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 [ "x${NOPORTS}" != "x" ] && [ "x${NODOC}" = "x" ]; then
@@ -184,6 +193,29 @@ if [ -e ${SRC_CONF} ] && [ ! -c ${SRC_CO
 	cp ${SRC_CONF} ${CHROOTDIR}/${SRC_CONF}
 fi
 
+# Embedded builds do not use the 'make release' target.
+if [ "X${EMBEDDEDBUILD}" != "X" ]; then
+	# 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.
+	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
+	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.

Copied and modified: projects/release-embedded/release/tools/arm/crochet-BEAGLEBONE.conf (from r261139, user/gjb/hacking/release-embedded/release/tools/arm/crochet-BEAGLEBONE.conf)
==============================================================================
--- user/gjb/hacking/release-embedded/release/tools/arm/crochet-BEAGLEBONE.conf	Fri Jan 24 22:12:59 2014	(r261139, copy source)
+++ projects/release-embedded/release/tools/arm/crochet-BEAGLEBONE.conf	Fri Feb 21 23:18:35 2014	(r262314)
@@ -17,11 +17,13 @@ WORKDIR=/usr/obj
 _BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH)
 _REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION)
 KERNCONF=BEAGLEBONE
-FREEBSD_BUILDWORLD_EXTRA_ARGS=""
+TARGET=arm
+TARGET_ARCH=armv6
+FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}"
+FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}"
 FREEBSD_INSTALLWORLD_EXTRA_ARGS=""
-FREEBSD_BUILDKERNEL_EXTRA_ARGS=""
 FREEBSD_INSTALLKERNEL_EXTRA_ARGS=""
 FREEBSD_WORLD_EXTRA_ARGS=""
 FREEBSD_KERNEL_EXTRA_ARGS=""
 FREEBSD_EXTRA_ARGS=""
-IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${KERNCONF}.img
+IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img

Copied and modified: projects/release-embedded/release/tools/arm/crochet-PANDABOARD.conf (from r261221, user/gjb/hacking/release-embedded/release/tools/arm/crochet-PANDABOARD.conf)
==============================================================================
--- user/gjb/hacking/release-embedded/release/tools/arm/crochet-PANDABOARD.conf	Tue Jan 28 03:09:57 2014	(r261221, copy source)
+++ projects/release-embedded/release/tools/arm/crochet-PANDABOARD.conf	Fri Feb 21 23:18:35 2014	(r262314)
@@ -19,11 +19,11 @@ _REVISION=$(make -C ${FREEBSD_SRC}/relea
 KERNCONF=PANDABOARD
 TARGET=arm
 TARGET_ARCH=armv6
-FREEBSD_BUILDWORLD_EXTRA_ARGS=""
+FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}"
+FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}"
 FREEBSD_INSTALLWORLD_EXTRA_ARGS=""
-FREEBSD_BUILDKERNEL_EXTRA_ARGS=""
 FREEBSD_INSTALLKERNEL_EXTRA_ARGS=""
 FREEBSD_WORLD_EXTRA_ARGS=""
 FREEBSD_KERNEL_EXTRA_ARGS=""
 FREEBSD_EXTRA_ARGS=""
-IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${KERNCONF}.img
+IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img

Modified: projects/release-embedded/release/tools/arm/crochet-RPI-B.conf
==============================================================================
--- user/gjb/hacking/release-embedded/release/tools/arm/crochet-RPI-B.conf	Sun Jan 19 22:01:08 2014	(r260895)
+++ projects/release-embedded/release/tools/arm/crochet-RPI-B.conf	Fri Feb 21 23:18:35 2014	(r262314)
@@ -17,11 +17,13 @@ WORKDIR=/usr/obj
 _BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH)
 _REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION)
 KERNCONF=RPI-B
-FREEBSD_BUILDWORLD_EXTRA_ARGS=""
+TARGET=arm
+TARGET_ARCH=armv6
+FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}"
+FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}"
 FREEBSD_INSTALLWORLD_EXTRA_ARGS=""
-FREEBSD_BUILDKERNEL_EXTRA_ARGS=""
 FREEBSD_INSTALLKERNEL_EXTRA_ARGS=""
 FREEBSD_WORLD_EXTRA_ARGS=""
 FREEBSD_KERNEL_EXTRA_ARGS=""
 FREEBSD_EXTRA_ARGS=""
-IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${KERNCONF}.img
+IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img

Copied: projects/release-embedded/release/tools/arm/crochet-WANDBOARD-QUAD.conf (from r262305, user/gjb/release-embedded/release/tools/arm/crochet-WANDBOARD-QUAD.conf)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/release-embedded/release/tools/arm/crochet-WANDBOARD-QUAD.conf	Fri Feb 21 23:18:35 2014	(r262314, copy of r262305, user/gjb/release-embedded/release/tools/arm/crochet-WANDBOARD-QUAD.conf)
@@ -0,0 +1,29 @@
+#
+# $FreeBSD$
+#
+
+# This is the configuration file for use with crochet to produce
+# FreeBSD WandboardQuad images.
+
+board_setup WandboardQuad
+option ImageSize 1gb
+option AutoSize
+
+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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402212318.s1LNIZUN014454>