diff options
author | Nico Huber <nico.huber@secunet.com> | 2016-01-26 16:09:31 +0100 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2016-07-05 11:52:40 +0200 |
commit | 11ea2b378bc000a4bf9ffd4fa59c27d299b6cbfc (patch) | |
tree | e04d06ff09c31111edde1317f95d51629356669f /util/crossgcc | |
parent | b2213edc658cf71f7dc964cd8281924aedca916e (diff) |
buildgcc: Make package build() function more versatile
Refactor build() to make things more flexible:
Add a parameter that tells if we build a package for the host or for a
target architecture. This is just passed to the build_$package()
function and can be used later to take different steps in each case
(e.g. for bootstrapping a host gcc).
Move .success files into the destination directory. That way we can tell
that a package has been built even if the package build directory has
been removed.
Change-Id: I52a7245714a040d11f6e1ac8bdbff8057bb7f0a1
Signed-off-by: Nico Huber <nico.huber@secunet.com>
Reviewed-on: https://review.coreboot.org/13471
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'util/crossgcc')
-rwxr-xr-x | util/crossgcc/buildgcc | 50 |
1 files changed, 34 insertions, 16 deletions
diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc index 1e761daf5b..b650c62299 100755 --- a/util/crossgcc/buildgcc +++ b/util/crossgcc/buildgcc @@ -296,39 +296,57 @@ package_uses_targetarch() fi } -build() { +generic_build() +{ package=$1 + host_target=$2 + builddir=$3 + success=$4 fn_exists build_$package || return version="$(eval echo \$$package"_VERSION")" - package_uses_targetarch "$package" && \ - BUILDDIR=build-${TARGETARCH}-$package || \ - BUILDDIR=build-$package - mkdir -p ${BUILDDIR} + mkdir -p "$builddir" - is_package_enabled "$package" && \ - if [ -f ${BUILDDIR}/.success ]; then + if [ -f "$success" ]; then printf "Skipping $package as it is already built\n" else printf "Building $package $version ... " - DIR=$PWD - cd ${BUILDDIR} + DIR="$PWD" + cd "$builddir" rm -f .failed - build_${package} > build.log 2>&1 - cd $DIR/${BUILDDIR} - if [ ! -f .failed ]; then touch .success; fi - cd .. - - if [ -r "${BUILDDIR}/.failed" ]; then - printf "${RED}failed${NC}. Check ${BUILDDIR}/build.log.\n" + build_${package} $host_target > build.log 2>&1 + cd "$DIR" + if [ ! -f "$builddir/.failed" ]; then + touch "$success"; + else + printf "${RED}failed${NC}. Check $builddir/build.log.\n" exit 1 fi printf "${green}ok${NC}\n" fi } +build_for_host() +{ + generic_build $1 host build-$1 "${TARGETDIR}/.$1.success" +} + +build_for_target() +{ + generic_build $1 target build-${TARGETARCH}-$1 "${TARGETDIR}/.${TARGETARCH}-$1.success" +} + +build() +{ + if package_uses_targetarch $1; then + build_for_target $1 + else + build_for_host $1 + fi +} + cleanup() { if [ $SAVETEMPS -ne 0 ]; then |