summaryrefslogtreecommitdiffstats
path: root/lib/include.sh
diff options
context:
space:
mode:
Diffstat (limited to 'lib/include.sh')
-rw-r--r--lib/include.sh181
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
-}