# opkbuild # lib/package/2.sh # Functions for retrieving metadata from packages in SPF 2.0. # # 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 2 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 . [ x"${_OB_PACKAGE_2_SM+set}" = x'set' ] && return 0 _OB_PACKAGE_2_SM=1 ob_use control ob_use changelog _OB_SOURCE_FIELDS_REQUIRED_2='Maintainer' _OB_SOURCE_FIELDS_OPTIONAL_2='Build-Depends Homepage' _OB_BINARY_FIELDS_REQUIRED_2='Architecture Platform Description' _OB_BINARY_FIELDS_OPTIONAL_2='Essential Depends Recommends Suggests '\ 'Pre-Depends Conflicts Provides Replaces' _OB_CURRENT_PACKAGE_2= _ob_parse_package_metadata_2() { local pkg= ob_parse_control "${_OB_PACKAGE_DIR}/control" _ob_srcfield_2 \ "${_OB_SOURCE_FIELDS_REQUIRED_2}" "${_OB_SOURCE_FIELDS_OPTIONAL_2}" ob_parse_changelog "${_OB_PACKAGE_DIR}/changelog" _ob_change_2 for pkg in $(ob_get_binary_packages); do _OB_CURRENT_PACKAGE_2="${pkg}" ob_parse_control "${_OB_PACKAGE_DIR}/${pkg}.pkg/control" \ _ob_binfield_2 \ "${_OB_BINARY_FIELDS_REQUIRED_2}" "${_OB_BINARY_FIELDS_OPTIONAL_2}" done return 0 } _ob_get_binary_packages_2() { local pkgs= local pkg_control= for pkg_control in "${_OB_PACKAGE_DIR}/"*'.pkg/control'; do if [ ! -f "${pkg_control}" ]; then continue fi pkg_control="${pkg_control%.pkg/control}" pkg_control="${pkg_control##*/}" ob_validate_binary_name "${pkg_control}" pkgs="${pkgs} ${pkg_control}" done _ob_set_binary_packages "${pkgs}" return 0 } _ob_srcfield_2() { _ob_set_source_parameter "${OB_CONTROL_NAME}" "${OB_CONTROL_VALUE}" return 0 } _ob_change_2() { _ob_set_source_parameter Source "${OB_CHANGELOG_SOURCE}" _ob_set_source_parameter Version "${OB_CHANGELOG_VERSION}" _ob_set_source_parameter Distribution "${OB_CHANGELOG_DISTRIBUTION}" _ob_set_source_parameter Changes "${OB_CHANGELOG_CHANGES}" _ob_set_source_parameter Uploader "${OB_CHANGELOG_MAINTAINER}" _ob_set_source_parameter Date "${OB_CHANGELOG_DATE}" # Parse only the first changelog entry. return 1 } _ob_binfield_2() { _ob_set_binary_parameter "${_OB_CURRENT_PACKAGE_2}" "${OB_CONTROL_NAME}" \ "${OB_CONTROL_VALUE}" return 0 } _ob_get_doc_package_2() { local pkg= local doc_pkg= for pkg in $(ob_get_binary_packages); do if [ -r "${_OB_PACKAGE_DIR}/${pkg}.pkg/docs" ]; then if [ -n "${doc_pkg}" ]; then return 1 fi doc_pkg="${pkg}" fi done if [ -z "${doc_pkg}" ]; then return 1 fi echo "${doc_pkg}" return 0 } _ob_get_doc_files_2() { local arch= local plat= local doc_pkg= arch="${1}" plat="${2}" doc_pkg="$(_ob_get_doc_package_2)" cat <<-EOF ../copyright ../changelog changelog.dist ../README README.dist EOF cat "${_OB_PACKAGE_DIR}/${doc_pkg}.pkg/docs" return 0 } _ob_set_package_substvars_2() { local pkg= if [ ${#} -eq 1 ]; then pkg="${1}" else return 125 fi if [ -f "${_OB_PACKAGE_DIR}/substvars" ]; then ob_parse_control "${_OB_PACKAGE_DIR}/substvars" _ob_substvar_2 fi ob_set_substvar 'Source-Version' "$(ob_get_source_parameter 'Version')" ob_set_substvar 'Binary-Version' "$(ob_get_source_parameter 'Version')" ob_set_substvar 'Host-Arch' "${OPK_HOST_ARCH}" ob_set_substvar 'Host-Plat' "${OPK_HOST_PLAT}" return 0 } _ob_substvar_2() { ob_set_substvar "${OB_CONTROL_NAME}" "${OB_CONTROL_VALUE}" return 0 }