diff --git a/config/functions b/config/functions index 050498b604..c232a8a97d 100644 --- a/config/functions +++ b/config/functions @@ -1261,11 +1261,15 @@ pkg_lock_status() { local status="$1" pkg="$2" task="$3" msg="$4" local this_job="${MTJOBID}" line - printf -v line "%s: <%05d> [%02d/%0*d] %-7s %-7s %-35s" \ - "$(date +%Y-%m-%d\ %H:%M:%S.%N)" $$ ${this_job} ${#MTMAXJOBS} ${PARALLEL_SEQ:-0} "${status}" "${task}" "${pkg}" - [ -n "${msg}" ] && line+=" (${msg})" + ( + flock --exclusive 94 - echo "${line}" >>"${THREAD_CONTROL}/history" + printf -v line "%s: <%05d> [%02d/%0*d] %-7s %-7s %-35s" \ + "$(date +%Y-%m-%d\ %H:%M:%S.%N)" $$ ${this_job} ${#MTMAXJOBS} ${PARALLEL_SEQ:-0} "${status}" "${task}" "${pkg}" + [ -n "${msg}" ] && line+=" (${msg})" + + echo "${line}" >>"${THREAD_CONTROL}/history" + ) 94>"${THREAD_CONTROL}/locks/.history" [ "${DASHBOARD}" != "no" ] && update_dashboard "${status}" "${pkg}" "${task}" "${msg}" diff --git a/config/multithread b/config/multithread index 1c14ddfc70..26a9c2ceb6 100644 --- a/config/multithread +++ b/config/multithread @@ -144,7 +144,7 @@ start_multithread_build() { local singlethread buildopts # init thread control folder - rm -fr "${THREAD_CONTROL}" + rm -rf "${THREAD_CONTROL}" mkdir -p "${THREAD_CONTROL}/locks" echo -1 >"${THREAD_CONTROL}/progress.prev" echo 0 >"${THREAD_CONTROL}/progress" diff --git a/packages/addons/addon-depends/libimobiledevice/package.mk b/packages/addons/addon-depends/libimobiledevice/package.mk index 08e409426e..62e040e684 100644 --- a/packages/addons/addon-depends/libimobiledevice/package.mk +++ b/packages/addons/addon-depends/libimobiledevice/package.mk @@ -17,5 +17,6 @@ PKG_CONFIGURE_OPTS_TARGET="--enable-static \ --disable-largefile" post_makeinstall_target() { - cp $PKG_BUILD/common/utils.h $SYSROOT_PREFIX/usr/include/libimobiledevice/ + mkdir -p "${SYSROOT_PREFIX}/usr/include/lib/libimobiledevice" + cp ${PKG_BUILD}/common/utils.h "${SYSROOT_PREFIX}/usr/include/libimobiledevice" } diff --git a/packages/addons/addon-depends/qtbase/package.mk b/packages/addons/addon-depends/qtbase/package.mk index c8a6583281..a6ee847c25 100644 --- a/packages/addons/addon-depends/qtbase/package.mk +++ b/packages/addons/addon-depends/qtbase/package.mk @@ -1,5 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv) +# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) PKG_NAME="qtbase" PKG_VERSION="5.6.2" @@ -11,8 +12,8 @@ PKG_DEPENDS_TARGET="pcre zlib" PKG_LONGDESC="A cross-platform application and UI framework." PKG_CONFIGURE_OPTS_TARGET="-prefix /usr - -sysroot $SYSROOT_PREFIX - -hostprefix $TOOLCHAIN + -sysroot "${SYSROOT_PREFIX}" + -hostprefix "${TOOLCHAIN}" -device linux-libreelec-g++ -opensource -confirm-license -release @@ -52,31 +53,42 @@ PKG_CONFIGURE_OPTS_TARGET="-prefix /usr configure_target() { QMAKE_CONF_DIR="mkspecs/devices/linux-libreelec-g++" - QMAKE_CONF="${QMAKE_CONF_DIR}/qmake.conf" cd .. - mkdir -p $QMAKE_CONF_DIR - echo "MAKEFILE_GENERATOR = UNIX" > $QMAKE_CONF - echo "CONFIG += incremental" >> $QMAKE_CONF - echo "QMAKE_INCREMENTAL_STYLE = sublib" >> $QMAKE_CONF - echo "include(../../common/linux.conf)" >> $QMAKE_CONF - echo "include(../../common/gcc-base-unix.conf)" >> $QMAKE_CONF - echo "include(../../common/g++-unix.conf)" >> $QMAKE_CONF - echo "load(device_config)" >> $QMAKE_CONF - echo "QMAKE_CC = $CC" >> $QMAKE_CONF - echo "QMAKE_CXX = $CXX" >> $QMAKE_CONF - echo "QMAKE_LINK = $CXX" >> $QMAKE_CONF - echo "QMAKE_LINK_SHLIB = $CXX" >> $QMAKE_CONF - echo "QMAKE_AR = $AR cqs" >> $QMAKE_CONF - echo "QMAKE_OBJCOPY = $OBJCOPY" >> $QMAKE_CONF - echo "QMAKE_NM = $NM -P" >> $QMAKE_CONF - echo "QMAKE_STRIP = $STRIP" >> $QMAKE_CONF - echo "QMAKE_CFLAGS = $CFLAGS" >> $QMAKE_CONF - echo "QMAKE_CXXFLAGS = $CXXFLAGS" >> $QMAKE_CONF - echo "QMAKE_LFLAGS = $LDFLAGS" >> $QMAKE_CONF - echo "load(qt_config)" >> $QMAKE_CONF - echo '#include "../../linux-g++/qplatformdefs.h"' >> $QMAKE_CONF_DIR/qplatformdefs.h + mkdir -p ${QMAKE_CONF_DIR} + + cat >"${QMAKE_CONF_DIR}/qmake.conf" <"${QMAKE_CONF_DIR}/qplatformdefs.h" </dev/null); do - sed -e "s:\(['= ]\)/usr:\\1$SYSROOT_PREFIX/usr:g" -i $i +# Fixup temporary sysroot references to the shared sysroot +for i in $(find "${SYSROOT_PREFIX}/usr/lib" -type f -name "*.la" 2>/dev/null); do + sed -e "s:\(['= ]\)/usr:\\1${PKG_ORIG_SYSROOT_PREFIX}/usr:g" -i "${i}" +done +for i in $(find "${SYSROOT_PREFIX}/usr/bin" -type f -name "*-config" 2>/dev/null); do + sed -e "s#${SYSROOT_PREFIX}/usr#${PKG_ORIG_SYSROOT_PREFIX}/usr#g" -i "${i}" +done +for i in $(find "${SYSROOT_PREFIX}/usr/lib" -type f -name "*.pc" 2>/dev/null); do + sed -e "s#${SYSROOT_PREFIX}/usr#${PKG_ORIG_SYSROOT_PREFIX}/usr#g" -i "${i}" +done +for i in $(find "${SYSROOT_PREFIX}/usr"/{lib,share} -type f -name "*.cmake" 2>/dev/null); do + sed -e "s#${SYSROOT_PREFIX}/usr#${PKG_ORIG_SYSROOT_PREFIX}/usr#g" -i "${i}" done -[ "${PKG_NEED_UNLOCK}" = "yes" ] && release_exclusive_lock "${PKG_NAME}:${TARGET}" "build" +# Transfer the new sysroot content to the shared sysroot +mkdir -p "${PKG_ORIG_SYSROOT_PREFIX}" +cp -PR "${SYSROOT_PREFIX}"/* "${PKG_ORIG_SYSROOT_PREFIX}" +rm -rf "${SYSROOT_PREFIX}" + +export SYSROOT_PREFIX="${PKG_ORIG_SYSROOT_PREFIX}" if [ "$TARGET" = "target" -o "$TARGET" = "init" ]; then if [ -d $INSTALL ]; then diff --git a/scripts/genbuildplan.py b/scripts/genbuildplan.py index 73a5d175d5..3922f886a7 100755 --- a/scripts/genbuildplan.py +++ b/scripts/genbuildplan.py @@ -313,7 +313,7 @@ def processPackages(args, packages, build): elif not args.ignore_invalid: raise Exception("Invalid package! Package %s cannot be found for this PROJECT/DEVICE/ARCH" % dfq_p) - # To each target-specific node, add the correspnding + # To each target-specific node, add the corresponding # target-specific dependency nodes ("edges") for name in node_map: node = node_map[name] diff --git a/scripts/image b/scripts/image index 70830e2050..ba9b1aa9e3 100755 --- a/scripts/image +++ b/scripts/image @@ -13,6 +13,8 @@ unset _CACHE_PACKAGE_LOCAL _CACHE_PACKAGE_GLOBAL _DEBUG_DEPENDS_LIST _DEBUG_PACK show_config save_build_config +${SCRIPTS}/checkdeps + # Setup both toolchain cmake configs to avoid potentially racy behaviour later. # Use a fork for host to isolate any variable modifications. ( setup_toolchain host ) diff --git a/scripts/unpack b/scripts/unpack index 1fc760aefc..5415acf5aa 100755 --- a/scripts/unpack +++ b/scripts/unpack @@ -54,7 +54,7 @@ if [ -d "$SOURCES/${PKG_NAME}" -o -d "$PKG_DIR/sources" ]; then # unpack into a unique location as unpacking into a single ${BUILD} directory is not thread-safe PKG_UNPACK_DIR="${BUILD}/.unpack/${PKG_NAME}" - rm -fr "${PKG_UNPACK_DIR}" + rm -rf "${PKG_UNPACK_DIR}" mkdir -p "${PKG_UNPACK_DIR}" pkg_call_exists pre_unpack && pkg_call pre_unpack @@ -84,7 +84,7 @@ if [ -d "$SOURCES/${PKG_NAME}" -o -d "$PKG_DIR/sources" ]; then fi # cleanup - rm -fr "${PKG_UNPACK_DIR}" + rm -rf "${PKG_UNPACK_DIR}" if [ -d "$PKG_DIR/sources" ]; then [ ! -d "$PKG_BUILD" ] && mkdir -p "$PKG_BUILD"