summaryrefslogtreecommitdiffstats
path: root/src/profile.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/profile.sh')
-rw-r--r--src/profile.sh165
1 files changed, 165 insertions, 0 deletions
diff --git a/src/profile.sh b/src/profile.sh
new file mode 100644
index 0000000..f64a0d8
--- /dev/null
+++ b/src/profile.sh
@@ -0,0 +1,165 @@
+# 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
+# <http://www.gnu.org/licenses/>.
+
+profiles=' '
+profile=
+
+register_profile()
+{
+ local profile="${1}"
+ shift 1
+
+ profiles="${profiles}${profile} "
+ return 0
+}
+
+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"
+}
+
+profile_select_mirror()
+{
+ "prof_${profile}_select_mirror"
+}
+
+profile_validate_archplat()
+{
+ local mirror="${1}"
+ local arch="${2}"
+ local plat="${3}"
+ local suite="${4}"
+
+ "prof_${profile}_validate_archplat" "${mirror}" "${arch}" "${plat}" \
+ "${suite}"
+}
+
+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}"
+ local arch="${2}"
+ local plat="${3}"
+
+ "prof_${profile}_configure_system_native" "${root}" "${arch}" "${plat}"
+}
+
+profile_configure_system_foreign()
+{
+ local root="${1}"
+ local arch="${2}"
+ local plat="${3}"
+
+ "prof_${profile}_configure_system_foreign" "${root}" "${arch}" "${plat}"
+}