# opkbuild # lib/metadata # Functions for parsing and validating package metadata. # # 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 . [ -n "${_OB_METADATA_SM}" ] && return 0 _OB_METADATA_SM='true' ob_use 'metadata/@@METADATA@@' ob_validate_source_name() { _ob_local _obvsn_name if [ ${#} -eq 1 ]; then _obvsn_name="${1}" else _ob_return 125 return ${?} fi _ob_metadata_do 'validate_source_name' "${_obvsn_name}" _ob_return ${?} return ${?} } ob_validate_binary_name() { _ob_local _obvbn_name if [ ${#} -eq 1 ]; then _obvbn_name="${1}" else _ob_return 125 return ${?} fi _ob_metadata_do 'validate_binary_name' "${_obvbn_name}" _ob_return ${?} return ${?} } ob_parse_version() { _ob_local _obpv_opt _obpv_upstreamver_var _obpv_distrev_var _obpv_version while getopts 'u:d:' _obpv_opt; do case "${_obpv_opt}" in u) _obpv_upstreamver_var="${OPTARG}" if ! _ob_validate_var_name "${_obpv_upstreamver_var}"; then _ob_return 125 return ${?} fi ;; d) _obpv_distrev_var="${OPTARG}" if ! _ob_validate_var_name "${_obpv_distrev_var}"; then _ob_return 125 return ${?} fi ;; ?) _ob_return 125 return ${?} ;; esac done shift $(($OPTIND - 1)) if [ ${#} -eq 1 ]; then _obpv_version="${1}" else _ob_return 125 return ${?} fi if ! _ob_metadata_do 'validate_version' "${_obpv_version}"; then _ob_return 1 return ${?} fi if [ -n "${_obpv_upstreamver_var}" ]; then eval ${_obpv_upstreamver_var}="$(_ob_metadata_do 'get_upstreamver' \ "${_obpv_version}")" fi if [ -n "${_obpv_distrev_var}" ]; then eval ${_obpv_distrev_var}="$(_ob_metadata_do 'get_distrev' \ "${_obpv_version}")" fi _ob_return 0 return ${?} } ob_get_system_arch() { _ob_local if [ ${#} -gt 0 ]; then _ob_return 125 return ${?} fi _ob_metadata_do 'get_system_arch' _ob_return ${?} return ${?} } ob_get_system_plat() { _ob_local if [ ${#} -gt 0 ]; then _ob_return 125 return ${?} fi _ob_metadata_do 'get_system_plat' _ob_return ${?} return ${?} } ob_match_arch() { _ob_local _obma_arch _obma_arch_field _obma_a \ _obma_a_pat_norm _obma_a_pat_hyph if [ ${#} -eq 2 ]; then _obma_arch="${1}" _obma_arch_field="${2}" else _ob_return 125 return ${?} fi for _obma_a in ${_obma_arch_field}; do # "all" == "all" if [ "${_obma_arch}" = 'all' ]; then if [ "${_obma_a}" = 'all' ]; then _ob_return 0 return ${?} else continue fi fi # "foo-bar-baz" == "any" if [ "${_obma_a}" = 'any' ]; then _ob_return 0 return ${?} fi # Generate an ERE to match hyphenated architectures. _obma_a_ere="$(echo "${_obma_a}" | \ sed 's/^any-/[^-]+-/;s/-any-/-[^-]+-/g;s/-any$/-[^-]+/g')" # "foo-bar-baz" == "foo-any-any" if echo "${_obma_arch}" | grep -E "${_obma_a_ere}" >/dev/null 2>&1; then _ob_return 0 return ${?} fi done # Nothing matched. _ob_return 1 return ${?} } ob_match_plat() { _ob_local _obmp_plat _obmp_plat_field _obmp_p if [ ${#} -eq 2 ]; then _obmp_plat="${1}" _obmp_plat_field="${2}" else _ob_return 125 return ${?} fi for _obmp_p in ${_obmp_plat_field}; do if [ "${_obmp_plat}" = 'all' ]; then if [ "${_obmp_p}" = 'all' ]; then _ob_return 0 return ${?} else continue fi fi if [ "${_obmp_p}" = 'any' ]; then _ob_return 0 return ${?} fi done _ob_return 1 return ${?} } ob_get_system_path() { _ob_local _obgsp_path_id if [ ${#} -ge 1 ]; then _obgsp_path_id="${1}" shift 1 else _ob_return 125 return ${?} fi _ob_metadata_do 'get_system_path' "${_obgsp_path_id}" "${@}" _ob_return ${?} return ${?} } _ob_metadata_do() { _ob_local _obmd_func _obmd_func="${1}" shift 1 "_ob_${_obmd_func}_@@METADATA@@" "${@}" _ob_return ${?} return ${?} }