diff options
author | Patrick 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) |
commit | 45e8fd75c621899365406141d9b9fe0aab0183e0 (patch) | |
tree | 4062d98de17994484b740db259ef95902f76b789 /src/profile | |
parent | 8ab731bb1d411fd5a11eb8278ad344f7f8bd47c6 (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).
Diffstat (limited to 'src/profile')
-rw-r--r-- | src/profile/proteanos.sh | 34 |
1 files changed, 15 insertions, 19 deletions
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}" |