# Install build-time and run-time platform configuration files # # Copyright (C) 2012 Patrick McDermott # # This file is part of opkbuild. # # opkbuild 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. # # opkbuild 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 opkbuild. If not, see . set -eu copy_config() { local list="${1}" local dest_base="${2}" shift 2 local src= local dest= local dir= local src_base= local platconf_dir= local pkg_ver= while read -r src dest; do if [ -z "${src}" ] || [ -z "${dest}" ]; then ob_error "$(ob_get_msg 'bad_config_syntax')" "${list}" return 1 fi # Make sure the destination directory exists. dir="$(dirname -- "${dest_base}/${dest}")" if ! mkdir -p -- "${dir}"; then ob_error "$(ob_get_msg 'cant_make_config_dest_dir')" \ "${dir}" return 1 fi # Find the config package files. src_base='' platconf_dir="$(ob_get_system_path 'platconf' \ "${OPK_HOST_PLAT}")" if [ -d "${platconf_dir}/${OPK_SOURCE}/" ]; then src_base="${platconf_dir}/${OPK_SOURCE}/" else pkg_ver="${OPK_SOURCE}_${OPK_SOURCE_VERSION_UPSTREAM}" for dir in "${platconf_dir}/${OPK_SOURCE}_"*/; do case "${platconf_dir}/${pkg_ver}/" in ${dir}) src_base="${dir}" break esac done fi if [ -z "${src_base}" ]; then # This shouldn't happen unless the package maintainer # neglected to add the config package to the package's # Build-Depends field. ob_error "$(ob_get_msg 'no_config_dir')" return 1 fi # Copy the config file(s). ob_info "$(ob_get_msg 'copying_config_file')" "${src}" "${dest}" if ! cp -p -- "${src_base}/${src}" "${dest_base}/${dest}"; then ob_error "$(ob_get_msg 'cant_copy_config_file')" return 1 fi done <"../${list}" return 0 } main() { local copied= local pkg= if ! ob_set_text_domain 'opkbuild'; then printf '%s: Error: Failed to load locale messages\n' \ "${0##*/}" >&2 return 1 fi ob_init_package '..' || return 1 copied='false' if [ -r '../platconf' ]; then copy_config 'platconf' '.' copied='true' fi for pkg in ${OPK_PACKAGES}; do if [ -r "../${pkg}.pkg/platconf" ]; then copy_config "${pkg}.pkg/platconf" "${pkg}.data" copied='true' fi done "${copied}" || ob_info "$(ob_get_msg 'no_plat_config')" return 0 }