svn commit: r260896 - in user/gjb/hacking/release-embedded/release: . arm
Glen Barber
gjb at FreeBSD.org
Sun Jan 19 22:25:58 UTC 2014
Author: gjb
Date: Sun Jan 19 22:25:57 2014
New Revision: 260896
URL: http://svnweb.freebsd.org/changeset/base/260896
Log:
When bootstrapping the build chroot, the default environment is
set up for the amd64/amd64 TARGET/TARGET_ARCH combination.
Some of the build tools used here (u-boot in particular) require
use of gcc(1). The lang/gcc* from ports/ will install as 'gccNN'
instead of 'gcc', so they cannot be used without extra hacks.
Add an EMBEDDED_WORLD_FLAGS variable to be used to properly set
up the build chroot. For the RPI-B case, EMBEDDED_WORLD_FLAGS
is set to 'WITH_GCC=1', which is used to set up the build chroot.
While here, in followup to r260895, do not rely on the necessary
configuration files and/or scripts to exist in the build target
src/ tree.
To work around cases where files do not exist, copy (from the
local release/ checkout) the tools/${XDEV}/crochet-${KERNEL}.conf
to ${CHROOTDIR}/tmp/external/crochet-${KERNEL}.conf to make them
accessible to the external utilities that need them (i.e., crochet).
Sponsored by: The FreeBSD Foundation
Modified:
user/gjb/hacking/release-embedded/release/arm/RPI-B.conf
user/gjb/hacking/release-embedded/release/arm/release.sh
user/gjb/hacking/release-embedded/release/release.conf.sample
user/gjb/hacking/release-embedded/release/release.sh
Modified: user/gjb/hacking/release-embedded/release/arm/RPI-B.conf
==============================================================================
--- user/gjb/hacking/release-embedded/release/arm/RPI-B.conf Sun Jan 19 22:01:08 2014 (r260895)
+++ user/gjb/hacking/release-embedded/release/arm/RPI-B.conf Sun Jan 19 22:25:57 2014 (r260896)
@@ -17,6 +17,7 @@ SVNROOT="svn://svn.FreeBSD.org"
SRCBRANCH="base/head at rHEAD"
DOCBRANCH="doc/head at rHEAD"
PORTBRANCH="ports/head at rHEAD"
+EMBEDDED_WORLD_FLAGS="WITH_GCC=1"
NODOC=yes
# Build target configuration
Modified: user/gjb/hacking/release-embedded/release/arm/release.sh
==============================================================================
--- user/gjb/hacking/release-embedded/release/arm/release.sh Sun Jan 19 22:01:08 2014 (r260895)
+++ user/gjb/hacking/release-embedded/release/arm/release.sh Sun Jan 19 22:25:57 2014 (r260896)
@@ -50,7 +50,7 @@ main() {
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
}
main "$@"
Modified: user/gjb/hacking/release-embedded/release/release.conf.sample
==============================================================================
--- user/gjb/hacking/release-embedded/release/release.conf.sample Sun Jan 19 22:01:08 2014 (r260895)
+++ user/gjb/hacking/release-embedded/release/release.conf.sample Sun Jan 19 22:25:57 2014 (r260896)
@@ -40,3 +40,11 @@ PORTBRANCH="ports/head at 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: user/gjb/hacking/release-embedded/release/release.sh
==============================================================================
--- user/gjb/hacking/release-embedded/release/release.sh Sun Jan 19 22:01:08 2014 (r260895)
+++ user/gjb/hacking/release-embedded/release/release.sh Sun Jan 19 22:25:57 2014 (r260896)
@@ -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/.
@@ -47,6 +48,7 @@ PORTBRANCH="ports/head at rHEAD"
# Set for embedded device builds.
EMBEDDEDBUILD=
+EMBEDDED_WORLD_FLAGS=
# Sometimes one needs to checkout src with --force svn option.
# If custom kernel configs copied to src tree before checkout, e.g.
@@ -135,9 +137,9 @@ else
ARCH_FLAGS=
fi
CHROOT_MAKEENV="MAKEOBJDIRPREFIX=${CHROOTDIR}/tmp/obj"
-CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${CONF_FILES}"
-CHROOT_IMAKEFLAGS="${CONF_FILES}"
-CHROOT_DMAKEFLAGS="${CONF_FILES}"
+CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${CONF_FILES} ${EMBEDDED_WORLD_FLAGS}"
+CHROOT_IMAKEFLAGS="${CONF_FILES} ${EMBEDDED_WORLD_FLAGS}"
+CHROOT_DMAKEFLAGS="${CONF_FILES} ${EMBEDDED_WORLD_FLAGS}"
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} \
@@ -194,8 +196,16 @@ fi
# Embedded builds do not use the 'make release' target.
if [ "X${EMBEDDEDBUILD}" != "X" ]; then
- if [ -e ${CHROOTDIR}/usr/src/release/${XDEV}/release.sh ]; then
- /bin/sh ${CHROOTDIR}/usr/src/release/${XDEV}/release.sh
+ # 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
More information about the svn-src-user
mailing list