From 63e0dbc1be104eae3a88ddc56c1b0baad8ba28c6 Mon Sep 17 00:00:00 2001 From: Ryan Pessa Date: Fri, 16 Jan 2015 15:40:35 -0600 Subject: [PATCH] save and restore environment when running recipe functions --- distribute.sh | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/distribute.sh b/distribute.sh index 95913b3743..91c0510515 100755 --- a/distribute.sh +++ b/distribute.sh @@ -666,13 +666,23 @@ function run_get_packages() { done } +function envfn() { + envsave=$(mktemp) + envrestore=$(mktemp) + set > $envsave + $1 + set > $envrestore + eval $(grep -v -F -f$envrestore $envsave) + rm -f $envsave $envrestore +} + function run_prebuild() { info "Run prebuild" cd $BUILD_PATH for module in $MODULES; do fn=$(echo prebuild_$module) debug "Call $fn" - $fn + envfn $fn done } @@ -707,7 +717,7 @@ function run_build() { if [ "X$DO_BUILD" == "X1" ] || [ ! -f "$MARKER_FN" ]; then debug "Call $fn" rm -f "$MARKER_FN" - $fn + envfn $fn touch "$MARKER_FN" else debug "Skipped $fn" @@ -721,7 +731,7 @@ function run_postbuild() { for module in $MODULES; do fn=$(echo postbuild_$module) debug "Call $fn" - $fn + envfn $fn done }