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