#!/bin/bash # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (C) 2010-2011 Roman Weber (roman@openelec.tv) # Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) . config/options "${1}" if [ -z "${1}" ]; then die "usage: ${0} package_name [parent_pkg]" fi if [ -z "${PKG_NAME}" ]; then die "$(print_color CLR_ERROR "${1}: no package.mk file found")" fi if [ -z "${INSTALL}" ] ; then die "error: '\${INSTALL}' not set! this script is not intended to be run manually" fi if [ -n "${PKG_ARCH}" ]; then listcontains "${PKG_ARCH}" "!${TARGET_ARCH}" && exit 0 listcontains "${PKG_ARCH}" "${TARGET_ARCH}" || listcontains "${PKG_ARCH}" "any" || exit 0 fi # set defaults if [ "${1//:/}" != "${1}" ]; then TARGET="${1#*:}" else TARGET= fi [ -z "${TARGET}" ] && TARGET="target" PARENT_PKG="${2:-${PKG_NAME}:${TARGET}}" pkg_lock "${PKG_NAME}:${TARGET}" "install" "${PARENT_PKG}" STAMP=${STAMPS_INSTALL}/${PKG_NAME}/install_${TARGET} if [ -f ${STAMP} ]; then pkg_lock_status "UNLOCK" "${PKG_NAME}:${TARGET}" "install" "already installed" exit 0 fi mkdir -p ${STAMPS_INSTALL}/${PKG_NAME} ${SCRIPTS}/build "${1}" "${PARENT_PKG}" if is_sequential_build || [ "${PARENT_PKG}" = "initramfs:target" ]; then if [ "${TARGET}" = "target" ] ; then for p in ${PKG_DEPENDS_TARGET}; do ${SCRIPTS}/install "${p}" "${PARENT_PKG}" done elif [ "${TARGET}" = "init" ] ; then for p in ${PKG_DEPENDS_INIT}; do ${SCRIPTS}/install "${p}" "${PARENT_PKG}" done fi fi if [ "${TARGET}" = "init" ] ; then INSTALL=${BUILD}/initramfs fi pkg_lock_status "ACTIVE" "${PKG_NAME}:${TARGET}" "install" build_msg "CLR_INSTALL" "INSTALL" "${PKG_NAME} $(print_color CLR_TARGET "(${TARGET})")" "indent" print_qa_checks acquire_update_lock image mkdir -p ${INSTALL} if [ "${TARGET}" = "target" ] ; then for PKG_TMP_DIR in ${PKG_DIR} \ ${PROJECT_DIR}/${PROJECT}/packages/${PKG_NAME} \ ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/packages/${PKG_NAME} \ ; do [ -d ${PKG_TMP_DIR} ] || continue if [ -d ${PKG_TMP_DIR}/profile.d ]; then mkdir -p ${INSTALL}/etc/profile.d cp ${PKG_TMP_DIR}/profile.d/*.conf ${INSTALL}/etc/profile.d fi if [ -d ${PKG_TMP_DIR}/tmpfiles.d ]; then mkdir -p ${INSTALL}/usr/lib/tmpfiles.d cp ${PKG_TMP_DIR}/tmpfiles.d/*.conf ${INSTALL}/usr/lib/tmpfiles.d fi if [ -d ${PKG_TMP_DIR}/system.d ]; then mkdir -p ${INSTALL}/usr/lib/systemd/system cp -Pr ${PKG_TMP_DIR}/system.d/*.* ${INSTALL}/usr/lib/systemd/system fi if [ -d ${PKG_TMP_DIR}/udev.d ]; then mkdir -p ${INSTALL}/usr/lib/udev/rules.d cp ${PKG_TMP_DIR}/udev.d/*.rules ${INSTALL}/usr/lib/udev/rules.d fi if [ -d ${PKG_TMP_DIR}/hwdb.d ]; then mkdir -p ${INSTALL}/usr/lib/udev/hwdb.d cp ${PKG_TMP_DIR}/hwdb.d/*.hwdb ${INSTALL}/usr/lib/udev/hwdb.d fi if [ -d ${PKG_TMP_DIR}/sleep.d ]; then mkdir -p ${INSTALL}/usr/lib/systemd/system-sleep cp ${PKG_TMP_DIR}/sleep.d/* ${INSTALL}/usr/lib/systemd/system-sleep fi if [ -d ${PKG_TMP_DIR}/sleep.d.serial ]; then mkdir -p ${INSTALL}/usr/lib/systemd/system-sleep.serial cp ${PKG_TMP_DIR}/sleep.d.serial/* ${INSTALL}/usr/lib/systemd/system-sleep.serial fi if [ -d ${PKG_TMP_DIR}/sysctl.d ]; then mkdir -p ${INSTALL}/usr/lib/sysctl.d cp ${PKG_TMP_DIR}/sysctl.d/*.conf ${INSTALL}/usr/lib/sysctl.d fi if [ -d ${PKG_TMP_DIR}/modules-load.d ]; then mkdir -p ${INSTALL}/usr/lib/modules-load.d cp ${PKG_TMP_DIR}/modules-load.d/*.conf ${INSTALL}/usr/lib/modules-load.d fi if [ -d ${PKG_TMP_DIR}/sysconf.d ]; then mkdir -p ${INSTALL}/etc/sysconf.d cp ${PKG_TMP_DIR}/sysconf.d/*.conf ${INSTALL}/etc/sysconf.d fi if [ -d ${PKG_TMP_DIR}/debug.d ]; then mkdir -p ${INSTALL}/usr/share/debugconf cp ${PKG_TMP_DIR}/debug.d/*.conf ${INSTALL}/usr/share/debugconf fi if [ -d ${PKG_TMP_DIR}/modprobe.d ]; then mkdir -p ${INSTALL}/usr/lib/modprobe.d cp ${PKG_TMP_DIR}/modprobe.d/*.conf ${INSTALL}/usr/lib/modprobe.d fi done fi # install if [ "${TARGET}" = "target" ] ; then pkg_call_exists_opt pre_install && pkg_call fi if [ -n "${PKG_INSTALL}" -a -d "${PKG_INSTALL}" ]; then tar \ -C "${PKG_INSTALL}" \ --exclude=./usr/local/include \ --exclude=./usr/local/lib/cmake \ --exclude=./usr/local/lib/pkgconfig \ --exclude=./usr/local/share/aclocal \ --exclude=./usr/local/share/pkgconfig \ --exclude=./usr/include \ --exclude=./usr/lib/cmake \ --exclude=./usr/lib/pkgconfig \ --exclude=./usr/share/aclocal \ --exclude=./usr/share/pkgconfig \ --exclude=./include \ --exclude=./lib/cmake \ --exclude=./lib/pkgconfig \ --exclude=./share/aclocal \ --exclude=./share/pkgconfig \ --exclude=./.* \ --exclude='*.a' \ --exclude='*.la' \ -cf - . | tar -C "${INSTALL}" -xf - fi if [ "${TARGET}" = "target" ] ; then pkg_call_exists_opt post_install && pkg_call fi release_update_lock touch ${STAMP} pkg_lock_status "UNLOCK" "${PKG_NAME}:${TARGET}" "install" "installed"