# Installer-related functions # # Copyright (C) 2015, 2021 Patrick McDermott # # This file is part of the ProteanOS Development Kit. # # The ProteanOS Development Kit 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 Development Kit 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 Development Kit. If not, see # . _installers=' ' register_installer() { local installer="${1}" shift 1 _installers="${_installers}${installer} " return 0 } is_installer() { local inst="${1}" shift 1 case "${_installers}" in *" ${inst} "*) return 0;; *) return 1;; esac } run_installer() { local mirror="${1}" local suite="${2}" local arch="${3}" local plat="${4}" local root="${5}" local foreign="${6}" shift 6 local inst= if [ x"${mirror}" = x'' ]; then mirror="$(profile_select_mirror)" fi profile_prepare_install "${mirror}" "${suite}" if [ x"${plat}" = x'' ]; then plat="$(profile_default_plat)" fi if [ x"${arch}" = x'' ]; then arch="$(profile_plat_arches "${plat}")" case "${arch}" in *?"${LF}"?*) # Multiple architectures for platform arch="$(profile_detect_arch)" ;; esac fi if ! profile_validate_archplat "${arch}" "${plat}"; then error "$(get_msg 'installer_bad_archplat')" "${arch}" "${plat}" return 1 fi info "$(get_msg 'installer_selected_arch')" "${arch}" info "$(get_msg 'installer_selected_plat')" "${plat}" info "$(get_msg 'installer_selected_mirror')" "${mirror}" inst="$(profile_installer_type "${arch}" "${plat}")" if ! is_installer "${inst}"; then error "$(get_msg 'installer_invalid')" "${inst}" return 1 fi "installer_${inst}_main" "${arch}" "${plat}" "${root}" "${foreign}" || \ return ${?} return 0 }