aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlen Barber <gjb@FreeBSD.org>2014-01-24 22:12:59 +0000
committerGlen Barber <gjb@FreeBSD.org>2014-01-24 22:12:59 +0000
commitd725697e064e41f9fb8536267dda62676bf1a7e8 (patch)
tree27377244a667e0bc71dc117ae361555fa76d0f13
parentb479fd538c90f0f6b97a81d7931405ce7889f6f4 (diff)
downloadsrc-d725697e064e41f9fb8536267dda62676bf1a7e8.tar.gz
src-d725697e064e41f9fb8536267dda62676bf1a7e8.zip
Add initial support for building arm BEAGLEBONE images.
- In arm/release.sh: - Move crochet work directory creation to occur earlier, since its parent directory is needed to store a fetched u-boot version. - Add a before_build() function as a quick hack to run board-specific (kernel configuration specific, really) commands, if any. - For the BEAGLEBONE kernel, a specific version of u-boot source is needed. Fetch the source in before_build() for this case. Unfortunately, there are no checksums available (that I can find) for these sources. For a quick solution, add the hard-coded sha256 of the tarball, and fetch from my public_html/ directory. A more permanent solution for this needs to be found. Add initial release.sh and crochet configuration files for the BEAGLEBONE build. Sponsored by: The FreeBSD Foundation
Notes
Notes: svn path=/user/gjb/hacking/release-embedded/; revision=261139
-rw-r--r--release/arm/BEAGLEBONE.conf36
-rwxr-xr-xrelease/arm/release.sh23
-rw-r--r--release/tools/arm/crochet-BEAGLEBONE.conf27
3 files changed, 85 insertions, 1 deletions
diff --git a/release/arm/BEAGLEBONE.conf b/release/arm/BEAGLEBONE.conf
new file mode 100644
index 000000000000..388f7d5f3228
--- /dev/null
+++ b/release/arm/BEAGLEBONE.conf
@@ -0,0 +1,36 @@
+#
+# $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"
+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
+CHROOTDIR="/scratch"
+EMBEDDEDBUILD=1
+EMBEDDEDPORTS="lang/python textproc/gsed"
+XDEV="arm"
+XDEV_ARCH="arm"
+KERNEL="BEAGLEBONE"
+CROCHETSRC="https://github.com/kientzle/crochet-freebsd"
+CROCHETBRANCH="trunk"
+set +a
+
diff --git a/release/arm/release.sh b/release/arm/release.sh
index 7498897295dc..037d288c2175 100755
--- a/release/arm/release.sh
+++ b/release/arm/release.sh
@@ -10,6 +10,26 @@
set -e
+before_build() {
+ case ${KERNEL} in
+ BEAGLEBONE)
+ KNOWNHASH="4150e5a4480707c55a8d5b4570262e43af68d8ed3bdc0a433d8e7df47989a69e"
+ chroot ${CHROOTDIR} fetch -o /tmp/crochet/u-boot-2013.04.tar.bz2 \
+ http://people.freebsd.org/~gjb/u-boot-2013.04.tar.bz2
+ UBOOT_HASH="$(sha256 -q ${CHROOTDIR}/tmp/crochet/u-boot-2013.04.tar.bz2)"
+ if [ "${UBOOT_HASH}" != "${KNOWNHASH}" ]; then
+ echo "Checksum mismatch! Exiting now."
+ exit 1
+ fi
+ chroot ${CHROOTDIR} tar xf /tmp/crochet/u-boot-2013.04.tar.bz2 \
+ -C /tmp/crochet/
+ ;;
+ *)
+ # Fallthrough.
+ ;;
+ esac
+}
+
install_crochet() {
chroot ${CHROOTDIR} svn co -q ${CROCHETSRC}/${CROCHETBRANCH} \
/tmp/crochet
@@ -46,9 +66,10 @@ 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 /tmp/external/${XDEV}/crochet-${KERNEL}.conf
}
diff --git a/release/tools/arm/crochet-BEAGLEBONE.conf b/release/tools/arm/crochet-BEAGLEBONE.conf
new file mode 100644
index 000000000000..a9c4e0e3a0f2
--- /dev/null
+++ b/release/tools/arm/crochet-BEAGLEBONE.conf
@@ -0,0 +1,27 @@
+#
+# $FreeBSD$
+#
+
+# This is the configuration file for use with crochet to produce
+# FreeBSD BeagleBone images.
+
+board_setup BeagleBone
+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=BEAGLEBONE
+FREEBSD_BUILDWORLD_EXTRA_ARGS=""
+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