# pro-archman # src/suite.sh # Functions for working with suites # # 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 # . _suite_copy_source() { local src_chan="${1}" local src_dist="${2}" local source="${3}" local dst_chan="${4}" local dst_dist="${5}" shift 5 local srcver= local arch= local plat= local binver= local size= local sect= local pkg= local pool_file= srcver="$(db_get_srcver "${chan}" "${dist}" "${source}")" db_set_srcver "${dst_chan}" "${dst_dist}" "${source}" "${srcver}" while read -r arch plat; do binver="$(db_get_binver "${src_chan}" "${src_dist}" \ "${arch}" "${plat}" "${source}")" db_set_binver "${dst_chan}" "${dst_dist}" "${arch}" "${plat}" \ "${source}" "${binver}" db_inc_references "${arch}" "${plat}" "${source}" "${binver}" \ 1>/dev/null while read -r size sect pkg; do pool_file="pool/$(hash_name "${source}")/${source}" pool_file="${pool_file}/${pkg}_${binver}" pool_file="${pool_file}_${arch}_${plat}.opk" feed_add_package "${dst_chan}" "${dst_dist}" \ "${arch}" "${plat}" \ "${sect}" "${pkg}" "${size}" "${pool_file}" done 0<<-EOF $(db_get_packages "${arch}" "${plat}" \ "${source}" "${binver}") EOF done 0<<-EOF $(db_get_archplats "${src_chan}" "${src_dist}" "${source}") EOF } _suite_remove_source() { local chan="${1}" local dist="${2}" local source="${3}" shift 3 remove_source_from_suite "${chan}" "${dist}" "${source}" } copy_suite() { local src_chan="${1}" local src_dist="${2}" local dst_chan="${3}" local dst_dist="${4}" shift 4 info "$(get_msg 'suite_copying')" \ "${src_chan}" "${src_dist}" "${dst_chan}" "${dst_dist}" remove_suite "${dst_chan}" "${dst_dist}" db_foreach_source "${src_chan}" "${src_dist}" _suite_copy_source \ "${dst_chan}" "${dst_dist}" } remove_suite() { local chan="${1}" local dist="${2}" shift 2 info "$(get_msg 'suite_removing')" \ "${chan}" "${dist}" db_foreach_source "${chan}" "${dist}" _suite_remove_source }