cleanup scripts: scripts/

This commit is contained in:
CvH 2024-07-06 11:17:12 +02:00
parent 7f543e3c98
commit 58ebc091cf
15 changed files with 231 additions and 184 deletions

View File

@ -9,7 +9,7 @@
RECONF_DIR="${3}" RECONF_DIR="${3}"
if [ ! -f "${RECONF_DIR}/configure.in" \ if [ ! -f "${RECONF_DIR}/configure.in" \
-a ! -f "${RECONF_DIR}/configure.ac" ]; then -a ! -f "${RECONF_DIR}/configure.ac" ]; then
die "configure.in or configure.ac not found" die "configure.in or configure.ac not found"
fi fi

View File

@ -60,10 +60,18 @@ ${SCRIPTS}/unpack "${PKG_NAME}" "${PARENT_PKG}"
# build dependencies, only when PKG_DEPENDS_? is filled # build dependencies, only when PKG_DEPENDS_? is filled
unset _pkg_depends unset _pkg_depends
case "${TARGET}" in case "${TARGET}" in
"target") _pkg_depends="${PKG_DEPENDS_TARGET}";; "target")
"host") _pkg_depends="${PKG_DEPENDS_HOST}";; _pkg_depends="${PKG_DEPENDS_TARGET}"
"init") _pkg_depends="${PKG_DEPENDS_INIT}";; ;;
"bootstrap") _pkg_depends="${PKG_DEPENDS_BOOTSTRAP}";; "host")
_pkg_depends="${PKG_DEPENDS_HOST}"
;;
"init")
_pkg_depends="${PKG_DEPENDS_INIT}"
;;
"bootstrap")
_pkg_depends="${PKG_DEPENDS_BOOTSTRAP}"
;;
esac esac
if is_sequential_build; then if is_sequential_build; then
@ -76,7 +84,7 @@ fi
if [ "${PKG_SECTION}" = "virtual" ]; then if [ "${PKG_SECTION}" = "virtual" ]; then
PKG_DEEPHASH=$(calculate_stamp) PKG_DEEPHASH=$(calculate_stamp)
for i in PKG_NAME PKG_DEEPHASH BUILD_WITH_DEBUG; do for i in PKG_NAME PKG_DEEPHASH BUILD_WITH_DEBUG; do
echo "STAMP_${i}=\"${!i}\"" >> ${STAMP} echo "STAMP_${i}=\"${!i}\"" >>${STAMP}
done done
pkg_lock_status "UNLOCK" "${PKG_NAME}:${TARGET}" "build" "built" pkg_lock_status "UNLOCK" "${PKG_NAME}:${TARGET}" "build" "built"
@ -171,7 +179,6 @@ if [ "${BUILD_WITH_DEBUG}" != "yes" ] && flag_enabled "strip" "yes"; then
TARGET_MESON_OPTS+=" -Dstrip=true" TARGET_MESON_OPTS+=" -Dstrip=true"
fi fi
# configure HOST build defaults # configure HOST build defaults
HOST_CONFIGURE_OPTS="--host=${HOST_NAME} \ HOST_CONFIGURE_OPTS="--host=${HOST_NAME} \
--build=${HOST_NAME} \ --build=${HOST_NAME} \
@ -227,9 +234,15 @@ cd "${PKG_BUILD}"
if [ -f "${PKG_CONFIGURE_SCRIPT}" -o -f "${PKG_CMAKE_SCRIPT}" -o -f "${PKG_MESON_SCRIPT}" ]; then if [ -f "${PKG_CONFIGURE_SCRIPT}" -o -f "${PKG_CMAKE_SCRIPT}" -o -f "${PKG_MESON_SCRIPT}" ]; then
case "${TARGET}" in case "${TARGET}" in
"target") PKG_REAL_BUILD="${PKG_BUILD}/.${TARGET_NAME}" ;; "target")
"host") PKG_REAL_BUILD="${PKG_BUILD}/.${HOST_NAME}" ;; PKG_REAL_BUILD="${PKG_BUILD}/.${TARGET_NAME}"
"init") PKG_REAL_BUILD="${PKG_BUILD}/.${TARGET_NAME}-${TARGET}" ;; ;;
"host")
PKG_REAL_BUILD="${PKG_BUILD}/.${HOST_NAME}"
;;
"init")
PKG_REAL_BUILD="${PKG_BUILD}/.${TARGET_NAME}-${TARGET}"
;;
"bootstrap") PKG_REAL_BUILD="${PKG_BUILD}/.${HOST_NAME}-${TARGET}" ;; "bootstrap") PKG_REAL_BUILD="${PKG_BUILD}/.${HOST_NAME}-${TARGET}" ;;
esac esac
mkdir -p "${PKG_REAL_BUILD}" mkdir -p "${PKG_REAL_BUILD}"
@ -241,13 +254,13 @@ fi
# create wrapper scripts in build dir and use them for CC/CXX when # create wrapper scripts in build dir and use them for CC/CXX when
# building for host and local-cc build flag is set # building for host and local-cc build flag is set
if [ "${TARGET}" = "host" ] && flag_enabled "local-cc" "no"; then if [ "${TARGET}" = "host" ] && flag_enabled "local-cc" "no"; then
cat > libreelec-local-cc << EOF cat >libreelec-local-cc <<EOF
#!/bin/sh #!/bin/sh
exec ${CC} "\$@" exec ${CC} "\$@"
EOF EOF
chmod +x libreelec-local-cc chmod +x libreelec-local-cc
export CC=$(pwd)/libreelec-local-cc export CC=$(pwd)/libreelec-local-cc
cat > libreelec-local-cxx << EOF cat >libreelec-local-cxx <<EOF
#!/bin/sh #!/bin/sh
exec ${CXX} "\$@" exec ${CXX} "\$@"
EOF EOF
@ -338,19 +351,19 @@ else
;; ;;
# configure builds # configure builds
"configure:target"|"autotools:target") "configure:target" | "autotools:target")
echo "Executing (target): ${PKG_CONFIGURE_SCRIPT} ${TARGET_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_TARGET}" | tr -s " " echo "Executing (target): ${PKG_CONFIGURE_SCRIPT} ${TARGET_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_TARGET}" | tr -s " "
${PKG_CONFIGURE_SCRIPT} ${TARGET_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_TARGET} ${PKG_CONFIGURE_SCRIPT} ${TARGET_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_TARGET}
;; ;;
"configure:host"|"autotools:host") "configure:host" | "autotools:host")
echo "Executing (host): ${PKG_CONFIGURE_SCRIPT} ${HOST_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_HOST}" | tr -s " " echo "Executing (host): ${PKG_CONFIGURE_SCRIPT} ${HOST_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_HOST}" | tr -s " "
${PKG_CONFIGURE_SCRIPT} ${HOST_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_HOST} ${PKG_CONFIGURE_SCRIPT} ${HOST_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_HOST}
;; ;;
"configure:init"|"autotools:init") "configure:init" | "autotools:init")
echo "Executing (init): ${PKG_CONFIGURE_SCRIPT} ${INIT_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_INIT}" | tr -s " " echo "Executing (init): ${PKG_CONFIGURE_SCRIPT} ${INIT_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_INIT}" | tr -s " "
${PKG_CONFIGURE_SCRIPT} ${INIT_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_INIT} ${PKG_CONFIGURE_SCRIPT} ${INIT_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_INIT}
;; ;;
"configure:bootstrap"|"autotools:bootstrap") "configure:bootstrap" | "autotools:bootstrap")
echo "Executing (bootstrap): ${PKG_CONFIGURE_SCRIPT} ${BOOTSTRAP_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_BOOTSTRAP}" | tr -s " " echo "Executing (bootstrap): ${PKG_CONFIGURE_SCRIPT} ${BOOTSTRAP_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_BOOTSTRAP}" | tr -s " "
${PKG_CONFIGURE_SCRIPT} ${BOOTSTRAP_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_BOOTSTRAP} ${PKG_CONFIGURE_SCRIPT} ${BOOTSTRAP_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_BOOTSTRAP}
;; ;;
@ -369,37 +382,37 @@ if pkg_call_exists make_${TARGET}; then
else else
case "${PKG_TOOLCHAIN}:${TARGET}" in case "${PKG_TOOLCHAIN}:${TARGET}" in
# ninja based builds # ninja based builds
"meson:target"|"cmake:target"|"ninja:target") "meson:target" | "cmake:target" | "ninja:target")
echo "Executing (target): ninja ${PKG_MAKE_OPTS_TARGET}" | tr -s " " echo "Executing (target): ninja ${PKG_MAKE_OPTS_TARGET}" | tr -s " "
ninja ${NINJA_OPTS} ${PKG_MAKE_OPTS_TARGET} ninja ${NINJA_OPTS} ${PKG_MAKE_OPTS_TARGET}
;; ;;
"meson:host"|"cmake:host"|"ninja:host") "meson:host" | "cmake:host" | "ninja:host")
echo "Executing (host): ninja ${PKG_MAKE_OPTS_HOST}" | tr -s " " echo "Executing (host): ninja ${PKG_MAKE_OPTS_HOST}" | tr -s " "
ninja ${NINJA_OPTS} ${PKG_MAKE_OPTS_HOST} ninja ${NINJA_OPTS} ${PKG_MAKE_OPTS_HOST}
;; ;;
"meson:init"|"cmake:init"|"ninja:init") "meson:init" | "cmake:init" | "ninja:init")
echo "Executing (init): ninja ${PKG_MAKE_OPTS_INIT}" | tr -s " " echo "Executing (init): ninja ${PKG_MAKE_OPTS_INIT}" | tr -s " "
ninja ${NINJA_OPTS} ${PKG_MAKE_OPTS_INIT} ninja ${NINJA_OPTS} ${PKG_MAKE_OPTS_INIT}
;; ;;
"meson:bootstrap"|"cmake:bootstrap"|"ninja:bootstrap") "meson:bootstrap" | "cmake:bootstrap" | "ninja:bootstrap")
echo "Executing (bootstrap): ninja ${PKG_MAKE_OPTS_BOOTSTRAP}" | tr -s " " echo "Executing (bootstrap): ninja ${PKG_MAKE_OPTS_BOOTSTRAP}" | tr -s " "
ninja ${NINJA_OPTS} ${PKG_MAKE_OPTS_BOOTSTRAP} ninja ${NINJA_OPTS} ${PKG_MAKE_OPTS_BOOTSTRAP}
;; ;;
# make based builds # make based builds
"configure:target"|"cmake-make:target"|"autotools:target"|"make:target") "configure:target" | "cmake-make:target" | "autotools:target" | "make:target")
echo "Executing (target): make ${PKG_MAKE_OPTS_TARGET}" | tr -s " " echo "Executing (target): make ${PKG_MAKE_OPTS_TARGET}" | tr -s " "
make ${PKG_MAKE_OPTS_TARGET} make ${PKG_MAKE_OPTS_TARGET}
;; ;;
"configure:host"|"cmake-make:host"|"autotools:host"|"make:host") "configure:host" | "cmake-make:host" | "autotools:host" | "make:host")
echo "Executing (host): make ${PKG_MAKE_OPTS_HOST}" | tr -s " " echo "Executing (host): make ${PKG_MAKE_OPTS_HOST}" | tr -s " "
make ${PKG_MAKE_OPTS_HOST} make ${PKG_MAKE_OPTS_HOST}
;; ;;
"configure:init"|"cmake-make:init"|"autotools:init"|"make:init") "configure:init" | "cmake-make:init" | "autotools:init" | "make:init")
echo "Executing (init): make ${PKG_MAKE_OPTS_INIT}" | tr -s " " echo "Executing (init): make ${PKG_MAKE_OPTS_INIT}" | tr -s " "
make ${PKG_MAKE_OPTS_INIT} make ${PKG_MAKE_OPTS_INIT}
;; ;;
"configure:bootstrap"|"cmake-make:bootstrap"|"autotools:bootstrap"|"make:bootstrap") "configure:bootstrap" | "cmake-make:bootstrap" | "autotools:bootstrap" | "make:bootstrap")
echo "Executing (bootstrap): make ${PKG_MAKE_OPTS_BOOTSTRAP}" | tr -s " " echo "Executing (bootstrap): make ${PKG_MAKE_OPTS_BOOTSTRAP}" | tr -s " "
make ${PKG_MAKE_OPTS_BOOTSTRAP} make ${PKG_MAKE_OPTS_BOOTSTRAP}
;; ;;
@ -432,34 +445,34 @@ else
case "${PKG_TOOLCHAIN}:${TARGET}" in case "${PKG_TOOLCHAIN}:${TARGET}" in
# ninja based builds # ninja based builds
"meson:target"|"cmake:target") "meson:target" | "cmake:target")
[ "${INSTALL_TO_SYSROOT}" = "yes" ] && \ [ "${INSTALL_TO_SYSROOT}" = "yes" ] &&
DESTDIR=${SYSROOT_PREFIX} ninja install ${PKG_MAKEINSTALL_OPTS_TARGET} DESTDIR=${SYSROOT_PREFIX} ninja install ${PKG_MAKEINSTALL_OPTS_TARGET}
DESTDIR=${INSTALL} ninja install ${PKG_MAKEINSTALL_OPTS_TARGET} DESTDIR=${INSTALL} ninja install ${PKG_MAKEINSTALL_OPTS_TARGET}
;; ;;
"meson:host"|"cmake:host") "meson:host" | "cmake:host")
ninja install ${PKG_MAKEINSTALL_OPTS_HOST} ninja install ${PKG_MAKEINSTALL_OPTS_HOST}
;; ;;
"meson:init"|"cmake:init") "meson:init" | "cmake:init")
DESTDIR=${INSTALL} ninja install ${PKG_MAKEINSTALL_OPTS_INIT} DESTDIR=${INSTALL} ninja install ${PKG_MAKEINSTALL_OPTS_INIT}
;; ;;
"meson:bootstrap"|"cmake:bootstrap") "meson:bootstrap" | "cmake:bootstrap")
ninja install ${PKG_MAKEINSTALL_OPTS_BOOTSTRAP} ninja install ${PKG_MAKEINSTALL_OPTS_BOOTSTRAP}
;; ;;
# make based builds # make based builds
"configure:target"|"cmake-make:target"|"autotools:target"|"make:target") "configure:target" | "cmake-make:target" | "autotools:target" | "make:target")
[ "${INSTALL_TO_SYSROOT}" = "yes" ] && \ [ "${INSTALL_TO_SYSROOT}" = "yes" ] &&
make install DESTDIR=${SYSROOT_PREFIX} -j1 ${PKG_MAKEINSTALL_OPTS_TARGET} make install DESTDIR=${SYSROOT_PREFIX} -j1 ${PKG_MAKEINSTALL_OPTS_TARGET}
make install DESTDIR=${INSTALL} ${PKG_MAKEINSTALL_OPTS_TARGET} make install DESTDIR=${INSTALL} ${PKG_MAKEINSTALL_OPTS_TARGET}
;; ;;
"configure:host"|"cmake-make:host"|"autotools:host"|"make:host") "configure:host" | "cmake-make:host" | "autotools:host" | "make:host")
make install ${PKG_MAKEINSTALL_OPTS_HOST} make install ${PKG_MAKEINSTALL_OPTS_HOST}
;; ;;
"configure:init"|"cmake-make:init"|"autotools:init"|"make:init") "configure:init" | "cmake-make:init" | "autotools:init" | "make:init")
make install DESTDIR=${INSTALL} ${PKG_MAKEINSTALL_OPTS_INIT} make install DESTDIR=${INSTALL} ${PKG_MAKEINSTALL_OPTS_INIT}
;; ;;
"configure:bootstrap"|"cmake-make:bootstrap"|"autotools:bootstrap"|"make:bootstrap") "configure:bootstrap" | "cmake-make:bootstrap" | "autotools:bootstrap" | "make:bootstrap")
make install ${PKG_MAKEINSTALL_OPTS_BOOTSTRAP} make install ${PKG_MAKEINSTALL_OPTS_BOOTSTRAP}
;; ;;
esac esac
@ -516,10 +529,10 @@ if [ "${TARGET}" = "target" -o "${TARGET}" = "init" ]; then
rm -rf ${INSTALL}/{usr/local/,usr/,}share/zsh rm -rf ${INSTALL}/{usr/local/,usr/,}share/zsh
rm -rf ${INSTALL}/{usr/local/,usr/,}var rm -rf ${INSTALL}/{usr/local/,usr/,}var
find ${INSTALL} \( -name "*.orig" \ find ${INSTALL} \( -name "*.orig" \
-o -name "*.rej" \ -o -name "*.rej" \
-o -name "*.in" \ -o -name "*.in" \
-o -name ".git*" \) \ -o -name ".git*" \) \
-exec rm -f {} \; 2>/dev/null || : -exec rm -f {} \; 2>/dev/null || :
find ${INSTALL} -type d -exec rmdir -p {} \; 2>/dev/null || : find ${INSTALL} -type d -exec rmdir -p {} \; 2>/dev/null || :
python_fix_abi "${INSTALL}" python_fix_abi "${INSTALL}"
@ -532,24 +545,24 @@ if [ "${TARGET}" = "target" -o "${TARGET}" = "init" ]; then
! -name "libpthread-*.so" \ ! -name "libpthread-*.so" \
! -name "libthread_db-*so" \ ! -name "libthread_db-*so" \
2>/dev/null) 2>/dev/null || : 2>/dev/null) 2>/dev/null || :
if [ "${TARGET}" = "init" ]; then if [ "${TARGET}" = "init" ]; then
${STRIP} $(find ${INSTALL} -type f -name "*.so*" 2>/dev/null) 2>/dev/null || : ${STRIP} $(find ${INSTALL} -type f -name "*.so*" 2>/dev/null) 2>/dev/null || :
fi fi
${STRIP} $(find ${INSTALL} ! -name "*.so*" ! -name "*.ko" \ ${STRIP} $(find ${INSTALL} ! -name "*.so*" ! -name "*.ko" \
-type f -executable 2>/dev/null) 2>/dev/null || : -type f -executable 2>/dev/null) 2>/dev/null || :
fi fi
fi fi
fi fi
if [ -n "${INSTALL}" -a -d "${INSTALL}" ]; then if [ -n "${INSTALL}" -a -d "${INSTALL}" ]; then
echo "INFO_PKG_NAME=\"${PKG_NAME}\"" > "${INSTALL}/.libreelec-package" echo "INFO_PKG_NAME=\"${PKG_NAME}\"" >"${INSTALL}/.libreelec-package"
fi fi
cd ${ROOT} cd ${ROOT}
PKG_DEEPHASH=$(calculate_stamp) PKG_DEEPHASH=$(calculate_stamp)
for i in PKG_NAME PKG_DEEPHASH BUILD_WITH_DEBUG; do for i in PKG_NAME PKG_DEEPHASH BUILD_WITH_DEBUG; do
echo "STAMP_${i}=\"${!i}\"" >> ${STAMP} echo "STAMP_${i}=\"${!i}\"" >>${STAMP}
done done
pkg_lock_status "UNLOCK" "${PKG_NAME}:${TARGET}" "build" "built" pkg_lock_status "UNLOCK" "${PKG_NAME}:${TARGET}" "build" "built"
@ -559,7 +572,7 @@ record_timestamp BUILD_END
if [ -n "${TRACE_BUILD_TIMING}" ]; then if [ -n "${TRACE_BUILD_TIMING}" ]; then
( (
print_color "CLR_AUTOREMOVE" "\nBuild timing details:" print_color "CLR_AUTOREMOVE" "\nBuild timing details:"
print_color "CLR_TARGET" "\n================================\n" print_color "CLR_TARGET" "\n================================\n"
show_timestamp_diff "unpack" BUILD_BEGIN BUILD_START show_timestamp_diff "unpack" BUILD_BEGIN BUILD_START
show_timestamp_diff "pre-build setup" BUILD_START BUILD_CONFIGURE show_timestamp_diff "pre-build setup" BUILD_START BUILD_CONFIGURE
show_timestamp_diff "configure" BUILD_CONFIGURE BUILD_MAKE show_timestamp_diff "configure" BUILD_CONFIGURE BUILD_MAKE
@ -567,7 +580,7 @@ if [ -n "${TRACE_BUILD_TIMING}" ]; then
show_timestamp_diff "make install" BUILD_MAKEINSTALL BUILD_COPY_SYSROOT show_timestamp_diff "make install" BUILD_MAKEINSTALL BUILD_COPY_SYSROOT
show_timestamp_diff "copy sysroot" BUILD_COPY_SYSROOT BUILD_CLEANUP_INSTALL show_timestamp_diff "copy sysroot" BUILD_COPY_SYSROOT BUILD_CLEANUP_INSTALL
show_timestamp_diff "cleanup install" BUILD_CLEANUP_INSTALL BUILD_END show_timestamp_diff "cleanup install" BUILD_CLEANUP_INSTALL BUILD_END
print_color "CLR_TARGET" "--------------------------------\n" print_color "CLR_TARGET" "--------------------------------\n"
show_timestamp_diff "total time" BUILD_BEGIN BUILD_END show_timestamp_diff "total time" BUILD_BEGIN BUILD_END
echo -e echo -e
) >&${VERBOSE_OUT} ) >&${VERBOSE_OUT}

