Blame docker-builder-data/build/script/common/manager.sh

Ivan Mahonin e14835
#!/bin/bash
Ivan Mahonin e14835
Ivan Mahonin 3b09af
###############################################
Ivan Mahonin 3b09af
#
Ivan Mahonin 3b09af
# Input environment variables
Ivan Mahonin 3b09af
#
Ivan Mahonin 3b09af
# PLATFORM         - target platform (linux or windows)
Ivan Mahonin 3b09af
# ARCH             - bits (32 or 64)
Ivan Mahonin 3b09af
# NATIVE_PLATFORM  - folder name for store compiled utilities for build-time (debian, fedora, etc)
Ivan Mahonin 3b09af
# NATIVE_ARCH      - ^^^ bits (32 or 64)
Ivan Mahonin 3b09af
# THREADS          - amount of simultaneous threads for build process
Ivan Mahonin 3b09af
# PACKET_BUILD_DIR - output directory (optional)
Ivan Mahonin 3b09af
#
Ivan Mahonin 3b09af
###############################################
Ivan Mahonin e14835
Ivan Mahonin 3b09af
# check options
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
if [ -z "$NATIVE_PLATFORM" ]; then
Ivan Mahonin 3b09af
    NATIVE_PLATFORM="default"
Ivan Mahonin 3b09af
fi
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
if [ -z "$NATIVE_ARCH" ]; then
Ivan Mahonin 3b09af
    NATIVE_ARCH=`uname -m`
Ivan Mahonin 3b09af
    if [ "$NATIVE_ARCH" = "x86_64" ]; then
Ivan Mahonin 3b09af
        NATIVE_ARCH="64"
Ivan Mahonin 3b09af
    elif [ "$NATIVE_ARCH" = "i686" ]; then
Ivan Mahonin 3b09af
        NATIVE_ARCH="32"
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
fi
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
if [ -z "$TARGET_PLATFORM" ]; then
Ivan Mahonin 3b09af
    TARGET_PLATFORM="$NATIVE_PLATFORM"
Ivan Mahonin 3b09af
fi
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
if [ -z "$ARCH" ]; then
Ivan Mahonin 3b09af
    ARCH="$NATIVE_ARCH"
Ivan Mahonin e14835
fi
Ivan Mahonin e14835
Ivan Mahonin e14835
if [ -z "$THREADS" ]; then
Ivan Mahonin 3b09af
    THREADS=8
Ivan Mahonin e14835
fi
Ivan Mahonin e14835
Ivan Mahonin 3b09af
export NATIVE_PLATFORM
Ivan Mahonin 3b09af
export NATIVE_ARCH
Ivan Mahonin 3b09af
export PLATFORM
Ivan Mahonin 3b09af
export ARCH
Ivan Mahonin 3b09af
export THREADS
Ivan Mahonin e14835
Ivan Mahonin e14835
# root
Ivan Mahonin e14835
Ivan Mahonin e7b20d
ROOT_DIR=$(cd `dirname "$0"`; pwd)
Ivan Mahonin e14835
ROOT_DIR=`dirname "$ROOT_DIR"`
Ivan Mahonin e14835
ROOT_DIR=`dirname "$ROOT_DIR"`
Ivan Mahonin e14835
export ROOT_DIR
Ivan Mahonin e14835
Ivan Mahonin e14835
# dirs
Ivan Mahonin e14835
Ivan Mahonin e14835
export SCRIPT_DIR=$ROOT_DIR/script
Ivan Mahonin e14835
export COMMON_SCRIPT_DIR=$SCRIPT_DIR/common
Ivan Mahonin e14835
export INCLUDE_SCRIPT_DIR=$SCRIPT_DIR/include
Ivan Mahonin e14835
export PACKET_SCRIPT_DIR=$SCRIPT_DIR/packet
Ivan Mahonin 3b09af
if [ -z "$PACKET_BUILD_DIR" ]; then
Ivan Mahonin 3b09af
	export PACKET_BUILD_DIR=$ROOT_DIR/packet
Ivan Mahonin dd482a
fi
Ivan Mahonin 3b09af
export PACKET_DIR=$PACKET_BUILD_DIR/$PLATFORM-$ARCH
Ivan Mahonin 3b09af
export NATIVE_PACKET_DIR=$PACKET_BUILD_DIR/$NATIVE_PLATFORM-$NATIVE_ARCH-native
Ivan Mahonin dd482a
efc424
# toolchain
efc424
Ivan Mahonin 3b09af
export TOOLCHAIN_SCRIPT_DIR=$SCRIPT_DIR/toolchain
Ivan Mahonin 3b09af
export NATIVE_TOOLCHAIN_SCRIPT="$TOOLCHAIN_SCRIPT_DIR/none.sh"
Ivan Mahonin 3b09af
export TOOLCHAIN_SCRIPT="$TOOLCHAIN_SCRIPT_DIR/$PLATFORM-$ARCH.sh"
Ivan Mahonin 3b09af
if [ ! -f "$TOOLCHAIN_SCRIPT" ]; then
Ivan Mahonin 3b09af
    TOOLCHAIN_SCRIPT=$NATIVE_TOOLCHAIN_SCRIPT
efc424
fi
efc424
Ivan Mahonin 3b09af
# initial system vars
Ivan Mahonin e14835
Ivan Mahonin 3b09af
INITIAL_HOST=$HOST
Ivan Mahonin e14835
INITIAL_PATH=$PATH
Ivan Mahonin 3b09af
INITIAL_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
Ivan Mahonin 3b09af
INITIAL_CC=$CC
Ivan Mahonin 3b09af
INITIAL_CXX=$CXX
Ivan Mahonin cf8c28
INITIAL_FORTRAN=$FORTRAN
Ivan Mahonin cf8c28
INITIAL_LD=$LD
Ivan Mahonin cf8c28
INITIAL_AR=$AR
Ivan Mahonin cf8c28
INITIAL_RANLIB=$RANLIB
Ivan Mahonin e14835
INITIAL_LDFLAGS=$LDFLAGS
Ivan Mahonin e14835
INITIAL_CFLAGS=$CFLAGS
Ivan Mahonin e14835
INITIAL_CPPFLAGS=$CPPFLAGS
Ivan Mahonin c88389
INITIAL_CXXFLAGS=$CXXFLAGS
Ivan Mahonin e14835
INITIAL_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
Ivan Mahonin cf8c28
INITIAL_PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR
Ivan Mahonin ce0d6b
INITIAL_XDG_DATA_DIRS=$XDG_DATA_DIRS
Ivan Mahonin 1d4d1c
INITIAL_ACLOCAL_PATH=$ACLOCAL_PATH
Ivan Mahonin cf8c28
INITIAL_CMAKE_INCLUDE_PATH=$CMAKE_INCLUDE_PATH
Ivan Mahonin cf8c28
INITIAL_CMAKE_LIBRARY_PATH=$CMAKE_LIBRARY_PATH
Ivan Mahonin e14835
Ivan Mahonin e0593e
if [ ! -z "$INITIAL_ACLOCAL_PATH" ]; then
Ivan Mahonin e0593e
    INITIAL_ACLOCAL_PATH = "$INITIAL_ACLOCAL_PATH:"
