#!@@SH@@ # # opkbuild # src/opkbuild # Build opkg packages. # # Copyright (C) 2012 Patrick "P. J." McDermott # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . . '@@LIBOPKBUILD@@/load.sm' ob_use locale ob_use output ob_use package ob_use metadata export OPK_SOURCE= export OPK_SOURCE_VERSION= export OPK_SOURCE_VERSION_UPSTREAM= export OPK_BINARY_VERSION= export OPK_PACKAGES= export OPK_BUILD_ARCH= export OPK_BUILD_ARCH_CPU= export OPK_BUILD_ARCH_KERNEL= export OPK_BUILD_ARCH_LIBS= export OPK_BUILD_PLAT= export OPK_BUILD_ARCH_GNU= export OPK_HOST_ARCH= export OPK_HOST_ARCH_CPU= export OPK_HOST_ARCH_KERNEL= export OPK_HOST_ARCH_LIBS= export OPK_HOST_PLAT= export OPK_HOST_ARCH_GNU= opt_build= opt_target= opt_host_arch= opt_host_plat= opt_check_build_deps= opt_clean= opt_uid0_cmd= main() { ob_set_text_domain 'opkbuild' get_options "${@}" shift $(($OPTIND - 1)) if [ ${#} -ne 0 ]; then usage exit 1 fi test_uid0_cmd setup_arch_plat make_work_area setup_package if [ "${opt_build}" = 'source' -o "${opt_build}" = 'full' ]; then build_source fi if [ "${opt_build}" != 'source' ]; then print_arch_stats "${opt_check_build_deps}" && '@@BINDIR@@/ob-checkbuilddeps' setup_build build clean fi } usage() { printf "$(ob_get_msg 'usage')\n" 'opkbuild' } help() { usage printf '%s\n' "$(ob_get_msg 'help')" } version() { printf "$(ob_get_msg 'version')\n" \ 'opkbuild' '@@PACKAGE_NAME@@' '@@PACKAGE_VERSION@@' } get_options() { # Parse and handle command-line options. while getopts 'bBASFT:a:P:DdCcr:hV' opt; do case "${opt}" in b) if [ -n "${opt_build}" ]; then ob_error "$(ob_get_msg 'bbasf_mutex')" fi opt_build='binary' ;; B) if [ -n "${opt_build}" ]; then ob_error "$(ob_get_msg 'bbasf_mutex')" fi opt_build='binary-arch' ;; A) if [ -n "${opt_build}" ]; then ob_error "$(ob_get_msg 'bbasf_mutex')" fi opt_build='binary-indep' ;; S) if [ -n "${opt_build}" ]; then ob_error "$(ob_get_msg 'bbasf_mutex')" fi opt_build='source' ;; F) if [ -n "${opt_build}" ]; then ob_error "$(ob_get_msg 'bbasf_mutex')" fi opt_build='full' ;; T) opt_target="${OPTARG}" ;; a) opt_host_arch="${OPTARG}" ;; P) opt_host_plat="${OPTARG}" ;; D) opt_check_build_deps='true' ;; d) opt_check_build_deps='false' ;; C) opt_clean='true' ;; c) opt_clean='false' ;; r) opt_uid0_cmd="${OPTARG}" ;; h) help exit 0 ;; V) version exit 0 ;; ?) ob_error "$(ob_get_msg 'bad_opt')" "${opt}" exit 1 ;; esac done # Set default option values. [ -z "${opt_build}" ] && opt_build='full' [ -z "${opt_check_build_deps}" ] && opt_check_build_deps='true' [ -z "${opt_uid0_cmd}" ] && opt_uid0_cmd='fakeroot' # Set cleaning behavior. if [ -n "${opt_target}" ]; then [ -z "${opt_clean}" ] && opt_clean='false' else [ -z "${opt_clean}" ] && opt_clean='true' fi } test_uid0_cmd() { # Verify that the UID 0 command works. test_uid=$("${opt_uid0_cmd}" id -u) if [ ${?} -ne 0 ]; then ob_error "$(ob_get_msg 'uid0_cmd_not_found')" "${opt_uid0_cmd}" fi if [ ${test_uid} -ne 0 ]; then ob_error "$(ob_get_msg 'uid0_cmd_bad_uid')" "${opt_uid0_cmd}" fi } setup_arch_plat() { ob_info "$(ob_get_msg 'setup_arch_plat')" OPK_BUILD_ARCH="$(ob_get_system_arch)" OPK_BUILD_PLAT="$(ob_get_system_plat)" if [ -n "${opt_host_arch}" ]; then OPK_HOST_ARCH="${opt_host_arch}" else OPK_HOST_ARCH="${OPK_BUILD_ARCH}" fi if [ -n "${opt_host_plat}" ]; then OPK_HOST_PLAT="${opt_host_plat}" else OPK_HOST_PLAT="${OPK_BUILD_PLAT}" fi IFS='-' read OPK_BUILD_ARCH_CPU OPK_BUILD_ARCH_KERNEL OPK_BUILD_ARCH_LIBS \ <