View File

@ -10,7 +10,7 @@ ${SCRIPTS}/checkdeps
# Setup both toolchain cmake configs to avoid potentially racy behaviour later. # Setup both toolchain cmake configs to avoid potentially racy behaviour later.
# Use a fork for host to isolate any variable modifications. # Use a fork for host to isolate any variable modifications.
( setup_toolchain host ) (setup_toolchain host)
setup_toolchain target setup_toolchain target
MTADDONBUILD=no start_multithread_build ${@} MTADDONBUILD=no start_multithread_build ${@}

View File

@ -16,8 +16,8 @@ clean_package() {
# Use a wildcard here to remove all versions of the package # Use a wildcard here to remove all versions of the package
for i in "${BUILD}/build/${1}-"* \ for i in "${BUILD}/build/${1}-"* \
"${BUILD}/install_pkg/${1}-"* \ "${BUILD}/install_pkg/${1}-"* \
"${BUILD}/install_init/${1}-"*; do "${BUILD}/install_init/${1}-"*; do
if [ -d "${i}" -a -f "${i}/.libreelec-unpack" ]; then if [ -d "${i}" -a -f "${i}/.libreelec-unpack" ]; then
. "${i}/.libreelec-unpack" . "${i}/.libreelec-unpack"
if [ "${STAMP_PKG_NAME}" = "${1}" ]; then if [ "${STAMP_PKG_NAME}" = "${1}" ]; then
@ -49,4 +49,3 @@ if [ "${1}" = "--all" -a -n "${2}" ]; then
elif [ -n "${1}" ]; then elif [ -n "${1}" ]; then
clean_package "${1}" clean_package "${1}"
fi fi

View File

@ -51,10 +51,19 @@ get_addons() {
local count=0 validpkg local count=0 validpkg
case ${1} in case ${1} in
binary) paths="^${ROOT}/packages/mediacenter/kodi-binary-addons/";; binary)
official) paths="^${ROOT}/packages/addons/";; paths="^${ROOT}/packages/mediacenter/kodi-binary-addons/"
all) paths="^${ROOT}/packages/|^${ROOT}/projects/.*/packages/";; ;;
*) paths="^${ROOT}/packages/|^${ROOT}/projects/.*/packages/"; filter="${1}";; official)
paths="^${ROOT}/packages/addons/"
;;
all)
paths="^${ROOT}/packages/|^${ROOT}/projects/.*/packages/"
;;
*)
paths="^${ROOT}/packages/|^${ROOT}/projects/.*/packages/"
filter="${1}"
;;
esac esac
exit() { exited=1; } exit() { exited=1; }
@ -90,8 +99,8 @@ get_addons() {
unset -f exit unset -f exit
if [ ${count} -eq 0 -a -n "${filter}" ]; then if [ ${count} -eq 0 -a -n "${filter}" ]; then
echo "$(print_color CLR_ERROR "ERROR: no addons matched for filter ${filter}")" >&2 echo "$(print_color CLR_ERROR "ERROR: no addons matched for filter ${filter}")" >&2
echo "For more information type: ./scripts/create_addon --help" >&2 echo "For more information type: ./scripts/create_addon --help" >&2
die die
fi fi
} }
@ -110,13 +119,13 @@ verify_addon() {
VERIFY_FAIL="Incompatible project or device: \"${_DEVICE:-${PROJECT}}\" not in [ ${PKG_ADDON_PROJECTS} ]" VERIFY_FAIL="Incompatible project or device: \"${_DEVICE:-${PROJECT}}\" not in [ ${PKG_ADDON_PROJECTS} ]"
if listcontains "${PKG_ADDON_PROJECTS}" "!${_DEVICE:-${PROJECT}}" || if listcontains "${PKG_ADDON_PROJECTS}" "!${_DEVICE:-${PROJECT}}" ||
listcontains "${PKG_ADDON_PROJECTS}" "!${PROJECT}"; then listcontains "${PKG_ADDON_PROJECTS}" "!${PROJECT}"; then
return 1 return 1
fi fi
if ! listcontains "${PKG_ADDON_PROJECTS}" "${_DEVICE:-${PROJECT}}" && if ! listcontains "${PKG_ADDON_PROJECTS}" "${_DEVICE:-${PROJECT}}" &&
! listcontains "${PKG_ADDON_PROJECTS}" "${PROJECT}" && ! listcontains "${PKG_ADDON_PROJECTS}" "${PROJECT}" &&
! listcontains "${PKG_ADDON_PROJECTS}" "any"; then ! listcontains "${PKG_ADDON_PROJECTS}" "any"; then
return 1 return 1
fi fi
fi fi
@ -132,7 +141,7 @@ fi
# check environment and configure toolchains # check environment and configure toolchains
${SCRIPTS}/checkdeps ${SCRIPTS}/checkdeps
( setup_toolchain host ) (setup_toolchain host)
setup_toolchain target setup_toolchain target
# collect list of addons for building # collect list of addons for building
@ -143,11 +152,21 @@ show_only="no"
# read addons from parameter list # read addons from parameter list
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case ${1} in case ${1} in
--help) usage 0;; --help)
--show-only) show_only="yes";; usage 0
--*) usage 1;; ;;
-*) addons_drop+=" $(get_addons ${1:1})";; --show-only)
*) addons+=" $(get_addons ${1})";; show_only="yes"
;;
--*)
usage 1
;;
-*)
addons_drop+=" $(get_addons ${1:1})"
;;
*)
addons+=" $(get_addons ${1})"
;;
esac esac
shift shift
done done
@ -181,7 +200,7 @@ elif [ -f "${THREAD_CONTROL}/addons.failed" ]; then
echo " $(print_color CLR_ERROR "${addon}")" >&2 echo " $(print_color CLR_ERROR "${addon}")" >&2
fi fi
fi fi
done < "${THREAD_CONTROL}/addons.failed" done <"${THREAD_CONTROL}/addons.failed"
die die
else else
die "$(print_color CLR_ERROR "UNKNOWN BUILD FAILURE OR INABILITY TO GENERATE PLAN")" die "$(print_color CLR_ERROR "UNKNOWN BUILD FAILURE OR INABILITY TO GENERATE PLAN")"