Ivan Mahonin e0593e
fi
Ivan Mahonin e0593e
INITIAL_ACLOCAL_PATH="$INITIAL_ACLOCAL_PATH/usr/share/aclocal"
Ivan Mahonin e0593e
Ivan Mahonin e0593e
Ivan Mahonin 3b09af
# work vars
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
IS_NATIVE=
Ivan Mahonin 7f8f8f
DRY_RUN=
Ivan Mahonin bce30d
FORCE=
Ivan Mahonin bce30d
CLEAN_BEFORE_DO=
Ivan Mahonin 7f8f8f
NO_CHECK_DEPS=
Ivan Mahonin 7f8f8f
declare -A COMPLETION_STATUS
Ivan Mahonin 7f8f8f
Ivan Mahonin 3b09af
###############################################
Ivan Mahonin e14835
#
Ivan Mahonin e14835
# Fairy Tale
Ivan Mahonin e14835
# 
Ivan Mahonin e14835
# Once upon time in faraway...
Ivan Mahonin e14835
#
Ivan Mahonin e14835
# Function dependency:
Ivan Mahonin e14835
#
Ivan Mahonin 3b09af
# 1.                 download 
Ivan Mahonin 3b09af
#                     |
Ivan Mahonin 3b09af
# 2.                 unpack
Ivan Mahonin 3b09af
#                     |
Ivan Mahonin 3b09af
#                     | env^
Ivan Mahonin 3b09af
#                     |  |
Ivan Mahonin 3b09af
# 3.                  | envdeps 
Ivan Mahonin 3b09af
#                     | | | |
Ivan Mahonin 3b09af
#      env^^          | | | |
Ivan Mahonin 3b09af
#       |             | | | |
Ivan Mahonin 3b09af
#       | env_native^ | | | |
Ivan Mahonin 3b09af
#       |  |          | | | |
Ivan Mahonin 3b09af
# 4.   envdeps_native | | | |
Ivan Mahonin 3b09af
#       |         | | | | | |
Ivan Mahonin 3b09af
# 5.    |         | build | |
Ivan Mahonin e7fa50
#       |         |  |  | | |
Ivan Mahonin e7fa50
# 7.    |         --install |    (you see the direct connection 'build' with 'license', trust me)
Ivan Mahonin e7fa50
#       |            | || | |
Ivan Mahonin e7fa50
# 8.    |            | || env
Ivan Mahonin e7fa50
#       |            | || | |
Ivan Mahonin e7fa50
#       |            | || | envdeps*
Ivan Mahonin e7fa50
#       |            | || |
Ivan Mahonin e7fa50
#       |            | || envdeps_native**
Ivan Mahonin e7fa50
#       |            | ||
Ivan Mahonin e7fa50
# 9.   env_native    | ||
Ivan Mahonin e7fa50
#       |            | ||
Ivan Mahonin e7fa50
#    envdeps_native* | ||
Ivan Mahonin e7fa50
#                    | ||
Ivan Mahonin e7fa50
# 10.                | license
Ivan Mahonin e7fa50
#                    | |
Ivan Mahonin e7fa50
#                    | |   env_release^
Ivan Mahonin e7fa50
#                    | |    | 
Ivan Mahonin e7fa50
# 11.                | |   envdeps_release
Ivan Mahonin e7fa50
#                    | |    |       | 
Ivan Mahonin e7fa50
# 12.               install_release |
Ivan Mahonin 3b09af
#                           |       |
Ivan Mahonin e7fa50
# 13.                      env_release
Ivan Mahonin 3b09af
#                           |
Ivan Mahonin 3b09af
#                          envdeps_release*
Ivan Mahonin e14835
#
Ivan Mahonin 3b09af
###############################################
Ivan Mahonin e14835
Ivan Mahonin 7f8f8f
FUNC_DEPS_download=""
Ivan Mahonin 7f8f8f
FUNC_DEPS_unpack="download"
Ivan Mahonin 7f8f8f
FUNC_DEPS_envdeps="-env"
Ivan Mahonin 3b09af
FUNC_DEPS_envdeps_native="--env -env_native"
Ivan Mahonin 3b09af
FUNC_DEPS_build="envdeps envdeps_native unpack"
Ivan Mahonin e7fa50
FUNC_DEPS_install="envdeps envdeps_native build"
Ivan Mahonin 427aed
FUNC_DEPS_env="envdeps install"
Ivan Mahonin 3b09af
FUNC_DEPS_env_native="envdeps_native"
Ivan Mahonin e7fa50
FUNC_DEPS_license="build install"
Ivan Mahonin 7f8f8f
FUNC_DEPS_envdeps_release="-env_release"
Ivan Mahonin e7fa50
FUNC_DEPS_install_release="envdeps_release install license"
Ivan Mahonin 427aed
FUNC_DEPS_env_release="envdeps_release install_release"
Ivan Mahonin 7f8f8f
Ivan Mahonin e14835
Ivan Mahonin 3b09af
# helpers
Ivan Mahonin 3b09af
Ivan Mahonin e7fa50
source "$COMMON_SCRIPT_DIR/helpers.sh"
Ivan Mahonin 99b145
Ivan Mahonin 99b145
Ivan Mahonin 3b09af
# internal functions
Ivan Mahonin 3b09af
Ivan Mahonin e14835
message() {
Ivan Mahonin 3b09af
    local MESSAGE=$1
Ivan Mahonin 3b09af
    echo " ------ $MESSAGE"
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 7f8f8f
try_do_nothing() {
Ivan Mahonin 7f8f8f
	if [ -z "$DRY_RUN" ]; then
Ivan Mahonin 7f8f8f
		return 1
Ivan Mahonin 7f8f8f
	fi
Ivan Mahonin 7f8f8f
	set_done $1 $2
Ivan Mahonin 7f8f8f
}
Ivan Mahonin 7f8f8f
Ivan Mahonin e14835
set_done() {
Ivan Mahonin 3b09af
    local PACKET=$1
Ivan Mahonin 3b09af
    local FUNC=$2
Ivan Mahonin 3b09af
	local COMPLETION_KEY="$PLATFORM:$ARCH:$PACKET:$FUNC"
Ivan Mahonin 7f8f8f
	if [ -z "$DRY_RUN" ]; then
Ivan Mahonin 3b09af
		touch "$PACKET_DIR/$PACKET/$FUNC.done"
Ivan Mahonin 7f8f8f
	fi
Ivan Mahonin 7f8f8f
	COMPLETION_STATUS[$COMPLETION_KEY]=complete
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
set_undone_silent() {
Ivan Mahonin 3b09af
    local PACKET=$1
Ivan Mahonin 3b09af
    local FUNC=$2
Ivan Mahonin 3b09af
	local COMPLETION_KEY="$PLATFORM:$ARCH:$PACKET:$FUNC"
Ivan Mahonin 7f8f8f
	if [ -z "$DRY_RUN" ]; then
Ivan Mahonin 3b09af
    	rm -f $PACKET_DIR/$PACKET/$FUNC.*.done
Ivan Mahonin 3b09af
		rm -f "$PACKET_DIR/$PACKET/$FUNC.done"
Ivan Mahonin 7f8f8f
	fi
Ivan Mahonin 7f8f8f
	COMPLETION_STATUS[$COMPLETION_KEY]=incomplete
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
set_undone() {
Ivan Mahonin 3b09af
    local PACKET=$1
Ivan Mahonin 3b09af
    local FUNC=$2
Ivan Mahonin 3b09af
	message "$PACKET set_undone $FUNC"
Ivan Mahonin 3b09af
	set_undone_silent $PACKET $FUNC
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
clean_packet_directory_silent() {
Ivan Mahonin 3b09af
    local PACKET=$1
Ivan Mahonin 3b09af
    local FUNC=$2
Ivan Mahonin 3b09af
	set_undone_silent $PACKET $FUNC
Ivan Mahonin 3b09af
    try_do_nothing $PACKET $FUNC && return 0
Ivan Mahonin 3b09af
    rm -rf "$PACKET_DIR/$PACKET/$FUNC"
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
clean_packet_directory() {
Ivan Mahonin 3b09af
    local PACKET=$1
Ivan Mahonin 3b09af
    local FUNC=$2
Ivan Mahonin 3b09af
	message "$PACKET clean $FUNC"
Ivan Mahonin 3b09af
	clean_packet_directory_silent $PACKET $FUNC
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
check_packet_function() {
Ivan Mahonin 3b09af
    local PACKET=$1
Ivan Mahonin 3b09af
    local FUNC=$2
Ivan Mahonin bce30d
	if [ ! -z "$FORCE" ]; then
Ivan Mahonin bce30d
		return 1
Ivan Mahonin bce30d
	fi
Ivan Mahonin 3b09af
    if [ ! -f "$PACKET_DIR/$PACKET/$FUNC.done" ]; then
Ivan Mahonin e14835
        return 1
Ivan Mahonin e14835
    fi
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
prepare_build() {
Ivan Mahonin e14835
    if ! copy "$UNPACK_PACKET_DIR" "$BUILD_PACKET_DIR"; then
Ivan Mahonin e14835
        return 1
Ivan Mahonin e14835
    fi
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin d32e1c
prepare_install() {
Ivan Mahonin ec0475
    if ls $BUILD_PACKET_DIR/version-* 1> /dev/null 2>&1; then
Ivan Mahonin ec0475
        cp --remove-destination $BUILD_PACKET_DIR/version-* "$INSTALL_PACKET_DIR/" || true
Ivan Mahonin ec0475
    fi
Ivan Mahonin e7fa50
}
Ivan Mahonin e7fa50
Ivan Mahonin e7fa50
prepare_license() {
Ivan Mahonin e7fa50
    rm -f "$LICENSE_PACKET_DIR/"*
Ivan Mahonin d32e1c
}
Ivan Mahonin d32e1c
Ivan Mahonin d32e1c
prepare_install_release() {
Ivan Mahonin ec0475
    if ls $INSTALL_PACKET_DIR/version-* 1> /dev/null 2>&1; then
Ivan Mahonin ec0475
        cp --remove-destination $INSTALL_PACKET_DIR/version-* "$INSTALL_RELEASE_PACKET_DIR/" || true
Ivan Mahonin ec0475
    fi
Ivan Mahonin e7fa50
    mkdir -p "$INSTALL_RELEASE_PACKET_DIR/license" || return 1
Ivan Mahonin e7fa50
    copy "$LICENSE_PACKET_DIR" "$INSTALL_RELEASE_PACKET_DIR/license" || return 1
Ivan Mahonin d32e1c
}
Ivan Mahonin d32e1c
Ivan Mahonin e14835
set_environment_vars() {
Ivan Mahonin e14835
    export NAME=$1
Ivan Mahonin e14835
Ivan Mahonin 99b145
    export CURRENT_PACKET_DIR="$PACKET_DIR/$NAME"
Ivan Mahonin 99b145
	export FILES_PACKET_DIR="$PACKET_SCRIPT_DIR/$NAME.files"
Ivan Mahonin 99b145
    export DOWNLOAD_PACKET_DIR="$CURRENT_PACKET_DIR/download"
Ivan Mahonin 99b145
    export UNPACK_PACKET_DIR="$CURRENT_PACKET_DIR/unpack"
Ivan Mahonin 99b145
    export ENVDEPS_PACKET_DIR="$CURRENT_PACKET_DIR/envdeps"
Ivan Mahonin 99b145
    export ENVDEPS_NATIVE_PACKET_DIR="$CURRENT_PACKET_DIR/envdeps_native"
Ivan Mahonin 99b145
    export BUILD_PACKET_DIR="$CURRENT_PACKET_DIR/build"
Ivan Mahonin 99b145
    export LICENSE_PACKET_DIR="$CURRENT_PACKET_DIR/license"
Ivan Mahonin 99b145
    export INSTALL_PACKET_DIR="$CURRENT_PACKET_DIR/install"
Ivan Mahonin 99b145
    export INSTALL_RELEASE_PACKET_DIR="$CURRENT_PACKET_DIR/install_release"
Ivan Mahonin 99b145
    export ENV_PACKET_DIR="$CURRENT_PACKET_DIR/env"
Ivan Mahonin 99b145
    export ENV_NATIVE_PACKET_DIR="$CURRENT_PACKET_DIR/env_native"
Ivan Mahonin 99b145
    export ENVDEPS_RELEASE_PACKET_DIR="$CURRENT_PACKET_DIR/envdeps_release"
Ivan Mahonin 99b145
    export ENV_RELEASE_PACKET_DIR="$CURRENT_PACKET_DIR/env_release"
Ivan Mahonin e14835
Ivan Mahonin 3b09af
    export HOST=$TOOLCHAIN_HOST
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    export PATH="\
Ivan Mahonin 3b09af
$ENVDEPS_NATIVE_PACKET_DIR/bin:\
Ivan Mahonin 3b09af
$ENV_NATIVE_PACKET_DIR/bin:\
Ivan Mahonin 3b09af
$ENVDEPS_PACKET_DIR/bin:\
Ivan Mahonin 3b09af
$ENV_PACKET_DIR/bin:\
Ivan Mahonin 3b09af
$TOOLCHAIN_PATH"
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    export LD_LIBRARY_PATH="\
Ivan Mahonin 3b09af
$ENVDEPS_NATIVE_PACKET_DIR/lib:\
Ivan Mahonin 3b09af
$ENVDEPS_NATIVE_PACKET_DIR/lib64\
Ivan Mahonin 3b09af
$ENV_NATIVE_PACKET_DIR/lib:\
Ivan Mahonin 3b09af
$ENV_NATIVE_PACKET_DIR/lib64:\
Ivan Mahonin 3b09af
$ENVDEPS_PACKET_DIR/lib:\
Ivan Mahonin 3b09af
$ENVDEPS_PACKET_DIR/lib64:\
Ivan Mahonin 3b09af
$ENV_PACKET_DIR/lib:\
Ivan Mahonin 3b09af
$ENV_PACKET_DIR/lib64:\
Ivan Mahonin 3b09af
$TOOLCHAIN_LD_LIBRARY_PATH"
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    export CC=$TOOLCHAIN_CC
Ivan Mahonin 3b09af
    export CXX=$TOOLCHAIN_CXX
Ivan Mahonin cf8c28
    export FORTRAN=$TOOLCHAIN_FORTRAN
Ivan Mahonin cf8c28
    export LD=$TOOLCHAIN_LD
Ivan Mahonin cf8c28
    export AR=$TOOLCHAIN_AR
Ivan Mahonin cf8c28
    export RANLIB=$TOOLCHAIN_RANLIB
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    if [ -z "$CC" ]; then
Ivan Mahonin 3b09af
        export -n CC
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
    if [ -z "$CXX" ]; then
Ivan Mahonin 3b09af
        export -n CXX
Ivan Mahonin 3b09af
    fi
Ivan Mahonin cf8c28
    if [ -z "$FORTRAN" ]; then
Ivan Mahonin cf8c28
        export -n FORTRAN
Ivan Mahonin cf8c28
    fi
Ivan Mahonin cf8c28
    if [ -z "$LD" ]; then
Ivan Mahonin cf8c28
        export -n LD
Ivan Mahonin cf8c28
    fi
Ivan Mahonin cf8c28
    if [ -z "$AR" ]; then
Ivan Mahonin cf8c28
        export -n AR
Ivan Mahonin cf8c28
    fi
Ivan Mahonin cf8c28
    if [ -z "$RANLIB" ]; then
Ivan Mahonin cf8c28
        export -n RANLIB
Ivan Mahonin cf8c28
    fi
Ivan Mahonin cf8c28
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    export LDFLAGS="-L$ENVDEPS_PACKET_DIR/lib -L$ENVDEPS_PACKET_DIR/lib64 $TOOLCHAIN_LDFLAGS"
Ivan Mahonin 3b09af
    export CFLAGS="-I$ENVDEPS_PACKET_DIR/include $TOOLCHAIN_CFLAGS"
Ivan Mahonin 3b09af
    export CPPFLAGS="-I$ENVDEPS_PACKET_DIR/include $TOOLCHAIN_CPPFLAGS"
Ivan Mahonin 3b09af
    export CXXFLAGS="-I$ENVDEPS_PACKET_DIR/include $TOOLCHAIN_CXXFLAGS"
Ivan Mahonin cf8c28
    export PKG_CONFIG_PATH="$ENVDEPS_PACKET_DIR/lib/pkgconfig:$ENVDEPS_PACKET_DIR/share/pkgconfig:$TOOLCHAIN_PKG_CONFIG_PATH"
Ivan Mahonin cf8c28
    export PKG_CONFIG_LIBDIR="$ENVDEPS_PACKET_DIR/lib:$TOOLCHAIN_PKG_CONFIG_LIBDIR"
Ivan Mahonin cf8c28
    export PKG_CONFIG_SYSROOT_DIR="/"
Ivan Mahonin 3b09af
    export XDG_DATA_DIRS="$ENVDEPS_PACKET_DIR/share:$TOOLCHAIN_XDG_DATA_DIRS"
Ivan Mahonin cf8c28
    export ACLOCAL_PATH="$ENVDEPS_PACKET_DIR/share/aclocal:$TOOLCHAIN_ACLOCAL_PATH"
Ivan Mahonin cf8c28
    export CMAKE_INCLUDE_PATH="$ENVDEPS_PACKET_DIR/include:$TOOLCHAIN_CMAKE_INCLUDE_PATH"  
Ivan Mahonin cf8c28
    export CMAKE_LIBRARY_PATH="$ENVDEPS_PACKET_DIR/lib:$ENVDEPS_PACKET_DIR/lib64:$TOOLCHAIN_CMAKE_LIBRARY_PATH"  
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
call_packet_function() {
Ivan Mahonin e14835
    local NAME=$1
Ivan Mahonin e14835
    local FUNC=$2
Ivan Mahonin e14835
    local PREPARE_FUNC=$3
Ivan Mahonin e14835
    local FINALIZE_FUNC=$4
Ivan Mahonin 7f8f8f
    local COMPARE_RESULTS=$5
Ivan Mahonin e14835
Ivan Mahonin e14835
    set_environment_vars $NAME
Ivan Mahonin e14835
Ivan Mahonin e14835
    local FUNC_NAME=pk$FUNC
Ivan Mahonin e14835
    local FUNC_CURRENT_PACKET_DIR=$CURRENT_PACKET_DIR/$FUNC
Ivan Mahonin e14835
Ivan Mahonin e14835
    message "$NAME $FUNC"
Ivan Mahonin 7f8f8f
    try_do_nothing $NAME $FUNC && return 0
Ivan Mahonin 7f8f8f
	echo "${DRY_RUN_DONE[@]}"
Ivan Mahonin 7f8f8f
Ivan Mahonin 7f8f8f
	local PREV_HASH=
Ivan Mahonin 7f8f8f
	if [ "$COMPARE_RESULTS" = "compare_results" ]; then
Ivan Mahonin 7f8f8f
		if check_packet_function $NAME $FUNC; then
Ivan Mahonin d42249
			PREV_HASH=`md5 "$FUNC_CURRENT_PACKET_DIR"` 
Ivan Mahonin 7f8f8f
			[ ! $? -eq 0 ] && return 1
Ivan Mahonin 7f8f8f
		fi
Ivan Mahonin cf8c28
    else
Ivan Mahonin d42249
   		set_undone_silent $NAME $FUNC
Ivan Mahonin 7f8f8f
	fi
Ivan Mahonin e14835
Ivan Mahonin e14835
    mkdir -p $FUNC_CURRENT_PACKET_DIR
Ivan Mahonin e14835
    cd $FUNC_CURRENT_PACKET_DIR
Ivan Mahonin e14835
    
Ivan Mahonin 69b66f
	source $INCLUDE_SCRIPT_DIR/inc-pkall-none.sh
Ivan Mahonin 7f8f8f
    [ ! $? -eq 0 ] && return 1
Ivan Mahonin e14835
    source "$PACKET_SCRIPT_DIR/$NAME.sh"
Ivan Mahonin e14835
    [ ! $? -eq 0 ] && return 1
Ivan Mahonin e14835
Ivan Mahonin e14835
    if [ ! -z "$PREPARE_FUNC" ]; then
Ivan Mahonin e14835
        if ! "$PREPARE_FUNC"; then
Ivan Mahonin e14835
            return 1
Ivan Mahonin e14835
        fi
Ivan Mahonin e14835
    fi
Ivan Mahonin e14835
Ivan Mahonin e14835
    if ! "$FUNC_NAME"; then
Ivan Mahonin e14835
        return 1
Ivan Mahonin e14835
    fi
Ivan Mahonin e14835
Ivan Mahonin e14835
    if [ ! -z "$FINALIZE_FUNC" ]; then
Ivan Mahonin e14835
        if ! "$FINALIZE_FUNC"; then
Ivan Mahonin e14835
            return 1
Ivan Mahonin e14835
        fi
Ivan Mahonin e14835
    fi
Ivan Mahonin e14835
Ivan Mahonin 9ab948
	if [ ! -z "$PREV_HASH" ]; then
Ivan Mahonin 9ab948
		local HASH=`md5 "$FUNC_CURRENT_PACKET_DIR"` 
Ivan Mahonin 9ab948
		[ ! $? -eq 0 ] && return 1
Ivan Mahonin 9ab948
		if [ "$HASH" = "$PREV_HASH" ]; then
Ivan Mahonin 9ab948
			message "$NAME $FUNC - not changed"
Ivan Mahonin 9ab948
			return 0
Ivan Mahonin 7f8f8f
		fi
Ivan Mahonin 7f8f8f
	fi
Ivan Mahonin 7f8f8f
Ivan Mahonin e14835
    set_done $NAME $FUNC
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
foreach_deps() {
Ivan Mahonin e14835
    local NAME=$1
Ivan Mahonin e14835
    local FUNC=$2
Ivan Mahonin e14835
    local RECURSIVE=$3
Ivan Mahonin 3b09af
    local NATIVE=$4
Ivan Mahonin 3b09af
    local WAS_NATIVE=$IS_NATIVE
Ivan Mahonin e14835
    
Ivan Mahonin 7f8f8f
	source $INCLUDE_SCRIPT_DIR/inc-pkall-none.sh
Ivan Mahonin 7f8f8f
    [ ! $? -eq 0 ] && return 1
Ivan Mahonin 7f8f8f
    source "$PACKET_SCRIPT_DIR/$NAME.sh"
Ivan Mahonin e14835
    [ ! $? -eq 0 ] && return 1
Ivan Mahonin 3b09af
    if [ ! -z "$WAS_NATIVE" ]; then
Ivan Mahonin 3b09af
        DEPS="$DEPS $DEPS_NATIVE"
Ivan Mahonin 3b09af
        DEPS_NATIVE=
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
        
Ivan Mahonin e14835
    local CURRENT_DEPS=$DEPS
Ivan Mahonin 3b09af
    local CURRENT_DEPS_NATIVE=$DEPS_NATIVE
Ivan Mahonin 3b09af
    local PROCESS_SELF=""
Ivan Mahonin 3b09af
    if [ "$NATIVE" = "native" ]; then
Ivan Mahonin 3b09af
        CURRENT_DEPS=$DEPS_NATIVE
Ivan Mahonin 3b09af
        if [ ! -z "$TOOLCHAIN_HOST" ]; then
Ivan Mahonin 3b09af
            PROCESS_SELF="process_self"
Ivan Mahonin 3b09af
        fi
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
    
Ivan Mahonin e14835
    for DEP in $CURRENT_DEPS; do
Ivan Mahonin 3b09af
        if [ ! -z "$DEP" ] && [ "$DEP" != "$NAME" -o "$PROCESS_SELF" = "process_self" ]; then
Ivan Mahonin 3b09af
            local DEP_LOCAL=$DEP 
Ivan Mahonin 3b09af
            if [ "$RECURSIVE" = "recursive" ]; then
Ivan Mahonin 3b09af
                if ! foreach_deps "$DEP_LOCAL" "$FUNC" "$RECURSIVE"; then
Ivan Mahonin 3b09af
                    return 1
Ivan Mahonin 3b09af
                fi
Ivan Mahonin 3b09af
            fi
Ivan Mahonin e14835
            if ! "$FUNC" "$DEP_LOCAL" "$NAME"; then
Ivan Mahonin e14835
                return 1
Ivan Mahonin e14835
            fi
Ivan Mahonin e14835
        fi
Ivan Mahonin 3b09af
    done
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    if [ "$RECURSIVE" = "recursive" ]; then
Ivan Mahonin 3b09af
        for DEP in $CURRENT_DEPS_NATIVE; do
Ivan Mahonin 3b09af
            if [ ! -z "$DEP" ] && [ "$DEP" != "$NAME" -o ! -z "$TOOLCHAIN_HOST" ]; then
Ivan Mahonin 3b09af
                local DEP_LOCAL=$DEP 
Ivan Mahonin 3b09af
                if ! native foreach_deps "$DEP_LOCAL" "$FUNC" "$RECURSIVE"; then
Ivan Mahonin 3b09af
                    return 1
Ivan Mahonin 3b09af
                fi
Ivan Mahonin 3b09af
                if ! native "$FUNC" "$DEP_LOCAL" "$NAME"; then
Ivan Mahonin 3b09af
                    return 1
Ivan Mahonin 3b09af
                fi
Ivan Mahonin 3b09af
            fi
Ivan Mahonin 3b09af
        done
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
}
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
set_toolchain() {
Ivan Mahonin 3b09af
    if [ "$1" = "native" ]; then
Ivan Mahonin 3b09af
        IS_NATIVE=1
Ivan Mahonin 3b09af
        if [ ! "$2" = "silent" ]; then
Ivan Mahonin 3b09af
            echo " --- set toolchain $NATIVE_PLATFORM-$NATIVE_ARCH (native)"
Ivan Mahonin 3b09af
        fi
Ivan Mahonin 3b09af
        source $NATIVE_TOOLCHAIN_SCRIPT
Ivan Mahonin 3b09af
    else
Ivan Mahonin 3b09af
        IS_NATIVE=
Ivan Mahonin 3b09af
        if [ ! "$2" = "silent" ]; then
Ivan Mahonin 3b09af
            echo " --- set toolchain $PLATFORM-$ARCH (target)"
Ivan Mahonin 3b09af
        fi
Ivan Mahonin 3b09af
        source $NATIVE_TOOLCHAIN_SCRIPT
Ivan Mahonin 3b09af
        source $TOOLCHAIN_SCRIPT
Ivan Mahonin 3b09af
    fi
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 7f8f8f
is_complete() {
Ivan Mahonin 3b09af
    local NAME=$1
Ivan Mahonin 3b09af
    local FUNC=$2
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    local WAS_NATIVE=$IS_NATIVE
Ivan Mahonin 3b09af
    local WAS_PLATFORM=$PLATFORM
Ivan Mahonin 3b09af
    local WAS_ARCH=$ARCH
Ivan Mahonin 3b09af
    local WAS_PACKET_DIR=$PACKET_DIR
Ivan Mahonin 3b09af
    local PROCESS_SELF=""
Ivan Mahonin 3b09af
    if [ ! -z "$TOOLCHAIN_HOST" ]; then
Ivan Mahonin 3b09af
        PROCESS_SELF="process_self"
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    local SUBFUNCS_VAR_NAME=FUNC_DEPS_$FUNC
Ivan Mahonin 7f8f8f
    local SUBFUNCS=${!SUBFUNCS_VAR_NAME}
Ivan Mahonin 3b09af
    local COMPLETION_KEY="$PLATFORM:$ARCH:$NAME:$FUNC"
Ivan Mahonin 3b09af
    if [ ! -z ${COMPLETION_STATUS[$COMPLETION_KEY]} ]; then
Ivan Mahonin 3b09af
        if [ "${COMPLETION_STATUS[$COMPLETION_KEY]}" = "complete" ]; then
Ivan Mahonin 3b09af
            return 0
Ivan Mahonin 3b09af
        else
Ivan Mahonin 3b09af
            return 1
Ivan Mahonin 3b09af
        fi
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 7f8f8f
Ivan Mahonin 3b09af
    COMPLETION_STATUS[$COMPLETION_KEY]=incomplete
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    if ! check_packet_function $1 $2; then
Ivan Mahonin 3b09af
        return 1
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
    if [ ! -z "$NO_CHECK_DEPS" ]; then
Ivan Mahonin 3b09af
        COMPLETION_STATUS[$COMPLETION_KEY]=complete
Ivan Mahonin 3b09af
        return 0
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    source $INCLUDE_SCRIPT_DIR/inc-pkall-none.sh
Ivan Mahonin 7f8f8f
    [ ! $? -eq 0 ] && return 1
Ivan Mahonin 7f8f8f
    source "$PACKET_SCRIPT_DIR/$NAME.sh"
Ivan Mahonin 7f8f8f
    [ ! $? -eq 0 ] && return 1
Ivan Mahonin 3b09af
    if [ ! -z "$WAS_NATIVE" ]; then
Ivan Mahonin 3b09af
        DEPS="$DEPS $DEPS_NATIVE"
Ivan Mahonin 3b09af
        DEPS_NATIVE=
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 7f8f8f
Ivan Mahonin 3b09af
    local FAIL=
Ivan Mahonin 3b09af
    local CURRENT_DEPS="$DEPS"
Ivan Mahonin 3b09af
    local CURRENT_DEPS_NATIVE="$DEPS_NATIVE"
Ivan Mahonin 3b09af
    for SUBFUNC in $SUBFUNCS; do
Ivan Mahonin 3b09af
        local SUBFUNC_LOCAL=$SUBFUNC
Ivan Mahonin 3b09af
        if [ "${SUBFUNC_LOCAL:0:2}" = "--" ]; then
Ivan Mahonin 3b09af
            if [ ! -z "$CURRENT_DEPS_NATIVE" ]; then
Ivan Mahonin 3b09af
                SUBFUNC_LOCAL=${SUBFUNC_LOCAL:2}
Ivan Mahonin 3b09af
                if [ -z "$WAS_NATIVE" ]; then
Ivan Mahonin 3b09af
                    set_toolchain "native" "silent"
Ivan Mahonin 3b09af
                    PLATFORM=$NATIVE_PLATFORM
Ivan Mahonin 3b09af
                    ARCH=$NATIVE_ARCH
Ivan Mahonin 3b09af
                    PACKET_DIR=$NATIVE_PACKET_DIR
Ivan Mahonin 3b09af
                fi
Ivan Mahonin 3b09af
                for DEP in $CURRENT_DEPS_NATIVE; do
Ivan Mahonin 3b09af
                    if [ ! -z "$DEP" ] && [ "$DEP" != "$NAME" -o "$PROCESS_SELF" = "process_self" ]; then
Ivan Mahonin 3b09af
                        local DEP_LOCAL=$DEP
Ivan Mahonin 3b09af
                        if ! is_complete $DEP_LOCAL $SUBFUNC_LOCAL; then
Ivan Mahonin 3b09af
                            FAIL=1
Ivan Mahonin 3b09af
                            break
Ivan Mahonin 3b09af
                        fi
Ivan Mahonin 3b09af
                        if [ "$WAS_PACKET_DIR/$NAME/$FUNC.done" -ot "$PACKET_DIR/$DEP_LOCAL/$SUBFUNC_LOCAL.done" ]; then
Ivan Mahonin 3b09af
                            FAIL=1
Ivan Mahonin 3b09af
                            break
Ivan Mahonin 3b09af
                        fi
Ivan Mahonin 3b09af
                    fi
Ivan Mahonin 3b09af
                done
Ivan Mahonin 3b09af
                if [ -z "$WAS_NATIVE" ]; then
Ivan Mahonin 3b09af
                    PLATFORM=$WAS_PLATFORM
Ivan Mahonin 3b09af
                    ARCH=$WAS_ARCH
Ivan Mahonin 3b09af
                    PACKET_DIR=$WAS_PACKET_DIR
Ivan Mahonin 3b09af
                    set_toolchain "" "silent"
Ivan Mahonin 3b09af
                fi
Ivan Mahonin 3b09af
                if [ ! -z "$FAIL" ]; then
Ivan Mahonin 3b09af
                    return 1
Ivan Mahonin 3b09af
                fi
Ivan Mahonin 3b09af
            fi
Ivan Mahonin 3b09af
        elif [ "${SUBFUNC_LOCAL:0:1}" = "-" ]; then
Ivan Mahonin 3b09af
            SUBFUNC_LOCAL=${SUBFUNC_LOCAL:1}
Ivan Mahonin 3b09af
            for DEP in $CURRENT_DEPS; do
Ivan Mahonin 3b09af
                if [ ! -z "$DEP" ] && [ "$DEP" != "$NAME" ]; then
Ivan Mahonin 3b09af
                    local DEP_LOCAL=$DEP
Ivan Mahonin 3b09af
                    if ! is_complete $DEP_LOCAL $SUBFUNC_LOCAL; then
Ivan Mahonin 3b09af
                        return 1
Ivan Mahonin 3b09af
                    fi
Ivan Mahonin 3b09af
                  if [ "$PACKET_DIR/$NAME/$FUNC.done" -ot "$PACKET_DIR/$DEP_LOCAL/$SUBFUNC_LOCAL.done" ]; then
Ivan Mahonin 3b09af
                      return 1
Ivan Mahonin 3b09af
                  fi
Ivan Mahonin 3b09af
                fi
Ivan Mahonin 3b09af
            done 
Ivan Mahonin 3b09af
        else
Ivan Mahonin 3b09af
            if ! is_complete $NAME $SUBFUNC_LOCAL; then
Ivan Mahonin 3b09af
                return 1
Ivan Mahonin 3b09af
            fi
Ivan Mahonin 3b09af
            if [ "$PACKET_DIR/$NAME/$FUNC.done" -ot "$PACKET_DIR/$NAME/$SUBFUNC_LOCAL.done" ]; then
Ivan Mahonin 3b09af
                return 1
Ivan Mahonin 3b09af
            fi
Ivan Mahonin 3b09af
       fi
Ivan Mahonin 3b09af
    done
Ivan Mahonin 7f8f8f
Ivan Mahonin 3b09af
    COMPLETION_STATUS[$COMPLETION_KEY]=complete
Ivan Mahonin 7f8f8f
}
Ivan Mahonin 7f8f8f
Ivan Mahonin 7f8f8f
prepare() {
Ivan Mahonin 3b09af
    local NAME=$1
Ivan Mahonin 3b09af
    local FUNC=$2
Ivan Mahonin 3b09af
	
Ivan Mahonin 3b09af
    local WAS_NATIVE=$IS_NATIVE
Ivan Mahonin 3b09af
    local WAS_PLATFORM=$PLATFORM
Ivan Mahonin 3b09af
    local WAS_ARCH=$ARCH
Ivan Mahonin 3b09af
    local WAS_PACKET_DIR=$PACKET_DIR
Ivan Mahonin 3b09af
    local PROCESS_SELF=""
Ivan Mahonin 3b09af
    if [ ! -z "$TOOLCHAIN_HOST" ]; then
Ivan Mahonin 3b09af
        PROCESS_SELF="process_self"
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    local SUBFUNCS_VAR_NAME=FUNC_DEPS_$FUNC
Ivan Mahonin 7f8f8f
    local SUBFUNCS=${!SUBFUNCS_VAR_NAME}
Ivan Mahonin 7f8f8f
	
Ivan Mahonin 3b09af
    source $INCLUDE_SCRIPT_DIR/inc-pkall-none.sh
Ivan Mahonin 7f8f8f
    [ ! $? -eq 0 ] && return 1
Ivan Mahonin 7f8f8f
    source "$PACKET_SCRIPT_DIR/$NAME.sh"
Ivan Mahonin 7f8f8f
    [ ! $? -eq 0 ] && return 1
Ivan Mahonin 3b09af
    if [ ! -z "$WAS_NATIVE" ]; then
Ivan Mahonin 3b09af
        DEPS="$DEPS $DEPS_NATIVE"
Ivan Mahonin 3b09af
        DEPS_NATIVE=
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
    local FAIL=
Ivan Mahonin 3b09af
    local CURRENT_DEPS="$DEPS"
Ivan Mahonin 3b09af
    local CURRENT_DEPS_NATIVE="$DEPS_NATIVE"
Ivan Mahonin 3b09af
    for SUBFUNC in $SUBFUNCS; do
Ivan Mahonin 3b09af
        local SUBFUNC_LOCAL=$SUBFUNC
Ivan Mahonin 3b09af
        if [ "${SUBFUNC_LOCAL:0:2}" = "--" ]; then
Ivan Mahonin 3b09af
            if [ ! -z "$CURRENT_DEPS_NATIVE" ]; then
Ivan Mahonin 3b09af
                SUBFUNC_LOCAL=${SUBFUNC_LOCAL:2}
Ivan Mahonin 3b09af
                if [ -z "$WAS_NATIVE" ]; then
Ivan Mahonin 3b09af
                    set_toolchain "native"
Ivan Mahonin 3b09af
                    PLATFORM=$NATIVE_PLATFORM
Ivan Mahonin 3b09af
                    ARCH=$NATIVE_ARCH
Ivan Mahonin 3b09af
                    PACKET_DIR=$NATIVE_PACKET_DIR
Ivan Mahonin 3b09af
                fi
Ivan Mahonin 3b09af
                for DEP in $CURRENT_DEPS_NATIVE; do
Ivan Mahonin 3b09af
                    if [ ! -z "$DEP" ] && [ "$DEP" != "$NAME" -o "$PROCESS_SELF" = "process_self" ]; then
Ivan Mahonin 3b09af
                        if ! $SUBFUNC_LOCAL $DEP; then
Ivan Mahonin 3b09af
                            FAIL=1
Ivan Mahonin 3b09af
                            break
Ivan Mahonin 3b09af
                        fi
Ivan Mahonin 3b09af
                    fi
Ivan Mahonin 3b09af
                done
Ivan Mahonin 3b09af
                if [ -z "$WAS_NATIVE" ]; then
Ivan Mahonin 3b09af
                    PLATFORM=$WAS_PLATFORM
Ivan Mahonin 3b09af
                    ARCH=$WAS_ARCH
Ivan Mahonin 3b09af
                    PACKET_DIR="$WAS_PACKET_DIR"
Ivan Mahonin 3b09af
                    set_toolchain
Ivan Mahonin 3b09af
                fi
Ivan Mahonin 3b09af
                if [ ! -z "$FAIL" ]; then
Ivan Mahonin 3b09af
                    return 1
Ivan Mahonin 3b09af
                fi
Ivan Mahonin 3b09af
            fi
Ivan Mahonin 3b09af
        elif [ "${SUBFUNC_LOCAL:0:1}" = "-" ]; then
Ivan Mahonin 3b09af
            SUBFUNC_LOCAL=${SUBFUNC_LOCAL:1}
Ivan Mahonin 3b09af
            for DEP in $CURRENT_DEPS; do
Ivan Mahonin 3b09af
                if [ ! -z "$DEP" ] && [ "$DEP" != "$NAME" ]; then
Ivan Mahonin 3b09af
                    if ! $SUBFUNC_LOCAL $DEP; then
Ivan Mahonin 3b09af
                        return 1
Ivan Mahonin 3b09af
                    fi
Ivan Mahonin 3b09af
                fi
Ivan Mahonin 3b09af
            done 
Ivan Mahonin 3b09af
        elif ! $SUBFUNC_LOCAL $NAME; then
Ivan Mahonin 3b09af
            return 1
Ivan Mahonin 3b09af
        fi
Ivan Mahonin 3b09af
    done
Ivan Mahonin 3b09af
    
Ivan Mahonin 3b09af
    if [ ! -z "$CLEAN_BEFORE_DO" ]; then
Ivan Mahonin 3b09af
        if ! clean_packet_directory $NAME $FUNC; then
Ivan Mahonin 3b09af
            return 1
Ivan Mahonin 3b09af
        fi
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 7f8f8f
}
Ivan Mahonin 7f8f8f
Ivan Mahonin e14835
add_envdeps() {
Ivan Mahonin e14835
	if ! copy "$PACKET_DIR/$1/env" "$PACKET_DIR/$2/envdeps"; then
Ivan Mahonin e14835
	    return 1
Ivan Mahonin e14835
	fi
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 3b09af
add_envdeps_native() {
Ivan Mahonin 3b09af
    if ! copy "$PACKET_DIR/$1/env_native" "$PACKET_DIR/$2/envdeps_native"; then
Ivan Mahonin 3b09af
        return 1
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
}
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
add_envdeps_native_cross() {
Ivan Mahonin 3b09af
    if ! copy "$NATIVE_PACKET_DIR/$1/env" "$PACKET_DIR/$2/envdeps_native"; then
Ivan Mahonin 3b09af
        return 1
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
}
Ivan Mahonin 3b09af
Ivan Mahonin e14835
add_envdeps_release() {
Ivan Mahonin 99b145
    if ! copy "$PACKET_DIR/$1/env_release" "$PACKET_DIR/$2/envdeps_release"; then
Ivan Mahonin 99b145
        return 1
Ivan Mahonin 99b145
    fi
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 3b09af
# functions
Ivan Mahonin 3b09af
Ivan Mahonin 7f8f8f
update() {
Ivan Mahonin 7f8f8f
    local NAME=$1
Ivan Mahonin 7f8f8f
    prepare $NAME download || return 1
Ivan Mahonin 7f8f8f
    call_packet_function $NAME download "" "" compare_results || return 1
Ivan Mahonin 7f8f8f
}
Ivan Mahonin 7f8f8f
Ivan Mahonin e14835
download() {
Ivan Mahonin 7f8f8f
    local NAME=$1
Ivan Mahonin 7f8f8f
    is_complete $NAME download && return 0
Ivan Mahonin 7f8f8f
    prepare     $NAME download || return 1
Ivan Mahonin 7f8f8f
    call_packet_function $NAME download || return 1
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
unpack() {
Ivan Mahonin 7f8f8f
    local NAME=$1
Ivan Mahonin 7f8f8f
    is_complete $NAME unpack && return 0
Ivan Mahonin 7f8f8f
    prepare     $NAME unpack || return 1
Ivan Mahonin 7f8f8f
    call_packet_function $NAME unpack || return 1
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
envdeps() {
Ivan Mahonin e14835
    local NAME=$1
Ivan Mahonin 7f8f8f
    is_complete $NAME envdeps && return 0 
Ivan Mahonin 99b145
    prepare     $NAME envdeps || return 1
Ivan Mahonin e14835
Ivan Mahonin e14835
    message "$NAME envdeps"
Ivan Mahonin 7f8f8f
    try_do_nothing $NAME envdeps && return 0
Ivan Mahonin e14835
Ivan Mahonin e14835
    clean_packet_directory_silent $NAME envdeps
Ivan Mahonin e14835
    mkdir -p "$PACKET_DIR/$NAME/envdeps"
Ivan Mahonin 99b145
    if ! foreach_deps $NAME add_envdeps; then
Ivan Mahonin 99b145
        return 1
Ivan Mahonin 99b145
    fi
Ivan Mahonin 99b145
    set_done $NAME envdeps
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 3b09af
envdeps_native() {
Ivan Mahonin 3b09af
    local NAME=$1
Ivan Mahonin 3b09af
    is_complete $NAME envdeps_native && return 0 
Ivan Mahonin 3b09af
    prepare     $NAME envdeps_native || return 1
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    message "$NAME envdeps_native"
Ivan Mahonin 3b09af
    try_do_nothing $NAME envdeps_native && return 0
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    clean_packet_directory_silent $NAME envdeps_native
Ivan Mahonin 3b09af
    mkdir -p "$PACKET_DIR/$NAME/envdeps_native"
Ivan Mahonin 3b09af
    if ! foreach_deps $NAME add_envdeps_native; then
Ivan Mahonin 3b09af
        return 1
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
    if ! foreach_deps $NAME add_envdeps_native_cross "" "native"; then
Ivan Mahonin 3b09af
        return 1
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
    set_done $NAME envdeps_native
Ivan Mahonin 3b09af
}
Ivan Mahonin 3b09af
Ivan Mahonin e14835
build() {
Ivan Mahonin 7f8f8f
    local NAME=$1
Ivan Mahonin 7f8f8f
    is_complete $NAME build && return 0
Ivan Mahonin 7f8f8f
    prepare     $NAME build || return 1
Ivan Mahonin 7f8f8f
    call_packet_function $NAME build prepare_build || return 1
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
install() {
Ivan Mahonin 7f8f8f
    local NAME=$1
Ivan Mahonin 7f8f8f
    is_complete $NAME install && return 0
Ivan Mahonin 7f8f8f
    prepare     $NAME install || return 1
Ivan Mahonin d32e1c
    call_packet_function $NAME install prepare_install || return 1
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
env() {
Ivan Mahonin e14835
    local NAME=$1
Ivan Mahonin 7f8f8f
    is_complete $NAME env && return 0
Ivan Mahonin 7f8f8f
    prepare     $NAME env || return 1
Ivan Mahonin e14835
Ivan Mahonin e14835
    message "$NAME env"
Ivan Mahonin 7f8f8f
    try_do_nothing $NAME env && return 0
Ivan Mahonin 99b145
Ivan Mahonin e14835
    clean_packet_directory_silent $NAME env
Ivan Mahonin e14835
    mkdir -p "$PACKET_DIR/$NAME/env"
Ivan Mahonin 99b145
    copy "$PACKET_DIR/$NAME/envdeps" "$PACKET_DIR/$NAME/env" || return 1
Ivan Mahonin 99b145
    copy "$PACKET_DIR/$NAME/install" "$PACKET_DIR/$NAME/env" || return 1
Ivan Mahonin 99b145
Ivan Mahonin 99b145
    set_done $NAME env
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 3b09af
env_native() {
Ivan Mahonin 3b09af
    local NAME=$1
Ivan Mahonin 3b09af
    is_complete $NAME env_native && return 0
Ivan Mahonin 3b09af
    prepare     $NAME env_native || return 1
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
    message "$NAME env_native"
Ivan Mahonin 3b09af
    try_do_nothing $NAME env_native && return 0
Ivan Mahonin 3b09af
            
Ivan Mahonin 3b09af
    clean_packet_directory_silent $NAME env_native
Ivan Mahonin 3b09af
    mkdir -p "$PACKET_DIR/$NAME/env_native"
Ivan Mahonin 3b09af
    if ! copy "$PACKET_DIR/$NAME/envdeps_native" "$PACKET_DIR/$NAME/env_native"; then
Ivan Mahonin 3b09af
        return 1
Ivan Mahonin 3b09af
    fi
Ivan Mahonin 3b09af
    set_done $NAME env_native
Ivan Mahonin 3b09af
}
Ivan Mahonin 3b09af
Ivan Mahonin e7fa50
license() {
Ivan Mahonin e7fa50
    local NAME=$1
Ivan Mahonin e7fa50
    is_complete $NAME license && return 0
Ivan Mahonin e7fa50
    prepare     $NAME license || return 1
Ivan Mahonin e7fa50
    call_packet_function $NAME license prepare_license || return 1
Ivan Mahonin e7fa50
}
Ivan Mahonin e7fa50
Ivan Mahonin e14835
envdeps_release() {
Ivan Mahonin e14835
    local NAME=$1
Ivan Mahonin 7f8f8f
    is_complete $NAME envdeps_release && return 0
Ivan Mahonin 99b145
    prepare     $NAME envdeps_release || return 1
Ivan Mahonin e14835
Ivan Mahonin 99b145
    message "$NAME envdeps_release"
Ivan Mahonin 7f8f8f
    try_do_nothing $NAME envdeps_release && return 0
Ivan Mahonin e14835
Ivan Mahonin e14835
    clean_packet_directory_silent $NAME envdeps_release
Ivan Mahonin e14835
    mkdir -p "$PACKET_DIR/$NAME/envdeps_release"
Ivan Mahonin 99b145
    if ! foreach_deps $NAME add_envdeps_release; then
Ivan Mahonin 99b145
        return 1
Ivan Mahonin 99b145
    fi
Ivan Mahonin 99b145
    set_done $NAME envdeps_release
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin b0fa99
install_release() {
Ivan Mahonin 7f8f8f
    local NAME=$1
Ivan Mahonin 7f8f8f
    is_complete $NAME install_release && return 0
Ivan Mahonin 7f8f8f
    prepare     $NAME install_release || return 1
Ivan Mahonin d32e1c
    call_packet_function $NAME install_release prepare_install_release || return 1
Ivan Mahonin b0fa99
}
Ivan Mahonin b0fa99
Ivan Mahonin e14835
env_release() {
Ivan Mahonin e14835
    local NAME=$1
Ivan Mahonin 7f8f8f
    is_complete $NAME env_release && return 0
Ivan Mahonin 7f8f8f
    prepare     $NAME env_release || return 1
Ivan Mahonin e14835
Ivan Mahonin 99b145
    message "$NAME env_release"
Ivan Mahonin 7f8f8f
    try_do_nothing $NAME env_release && return 0
Ivan Mahonin 99b145
Ivan Mahonin e14835
    clean_packet_directory_silent $NAME env_release
Ivan Mahonin e14835
    mkdir -p "$PACKET_DIR/$NAME/env_release"
Ivan Mahonin 99b145
    copy "$PACKET_DIR/$NAME/envdeps_release" "$PACKET_DIR/$NAME/env_release" || return 1
Ivan Mahonin 99b145
    copy "$PACKET_DIR/$NAME/install_release" "$PACKET_DIR/$NAME/env_release" || return 1
Ivan Mahonin 99b145
Ivan Mahonin 99b145
    set_done $NAME env_release
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
Ivan Mahonin e14835
#############
Ivan Mahonin e14835
Ivan Mahonin e14835
clean_download() {
Ivan Mahonin e14835
    clean_packet_directory $1 download
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
clean_unpack() {
Ivan Mahonin cf8c28
    clean_packet_directory $1 unpack
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
clean_envdeps() {
Ivan Mahonin e14835
    clean_packet_directory $1 envdeps
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 3b09af
clean_envdeps_native() {
Ivan Mahonin 3b09af
    clean_packet_directory $1 envdeps_native
Ivan Mahonin 3b09af
}
Ivan Mahonin 3b09af
Ivan Mahonin e14835
clean_build() {
Ivan Mahonin e14835
    clean_packet_directory $1 build
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
clean_install() {
Ivan Mahonin e14835
    clean_packet_directory $1 install
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
clean_env() {
Ivan Mahonin e14835
    clean_packet_directory $1 env
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 3b09af
clean_env_native() {
Ivan Mahonin 3b09af
    clean_packet_directory $1 env_native
Ivan Mahonin 3b09af
}
Ivan Mahonin 3b09af
Ivan Mahonin e7fa50
clean_license() {
Ivan Mahonin e7fa50
    clean_packet_directory $1 license
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
clean_envdeps_release() {
Ivan Mahonin e14835
    clean_packet_directory $1 envdeps_release
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e7fa50
clean_install_release() {
Ivan Mahonin e7fa50
    clean_packet_directory $1 install_release
Ivan Mahonin e7fa50
}
Ivan Mahonin e7fa50
Ivan Mahonin e14835
clean_env_release() {
Ivan Mahonin e14835
    clean_packet_directory $1 env_release
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 1dcb0e
clean_all_env() {
Ivan Mahonin 1dcb0e
    clean_envdeps $1
Ivan Mahonin 3b09af
    clean_envdeps_native $1
Ivan Mahonin e7fa50
    clean_install $1
Ivan Mahonin 1dcb0e
    clean_env $1
Ivan Mahonin 3b09af
    clean_env_native $1
Ivan Mahonin e7fa50
    clean_license $1
Ivan Mahonin e14835
    clean_envdeps_release $1
Ivan Mahonin e7fa50
    clean_install_release $1
Ivan Mahonin e14835
    clean_env_release $1
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin dd482a
clean_all_install() {
Ivan Mahonin dd482a
    clean_build $1
Ivan Mahonin 1dcb0e
    clean_all_env $1
Ivan Mahonin dd482a
}
Ivan Mahonin dd482a
Ivan Mahonin 1dcb0e
clean_all_unpack() {
Ivan Mahonin 1dcb0e
    clean_download $1
Ivan Mahonin 1dcb0e
    clean_unpack $1
Ivan Mahonin 1dcb0e
}
Ivan Mahonin 1dcb0e
Ivan Mahonin 1dcb0e
clean() {
Ivan Mahonin 3b09af
    message "$1 clean all"
Ivan Mahonin 3b09af
    try_do_nothing $NAME clean_all && return 0
Ivan Mahonin 223f41
    rm -rf "$PACKET_DIR/$1"
Ivan Mahonin 1cbd1f
}
Ivan Mahonin 1cbd1f
Ivan Mahonin e14835
#############
Ivan Mahonin e14835
Ivan Mahonin e14835
set_undone_download() {
Ivan Mahonin e14835
    set_undone $1 download
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
set_undone_unpack() {
Ivan Mahonin e14835
    set_undone $1 download
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
set_undone_envdeps() {
Ivan Mahonin e14835
    set_undone $1 envdeps
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 3b09af
set_undone_envdeps_native() {
Ivan Mahonin 3b09af
    set_undone $1 envdeps_native
Ivan Mahonin 3b09af
}
Ivan Mahonin 3b09af
Ivan Mahonin e14835
set_undone_build() {
Ivan Mahonin e14835
    set_undone $1 build
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
set_undone_install() {
Ivan Mahonin e14835
    set_undone $1 install
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
set_undone_env() {
Ivan Mahonin e14835
    set_undone $1 env
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 3b09af
set_undone_env_native() {
Ivan Mahonin 3b09af
    set_undone $1 env_native
Ivan Mahonin 3b09af
}
Ivan Mahonin 3b09af
Ivan Mahonin e7fa50
set_undone_license() {
Ivan Mahonin e7fa50
    set_undone $1 license
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
set_undone_envdeps_release() {
Ivan Mahonin e14835
    set_undone $1 envdeps_release
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e7fa50
set_undone_install_release() {
Ivan Mahonin e7fa50
    set_undone $1 install_release
Ivan Mahonin e7fa50
}
Ivan Mahonin e7fa50
Ivan Mahonin e14835
set_undone_env_release() {
Ivan Mahonin e14835
    set_undone $1 env_release
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 1dcb0e
set_undone_all_env() {
Ivan Mahonin 1dcb0e
    set_undone_envdeps $1
Ivan Mahonin 3b09af
    set_undone_envdeps_native $1
Ivan Mahonin e7fa50
    set_undone_install $1
Ivan Mahonin 1dcb0e
    set_undone_env $1
Ivan Mahonin 3b09af
    set_undone_env_native $1
Ivan Mahonin e7fa50
    set_undone_license $1
Ivan Mahonin e14835
    set_undone_envdeps_release $1
Ivan Mahonin e7fa50
    set_undone_install_release $1
Ivan Mahonin e14835
    set_undone_env_release $1
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 1dcb0e
set_undone_all_install() {
Ivan Mahonin 1dcb0e
    set_undone_build $1
Ivan Mahonin 1dcb0e
    set_undone_all_env $1
Ivan Mahonin 1dcb0e
}
Ivan Mahonin 1dcb0e
Ivan Mahonin 1dcb0e
set_undone_all_unpack() {
Ivan Mahonin 1dcb0e
    set_undone_download $1
Ivan Mahonin 1dcb0e
    set_undone_unpack $1
Ivan Mahonin 1dcb0e
}
Ivan Mahonin 1dcb0e
Ivan Mahonin 1dcb0e
set_undone_all() {
Ivan Mahonin 1dcb0e
	set_undone_all_unpack $1
Ivan Mahonin 1dcb0e
    set_undone_all_install $1
Ivan Mahonin 1dcb0e
}
Ivan Mahonin 1dcb0e
Ivan Mahonin e14835
#############
Ivan Mahonin e14835
Ivan Mahonin e14835
with_deps() {
Ivan Mahonin e14835
	if ! foreach_deps "$2" "$1" "recursive"; then
Ivan Mahonin e14835
		return 1
Ivan Mahonin e14835
	fi
Ivan Mahonin 3b09af
    if ! foreach_deps "$2" "$1" "recursive" "native"; then
Ivan Mahonin 3b09af
        return 1
Ivan Mahonin 3b09af
    fi
Ivan Mahonin e14835
    if ! "$1" "$2"; then
Ivan Mahonin e14835
        return 1
Ivan Mahonin e14835
    fi
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
shell() {
Ivan Mahonin d42249
	echo "Set environment for $1"
Ivan Mahonin e14835
    set_environment_vars $1
Ivan Mahonin e14835
    cd $PACKET_DIR/$1
Ivan Mahonin d42249
    if [ -z "${*:2}" ]; then
Ivan Mahonin 223f41
    	/bin/bash -i
Ivan Mahonin 223f41
	else
Ivan Mahonin d42249
		"${@:2}"
Ivan Mahonin 223f41
    fi
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin e14835
dry_run() {
Ivan Mahonin e14835
    DRY_RUN=1
Ivan Mahonin e14835
    "$@"
Ivan Mahonin e14835
}
Ivan Mahonin e14835
Ivan Mahonin 7f8f8f
no_check_deps() {
Ivan Mahonin 7f8f8f
    NO_CHECK_DEPS=1
Ivan Mahonin 7f8f8f
    "$@"
Ivan Mahonin 7f8f8f
}
Ivan Mahonin 7f8f8f
Ivan Mahonin bce30d
force() {
Ivan Mahonin bce30d
    FORCE=1
Ivan Mahonin bce30d
    "$@"
Ivan Mahonin bce30d
}
Ivan Mahonin bce30d
Ivan Mahonin bce30d
clean_before_do() {
Ivan Mahonin bce30d
	CLEAN_BEFORE_DO=1
Ivan Mahonin bce30d
    "$@"
Ivan Mahonin bce30d
}
Ivan Mahonin bce30d
Ivan Mahonin 3b09af
native() {
Ivan Mahonin 3b09af
    local ARGS="$@"
Ivan Mahonin cf8c28
    local LOCAL_ERROR=0
Ivan Mahonin 3b09af
    if [ ! -z "$IS_NATIVE" ]; then
Ivan Mahonin 3b09af
        $ARGS
Ivan Mahonin 3b09af
    else
Ivan Mahonin 3b09af
        local WAS_PLATFORM=$PLATFORM
Ivan Mahonin 3b09af
        local WAS_ARCH=$ARCH
Ivan Mahonin 3b09af
        local WAS_PACKET_DIR=$PACKET_DIR
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
        set_toolchain "native"
Ivan Mahonin 3b09af
        PLATFORM=$NATIVE_PLATFORM
Ivan Mahonin 3b09af
        ARCH=$NATIVE_ARCH
Ivan Mahonin 3b09af
        PACKET_DIR=$NATIVE_PACKET_DIR
Ivan Mahonin 3b09af
        if [ ! -z "$NAME" ]; then
Ivan Mahonin 3b09af
            set_environment_vars $NAME
Ivan Mahonin 3b09af
        fi
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
        $ARGS
Ivan Mahonin cf8c28
        LOCAL_ERROR=$?
Ivan Mahonin 3b09af
Ivan Mahonin 3b09af
        PLATFORM=$WAS_PLATFORM
Ivan Mahonin 3b09af
        ARCH=$WAS_ARCH
Ivan Mahonin 3b09af
        PACKET_DIR=$WAS_PACKET_DIR
Ivan Mahonin 3b09af
        set_toolchain
Ivan Mahonin 3b09af
        if [ ! -z "$NAME" ]; then
Ivan Mahonin 3b09af
            set_environment_vars $NAME
Ivan Mahonin 3b09af
        fi
Ivan Mahonin 3b09af
    fi
Ivan Mahonin cf8c28
    return $LOCAL_ERROR
Ivan Mahonin cf8c28
}
Ivan Mahonin cf8c28
Ivan Mahonin cf8c28
native_at_place() {
Ivan Mahonin cf8c28
    local ARGS="$@"
Ivan Mahonin cf8c28
    local LOCAL_ERROR=0
Ivan Mahonin cf8c28
    if [ ! -z "$IS_NATIVE" ]; then
Ivan Mahonin cf8c28
        $ARGS
Ivan Mahonin cf8c28
    else
Ivan Mahonin cf8c28
        local WAS_PLATFORM=$PLATFORM
Ivan Mahonin cf8c28
        local WAS_ARCH=$ARCH
Ivan Mahonin cf8c28
Ivan Mahonin cf8c28
        set_toolchain "native"
Ivan Mahonin cf8c28
        PLATFORM=$NATIVE_PLATFORM
Ivan Mahonin cf8c28
        ARCH=$NATIVE_ARCH
Ivan Mahonin cf8c28
        if [ ! -z "$NAME" ]; then
Ivan Mahonin cf8c28
            set_environment_vars $NAME
Ivan Mahonin cf8c28
        fi
Ivan Mahonin cf8c28
Ivan Mahonin cf8c28
        $ARGS
Ivan Mahonin cf8c28
        LOCAL_ERROR=$?
Ivan Mahonin cf8c28
Ivan Mahonin cf8c28
        PLATFORM=$WAS_PLATFORM
Ivan Mahonin cf8c28
        ARCH=$WAS_ARCH
Ivan Mahonin cf8c28
        set_toolchain
Ivan Mahonin cf8c28
        if [ ! -z "$NAME" ]; then
Ivan Mahonin cf8c28
            set_environment_vars $NAME
Ivan Mahonin cf8c28
        fi
Ivan Mahonin cf8c28
    fi
Ivan Mahonin cf8c28
    return $LOCAL_ERROR
Ivan Mahonin 3b09af
}
Ivan Mahonin 3b09af
Ivan Mahonin 99b145
foreach_packet() {
Ivan Mahonin 99b145
    local COMMAND=$1
Ivan Mahonin 99b145
    local FILE=
Ivan Mahonin 99b145
    ls -1 "$PACKET_SCRIPT_DIR" | grep -e \\.sh$ | while read FILE; do
Ivan Mahonin 99b145
        if ! $COMMAND "${FILE:0:-3}" ${@:2}; then
Ivan Mahonin 99b145
            return 1
Ivan Mahonin 99b145
        fi
Ivan Mahonin 99b145
    done
Ivan Mahonin 99b145
}
Ivan Mahonin 99b145
Ivan Mahonin 99b145
Ivan Mahonin 3b09af
set_toolchain
Ivan Mahonin e14835
"$@"
Ivan Mahonin 7f8f8f