Merge branch 'PR/more-robust-unpacking'
This commit is contained in:
commit
316fde7522
52
ghcup
52
ghcup
@ -565,14 +565,47 @@ get_ghc_location() {
|
|||||||
# @USAGE: <url>
|
# @USAGE: <url>
|
||||||
# @DESCRIPTION:
|
# @DESCRIPTION:
|
||||||
# Downloads the given url as a file into the current directory.
|
# Downloads the given url as a file into the current directory.
|
||||||
# @RETURN: status code from the downloader
|
|
||||||
download() {
|
download() {
|
||||||
[ -z "$1" ] && die "Internal error: no argument given to download"
|
[ -z "$1" ] && die "Internal error: no argument given to download"
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
${DOWNLOADER} ${DOWNLOADER_OPTS} "$1"
|
edo ${DOWNLOADER} ${DOWNLOADER_OPTS} "$1"
|
||||||
return $?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# @FUNCTION: unpack
|
||||||
|
# @USAGE: <tarball>
|
||||||
|
# @DESCRIPTION:
|
||||||
|
# Uncompresses and unpacks the given tarball if needed by discovering the
|
||||||
|
# file extension.
|
||||||
|
unpack() {
|
||||||
|
[ -z "$1" ] && die "Internal error: no argument given to unpack"
|
||||||
|
|
||||||
|
filename=$1
|
||||||
|
file_ext=${filename##*.}
|
||||||
|
|
||||||
|
# this is for portability, since not all
|
||||||
|
# distros have tar with compression detection
|
||||||
|
# capability
|
||||||
|
case "${file_ext}" in
|
||||||
|
xz)
|
||||||
|
debug_message "xz -cd \"${filename}\" | tar -xf -"
|
||||||
|
( xz -cd "${filename}" | tar -xf - ; ) || die "unpacking failed!"
|
||||||
|
;;
|
||||||
|
gz)
|
||||||
|
debug_message "gzip -cd \"${filename}\" | tar -xf -"
|
||||||
|
( gzip -cd "${filename}" | tar -xf - ; ) || die "unpacking failed!"
|
||||||
|
;;
|
||||||
|
tar)
|
||||||
|
edo tar -xf "${filename}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
die "Unknown file extension: \"${file_ext}\""
|
||||||
|
esac
|
||||||
|
|
||||||
|
unset filename file_ext
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
############################
|
############################
|
||||||
@ -608,9 +641,9 @@ install_ghc() {
|
|||||||
(
|
(
|
||||||
edo cd "${tmp_dir}"
|
edo cd "${tmp_dir}"
|
||||||
|
|
||||||
edo download "${download_url}"
|
download "${download_url}"
|
||||||
|
|
||||||
edo tar -xf ghc-*-linux.tar.xz
|
unpack "${download_tarball_name}"
|
||||||
edo cd "ghc-${myghcver}"
|
edo cd "ghc-${myghcver}"
|
||||||
|
|
||||||
debug_message "Installing GHC into ${inst_location}"
|
debug_message "Installing GHC into ${inst_location}"
|
||||||
@ -730,7 +763,7 @@ self_update() {
|
|||||||
|
|
||||||
(
|
(
|
||||||
edo cd "$(mktemp -d)"
|
edo cd "$(mktemp -d)"
|
||||||
edo download "${SCRIPT_UPDATE_URL}"
|
download "${SCRIPT_UPDATE_URL}"
|
||||||
edo chmod +x ghcup
|
edo chmod +x ghcup
|
||||||
edo mv -f ghcup "${target_location}"/ghcup
|
edo mv -f ghcup "${target_location}"/ghcup
|
||||||
|
|
||||||
@ -859,9 +892,10 @@ install_cabal() {
|
|||||||
|
|
||||||
(
|
(
|
||||||
edo cd "$(mktemp -d)"
|
edo cd "$(mktemp -d)"
|
||||||
edo download "https://downloads.haskell.org/~cabal/cabal-install-${mycabalver}/cabal-install-${mycabalver}-${myarch}-unknown-linux.tar.gz"
|
download "https://downloads.haskell.org/~cabal/cabal-install-${mycabalver}/cabal-install-${mycabalver}-${myarch}-unknown-linux.tar.gz"
|
||||||
edo tar -xzf "cabal-install-${mycabalver}-${myarch}-unknown-linux.tar.gz"
|
unpack "cabal-install-${mycabalver}-${myarch}-unknown-linux.tar.gz"
|
||||||
edo mv -f cabal "${inst_location}"/cabal
|
edo mv -f cabal "${inst_location}"/cabal
|
||||||
|
rm "cabal-install-${mycabalver}-${myarch}-unknown-linux.tar.gz"
|
||||||
) || die "Failed to install cabal-install"
|
) || die "Failed to install cabal-install"
|
||||||
|
|
||||||
status_message "Successfully installed cabal-install into"
|
status_message "Successfully installed cabal-install into"
|
||||||
@ -914,7 +948,7 @@ compile_ghc() {
|
|||||||
(
|
(
|
||||||
edo cd "${tmp_dir}"
|
edo cd "${tmp_dir}"
|
||||||
|
|
||||||
edo download "${download_url}"
|
download "${download_url}"
|
||||||
|
|
||||||
edo tar -xf ghc-*-src.tar.xz
|
edo tar -xf ghc-*-src.tar.xz
|
||||||
edo cd "ghc-${myghcver}"
|
edo cd "ghc-${myghcver}"
|
||||||
|
Loading…
Reference in New Issue
Block a user