View File

@ -63,7 +63,7 @@ case "${PKG_SOURCE_NAME}" in
unzip -o -q "${FULL_SOURCE_PATH}" -d "${2}" unzip -o -q "${FULL_SOURCE_PATH}" -d "${2}"
;; ;;
*.diff | *.patch) *.diff | *.patch)
patch -d "${2}" -p1 < "${FULL_SOURCE_PATH}" patch -d "${2}" -p1 <"${FULL_SOURCE_PATH}"
;; ;;
*.diff.bz2 | *.patch.bz2 | patch-*.bz2) *.diff.bz2 | *.patch.bz2 | patch-*.bz2)
bzcat "${FULL_SOURCE_PATH}" | patch -d "${2}" -p1 bzcat "${FULL_SOURCE_PATH}" | patch -d "${2}" -p1

View File

@ -31,12 +31,15 @@ if [ -n "${PKG_URL}" -a -n "${PKG_SOURCE_NAME}" ]; then
# determine get handler based on protocol and/or filename # determine get handler based on protocol and/or filename
case "${PKG_URL}" in case "${PKG_URL}" in
git://*|*.git) git://* | *.git)
get_handler="git";; get_handler="git"
;;
file://*) file://*)
get_handler="file";; get_handler="file"
;;
*) *)
get_handler="archive";; get_handler="archive"
;;
esac esac
if ! listcontains "${GET_HANDLER_SUPPORT}" "${get_handler}"; then if ! listcontains "${GET_HANDLER_SUPPORT}" "${get_handler}"; then

View File

