mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2024-11-27 10:30:52 +00:00
70 lines
2.5 KiB
Plaintext
70 lines
2.5 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
|
|
|
THREADCOUNT=${THREADCOUNT:-$(nproc)}
|
|
|
|
start_multithread_build() {
|
|
local buildopts result=0
|
|
|
|
# init thread control folder
|
|
rm -rf "${THREAD_CONTROL}"
|
|
mkdir -p "${THREAD_CONTROL}/locks"
|
|
echo -1 >"${THREAD_CONTROL}/progress.prev"
|
|
echo 0 >"${THREAD_CONTROL}/progress"
|
|
touch "${THREAD_CONTROL}/status"
|
|
|
|
# Increase file descriptors if building one thread/package
|
|
[ "${THREADCOUNT}" = "0" ] && ulimit -n ${ULIMITN:-10240}
|
|
|
|
# create a single log file by default for a single threaded build (or the builder is a masochist)
|
|
if [ ${THREADCOUNT} -eq 1 -a "${ONELOG,,}" != "no" ] || [ "${ONELOG,,}" = "yes" ]; then
|
|
buildopts+=" --no-log-burst"
|
|
else
|
|
mkdir -p "${THREAD_CONTROL}/logs"
|
|
buildopts+=" --log-burst"
|
|
fi
|
|
buildopts+=" --log-combine ${LOGCOMBINE:-always}"
|
|
|
|
# When building addons, don't halt on error - keep building all packages/addons
|
|
[ "${MTADDONBUILD}" = "yes" ] && buildopts+=" --continue-on-error" || buildopts+=" --halt-on-error"
|
|
|
|
[ "${MTVERBOSE}" = "yes" ] && buildopts+=" --verbose"
|
|
[ "${MTDEBUG}" = "yes" ] && buildopts+=" --debug"
|
|
if [ "${DISABLE_COLORS}" = "yes" ]; then
|
|
buildopts+=" --colors=never"
|
|
else
|
|
buildopts+=" --colors=${MTCOLORS:-auto}"
|
|
fi
|
|
[ "${MTBOOKENDS}" = "no" ] && buildopts+=" --without-bookends" || buildopts+=" --with-bookends"
|
|
[ "${MTIMMEDIATE}" = "no" ] && buildopts+=" --fail-after-active" || buildopts+=" --fail-immediately"
|
|
|
|
buildopts+=" --stats-interval ${MTINTERVAL:-60}"
|
|
|
|
# pipefail: return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status
|
|
set -o pipefail
|
|
|
|
${SCRIPTS}/pkgjson | ${SCRIPTS}/genbuildplan.py --show-wants --with-json "${THREAD_CONTROL}"/plan.json \
|
|
--build ${@} > "${THREAD_CONTROL}"/plan || result=1
|
|
|
|
if [ ${result} -eq 0 ]; then
|
|
save_build_config
|
|
|
|
# export the following vars so that they will be available to subprocesses of pkgbuilder.py
|
|
export ROOT SCRIPTS THREAD_CONTROL
|
|
|
|
MTBUILDSTART=$(date +%s) MTWITHLOCKS=yes ${SCRIPTS}/pkgbuilder.py \
|
|
--plan "${THREAD_CONTROL}"/plan.json \
|
|
--joblog "${THREAD_CONTROL}"/joblog \
|
|
--loadstats "${THREAD_CONTROL}"/loadstats \
|
|
--max-procs ${THREADCOUNT} ${buildopts} || result=1
|
|
|
|
[ ${result} -eq 0 -a -f "${THREAD_CONTROL}"/history ] && echo && cat "${THREAD_CONTROL}"/history | ${ROOT}/tools/mtstats.py
|
|
|
|
rm -f "${THREAD_CONTROL}/parallel.pid"
|
|
fi
|
|
|
|
set +o pipefail
|
|
|
|
return ${result}
|
|
}
|