1DESCRIPTION = "SDK type target for building a standalone tarball containing python3, chrpath, make, git and tar. The \
2               tarball can be used to run bitbake builds on systems which don't meet the usual version requirements."
3SUMMARY = "Standalone tarball for running builds on systems with inadequate software"
4LICENSE = "MIT"
5
6TOOLCHAIN_TARGET_TASK ?= ""
7
8TOOLCHAIN_HOST_TASK ?= "\
9    nativesdk-sdk-provides-dummy \
10    nativesdk-python3 \
11    nativesdk-python3-git \
12    nativesdk-python3-jinja2 \
13    nativesdk-python3-testtools \
14    nativesdk-python3-pip \
15    nativesdk-python3-setuptools \
16    nativesdk-python3-subunit \
17    nativesdk-python3-pyyaml \
18    nativesdk-python3-websockets \
19    nativesdk-ncurses-terminfo-base \
20    nativesdk-chrpath \
21    nativesdk-tar \
22    nativesdk-buildtools-perl-dummy \
23    nativesdk-git \
24    nativesdk-git-perltools \
25    nativesdk-pigz \
26    nativesdk-make \
27    nativesdk-wget \
28    nativesdk-ca-certificates \
29    nativesdk-texinfo \
30    nativesdk-libnss-nis \
31    nativesdk-rpcsvc-proto \
32    nativesdk-patch \
33    nativesdk-mtools \
34    nativesdk-zstd \
35    nativesdk-lz4 \
36    nativesdk-libacl \
37    "
38
39MULTIMACH_TARGET_SYS = "${SDK_ARCH}-nativesdk${SDK_VENDOR}-${SDK_OS}"
40PACKAGE_ARCH = "${SDK_ARCH}_${SDK_OS}"
41PACKAGE_ARCHS = ""
42TARGET_ARCH = "none"
43TARGET_OS = "none"
44
45SDK_PACKAGE_ARCHS += "buildtools-dummy-${SDKPKGSUFFIX}"
46
47TOOLCHAIN_OUTPUTNAME ?= "${SDK_ARCH}-buildtools-nativesdk-standalone-${DISTRO_VERSION}"
48
49SDK_TITLE = "Build tools"
50
51RDEPENDS = "${TOOLCHAIN_HOST_TASK}"
52
53EXCLUDE_FROM_WORLD = "1"
54
55inherit populate_sdk
56inherit toolchain-scripts-base
57inherit nopackages
58
59deltask install
60deltask populate_sysroot
61
62do_populate_sdk[stamp-extra-info] = "${PACKAGE_ARCH}"
63
64REAL_MULTIMACH_TARGET_SYS = "none"
65
66create_sdk_files:append () {
67	rm -f ${SDK_OUTPUT}/${SDKPATH}/site-config-*
68	rm -f ${SDK_OUTPUT}/${SDKPATH}/environment-setup-*
69	rm -f ${SDK_OUTPUT}/${SDKPATH}/version-*
70
71	# Generate new (mini) sdk-environment-setup file
72	script=${1:-${SDK_OUTPUT}/${SDKPATH}/environment-setup-${SDK_SYS}}
73	touch $script
74	echo 'export PATH="${SDKPATHNATIVE}${bindir_nativesdk}:${SDKPATHNATIVE}${sbindir_nativesdk}:${SDKPATHNATIVE}${base_bindir_nativesdk}:${SDKPATHNATIVE}${base_sbindir_nativesdk}:$PATH"' >> $script
75	echo 'export OECORE_NATIVE_SYSROOT="${SDKPATHNATIVE}"' >> $script
76	if [ -e "${SDK_OUTPUT}${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt" ]; then
77		echo 'export GIT_SSL_CAINFO="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
78		echo 'export SSL_CERT_FILE="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
79		echo 'export REQUESTS_CA_BUNDLE="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
80		echo 'export CURL_CA_BUNDLE="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
81	fi
82	echo 'HOST_PKG_PATH=$(command -p pkg-config --variable=pc_path pkg-config 2>/dev/null)' >>$script
83	echo 'export PKG_CONFIG_LIBDIR=${SDKPATHNATIVE}/${libdir}/pkgconfig:${SDKPATHNATIVE}/${datadir}/pkgconfig:${HOST_PKG_PATH:-/usr/lib/pkgconfig:/usr/share/pkgconfig}' >>$script
84	echo 'unset HOST_PKG_PATH'
85
86	toolchain_create_sdk_version ${SDK_OUTPUT}/${SDKPATH}/version-${SDK_SYS}
87
88	cat >> $script <<EOF
89if [ -d "\$OECORE_NATIVE_SYSROOT/environment-setup.d" ]; then
90	for envfile in \$OECORE_NATIVE_SYSROOT/environment-setup.d/*.sh; do
91		. \$envfile
92	done
93fi
94# We have to unset this else it can confuse oe-selftest and other tools
95# which may also use the overlapping namespace.
96unset OECORE_NATIVE_SYSROOT
97EOF
98
99	if [ "${SDKMACHINE}" = "i686" ]; then
100		echo 'export NO32LIBS="0"' >>$script
101		echo 'echo "$BB_ENV_PASSTHROUGH_ADDITIONS" | grep -q "NO32LIBS"' >>$script
102		echo '[ $? != 0 ] && export BB_ENV_PASSTHROUGH_ADDITIONS="NO32LIBS $BB_ENV_PASSTHROUGH_ADDITIONS"' >>$script
103	fi
104}
105
106# buildtools-tarball doesn't need config site
107TOOLCHAIN_NEED_CONFIGSITE_CACHE = ""
108
109# The recipe doesn't need any default deps
110INHIBIT_DEFAULT_DEPS = "1"
111
112# Directory in testsdk that contains testcases
113TESTSDK_CASES = "buildtools-cases"
114
115python do_testsdk() {
116    import oeqa.sdk.testsdk
117    testsdk = oeqa.sdk.testsdk.TestSDK()
118
119    cases_path = os.path.join(os.path.abspath(os.path.dirname(oeqa.sdk.testsdk.__file__)), d.getVar("TESTSDK_CASES"))
120    testsdk.context_executor_class.default_cases = cases_path
121
122    testsdk.run(d)
123}
124addtask testsdk
125do_testsdk[nostamp] = "1"
126do_testsdk[network] = "1"
127do_testsdk[depends] += "xz-native:do_populate_sysroot"
128