@ -23,7 +23,7 @@ ${SCRIPTS}/checkdeps
# Setup both toolchain cmake configs to avoid potentially racy behaviour later. # Setup both toolchain cmake configs to avoid potentially racy behaviour later.
# Use a fork for host to isolate any variable modifications. # Use a fork for host to isolate any variable modifications.
( setup_toolchain host ) (setup_toolchain host)
setup_toolchain target setup_toolchain target
show_config show_config
@ -68,11 +68,21 @@ if [ "${LIBREELEC_VERSION}" = "devel" ]; then
GIT_ABBREV=${GIT_HASH:0:7} GIT_ABBREV=${GIT_HASH:0:7}
DEVEL_VERSION=${LIBREELEC_VERSION} DEVEL_VERSION=${LIBREELEC_VERSION}
case "${BUILD_PERIODIC}" in case "${BUILD_PERIODIC}" in
nightly) LIBREELEC_VERSION=nightly-$(date +%Y%m%d)-${GIT_ABBREV};; nightly)
daily) LIBREELEC_VERSION=daily-$(date +%Y%j)-${GIT_ABBREV};; LIBREELEC_VERSION=nightly-$(date +%Y%m%d)-${GIT_ABBREV}
weekly) LIBREELEC_VERSION=weekly-$(date +%G%V)-${GIT_ABBREV};; ;;
monthly) LIBREELEC_VERSION=monthly-$(date +%Y%m)-${GIT_ABBREV};; daily)
*) LIBREELEC_VERSION=devel-$(date +%Y%m%d%H%M%S)-${GIT_ABBREV};; LIBREELEC_VERSION=daily-$(date +%Y%j)-${GIT_ABBREV}
;;
weekly)
LIBREELEC_VERSION=weekly-$(date +%G%V)-${GIT_ABBREV}
;;
monthly)
LIBREELEC_VERSION=monthly-$(date +%Y%m)-${GIT_ABBREV}
;;
*)
LIBREELEC_VERSION=devel-$(date +%Y%m%d%H%M%S)-${GIT_ABBREV}
;;
esac esac
fi fi
@ -115,13 +125,13 @@ if [ -n "${IMAGE_SUFFIX}" ]; then
IMAGE_NAME="${IMAGE_NAME}-${IMAGE_SUFFIX}" IMAGE_NAME="${IMAGE_NAME}-${IMAGE_SUFFIX}"
fi fi
echo "${IMAGE_NAME}" > ${BUILD}/BUILD_FILENAME echo "${IMAGE_NAME}" >${BUILD}/BUILD_FILENAME
# Setup fakeroot # Setup fakeroot
rm -rf ${FAKEROOT_SCRIPT} # remove ${FAKEROOT_SCRIPT} if it exist rm -rf ${FAKEROOT_SCRIPT} # remove ${FAKEROOT_SCRIPT} if it exist
touch ${FAKEROOT_SCRIPT} # create an empty ${FAKEROOT_SCRIPT} touch ${FAKEROOT_SCRIPT} # create an empty ${FAKEROOT_SCRIPT}
chmod +x ${FAKEROOT_SCRIPT} # make ${FAKEROOT_SCRIPT} executable chmod +x ${FAKEROOT_SCRIPT} # make ${FAKEROOT_SCRIPT} executable
echo "chown -R 0:0 ${INSTALL}" >> ${FAKEROOT_SCRIPT} echo "chown -R 0:0 ${INSTALL}" >>${FAKEROOT_SCRIPT}
# Clean old install dirs # Clean old install dirs
rm -rf ${BUILD}/qa_checks/general rm -rf ${BUILD}/qa_checks/general
@ -151,7 +161,7 @@ if [ "${TARGET_ARCH}" = "x86_64" ]; then
ln -sfn /usr/lib ${INSTALL}/usr/lib64 ln -sfn /usr/lib ${INSTALL}/usr/lib64
fi fi
echo "${TARGET_VERSION}" > ${INSTALL}/etc/release echo "${TARGET_VERSION}" >${INSTALL}/etc/release
# Create /etc/os-release # Create /etc/os-release
cat <<EOF >${INSTALL}/etc/os-release cat <<EOF >${INSTALL}/etc/os-release
@ -167,9 +177,9 @@ LIBREELEC_ARCH="${LIBREELEC_ARCH}"
LIBREELEC_BUILD="${LIBREELEC_BUILD}" LIBREELEC_BUILD="${LIBREELEC_BUILD}"
LIBREELEC_PROJECT="${PROJECT}" LIBREELEC_PROJECT="${PROJECT}"
EOF EOF
[ -n "${DEVICE}" ] && echo "LIBREELEC_DEVICE=\"${DEVICE}\"" >> ${INSTALL}/etc/os-release [ -n "${DEVICE}" ] && echo "LIBREELEC_DEVICE=\"${DEVICE}\"" >>${INSTALL}/etc/os-release
[ -n "${BUILDER_NAME}" ] && echo "BUILDER_NAME=\"${BUILDER_NAME}\"" >> ${INSTALL}/etc/os-release [ -n "${BUILDER_NAME}" ] && echo "BUILDER_NAME=\"${BUILDER_NAME}\"" >>${INSTALL}/etc/os-release
[ -n "${BUILDER_VERSION}" ] && echo "BUILDER_VERSION=\"${BUILDER_VERSION}\"" >> ${INSTALL}/etc/os-release [ -n "${BUILDER_VERSION}" ] && echo "BUILDER_VERSION=\"${BUILDER_VERSION}\"" >>${INSTALL}/etc/os-release
# Create /etc/issue # Create /etc/issue
cat <<EOF >${INSTALL}/etc/issue cat <<EOF >${INSTALL}/etc/issue
@ -208,16 +218,16 @@ fi
# Replace placeholders with values in install script to eMMC # Replace placeholders with values in install script to eMMC
if [ -f ${INSTALL}/usr/bin/install2emmc ]; then if [ -f ${INSTALL}/usr/bin/install2emmc ]; then
sed -e "s%@SYSTEM_SIZE@%${SYSTEM_SIZE}%g" \ sed -e "s%@SYSTEM_SIZE@%${SYSTEM_SIZE}%g" \
-i ${INSTALL}/usr/bin/install2emmc -i ${INSTALL}/usr/bin/install2emmc
sed -e "s%@DISTRONAME@%${DISTRONAME}%g" \ sed -e "s%@DISTRONAME@%${DISTRONAME}%g" \
-i ${INSTALL}/usr/bin/install2emmc -i ${INSTALL}/usr/bin/install2emmc
fi fi
# Run depmod for base overlay modules # Run depmod for base overlay modules
MODVER=$(basename $(ls -d ${INSTALL}/usr/lib/kernel-overlays/base/lib/modules/*)) MODVER=$(basename $(ls -d ${INSTALL}/usr/lib/kernel-overlays/base/lib/modules/*))
find ${INSTALL}/usr/lib/kernel-overlays/base/lib/modules/${MODVER}/ -name *.ko | \ find ${INSTALL}/usr/lib/kernel-overlays/base/lib/modules/${MODVER}/ -name *.ko |
sed -e "s,${INSTALL}/usr/lib/kernel-overlays/base/lib/modules/${MODVER}/,," \ sed -e "s,${INSTALL}/usr/lib/kernel-overlays/base/lib/modules/${MODVER}/,," \
> ${INSTALL}/usr/lib/kernel-overlays/base/lib/modules/${MODVER}/modules.order >${INSTALL}/usr/lib/kernel-overlays/base/lib/modules/${MODVER}/modules.order
${TOOLCHAIN}/bin/depmod -b ${INSTALL}/usr/lib/kernel-overlays/base -a -e -F "$(get_install_dir linux)/.image/System.map" ${MODVER} 2>&1 ${TOOLCHAIN}/bin/depmod -b ${INSTALL}/usr/lib/kernel-overlays/base -a -e -F "$(get_install_dir linux)/.image/System.map" ${MODVER} 2>&1
# Strip kernel modules # Strip kernel modules
@ -251,8 +261,8 @@ if [ -z "${SQUASHFS_COMPRESSION_OPTION}" ]; then
fi fi
# Create squashfs file, default to gzip if no compression configured # Create squashfs file, default to gzip if no compression configured
echo "rm -rf \"${TARGET_IMG}/${IMAGE_NAME}.system\"" >> ${FAKEROOT_SCRIPT} echo "rm -rf \"${TARGET_IMG}/${IMAGE_NAME}.system\"" >>${FAKEROOT_SCRIPT}
echo "${TOOLCHAIN}/bin/mksquashfs \"${BUILD}/image/system\" \"${TARGET_IMG}/${IMAGE_NAME}.system\" -noappend -comp ${SQUASHFS_COMPRESSION:-gzip} ${SQUASHFS_COMPRESSION_OPTION}" >> ${FAKEROOT_SCRIPT} echo "${TOOLCHAIN}/bin/mksquashfs \"${BUILD}/image/system\" \"${TARGET_IMG}/${IMAGE_NAME}.system\" -noappend -comp ${SQUASHFS_COMPRESSION:-gzip} ${SQUASHFS_COMPRESSION_OPTION}" >>${FAKEROOT_SCRIPT}
# Run fakeroot # Run fakeroot
${TOOLCHAIN}/bin/fakeroot -- ${FAKEROOT_SCRIPT} ${TOOLCHAIN}/bin/fakeroot -- ${FAKEROOT_SCRIPT}
@ -290,10 +300,10 @@ if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then
cp ${ROOT}/README* ${RELEASE_DIR} cp ${ROOT}/README* ${RELEASE_DIR}
cp ${ROOT}/CHANGELOG* ${RELEASE_DIR} cp ${ROOT}/CHANGELOG* ${RELEASE_DIR}
echo "${TARGET_VERSION}" > ${RELEASE_DIR}/RELEASE echo "${TARGET_VERSION}" >${RELEASE_DIR}/RELEASE
if [ ! "${MEDIACENTER}" = "no" ]; then if [ ! "${MEDIACENTER}" = "no" ]; then
echo "Kodi commit: $(get_pkg_version ${MEDIACENTER})" >> ${RELEASE_DIR}/RELEASE echo "Kodi commit: $(get_pkg_version ${MEDIACENTER})" >>${RELEASE_DIR}/RELEASE
fi fi
mkdir -p ${RELEASE_DIR}/licenses mkdir -p ${RELEASE_DIR}/licenses
@ -304,9 +314,10 @@ if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then
cp ${TARGET_IMG}/${IMAGE_NAME}.kernel ${RELEASE_DIR}/target/KERNEL cp ${TARGET_IMG}/${IMAGE_NAME}.kernel ${RELEASE_DIR}/target/KERNEL
# Create md5sum's # Create md5sum's
( cd ${RELEASE_DIR}; (
md5sum -t target/SYSTEM > target/SYSTEM.md5; cd ${RELEASE_DIR}
md5sum -t target/KERNEL > target/KERNEL.md5; md5sum -t target/SYSTEM >target/SYSTEM.md5
md5sum -t target/KERNEL >target/KERNEL.md5
) )
# Create target directory # Create target directory
@ -319,12 +330,13 @@ if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then
tar cf ${TARGET_IMG}/${IMAGE_NAME}.tar -C target ${IMAGE_NAME} tar cf ${TARGET_IMG}/${IMAGE_NAME}.tar -C target ${IMAGE_NAME}
# Create sha256 checksum of tarball # Create sha256 checksum of tarball
( cd ${TARGET_IMG} (
sha256sum ${IMAGE_NAME}.tar > ${IMAGE_NAME}.tar.sha256 cd ${TARGET_IMG}
sha256sum ${IMAGE_NAME}.tar >${IMAGE_NAME}.tar.sha256
) )
# Create image files if requested # Create image files if requested
if [[ ( "${1}" = "noobs" || "${1}" = "mkimage" ) && -n "${BOOTLOADER}" ]]; then if [[ ("${1}" = "noobs" || "${1}" = "mkimage") && -n "${BOOTLOADER}" ]]; then
UUID_SYSTEM="$(date '+%d%m')-$(date '+%M%S')" UUID_SYSTEM="$(date '+%d%m')-$(date '+%M%S')"
UUID_STORAGE="$(uuidgen)" UUID_STORAGE="$(uuidgen)"
@ -386,42 +398,42 @@ if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then
if [ -n "${NOOBS_HEX}" ]; then if [ -n "${NOOBS_HEX}" ]; then
sed -e "s%@NOOBS_HEX@%${NOOBS_HEX}%g" \ sed -e "s%@NOOBS_HEX@%${NOOBS_HEX}%g" \
-i ${RELEASE_DIR}/${NOOBS_DISTRO}/os.json -i ${RELEASE_DIR}/${NOOBS_DISTRO}/os.json
else else
sed -e "/@NOOBS_HEX@/d" \ sed -e "/@NOOBS_HEX@/d" \
-i ${RELEASE_DIR}/${NOOBS_DISTRO}/os.json -i ${RELEASE_DIR}/${NOOBS_DISTRO}/os.json
fi fi
sed -e "s%@DISTRONAME@%${DISTRONAME}%g" \ sed -e "s%@DISTRONAME@%${DISTRONAME}%g" \
-e "s%@PROJECT@%${DEVICE:-${PROJECT}}%g" \ -e "s%@PROJECT@%${DEVICE:-${PROJECT}}%g" \
-e "s%@LIBREELEC_VERSION@%${LIBREELEC_VERSION}%g" \ -e "s%@LIBREELEC_VERSION@%${LIBREELEC_VERSION}%g" \
-e "s%@RELEASE_DATE@%$(date +%F)%g" \ -e "s%@RELEASE_DATE@%$(date +%F)%g" \
-e "s%@KERNEL_VERSION@%$(kernel_version)%g" \ -e "s%@KERNEL_VERSION@%$(kernel_version)%g" \
-e "s%@DESCRIPTION@%${DESCRIPTION}%g" \ -e "s%@DESCRIPTION@%${DESCRIPTION}%g" \
-e "s%@ROOT_PASSWORD@%${ROOT_PASSWORD}%g" \ -e "s%@ROOT_PASSWORD@%${ROOT_PASSWORD}%g" \
-e "s%@NOOBS_SUPPORTED_MODELS@%${NOOBS_SUPPORTED_MODELS}%g" \ -e "s%@NOOBS_SUPPORTED_MODELS@%${NOOBS_SUPPORTED_MODELS}%g" \
-i ${RELEASE_DIR}/${NOOBS_DISTRO}/os.json -i ${RELEASE_DIR}/${NOOBS_DISTRO}/os.json
sed -e "s%@DISTRONAME@%${DISTRONAME}%g" \ sed -e "s%@DISTRONAME@%${DISTRONAME}%g" \
-e "s%@PROJECT@%${DEVICE:-${PROJECT}}%g" \ -e "s%@PROJECT@%${DEVICE:-${PROJECT}}%g" \
-e "s%@SYSTEM_SIZE@%${SYSTEM_SIZE}%g" \ -e "s%@SYSTEM_SIZE@%${SYSTEM_SIZE}%g" \
-i ${RELEASE_DIR}/${NOOBS_DISTRO}/partitions.json -i ${RELEASE_DIR}/${NOOBS_DISTRO}/partitions.json
sed -e "s%@EXTRA_CMDLINE@%${EXTRA_CMDLINE}%g" \ sed -e "s%@EXTRA_CMDLINE@%${EXTRA_CMDLINE}%g" \
-i ${RELEASE_DIR}/${NOOBS_DISTRO}/partition_setup.sh -i ${RELEASE_DIR}/${NOOBS_DISTRO}/partition_setup.sh
# Create System dir # Create System dir
mkdir -p ${RELEASE_DIR}/${NOOBS_DISTRO}/System mkdir -p ${RELEASE_DIR}/${NOOBS_DISTRO}/System
# Copy Bootloader # Copy Bootloader
cp -PR ${INSTALL}/usr/share/bootloader/config.txt ${RELEASE_DIR}/${NOOBS_DISTRO}/System/ cp -PR ${INSTALL}/usr/share/bootloader/config.txt ${RELEASE_DIR}/${NOOBS_DISTRO}/System/
for distro in "${INSTALL}/usr/share/bootloader/distroconfig"*.txt ; do for distro in "${INSTALL}/usr/share/bootloader/distroconfig"*.txt; do
if [ -f "${distro}" ]; then if [ -f "${distro}" ]; then
cp -PR "${distro}" ${RELEASE_DIR}/${NOOBS_DISTRO}/System/ cp -PR "${distro}" ${RELEASE_DIR}/${NOOBS_DISTRO}/System/
fi fi
done done
cp -PR ${INSTALL}/usr/share/bootloader/LICENCE* ${RELEASE_DIR}/${NOOBS_DISTRO}/System/ cp -PR ${INSTALL}/usr/share/bootloader/LICENCE* ${RELEASE_DIR}/${NOOBS_DISTRO}/System/
for f in bootcode.bin fixup.dat start.elf ; do for f in bootcode.bin fixup.dat start.elf; do
if [ -f "${INSTALL}/usr/share/bootloader/$f" ]; then if [ -f "${INSTALL}/usr/share/bootloader/$f" ]; then
cp -PR "${INSTALL}/usr/share/bootloader/$f" "${RELEASE_DIR}/${NOOBS_DISTRO}/System/" cp -PR "${INSTALL}/usr/share/bootloader/$f" "${RELEASE_DIR}/${NOOBS_DISTRO}/System/"
fi fi
@ -445,9 +457,10 @@ if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then
done done
# Create md5sum's # Create md5sum's
( cd ${RELEASE_DIR}/${NOOBS_DISTRO}/System; (
md5sum -t SYSTEM > SYSTEM.md5; cd ${RELEASE_DIR}/${NOOBS_DISTRO}/System
md5sum -t kernel.img > kernel.img.md5; md5sum -t SYSTEM >SYSTEM.md5
md5sum -t kernel.img >kernel.img.md5
) )
# Copy additional files # Copy additional files
@ -476,8 +489,9 @@ if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then
tar cf ${TARGET_IMG}/${IMAGE_NAME}-${1}.tar -C ${TARGET_IMG} ${IMAGE_NAME}-${1} tar cf ${TARGET_IMG}/${IMAGE_NAME}-${1}.tar -C ${TARGET_IMG} ${IMAGE_NAME}-${1}
# Create sha256 checksum of tarball # Create sha256 checksum of tarball
( cd ${TARGET_IMG} (
sha256sum ${IMAGE_NAME}-${1}.tar > ${IMAGE_NAME}-${1}.tar.sha256 cd ${TARGET_IMG}
sha256sum ${IMAGE_NAME}-${1}.tar >${IMAGE_NAME}-${1}.tar.sha256
) )
fi fi
@ -490,4 +504,3 @@ fi
if [ -n "$(ls -1 ${BUILD}/qa_checks/ 2>/dev/null)" ]; then if [ -n "$(ls -1 ${BUILD}/qa_checks/ 2>/dev/null)" ]; then
log_qa_check "qa_issues" "QA issues present, please fix!\n$(find ${BUILD}/qa_checks/* -type f ! -name qa_issues)\n" log_qa_check "qa_issues" "QA issues present, please fix!\n$(find ${BUILD}/qa_checks/* -type f ! -name qa_issues)\n"
fi fi

View File

@ -15,7 +15,7 @@ if [ -z "${PKG_NAME}" ]; then
die "$(print_color CLR_ERROR "${1}: no package.mk file found")" die "$(print_color CLR_ERROR "${1}: no package.mk file found")"
fi fi
if [ -z "${INSTALL}" ] ; then if [ -z "${INSTALL}" ]; then
die "error: '\${INSTALL}' not set! this script is not intended to be run manually" die "error: '\${INSTALL}' not set! this script is not intended to be run manually"
fi fi
@ -46,17 +46,17 @@ mkdir -p ${STAMPS_INSTALL}/${PKG_NAME}
${SCRIPTS}/build "${1}" "${PARENT_PKG}" ${SCRIPTS}/build "${1}" "${PARENT_PKG}"
if is_sequential_build || [ "${PARENT_PKG}" = "initramfs:target" ]; then if is_sequential_build || [ "${PARENT_PKG}" = "initramfs:target" ]; then
if [ "${TARGET}" = "target" ] ; then if [ "${TARGET}" = "target" ]; then
for p in ${PKG_DEPENDS_TARGET}; do for p in ${PKG_DEPENDS_TARGET}; do
${SCRIPTS}/install "${p}" "${PARENT_PKG}" ${SCRIPTS}/install "${p}" "${PARENT_PKG}"
done done
elif [ "${TARGET}" = "init" ] ; then elif [ "${TARGET}" = "init" ]; then
for p in ${PKG_DEPENDS_INIT}; do for p in ${PKG_DEPENDS_INIT}; do
${SCRIPTS}/install "${p}" "${PARENT_PKG}" ${SCRIPTS}/install "${p}" "${PARENT_PKG}"
done done
fi fi
fi fi
if [ "${TARGET}" = "init" ] ; then if [ "${TARGET}" = "init" ]; then
INSTALL=${BUILD}/initramfs INSTALL=${BUILD}/initramfs
fi fi
@ -70,11 +70,10 @@ acquire_update_lock image
mkdir -p ${INSTALL} mkdir -p ${INSTALL}
if [ "${TARGET}" = "target" ] ; then if [ "${TARGET}" = "target" ]; then
for PKG_TMP_DIR in ${PKG_DIR} \ for PKG_TMP_DIR in ${PKG_DIR} \
${PROJECT_DIR}/${PROJECT}/packages/${PKG_NAME} \ ${PROJECT_DIR}/${PROJECT}/packages/${PKG_NAME} \
${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/packages/${PKG_NAME} \ ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/packages/${PKG_NAME}; do
; do
[ -d ${PKG_TMP_DIR} ] || continue [ -d ${PKG_TMP_DIR} ] || continue
@ -141,7 +140,7 @@ if [ "${TARGET}" = "target" ] ; then
fi fi
# install # install
if [ "${TARGET}" = "target" ] ; then if [ "${TARGET}" = "target" ]; then
pkg_call_exists_opt pre_install && pkg_call pkg_call_exists_opt pre_install && pkg_call
fi fi
@ -169,7 +168,7 @@ if [ -n "${PKG_INSTALL}" -a -d "${PKG_INSTALL}" ]; then
-cf - . | tar -C "${INSTALL}" -xf - -cf - . | tar -C "${INSTALL}" -xf -
fi fi
if [ "${TARGET}" = "target" ] ; then if [ "${TARGET}" = "target" ]; then
pkg_call_exists_opt post_install && pkg_call pkg_call_exists_opt post_install && pkg_call
fi fi

View File

@ -80,8 +80,9 @@ if [ "${ADDON_JENKINS}" = "yes" ]; then
mkdir -p "${ADDON_JENKINS_DIR}" mkdir -p "${ADDON_JENKINS_DIR}"
cd ${ADDON_INSTALL_DIR} cd ${ADDON_INSTALL_DIR}
${TOOLCHAIN}/bin/7za a -mx0 -bsp0 -bso0 -tzip ${ADDON_JENKINS_DIR}/${ADDON_JENKINS_ADDON_NAME}.zip ${PKG_ADDON_ID}-${ADDONVER}.zip resources/ ${TOOLCHAIN}/bin/7za a -mx0 -bsp0 -bso0 -tzip ${ADDON_JENKINS_DIR}/${ADDON_JENKINS_ADDON_NAME}.zip ${PKG_ADDON_ID}-${ADDONVER}.zip resources/
( cd ${ADDON_JENKINS_DIR} (
sha256sum ${ADDON_JENKINS_ADDON_NAME}.zip > ${ADDON_JENKINS_ADDON_NAME}.zip.sha256 cd ${ADDON_JENKINS_DIR}
sha256sum ${ADDON_JENKINS_ADDON_NAME}.zip >${ADDON_JENKINS_ADDON_NAME}.zip.sha256
) )
build_msg "CLR_INFO" "*** creating ${ADDON_JENKINS_ADDON_NAME}.zip for Jenkins complete ***" build_msg "CLR_INFO" "*** creating ${ADDON_JENKINS_ADDON_NAME}.zip for Jenkins complete ***"
else else

View File

@ -20,12 +20,12 @@ fi
case $1 in case $1 in
--clean) --clean)
rm -rf "${BUILD_ROOT}/${BUILD_BASE}."*/* "${BUILD_ROOT}/${BUILD_BASE}."*/.stamps rm -rf "${BUILD_ROOT}/${BUILD_BASE}."*/* "${BUILD_ROOT}/${BUILD_BASE}."*/.stamps
;; ;;
--distclean) --distclean)
rm -rf "${BUILD_ROOT}/.ccache" "${BUILD_ROOT}/${BUILD_BASE}."* rm -rf "${BUILD_ROOT}/.ccache" "${BUILD_ROOT}/${BUILD_BASE}."*
;; ;;
*) *)
echo "error: ${0}: unsupported option on CLI; aborting" echo "error: ${0}: unsupported option on CLI; aborting"
exit 1 exit 1
;; ;;
esac esac

