summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McDermott <patrick.mcdermott@libiquity.com>2021-01-16 05:20:21 (EST)
committer Patrick McDermott <patrick.mcdermott@libiquity.com>2021-01-16 05:42:04 (EST)
commit45e8fd75c621899365406141d9b9fe0aab0183e0 (patch)
tree4062d98de17994484b740db259ef95902f76b789
parent8ab731bb1d411fd5a11eb8278ad344f7f8bd47c6 (diff)
profile_prepare_install(): New function
profile_installer_type() will be the first caller of _prof_proteanos_get_platforms() to be called, but it will be called in a subshell. As a result, _prof_proteanos_get_platforms() would be called twice. To solve this, factor out _prof_proteanos_get_platforms() calls from other functions, making them pure (subshell-safe).
-rw-r--r--src/install.sh1
-rw-r--r--src/profile.sh10
-rw-r--r--src/profile/proteanos.sh34
3 files changed, 21 insertions, 24 deletions
diff --git a/src/install.sh b/src/install.sh
index e3e9819..c5d3a5a 100644
--- a/src/install.sh
+++ b/src/install.sh
@@ -337,6 +337,7 @@ install_system()
if [ "x${mirror}" = 'x' ]; then
mirror="$(profile_select_mirror)"
fi
+ profile_prepare_install "${mirror}" "${suite}"
if ! profile_validate_archplat "${mirror}" "${arch}" "${plat}" \
"${suite}"; then
diff --git a/src/profile.sh b/src/profile.sh
index 744ddef..582166c 100644
--- a/src/profile.sh
+++ b/src/profile.sh
@@ -70,10 +70,10 @@ profile_detect()
}
for func in normalize_suite detect_arch default_plat select_mirror \
- installer_type validate_archplat opkg_state_dir opkg_conf_file \
- feeds get_cert_url get_root_key dep_fields include_pkg \
- get_fstab file_systems_mounted bind_mount bind_umount \
- configure_system_native configure_system_foreign find_kernel \
- make_initramfs; do
+ prepare_install installer_type validate_archplat \
+ opkg_state_dir opkg_conf_file feeds get_cert_url get_root_key \
+ dep_fields include_pkg get_fstab file_systems_mounted \
+ bind_mount bind_umount configure_system_native \
+ configure_system_foreign find_kernel make_initramfs; do
eval "profile_${func}() { \"prof_\${_profile}_${func}\" \"\${@}\"; }"
done
diff --git a/src/profile/proteanos.sh b/src/profile/proteanos.sh
index 0f34f5d..e208464 100644
--- a/src/profile/proteanos.sh
+++ b/src/profile/proteanos.sh
@@ -77,20 +77,6 @@ _prof_proteanos_platforms_paragraph()
)\"\${_prof_proteanos_platforms_sections}\""
}
-_prof_proteanos_get_platforms()
-{
- local mirror="${1}"
- local suite="${2}"
- shift 2
-
- [ -n "${_prof_proteanos_platforms}" ] && return
-
- parse_control - _prof_proteanos_platforms_field \
- _prof_proteanos_platforms_paragraph 0<<-EOF
- $(${WGET} -q -O - -- "${mirror}/feeds/${suite}/Platforms")
- EOF
-}
-
prof_proteanos_detect_root()
{
local root="${1}"
@@ -162,6 +148,20 @@ prof_proteanos_select_mirror()
printf '%s\n' "${mirrors}" | sed -n "${mirror_num}p"
}
+prof_proteanos_prepare_install()
+{
+ local mirror="${1}"
+ local suite="${2}"
+ shift 2
+
+ [ -n "${_prof_proteanos_platforms}" ] && return
+
+ parse_control - _prof_proteanos_platforms_field \
+ _prof_proteanos_platforms_paragraph 0<<-EOF
+ $(${WGET} -q -O - -- "${mirror}/feeds/${suite}/Platforms")
+ EOF
+}
+
prof_proteanos_installer_type()
{
local mirror="${1}"
@@ -174,13 +174,12 @@ prof_proteanos_installer_type()
local archplat=
local installer_type=
- _prof_proteanos_get_platforms "${mirror}" "${suite}"
arch_clean="$(printf '%s' "${arch}" | tr -c '[a-z0-9/]' '_')"
plat_clean="$(printf '%s' "${plat}" | tr -c '[a-z0-9/]' '_')"
archplat="${arch_clean}__${plat_clean}"
eval "installer_type=\"\${_prof_proteanos_archplat_type_${archplat}}\""
- return "${installer_type}"
+ printf '%s' "${installer_type}"
}
prof_proteanos_validate_archplat()
@@ -192,8 +191,6 @@ prof_proteanos_validate_archplat()
shift 4
local archplat=
- _prof_proteanos_get_platforms "${mirror}" "${suite}"
-
case " ${_prof_proteanos_platforms} " in
*" ${arch}/${plat} "*)
return 0
@@ -231,7 +228,6 @@ prof_proteanos_feeds()
local p=
local s=
- _prof_proteanos_get_platforms "${mirror}" "${suite}"
arch_clean="$(printf '%s' "${arch}" | tr -c '[a-z0-9/]' '_')"
plat_clean="$(printf '%s' "${plat}" | tr -c '[a-z0-9/]' '_')"
archplat="${arch_clean}__${plat_clean}"