# ProteanOS Development Kit # lib/cmd/install.sh # "install" command # # 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 . use getopt use feed use profile cmd_install_optstring='a:P:' cmd_install_main() { local suite= local chroot= local arch= local plat= local profile= get_options "${@}" shift $(($OPTIND - 1)) if [ ${#} -lt 2 ]; then print_cmd_usage 'install' >&2 exit 1 fi suite="${1}" chroot="${2}" if [ "x${suite%%:*}" != "x${suite}" ]; then profile="${suite%%:*}" suite="${suite#*:}" else profile='proteanos' fi profile_set "${profile}" suite="$(profile_normalize_suite "${suite}")" if [ "x${cmd_install_opt_a+set}" = 'xset' ]; then arch="${cmd_install_opt_a}" else arch="$(profile_detect_arch)" fi if [ "x${cmd_install_opt_P+set}" = 'xset' ]; then plat="${cmd_install_opt_P}" fi if ! profile_validate_archplat "${arch}" "${plat}"; then error 2 "$(get_msg 'cmd_install_bad_archplat')" \ "${arch}" "${plat}" fi if ! mkdir "${chroot}" || ! mkdir "${chroot}/.prokit"; then : Error fi cmd_install_find_pkgs "${suite}" "${arch}" "${plat}" "${chroot}" } cmd_install_find_pkgs() { local suite="${1}" local arch="${2}" local plat="${3}" local chroot="${4}" local feed_idx= local feed= while read -r feed_idx feed; do feed_download "${feed}" \ >"${chroot}/.prokit/${feed_idx}.index" feed_find_pkgs 'profile_include_pkg' "$(profile_dep_fields)" \ "${chroot}/.prokit/${feed_idx}.depends" \ "${chroot}/.prokit/${feed_idx}.filenames" \ <"${chroot}/.prokit/${feed_idx}.index" \ >>"${chroot}/.prokit/packages" done <<-EOF $(profile_feeds "${arch}" "${plat}" "${suite}") EOF }