diff options
Diffstat (limited to 'lib/include.sh')
-rw-r--r-- | lib/include.sh | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/lib/include.sh b/lib/include.sh deleted file mode 100644 index 42ccf24..0000000 --- a/lib/include.sh +++ /dev/null @@ -1,181 +0,0 @@ -# pro-archman -# lib/include.sh -# Functions for including changes -# -# Copyright (C) 2013, 2014 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 <http://www.gnu.org/licenses/>. - -[ "x${_INCLUDE_SM+set}" = 'xset' ] && return 0 -_INCLUDE_SM=1 - -use control -use db -use locale -use output - -_INCLUDE_CHANGES_FIELDS='Format Source Binary Version Architecture Platform -Distribution Maintainer Changed-By Date Description Changes Files' - -_include_format= -_include_source= -_include_version= -_include_distribution= -_include_files= - -include_changes() -{ - local changes="${1}" - local chan= - local dist= - local source= - local srcver= - local script= - local bvaps= - local binver= - local arch= - local plat= - local old_ver= - local files= - local size= - local sect= - local file= - local pkg= - local pool_file= - - parse_control "${changes}" _include_changes_field \ - "${_INCLUDE_CHANGES_FIELDS}" '' - if [ "x${_include_format}" != 'x1.0' ]; then - error 2 "$(get_msg 'include_unknown_changes_format')" \ - "${changes}" "${_include_format}" - fi - chan="${conf_incoming_channel}" - dist="${_include_distribution}" - source="${_include_source}" - srcver="${_include_version}" - - info "$(get_msg 'include_including')" "${source}" "${srcver}" \ - "${chan}" "${dist}" - - if [ "x${_include_files}" = 'x' ]; then - warn "$(get_msg 'include_no_files')" - return 0 - fi - - # List of (binver, arch, plat) tuples to be checked later. - script='s/[0-9][0-9]* [^ ][^ ]* [^_]*_\([^_]*\)' - script="${script}"'_\([^_]*\)_\([^_]*\)\.opk/\1 \2 \3/p' - bvaps="$(printf '%s\n' "${_include_files}" | \ - sed -n "${script}" | LC_COLLATE='C' sort | uniq)" - - # Pre-inclusion database sanity checks and updates: check for an - # existing version of the package in the suite. - old_ver="$(db_get_srcver "${chan}" "${dist}" "${source}")" - if [ "x${old_ver}" = 'x' ]; then - # New package. - db_set_srcver "${chan}" "${dist}" "${source}" "${srcver}" - elif [ "x${old_ver}" != "x${_include_version}" ]; then - # New source version. Remove the old source package from the - # suite. - remove_source_from_suite "${chan}" "${dist}" "${source}" - db_set_srcver "${chan}" "${dist}" "${source}" "${srcver}" - else - # Same source version. Hopefully different binary version, - # architecture, and/or platform. Make sure such "bvap" tuples - # are new. - while read -r binver arch plat; do - old_ver="$(db_get_binver "${chan}" "${dist}" \ - "${arch}" "${plat}" "${source}")" - if [ "x${old_ver}" = "x${binver}" ]; then - error 2 "$(get_msg 'include_bvap_exists')" \ - "${binver}" "${arch}" "${plat}" - fi - done <<-EOF - ${bvaps} - EOF - fi - - # For each (binver, arch, plat) tuple in the package changes: - # * Remove old binary packages of the same arch and plat from the - # suite. - # * Set the new binary version of packages of the arch and plat in the - # suite. - # * Set the reference count for the tuple to 1. - # This is done separately from the next loop because it must be done - # exactly once for each bvap tuple. The next loop can hit any given - # bvap tuple multiple times. - while read -r binver arch plat; do - old_ver="$(db_get_binver "${chan}" "${dist}" \ - "${arch}" "${plat}" "${source}")" - if [ "x${old_ver}" != 'x' ]; then - remove_packages_from_suite_archplat "${chan}" \ - "${dist}" "${arch}" "${plat}" "${source}" - fi - db_set_binver "${chan}" "${dist}" "${arch}" "${plat}" \ - "${source}" "${binver}" - db_inc_references "${arch}" "${plat}" "${source}" "${binver}" \ - >/dev/null - done <<-EOF - ${bvaps} - EOF - - # Include each binary package. - files='' - while read -r size sect file; do - if [ "x${file##[ ]}" = 'x' ]; then - continue - fi - IFS='_' read -r pkg binver arch plat <<-EOF - ${file%.opk} - EOF - db_add_package "${arch}" "${plat}" "${source}" "${binver}" \ - "${size}" "${sect}" "${pkg}" - pool_file="pool/$(hash_name "${source}")/${source}" - pool_file="${pool_file}/${pkg}_${binver}_${arch}_${plat}.opk" - file="$(dirname "${changes}")/${file}" - files="${files} ${file}" - cp -p "${file}" "${base_dir}/${pool_file}" - feed_add_package "${chan}" "${dist}" "${arch}" "${plat}" \ - "${sect}" "${pkg}" "${size}" "${pool_file}" - done <<-EOF - ${_include_files} - EOF - - printf '%s\n' ${files} - return 0 -} - -_include_changes_field() -{ - local name="${1}" - local value="${2}" - - case "${name}" in - 'Format') - _include_format="${value}" - ;; - 'Source') - _include_source="${value}" - ;; - 'Version') - _include_version="${value}" - ;; - 'Distribution') - _include_distribution="${value}" - ;; - 'Files') - _include_files="${value}" - ;; - esac -} |