# pro-archman # src/remove.sh # Functions for removing packges # # Copyright (C) 2013 Patrick McDermott # # This file is part of the ProteanOS Archive Manager. # # The ProteanOS Archive Manager 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. # # The ProteanOS Archive Manager 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 the ProteanOS Archive Manager. If not, see # . remove_packages_from_suite_archplat() { local chan="${1}" local dist="${2}" local arch="${3}" local plat="${4}" local source="${5}" shift 5 local binver= local refs= local size= local sect= local pkg= local file= info_v "$(get_msg 'removing_from_suite_archplat')" \ "${source}" "${chan}" "${dist}" "${arch}" "${plat}" binver="$(db_get_binver "${chan}" "${dist}" "${arch}" "${plat}" \ "${source}")" if [ "x${binver}" = 'x' ]; then return 0 fi db_del_binver "${chan}" "${dist}" "${arch}" "${plat}" "${source}" refs=$(db_dec_references "${arch}" "${plat}" "${source}" "${binver}") while read -r size sect pkg; do feed_remove_package "${chan}" "${dist}" "${arch}" "${plat}" \ "${sect}" "${pkg}" if [ ${refs} -eq 0 ]; then file="pool/$(hash_name "${source}")/${source}" file="${file}/${pkg}_${binver}_${arch}_${plat}.opk" mark_pool_garbage "${file}" fi done 0<<-EOF $(db_get_packages "${arch}" "${plat}" "${source}" "${binver}") EOF if [ ${refs} -eq 0 ]; then db_del_packages "${arch}" "${plat}" "${source}" "${binver}" fi return 0 } remove_source_from_suite() { local chan="${1}" local dist="${2}" local source="${3}" shift 3 local arch= local plat= info "$(get_msg 'removing_from_suite')" \ "${source}" "${chan}" "${dist}" while read -r arch plat; do remove_packages_from_suite_archplat \ "${chan}" "${dist}" "${arch}" "${plat}" "${source}" done 0<<-EOF $(db_get_archplats "${chan}" "${dist}" "${source}") EOF db_del_srcver "${chan}" "${dist}" "${source}" return 0 }