summaryrefslogtreecommitdiff
path: root/scripts/oe-buildenv-internal
blob: bc6a4fedcdd12105249b3a9e61f56d0d66698c22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/sh

# OE-Core Build Environment Setup Script
#
# Copyright (C) 2006-2011 Linux Foundation
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

# It is assumed OEROOT is already defined when this is called
if [ -z "$OEROOT" ]; then
    echo >&2 "Error: OEROOT is not defined!"
    return 1
fi

if [ -z "$OE_SKIP_SDK_CHECK" ] && [ -n "$OECORE_SDK_VERSION" ]; then
    echo >&2 "Error: The OE SDK/ADT was detected as already being present in this shell environment. Please use a clean shell when sourcing this environment script."
    return 1
fi

# Make sure we're not using python v3.x. This check can't go into
# sanity.bbclass because bitbake's source code doesn't even pass
# parsing stage when used with python v3, so we catch it here so we
# can offer a meaningful error message.
py_v3_check=$(/usr/bin/env python --version 2>&1 | grep "Python 3")
if [ -n "$py_v3_check" ]; then
    echo >&2 "Bitbake is not compatible with python v3"
    echo >&2 "Please set up python v2 as your default python interpreter"
    return 1
fi
unset py_v3_check

# Similarly, we now have code that doesn't parse correctly with older
# versions of Python, and rather than fixing that and being eternally
# vigilant for any other new feature use, just check the version here.
py_v26_check=$(python -c 'import sys; print sys.version_info >= (2,7,3)')
if [ "$py_v26_check" != "True" ]; then
    echo >&2 "BitBake requires Python 2.7.3 or later"
    return 1
fi
unset py_v26_check

if [ -z "$BDIR" ]; then
    if [ -z "$1" ]; then
        BDIR="build"
    else
        BDIR="$1"
        if [ "$BDIR" = "/" ]; then
            echo >&2 "Error: / is not supported as a build directory."
            return 1
        fi

        # Remove any possible trailing slashes. This is used to work around
        # buggy readlink in Ubuntu 10.04 that doesn't ignore trailing slashes
        # and hence "readlink -f new_dir_to_be_created/" returns empty.
        BDIR=$(echo $BDIR | sed -re 's|/+$||')

        BDIR=$(readlink -f "$BDIR")
        if [ -z "$BDIR" ]; then
            PARENTDIR=$(dirname "$1")
            echo >&2 "Error: the directory $PARENTDIR does not exist?"
            return 1
        fi
    fi
    if [ -n "$2" ]; then
        BITBAKEDIR="$2"
    fi
fi
if [ "${BDIR#/}" != "$BDIR" ]; then
    BUILDDIR="$BDIR"
else
    BUILDDIR="$(pwd)/$BDIR"
fi
unset BDIR

if [ -z "$BITBAKEDIR" ]; then
    BITBAKEDIR="$OEROOT/bitbake$BBEXTRA"
fi

BITBAKEDIR=$(readlink -f "$BITBAKEDIR")
BUILDDIR=$(readlink -f "$BUILDDIR")

if [ ! -d "$BITBAKEDIR" ]; then
    echo >&2 "Error: The bitbake directory ($BITBAKEDIR) does not exist!  Please ensure a copy of bitbake exists at this location"
    return 1
fi

# Make sure our paths are at the beginning of $PATH
for newpath in "$BITBAKEDIR/bin" "$OEROOT/scripts"; do
    # Remove any existences of $newpath from $PATH
    PATH=$(echo $PATH | sed -re "s#(^|:)$newpath(:|$)#\1#g;s#^:##")

    # Add $newpath to $PATH
    PATH="$newpath:$PATH"
done
unset BITBAKEDIR newpath

# Used by the runqemu script
export BUILDDIR
export PATH

add_extrawhite() {
    # If the current shell is zsh, then temporarily set it to emulate sh in this
    # function so that the for and case statements below work as expected.
    [ -z "$ZSH_NAME" ] || emulate -L sh

    local extrawhite="MACHINE DISTRO TCMODE TCLIBC HTTP_PROXY http_proxy \
HTTPS_PROXY https_proxy FTP_PROXY ftp_proxy FTPS_PROXY ftps_proxy ALL_PROXY \
all_proxy NO_PROXY no_proxy SSH_AGENT_PID SSH_AUTH_SOCK BB_SRCREV_POLICY \
SDKMACHINE BB_NUMBER_THREADS BB_NO_NETWORK PARALLEL_MAKE GIT_PROXY_COMMAND \
SOCKS5_PASSWD SOCKS5_USER SCREENDIR STAMPS_DIR"

    local var
    for var in $extrawhite; do
        case " $BB_ENV_EXTRAWHITE " in
            *[[:blank:]]$var[[:blank:]]*)
                ;;
            *)
                BB_ENV_EXTRAWHITE="${BB_ENV_EXTRAWHITE:+$BB_ENV_EXTRAWHITE }$var"
                ;;
        esac
    done
}

add_extrawhite
unset -f add_extrawhite
export BB_ENV_EXTRAWHITE