summaryrefslogtreecommitdiffstats
path: root/lib/index.sh
diff options
context:
space:
mode:
Diffstat (limited to 'lib/index.sh')
-rw-r--r--lib/index.sh200
1 files changed, 0 insertions, 200 deletions
diff --git a/lib/index.sh b/lib/index.sh
deleted file mode 100644
index 8749897..0000000
--- a/lib/index.sh
+++ /dev/null
@@ -1,200 +0,0 @@
-# pro-archman
-# lib/index.sh
-# Functions for working with package feed indices
-#
-# Copyright (C) 2013 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${_INDEX_SM+set}" = 'xset' ] && return 0
-_INDEX_SM=1
-
-use locale
-use output
-use dir
-
-feed_add_package()
-{
- local chan="${1}"
- local dist="${2}"
- local arch="${3}"
- local plat="${4}"
- local sect="${5}"
- local pkg="${6}"
- local size="${7}"
- local file="${8}"
- local pkg_hash=
- local feed_hash_idx=
- local old_dir=
-
- info_v "$(get_msg 'feed_adding')" "${pkg}" \
- "${chan}" "${dist}" "${arch}" "${plat}" "${sect}"
-
- pkg_hash="$(hash_name "${pkg}")"
-
- # Add package metadata to feed hash index.
- feed_hash_idx="${base_dir}/feeds/${chan}/${dist}/${arch}/${plat}"
- feed_hash_idx="${feed_hash_idx}/${sect}/.db/${pkg_hash}"
- mkdir -p "${feed_hash_idx}/info"
- tar -xzOf "${base_dir}/${file}" 'control.tar.gz' | \
- tar -xzO './control' >"${feed_hash_idx}/info/${pkg}.control"
- printf 'Filename: %s\nSize: %s\nMD5sum: %s\nSHA256sum: %s\n\n' \
- "../../../../../../${file}" "${size}" \
- "$(md5sum "${base_dir}/${file}" | sed 's/ .*$//')" \
- "$(sha256sum "${base_dir}/${file}" | sed 's/ .*$//')" \
- >>"${feed_hash_idx}/info/${pkg}.control"
-
- # Mark feed index fragment as outdated.
- old_dir="${base_dir}/feeds/.db/${chan}_${dist}/${arch}_${plat}"
- old_dir="${old_dir}/${sect}"
- mkdir -p "${old_dir}"
- >"${old_dir}/${pkg_hash}"
-
- return 0
-}
-
-feed_remove_package()
-{
- local chan="${1}"
- local dist="${2}"
- local arch="${3}"
- local plat="${4}"
- local sect="${5}"
- local pkg="${6}"
- local pkg_hash=
- local feed_hash_idx=
- local old_dir=
-
- info_v "$(get_msg 'feed_removing')" "${pkg}" \
- "${chan}" "${dist}" "${arch}" "${plat}" "${sect}"
-
- pkg_hash="$(hash_name "${pkg}")"
-
- # Remove package metadata from feed hash index.
- feed_hash_idx="${base_dir}/feeds/${chan}/${dist}/${arch}/${plat}"
- feed_hash_idx="${feed_hash_idx}/${sect}/.db/${pkg_hash}"
- rm -f "${feed_hash_idx}/info/${pkg}.control"
- try_rmdir "${feed_hash_idx}/info"
-
- # Mark feed index fragment as outdated.
- old_dir="${base_dir}/feeds/.db/${chan}_${dist}/${arch}_${plat}"
- old_dir="${old_dir}/${sect}"
- mkdir -p "${old_dir}"
- >"${old_dir}/${pkg_hash}"
-
- return 0
-}
-
-update_feeds()
-{
- local suite_dirent=
- local chan=
- local dist=
- local suite=
- local archplat_dirent=
- local arch=
- local plat=
- local archplat=
- local sect_dirent=
- local sect=
- local manifest_entry=
- local hash_dirent=
- local idx=
-
- info_v "$(get_msg 'updating_feeds')"
-
- # For each suite:
- for suite_dirent in "${base_dir}/feeds/.db/"*_*/; do
- if [ ! -d "${suite_dirent}" ]; then
- continue
- fi
- chan="${suite_dirent%/}"
- chan="${chan##*/}"
- dist="${chan##*_}"
- chan="${chan%_*}"
- suite="${base_dir}/feeds/${chan}/${dist}"
- exec 3>"${suite}/Manifest~"
- # For each archplat:
- for archplat_dirent in "${suite_dirent}/"*_*/; do
- if [ ! -d "${archplat_dirent}" ]; then
- continue
- fi
- arch="${archplat_dirent%/}"
- arch="${arch##*/}"
- plat="${arch##*_}"
- arch="${arch%_*}"
- archplat="${suite}/${arch}/${plat}"
- # For each section:
- for sect_dirent in "${archplat_dirent}/"*/; do
- if [ ! -d "${sect_dirent}" ]; then
- continue
- fi
- sect="${sect_dirent%/}"
- sect="${sect##*/}"
- info_v "$(get_msg 'updating_feed')" \
- "${chan}" "${dist}" \
- "${arch}" "${plat}" "${sect}"
- manifest_entry="${arch}/${plat}/${sect}"
- sect="${archplat}/${sect}"
- # For each package name hash:
- for hash_dirent in "${sect_dirent}/"*; do
- if [ ! -f "${hash_dirent}" ]; then
- continue
- fi
- idx="${sect}/.db/${hash_dirent##*/}"
- # Ensure there are still packages here.
- if [ -d "${idx}/info" ]; then
- cat "${idx}/info/"*.control \
- >"${idx}/Packages"
- else
- rm -f "${idx}/Packages"
- rmdir "${idx}"
- fi
- rm -f "${hash_dirent}"
- done
- # Ensure there are still packages here.
- if ! try_rmdir "${sect}/.db"; then
- cat "${sect}/.db/"*/Packages \
- >"${sect}/Packages~"
- mv "${sect}/Packages~" \
- "${sect}/Packages"
- if ${conf_gzip}; then
- gzip -9c "${sect}/Packages" \
- >"${sect}/Packages.gz"
- fi
- printf '%s\n' "${manifest_entry}" >&3
- else
- rm -f "${sect}/Packages" \
- "${sect}/Packages.gz"
- fi
- rmdir "${sect_dirent}"
- try_rmdir "${sect}"
- done
- rmdir "${archplat_dirent}"
- try_rmdir "${archplat}"
- try_rmdir "${archplat%/*}"
- done
- rmdir "${suite_dirent}"
- exec 3>&-
- if [ -s "${suite}/Manifest~" ]; then
- mv "${suite}/Manifest~" "${suite}/Manifest"
- else
- rm -f "${suite}/Manifest~" "${suite}/Manifest"
- rmdir "${suite}"
- rmdir "${suite%/*}"
- fi
- done
-
- return 0
-}