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
This commit is contained in:
Glen Barber 2014-01-24 22:12:59 +00:00
parent b479fd538c
commit d725697e06
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/user/gjb/hacking/release-embedded/; revision=261139
3 changed files with 85 additions and 1 deletions

View File

@ -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

View File

@ -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
}

View File

@ -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