From owner-svn-src-user@FreeBSD.ORG Sun Jan 19 22:25:58 2014 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E081E56B; Sun, 19 Jan 2014 22:25:58 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C0CEA11E4; Sun, 19 Jan 2014 22:25:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0JMPwDs031285; Sun, 19 Jan 2014 22:25:58 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0JMPv70031280; Sun, 19 Jan 2014 22:25:57 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401192225.s0JMPv70031280@svn.freebsd.org> From: Glen Barber Date: Sun, 19 Jan 2014 22:25:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r260896 - in user/gjb/hacking/release-embedded/release: . arm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jan 2014 22:25:58 -0000 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@rHEAD" DOCBRANCH="doc/head@rHEAD" PORTBRANCH="ports/head@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@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@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