release.sh revision 262314
1#!/bin/sh 2# 3# $FreeBSD: projects/release-embedded/release/arm/release.sh 262314 2014-02-21 23:18:35Z gjb $ 4# 5 6# This script is intended to be called by release/release.sh to build ARM 7# images for release. It is not intended to be run directly. This sets up 8# the software needed within a build chroot, then runs crochet to provide 9# downloadable images for embedded devices. 10 11set -e 12 13before_build() { 14 WANT_UBOOT= 15 KNOWNHASH= 16 UBOOT_VERSION= 17 case ${KERNEL} in 18 BEAGLEBONE) 19 WANT_UBOOT=1 20 KNOWNHASH="4150e5a4480707c55a8d5b4570262e43af68d8ed3bdc0a433d8e7df47989a69e" 21 UBOOT_VERSION="u-boot-2013.04" 22 ;; 23 PANDABOARD) 24 WANT_UBOOT=1 25 KNOWNHASH="e08e20a6979bfca6eebb9a2b0e42aa4416af3d796332fd63a3470495a089d496" 26 UBOOT_VERSION="u-boot-2012.07" 27 ;; 28 WANDBOARD-QUAD) 29 WANT_UBOOT=1 30 KNOWNHASH="0d71e62beb952b41ebafb20a7ee4df2f960db64c31b054721ceb79ff14014c55" 31 UBOOT_VERSION="u-boot-2013.10" 32 ;; 33 *) 34 # Fallthrough. 35 ;; 36 esac 37 if [ ! -z ${WANT_UBOOT} ]; then 38 chroot ${CHROOTDIR} fetch -o /tmp/crochet/${UBOOT_VERSION}.tar.bz2 \ 39 http://people.freebsd.org/~gjb/${UBOOT_VERSION}.tar.bz2 40 UBOOT_HASH="$(sha256 -q ${CHROOTDIR}/tmp/crochet/${UBOOT_VERSION}.tar.bz2)" 41 if [ "${UBOOT_HASH}" != "${KNOWNHASH}" ]; then 42 echo "Checksum mismatch! Exiting now." 43 exit 1 44 fi 45 chroot ${CHROOTDIR} tar xf /tmp/crochet/${UBOOT_VERSION}.tar.bz2 \ 46 -C /tmp/crochet/ 47 fi 48} 49 50install_crochet() { 51 chroot ${CHROOTDIR} svn co -q ${CROCHETSRC}/${CROCHETBRANCH} \ 52 /tmp/crochet 53} 54 55install_uboot() { 56 # Only fetch u-boot sources if UBOOTSRC is set; otherwise it is 57 # not needed. 58 if [ "X${UBOOTSRC}" != "X" ]; then 59 continue 60 else 61 return 0 62 fi 63 chroot ${CHROOTDIR} svn co -q ${UBOOTSRC}/${UBOOTBRANCH} \ 64 /${UBOOTDIR} 65} 66 67main() { 68 # Build gcc for use in the chroot for arm builds. 69 # This is not '-j'-safe, so force '-j1' to allow using 70 # additional, non-'-j' options specified in WORLD_FLAGS. 71 eval chroot ${CHROOTDIR} make -C /usr/src/gnu/usr.bin/cc \ 72 WITH_GCC=1 ${WORLD_FLAGS} -j1 obj depend all install 73 # Build the 'xdev' target for crochet. 74 eval chroot ${CHROOTDIR} make -C /usr/src \ 75 XDEV=${XDEV} XDEV_ARCH=${XDEV_ARCH} WITH_GCC=1 \ 76 ${WORLD_FLAGS} xdev 77 78 # Run the ldconfig(8) startup script so /var/run/ld-elf*.so.hints 79 # is created. 80 eval chroot ${CHROOTDIR} /etc/rc.d/ldconfig forcerestart 81 # Install security/ca_root_nss since we need to check the https 82 # certificate of github. 83 eval chroot ${CHROOTDIR} make -C /usr/ports/security/ca_root_nss \ 84 OPTIONS_SET="ETCSYMLINK" BATCH=1 FORCE_PKG_REGISTER=1 \ 85 install clean distclean 86 EMBEDDEDPORTS="${EMBEDDEDPORTS} devel/subversion" 87 for _PORT in ${EMBEDDEDPORTS}; do 88 eval chroot ${CHROOTDIR} make -C /usr/ports/${_PORT} \ 89 BATCH=1 FORCE_PKG_REGISTER=1 install clean distclean 90 done 91 92 mkdir -p ${CHROOTDIR}/tmp/crochet/work 93 before_build 94 install_crochet 95 install_uboot 96 eval chroot ${CHROOTDIR} /bin/sh /tmp/crochet/crochet.sh \ 97 -c /tmp/external/${XDEV}/crochet-${KERNEL}.conf 98 mkdir -p ${CHROOTDIR}/R/ 99 cp -p ${CHROOTDIR}/usr/obj/*.img ${CHROOTDIR}/R/ 100 bzip2 ${CHROOTDIR}/R/FreeBSD*.img 101 cd ${CHROOTDIR}/R/ && sha256 FreeBSD*.img.bz2 > CHECKSUM.SHA256 102 cd ${CHROOTDIR}/R/ && md5 FreeBSD*.img.bz2 > CHECKSUM.MD5 103} 104 105main "$@" 106exit 0 107