View File

@ -18,9 +18,9 @@ if [ -z "${SYSTEM_SIZE}" -o -z "${SYSTEM_PART_START}" ]; then
exit 1 exit 1
fi fi
DISK_START_PADDING=$(( (${SYSTEM_PART_START} + 2048 - 1) / 2048 )) DISK_START_PADDING=$(((${SYSTEM_PART_START} + 2048 - 1) / 2048))
DISK_GPT_PADDING=1 DISK_GPT_PADDING=1
DISK_SIZE=$(( ${DISK_START_PADDING} + ${SYSTEM_SIZE} + ${STORAGE_SIZE} + ${DISK_GPT_PADDING} )) DISK_SIZE=$((${DISK_START_PADDING} + ${SYSTEM_SIZE} + ${STORAGE_SIZE} + ${DISK_GPT_PADDING}))
DISK_BASENAME="${TARGET_IMG}/${IMAGE_NAME}" DISK_BASENAME="${TARGET_IMG}/${IMAGE_NAME}"
DISK="${DISK_BASENAME}.img" DISK="${DISK_BASENAME}.img"
@ -63,17 +63,17 @@ sync
# create partitions # create partitions
echo "image: creating partitions..." echo "image: creating partitions..."
SYSTEM_PART_END=$(( ${SYSTEM_PART_START} + (${SYSTEM_SIZE} * 1024 * 1024 / 512) - 1 )) SYSTEM_PART_END=$((${SYSTEM_PART_START} + (${SYSTEM_SIZE} * 1024 * 1024 / 512) - 1))
STORAGE_PART_START=$(( ${SYSTEM_PART_END} + 1 )) STORAGE_PART_START=$((${SYSTEM_PART_END} + 1))
STORAGE_PART_END=$(( ${STORAGE_PART_START} + (${STORAGE_SIZE} * 1024 * 1024 / 512) - 1 )) STORAGE_PART_END=$((${STORAGE_PART_START} + (${STORAGE_SIZE} * 1024 * 1024 / 512) - 1))
if [ "${DISK_LABEL}" = "gpt" ]; then if [ "${DISK_LABEL}" = "gpt" ]; then
parted -s "${DISK}" -a min unit s mkpart system fat32 ${SYSTEM_PART_START} ${SYSTEM_PART_END} parted -s "${DISK}" -a min unit s mkpart system fat32 ${SYSTEM_PART_START} ${SYSTEM_PART_END}
parted -s "${DISK}" -a min unit s mkpart storage ext4 ${STORAGE_PART_START} ${STORAGE_PART_END} parted -s "${DISK}" -a min unit s mkpart storage ext4 ${STORAGE_PART_START} ${STORAGE_PART_END}
parted -s "${DISK}" set 1 legacy_boot on parted -s "${DISK}" set 1 legacy_boot on
else else
parted -s "${DISK}" -a min unit s mkpart primary fat32 ${SYSTEM_PART_START} ${SYSTEM_PART_END} parted -s "${DISK}" -a min unit s mkpart primary fat32 ${SYSTEM_PART_START} ${SYSTEM_PART_END}
parted -s "${DISK}" -a min unit s mkpart primary ext4 ${STORAGE_PART_START} ${STORAGE_PART_END} parted -s "${DISK}" -a min unit s mkpart primary ext4 ${STORAGE_PART_START} ${STORAGE_PART_END}
parted -s "${DISK}" set 1 boot on parted -s "${DISK}" set 1 boot on
fi fi
sync sync
@ -86,7 +86,7 @@ fi
# create part2 to format and copy files # create part2 to format and copy files
echo "image: creating sparse file for part2..." echo "image: creating sparse file for part2..."
STORAGE_PART_COUNT=$(( ${STORAGE_PART_END} - ${STORAGE_PART_START} + 1 )) STORAGE_PART_COUNT=$((${STORAGE_PART_END} - ${STORAGE_PART_START} + 1))
sync sync
dd if="${DISK}" of="${LE_TMP}/part2.ext4" bs=512 count=0 seek="${STORAGE_PART_COUNT}" conv=fsync >"${SAVE_ERROR}" 2>&1 || show_error dd if="${DISK}" of="${LE_TMP}/part2.ext4" bs=512 count=0 seek="${STORAGE_PART_COUNT}" conv=fsync >"${SAVE_ERROR}" 2>&1 || show_error
@ -118,11 +118,11 @@ fi
# create part1 to format and copy files # create part1 to format and copy files
echo "image: creating sparse file for part1..." echo "image: creating sparse file for part1..."
SYSTEM_PART_COUNT=$(( ${SYSTEM_PART_END} - ${SYSTEM_PART_START} + 1 )) SYSTEM_PART_COUNT=$((${SYSTEM_PART_END} - ${SYSTEM_PART_START} + 1))
sync sync
dd if=/dev/zero of="${LE_TMP}/part1.fat" bs=512 count=0 seek="${SYSTEM_PART_COUNT}" conv=fsync >"${SAVE_ERROR}" 2>&1 || show_error dd if=/dev/zero of="${LE_TMP}/part1.fat" bs=512 count=0 seek="${SYSTEM_PART_COUNT}" conv=fsync >"${SAVE_ERROR}" 2>&1 || show_error
shopt -s expand_aliases # enables alias expansion in script shopt -s expand_aliases # enables alias expansion in script
alias mcopy='mcopy -i "${LE_TMP}/part1.fat" -o' alias mcopy='mcopy -i "${LE_TMP}/part1.fat" -o'
alias mmd='mmd -i "${LE_TMP}/part1.fat"' alias mmd='mmd -i "${LE_TMP}/part1.fat"'
@ -137,7 +137,7 @@ sync
if [ "${BOOTLOADER}" = "syslinux" ]; then if [ "${BOOTLOADER}" = "syslinux" ]; then
# create bootloader configuration # create bootloader configuration
echo "image: creating bootloader configuration..." echo "image: creating bootloader configuration..."
cat << EOF > "${LE_TMP}/syslinux.cfg" cat <<EOF >"${LE_TMP}/syslinux.cfg"
SAY Wait for installer mode to start automatically in 5 seconds... SAY Wait for installer mode to start automatically in 5 seconds...
SAY SAY
SAY Options SAY Options
@ -163,7 +163,7 @@ LABEL run
APPEND boot=UUID=${UUID_SYSTEM} disk=UUID=${UUID_STORAGE} portable quiet APPEND boot=UUID=${UUID_SYSTEM} disk=UUID=${UUID_STORAGE} portable quiet
EOF EOF
cat << EOF > "${LE_TMP}/grub.cfg" cat <<EOF >"${LE_TMP}/grub.cfg"
set timeout="25" set timeout="25"
set default="Installer" set default="Installer"
menuentry "Installer" { menuentry "Installer" {
@ -202,7 +202,7 @@ EOF
elif [ "${BOOTLOADER}" = "bcm2835-bootloader" ]; then elif [ "${BOOTLOADER}" = "bcm2835-bootloader" ]; then
# create bootloader configuration # create bootloader configuration
echo "image: creating bootloader configuration..." echo "image: creating bootloader configuration..."
cat << EOF > "${LE_TMP}/cmdline.txt" cat <<EOF >"${LE_TMP}/cmdline.txt"
boot=UUID=${UUID_SYSTEM} disk=UUID=${UUID_STORAGE} quiet ${EXTRA_CMDLINE} boot=UUID=${UUID_SYSTEM} disk=UUID=${UUID_STORAGE} quiet ${EXTRA_CMDLINE}
EOF EOF
@ -215,20 +215,20 @@ EOF
mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5" >"${SAVE_ERROR}" 2>&1 || show_error mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5" >"${SAVE_ERROR}" 2>&1 || show_error
mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5 >"${SAVE_ERROR}" 2>&1 || show_error mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5 >"${SAVE_ERROR}" 2>&1 || show_error
for f in bootcode.bin fixup.dat start.elf ; do for f in bootcode.bin fixup.dat start.elf; do
if [ -f "${RELEASE_DIR}/3rdparty/bootloader/$f" ]; then if [ -f "${RELEASE_DIR}/3rdparty/bootloader/$f" ]; then
mcopy "${RELEASE_DIR}/3rdparty/bootloader/$f" :: >"${SAVE_ERROR}" 2>&1 || show_error mcopy "${RELEASE_DIR}/3rdparty/bootloader/$f" :: >"${SAVE_ERROR}" 2>&1 || show_error
fi fi
done done
mcopy "${RELEASE_DIR}/3rdparty/bootloader/config.txt" :: >"${SAVE_ERROR}" 2>&1 || show_error mcopy "${RELEASE_DIR}/3rdparty/bootloader/config.txt" :: >"${SAVE_ERROR}" 2>&1 || show_error
for distro in "${RELEASE_DIR}/3rdparty/bootloader/distroconfig"*.txt ; do for distro in "${RELEASE_DIR}/3rdparty/bootloader/distroconfig"*.txt; do
if [ -f "${distro}" ]; then if [ -f "${distro}" ]; then
mcopy "${distro}" ::/"${distro##*/}" >"${SAVE_ERROR}" 2>&1 || show_error mcopy "${distro}" ::/"${distro##*/}" >"${SAVE_ERROR}" 2>&1 || show_error
fi fi
done done
for dtb in "${RELEASE_DIR}/3rdparty/bootloader/"*.dtb ; do for dtb in "${RELEASE_DIR}/3rdparty/bootloader/"*.dtb; do
if [ -f "${dtb}" ]; then if [ -f "${dtb}" ]; then
mcopy "${dtb}" ::/"${dtb##*/}" >"${SAVE_ERROR}" 2>&1 || show_error mcopy "${dtb}" ::/"${dtb##*/}" >"${SAVE_ERROR}" 2>&1 || show_error
fi fi
@ -255,7 +255,7 @@ elif [ "${BOOTLOADER}" = "u-boot" -a -n "${UBOOT_SYSTEM}" ]; then
mkdir -p "${LE_TMP}/extlinux" mkdir -p "${LE_TMP}/extlinux"
cat << EOF > "${LE_TMP}/extlinux/extlinux.conf" cat <<EOF >"${LE_TMP}/extlinux/extlinux.conf"
LABEL ${DISTRO} LABEL ${DISTRO}
LINUX /${KERNEL_NAME} LINUX /${KERNEL_NAME}
FDT /${DTB} FDT /${DTB}
@ -314,14 +314,14 @@ if [ "${PROJECT}" = "Generic" ]; then
qemu-img convert -O vmdk -o subformat=streamOptimized "${DISK_BASENAME}.tmp" "${DISK_BASENAME}.vmdk" qemu-img convert -O vmdk -o subformat=streamOptimized "${DISK_BASENAME}.tmp" "${DISK_BASENAME}.vmdk"
# generate ovf from template # generate ovf from template
sed -e "s,@DISTRO@,${DISTRO},g" -e "s,@DISK@,${IMAGE_NAME},g" \ sed -e "s,@DISTRO@,${DISTRO},g" -e "s,@DISK@,${IMAGE_NAME},g" \
-e "s,@OVA_SIZE@,$((${OVA_SIZE}*1024*1024)),g" \ -e "s,@OVA_SIZE@,$((${OVA_SIZE} * 1024 * 1024)),g" \
"${PROJECT_DIR}/${PROJECT}/config/ovf.template" > "${DISK_BASENAME}.ovf" "${PROJECT_DIR}/${PROJECT}/config/ovf.template" >"${DISK_BASENAME}.ovf"
# combine ovf and vmdk into official ova # combine ovf and vmdk into official ova
tar -C "${TARGET_IMG}" -cf "${DISK_BASENAME}.ova" "${IMAGE_NAME}.ovf" "${IMAGE_NAME}.vmdk" tar -C "${TARGET_IMG}" -cf "${DISK_BASENAME}.ova" "${IMAGE_NAME}.ovf" "${IMAGE_NAME}.vmdk"
# create sha256 checksum of ova image # create sha256 checksum of ova image
( (
cd "${TARGET_IMG}" cd "${TARGET_IMG}"
sha256sum "${IMAGE_NAME}.ova" > "${IMAGE_NAME}.ova.sha256" sha256sum "${IMAGE_NAME}.ova" >"${IMAGE_NAME}.ova.sha256"
) )
echo "image: cleaning up open virtual appliance..." echo "image: cleaning up open virtual appliance..."
# remove tmp ${DISK}, vmdk and ovf # remove tmp ${DISK}, vmdk and ovf
@ -335,7 +335,7 @@ pigz --best --force "${DISK}"
# create sha256 checksum of image # create sha256 checksum of image
( (
cd "${TARGET_IMG}" cd "${TARGET_IMG}"
sha256sum "${DISK##*/}.gz" > "${DISK##*/}.gz.sha256" sha256sum "${DISK##*/}.gz" >"${DISK##*/}.gz.sha256"
) )
# cleanup # cleanup

View File

@ -23,7 +23,7 @@ package_worker() {
num=0 num=0
for failed_items in ${oseqinfo//;/ }; do for failed_items in ${oseqinfo//;/ }; do
num=$((num + 1)) num=$((num + 1))
read -r ftask fpkgname fseq <<< "${failed_items//,/ }" read -r ftask fpkgname fseq <<<"${failed_items//,/ }"
if [ -n "${fseq}" ]; then if [ -n "${fseq}" ]; then
[ ${num} -eq 1 ] && echo "The following log(s) for already failed dependencies are available:" [ ${num} -eq 1 ] && echo "The following log(s) for already failed dependencies are available:"
@ -39,7 +39,7 @@ package_worker() {
[[ ${pkgname} =~ :target$ || "${pkgname//:/}" = "${pkgname}" ]] && istarget="yes" || istarget="no" [[ ${pkgname} =~ :target$ || "${pkgname//:/}" = "${pkgname}" ]] && istarget="yes" || istarget="no"
[[ "${MTADDONBUILD}" = "yes" && ( "${PKG_IS_ADDON}" = "yes" || "${PKG_IS_ADDON}" = "embedded" ) ]] && isaddon="yes" || isaddon="no" [[ "${MTADDONBUILD}" = "yes" && ("${PKG_IS_ADDON}" = "yes" || "${PKG_IS_ADDON}" = "embedded") ]] && isaddon="yes" || isaddon="no"
if [ "${isaddon}" = "yes" -a "${istarget}" = "yes" ]; then if [ "${isaddon}" = "yes" -a "${istarget}" = "yes" ]; then
if [ ${result} -eq 0 ]; then if [ ${result} -eq 0 ]; then
@ -58,7 +58,7 @@ package_worker() {
( (
flock --exclusive 95 flock --exclusive 95
[ ${result} -eq 0 ] && status="DONE" || status="FAIL" [ ${result} -eq 0 ] && status="DONE" || status="FAIL"
num=$(< "${THREAD_CONTROL}/progress") num=$(<"${THREAD_CONTROL}/progress")
mv "${THREAD_CONTROL}/progress" "${THREAD_CONTROL}/progress.prev" mv "${THREAD_CONTROL}/progress" "${THREAD_CONTROL}/progress.prev"
num=$((num + 1)) num=$((num + 1))
echo ${num} >"${THREAD_CONTROL}/progress" echo ${num} >"${THREAD_CONTROL}/progress"

View File

@ -51,6 +51,6 @@ fi
# pipefail: return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status # pipefail: return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status
set -o pipefail set -o pipefail
cat ${_CACHE_PACKAGE_GLOBAL} ${_CACHE_PACKAGE_LOCAL} | \ cat ${_CACHE_PACKAGE_GLOBAL} ${_CACHE_PACKAGE_LOCAL} |
xargs --max-args=64 --max-procs="$(nproc)" "$0" --worker xargs --max-args=64 --max-procs="$(nproc)" "$0" --worker
exit $? exit $?

View File

@ -20,7 +20,7 @@ pkg_lock "${PKG_NAME}" "unpack" "${PARENT_PKG}"
${SCRIPTS}/get "${PKG_NAME}" ${SCRIPTS}/get "${PKG_NAME}"
if [ -n "${PKG_DEPENDS_UNPACK}" ]; then if [ -n "${PKG_DEPENDS_UNPACK}" ]; then
export _unpack_recursive_cnt=$((_unpack_recursive_cnt+1)) export _unpack_recursive_cnt=$((_unpack_recursive_cnt + 1))
if [ ${_unpack_recursive_cnt} -gt 2 ]; then if [ ${_unpack_recursive_cnt} -gt 2 ]; then
die "unpack recursive limit hit: ${PKG_DEPENDS_UNPACK}, ${PARENT_PKG}" die "unpack recursive limit hit: ${PKG_DEPENDS_UNPACK}, ${PARENT_PKG}"
fi fi
@ -28,7 +28,7 @@ if [ -n "${PKG_DEPENDS_UNPACK}" ]; then
for p in ${PKG_DEPENDS_UNPACK}; do for p in ${PKG_DEPENDS_UNPACK}; do
${SCRIPTS}/unpack "${p}" "${PARENT_PKG}" ${SCRIPTS}/unpack "${p}" "${PARENT_PKG}"
done done
unset _unpack_recursive_cnt unset _unpack_recursive_cnt
fi fi
@ -39,11 +39,11 @@ mkdir -p ${BUILD}/build
# Perform a wildcard match on the package to ensure old versions are cleaned too # Perform a wildcard match on the package to ensure old versions are cleaned too
PKG_DEEPHASH= PKG_DEEPHASH=
for i in ${BUILD}/build/${PKG_NAME}-*; do for i in ${BUILD}/build/${PKG_NAME}-*; do
if [ -d ${i} -a -f "${i}/.libreelec-unpack" ] ; then if [ -d ${i} -a -f "${i}/.libreelec-unpack" ]; then
. "${i}/.libreelec-unpack" . "${i}/.libreelec-unpack"
if [ "${STAMP_PKG_NAME}" = "${PKG_NAME}" ]; then if [ "${STAMP_PKG_NAME}" = "${PKG_NAME}" ]; then
[ -z "${PKG_DEEPHASH}" ] && PKG_DEEPHASH=$(calculate_stamp) [ -z "${PKG_DEEPHASH}" ] && PKG_DEEPHASH=$(calculate_stamp)
if [ ! "${PKG_DEEPHASH}" = "${STAMP_PKG_DEEPHASH}" ] ; then if [ ! "${PKG_DEEPHASH}" = "${STAMP_PKG_DEEPHASH}" ]; then
${SCRIPTS}/clean "${PKG_NAME}" ${SCRIPTS}/clean "${PKG_NAME}"
fi fi
fi fi
@ -109,7 +109,7 @@ if [ -d "${SOURCES}/${PKG_NAME}" -o -d "${PKG_DIR}/sources" ] || pkg_call_exists
fi fi
# Add a tag to the unpacked folder before transferring into the shared build folder # Add a tag to the unpacked folder before transferring into the shared build folder
echo "INFO_PKG_NAME=\"${PKG_NAME}\"" > "${PKG_UNPACK_DIR}/.intermediate/.libreelec-package" echo "INFO_PKG_NAME=\"${PKG_NAME}\"" >"${PKG_UNPACK_DIR}/.intermediate/.libreelec-package"
# Restore original PKG_BUILD, and transfer the unpacked folder # Restore original PKG_BUILD, and transfer the unpacked folder
PKG_BUILD="${PKG_BUILD_ORIG}" PKG_BUILD="${PKG_BUILD_ORIG}"
@ -126,7 +126,7 @@ if [ -d "${SOURCES}/${PKG_NAME}" -o -d "${PKG_DIR}/sources" ] || pkg_call_exists
if [ "${TARGET_ARCH}" = "x86_64" ]; then if [ "${TARGET_ARCH}" = "x86_64" ]; then
PATCH_ARCH="x86" PATCH_ARCH="x86"
elif [ "${PKG_IS_KERNEL_PKG}" = "yes" ]; then elif [ "${PKG_IS_KERNEL_PKG}" = "yes" ]; then
PATCH_ARCH="${TARGET_KERNEL_PATCH_ARCH:-${TARGET_ARCH}}" PATCH_ARCH="${TARGET_KERNEL_PATCH_ARCH:-${TARGET_ARCH}}"
else else
PATCH_ARCH="${TARGET_PATCH_ARCH:-${TARGET_ARCH}}" PATCH_ARCH="${TARGET_PATCH_ARCH:-${TARGET_ARCH}}"
@ -148,15 +148,15 @@ if [ -d "${SOURCES}/${PKG_NAME}" -o -d "${PKG_DIR}/sources" ] || pkg_call_exists
fi fi
for i in ${PKG_DIR}/patches/*.patch \ for i in ${PKG_DIR}/patches/*.patch \
${PKG_DIR}/patches/${PATCH_ARCH}/*.patch \ ${PKG_DIR}/patches/${PATCH_ARCH}/*.patch \
${PATCH_DIRS_PKG} \ ${PATCH_DIRS_PKG} \
${PKG_DIR}/patches/${PKG_VERSION}/*.patch \ ${PKG_DIR}/patches/${PKG_VERSION}/*.patch \
${PKG_DIR}/patches/${PKG_VERSION}/${PATCH_ARCH}/*.patch \ ${PKG_DIR}/patches/${PKG_VERSION}/${PATCH_ARCH}/*.patch \
${PROJECT_DIR}/${PROJECT}/patches/${PKG_NAME}/*.patch \ ${PROJECT_DIR}/${PROJECT}/patches/${PKG_NAME}/*.patch \
${PROJECT_DIR}/${PROJECT}/patches/${PKG_NAME}/${PATCH_ARCH}/*.patch \ ${PROJECT_DIR}/${PROJECT}/patches/${PKG_NAME}/${PATCH_ARCH}/*.patch \
${PATCH_DIRS_PRJ} \ ${PATCH_DIRS_PRJ} \
${PROJECT_DIR}/${PROJECT}/patches/${PKG_NAME}/${PKG_VERSION}/*.patch \ ${PROJECT_DIR}/${PROJECT}/patches/${PKG_NAME}/${PKG_VERSION}/*.patch \
${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/patches/${PKG_NAME}/*.patch; do ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/patches/${PKG_NAME}/*.patch; do
thisdir="${i%/*}" thisdir="${i%/*}"
@ -191,9 +191,9 @@ if [ -d "${SOURCES}/${PKG_NAME}" -o -d "${PKG_DIR}/sources" ] || pkg_call_exists
if [ -f "${i}" ]; then if [ -f "${i}" ]; then
build_msg "CLR_APPLY_PATCH" "APPLY PATCH $(print_color "CLR_PATCH_DESC" "${PATCH_DESC}")" "${i#${ROOT}/}" build_msg "CLR_APPLY_PATCH" "APPLY PATCH $(print_color "CLR_PATCH_DESC" "${PATCH_DESC}")" "${i#${ROOT}/}"
if grep -qE '^GIT binary patch$|^rename from|^rename to' ${i}; then if grep -qE '^GIT binary patch$|^rename from|^rename to' ${i}; then
git apply --directory="${PKG_BUILD}" -p1 --verbose --whitespace=nowarn --unsafe-paths < ${i} >&${VERBOSE_OUT} git apply --directory="${PKG_BUILD}" -p1 --verbose --whitespace=nowarn --unsafe-paths <${i} >&${VERBOSE_OUT}
else else
patch -d "${PKG_BUILD}" -p1 < ${i} >&${VERBOSE_OUT} patch -d "${PKG_BUILD}" -p1 <${i} >&${VERBOSE_OUT}
fi fi
fi fi
done done
@ -201,13 +201,13 @@ if [ -d "${SOURCES}/${PKG_NAME}" -o -d "${PKG_DIR}/sources" ] || pkg_call_exists
pkg_call_exists_opt post_patch && pkg_call pkg_call_exists_opt post_patch && pkg_call
fi fi
if [ "${PKG_NAME}" != "configtools" ] ; then if [ "${PKG_NAME}" != "configtools" ]; then
for config in $(find "${PKG_BUILD}" -name config.guess | sed 's/config.guess//'); do for config in $(find "${PKG_BUILD}" -name config.guess | sed 's/config.guess//'); do
build_msg "CLR_FIXCONFIG" "FIXCONFIG" "${config}" build_msg "CLR_FIXCONFIG" "FIXCONFIG" "${config}"
[ -f "${config}/config.guess" -a -f ${TOOLCHAIN}/configtools/config.guess ] && \ [ -f "${config}/config.guess" -a -f ${TOOLCHAIN}/configtools/config.guess ] &&
cp -f ${TOOLCHAIN}/configtools/config.guess ${config} cp -f ${TOOLCHAIN}/configtools/config.guess ${config}
[ -f "${config}/config.sub" -a -f ${TOOLCHAIN}/configtools/config.sub ] && \ [ -f "${config}/config.sub" -a -f ${TOOLCHAIN}/configtools/config.sub ] &&
cp -f ${TOOLCHAIN}/configtools/config.sub ${config} cp -f ${TOOLCHAIN}/configtools/config.sub ${config}
done done
fi fi
@ -216,11 +216,11 @@ pkg_call_finish
if [ "${PKG_SECTION}" != "virtual" ]; then if [ "${PKG_SECTION}" != "virtual" ]; then
mkdir -p "${PKG_BUILD}" mkdir -p "${PKG_BUILD}"
echo "INFO_PKG_NAME=\"${PKG_NAME}\"" > "${PKG_BUILD}/.libreelec-package" echo "INFO_PKG_NAME=\"${PKG_NAME}\"" >"${PKG_BUILD}/.libreelec-package"
PKG_DEEPHASH=$(calculate_stamp) PKG_DEEPHASH=$(calculate_stamp)
for i in PKG_NAME PKG_DEEPHASH; do for i in PKG_NAME PKG_DEEPHASH; do
echo "STAMP_${i}=\"${!i}\"" >> ${STAMP} echo "STAMP_${i}=\"${!i}\"" >>${STAMP}
done done
fi fi