# Profile-related functions # # Copyright (C) 2014 Patrick "P. J." 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 # . [ "x${_PROFILE_SM+set}" = 'xset' ] && return 0 _PROFILE_SM=1 use output use locale PROFILES=' @profiles@ ' profile= is_profile() { local prof="${1}" [ "x${PROFILES# ${prof} }" != "x${PROFILES}" ] } profile_set() { local prof="${1}" if is_profile "${prof}"; then profile="${prof}" use "profile/${profile}" else error 1 "$(get_msg 'profile_not_found')" "${prof}" fi return 0 } profile_normalize_suite() { local suite="${1}" "prof_${profile}_normalize_suite" "${suite}" } profile_detect_arch() { "prof_${profile}_detect_arch" } profile_default_plat() { "prof_${profile}_default_plat" } # TODO: This should pass through to prof_${profile}_validate_archplat(). profile_validate_archplat() { local arch="${1}" local plat="${2}" local prof_arch= local prof_plat= while read -r prof_arch prof_plat; do [ "x${prof_arch}" = 'x' ] && continue if [ "x${arch}" = "x${prof_arch}" ]; then if [ "x${plat}" = "x${prof_plat}" ]; then return 0 fi fi done <<-EOF $(eval "printf '%s\n' \"\${prof_${profile}_archplats}\"") EOF return 1 } profile_select_mirror() { "prof_${profile}_select_mirror" } profile_feeds() { local mirror="${1}" local arch="${2}" local plat="${3}" local suite="${4}" "prof_${profile}_feeds" "${mirror}" "${arch}" "${plat}" "${suite}" } profile_dep_fields() { "prof_${profile}_dep_fields" } profile_include_pkg() { local name="${1}" local value="${2}" "prof_${profile}_include_pkg" "${name}" "${value}" } profile_get_fstab() { local arch="${1}" local plat="${2}" "prof_${profile}_get_fstab" "${arch}" "${plat}" } profile_file_systems_mounted() { local root="${1}" local arch="${1}" local plat="${2}" "prof_${profile}_file_systems_mounted" "${root}" "${arch}" "${plat}" } profile_bind_mount() { local arch="${1}" local plat="${2}" local olddir="${3}" local newdir="${4}" "prof_${profile}_bind_mount" "${arch}" "${plat}" \ "${olddir}" "${newdir}" } profile_bind_umount() { local arch="${1}" local plat="${2}" local olddir="${3}" local newdir="${4}" "prof_${profile}_bind_umount" "${arch}" "${plat}" \ "${olddir}" "${newdir}" } profile_configure_system_native() { local root="${1}" "prof_${profile}_configure_system_native" "${root}" } profile_configure_system_foreign() { local root="${1}" "prof_${profile}_configure_system_foreign" "${root}" }