e2032db4e7
archiso/initcpio/install/*: Setting bash shebang for all scripts and making them comform with shellcheck. archiso/initcpio/{hooks,script}/*: Setting ash shebang for all scripts and making them comform with shellcheck (for dash, as shellcheck has no ash specific ruleset). Essentially the ash based scripts should be POSIX compliant as much as possible to have an easier time writing, debugging and maintaining them. Ensuring that variables are not treated as options and introducing variable quoting. .gitlab-ci.yml: Integrating shellcheck for initcpio scripts. Closes #32
62 lines
2.1 KiB
Bash
62 lines
2.1 KiB
Bash
#!/bin/ash
|
|
|
|
run_hook() {
|
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
|
if [ -n "${ip}" ] && [ -n "${archiso_http_srv}" ]; then
|
|
|
|
# booting with http is always copy-to-ram, so set here to make sure
|
|
# addresses are flushed and interface is set down
|
|
export copytoram="y"
|
|
|
|
archiso_http_srv=$(eval echo "${archiso_http_srv}")
|
|
[ -z "${archiso_http_spc}" ] && archiso_http_spc="75%"
|
|
|
|
export mount_handler="archiso_pxe_http_mount_handler"
|
|
fi
|
|
}
|
|
|
|
# Fetch a file with CURL
|
|
#
|
|
# $1 URL
|
|
# $2 Destination directory inside httpspace/${archisobasedir}
|
|
_curl_get() {
|
|
local _url="${1}"
|
|
local _dst="${2}"
|
|
|
|
msg ":: Downloading '${_url}'"
|
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
|
if ! curl -L -f -o "/run/archiso/httpspace/${archisobasedir}${_dst}/${_url##*/}" --create-dirs "${_url}"; then
|
|
echo "ERROR: Downloading '${_url}'"
|
|
echo " Falling back to interactive prompt"
|
|
echo " You can try to fix the problem manually, log out when you are finished"
|
|
launch_interactive_shell
|
|
fi
|
|
}
|
|
|
|
archiso_pxe_http_mount_handler () {
|
|
newroot="${1}"
|
|
|
|
msg ":: Mounting /run/archiso/httpspace (tmpfs) filesystem, size='${archiso_http_spc}'"
|
|
mkdir -p "/run/archiso/httpspace"
|
|
mount -t tmpfs -o size="${archiso_http_spc}",mode=0755 httpspace "/run/archiso/httpspace"
|
|
|
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
|
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sfs" "/${arch}"
|
|
|
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
|
if [ "${checksum}" = "y" ]; then
|
|
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sha512" "/${arch}"
|
|
fi
|
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
|
if [ "${verify}" = "y" ]; then
|
|
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sfs.sig" "/${arch}"
|
|
fi
|
|
|
|
mkdir -p "/run/archiso/bootmnt"
|
|
mount -o bind /run/archiso/httpspace /run/archiso/bootmnt
|
|
|
|
archiso_mount_handler "${newroot}"
|
|
}
|
|
|
|
# vim: set ft=sh:
|