# SUCCESS # *INFO* Generating Bash script for testing for GHC versions: ghc-head 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3 8.6.4 8.6.5 8.8.1 8.8.2 8.8.3 8.8.4 8.10.1 8.10.2 8.10.3 8.10.4 8.10.5 8.10.6 8.10.7 #!/bin/bash # shellcheck disable=SC2086,SC2016,SC2046 # REGENDATA ["--ghc-head","--apt=fftw3-dev","--installed=-all +deepseq","bash","messy.project"] set -o pipefail # Mode ############################################################################## if [ "$1" = "indocker" ]; then INDOCKER=true shift else INDOCKER=false fi # Run configuration ############################################################################## CFG_CABAL_STORE_CACHE="" CFG_CABAL_REPO_CACHE="" CFG_JOBS="8.10.7 8.10.6 8.10.5 8.10.4 8.10.3 8.10.2 8.10.1 8.8.4 8.8.3 8.8.2 8.8.1 8.6.5 8.6.4 8.6.3 8.6.2 8.6.1 8.4.4 8.4.3 8.4.2 8.4.1 8.2.2 8.2.1 8.0.2 8.0.1 7.10.3 7.10.2 7.10.1 7.8.4 7.8.3 7.8.2 7.8.1" CFG_CABAL_UPDATE=false SCRIPT_NAME=$(basename "$0") START_TIME="$(date +'%s')" XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config} # Job configuration ############################################################################## GHC_VERSION="non-existing" CABAL_VERSION=3.2 HEADHACKAGE=false # Locale ############################################################################## export LC_ALL=C.UTF-8 # Utilities ############################################################################## SGR_RED='\033[1;31m' SGR_GREEN='\033[1;32m' SGR_BLUE='\033[1;34m' SGR_CYAN='\033[1;96m' SGR_RESET='\033[0m' # No Color put_info() { printf "$SGR_CYAN%s$SGR_RESET\n" "### $*" } put_error() { printf "$SGR_RED%s$SGR_RESET\n" "!!! $*" } run_cmd() { local PRETTYCMD="$*" local PROMPT if $INDOCKER; then PROMPT="$(pwd) >>>" else PROMPT=">>>" fi printf "$SGR_BLUE%s %s$SGR_RESET\n" "$PROMPT" "$PRETTYCMD" local start_time end_time cmd_duration total_duration start_time=$(date +'%s') "$@" local RET=$? end_time=$(date +'%s') cmd_duration=$((end_time - start_time)) total_duration=$((end_time - START_TIME)) cmd_min=$((cmd_duration / 60)) cmd_sec=$((cmd_duration % 60)) total_min=$((total_duration / 60)) total_sec=$((total_duration % 60)) if [ $RET -eq 0 ]; then printf "$SGR_GREEN%s$SGR_RESET (%dm%02ds; %dm%02ds)\n" "<<< $PRETTYCMD" "$cmd_min" "$cmd_sec" "$total_min" "$total_sec" else printf "$SGR_RED%s$SGR_RESET\n" "!!! $PRETTYCMD" exit 1 fi } run_cmd_if() { local COND=$1 shift if [ $COND -eq 1 ]; then run_cmd "$@" else local PRETTYCMD="$*" local PROMPT PROMPT="$(pwd) (skipping) >>>" printf "$SGR_BLUE%s %s$SGR_RESET\n" "$PROMPT" "$PRETTYCMD" fi } run_cmd_unchecked() { local PRETTYCMD="$*" local PROMPT if $INDOCKER; then PROMPT="$(pwd) >>>" else PROMPT=">>>" fi printf "$SGR_BLUE%s %s$SGR_RESET\n" "$PROMPT" "$PRETTYCMD" local start_time end_time cmd_duration total_duration cmd_min cmd_sec total_min total_sec start_time=$(date +'%s') "$@" end_time=$(date +'%s') cmd_duration=$((end_time - start_time)) total_duration=$((end_time - START_TIME)) cmd_min=$((cmd_duration / 60)) cmd_sec=$((cmd_duration % 60)) total_min=$((total_duration / 60)) total_sec=$((total_duration % 60)) printf "$SGR_GREEN%s$SGR_RESET (%dm%02ds; %dm%02ds)\n" "<<< $PRETTYCMD" "$cmd_min" "$cmd_sec" "$total_min" "$total_sec" } change_dir() { local DIR=$1 if [ -d "$DIR" ]; then printf "$SGR_BLUE%s$SGR_RESET\n" "change directory to $DIR" cd "$DIR" || exit 1 else printf "$SGR_RED%s$SGR_RESET\n" "!!! cd $DIR" exit 1 fi } change_dir_if() { local COND=$1 local DIR=$2 if [ $COND -ne 0 ]; then change_dir "$DIR" fi } echo_to() { local DEST=$1 local CONTENTS=$2 echo "$CONTENTS" >> "$DEST" } echo_if_to() { local COND=$1 local DEST=$2 local CONTENTS=$3 if [ $COND -ne 0 ]; then echo_to "$DEST" "$CONTENTS" fi } install_cabalplan() { put_info "installing cabal-plan" if [ ! -e $CABAL_REPOCACHE/downloads/cabal-plan ]; then curl -L https://github.com/haskell-hvr/cabal-plan/releases/download/v0.6.2.0/cabal-plan-0.6.2.0-x86_64-linux.xz > /tmp/cabal-plan.xz || exit 1 (cd /tmp && echo "de73600b1836d3f55e32d80385acc055fd97f60eaa0ab68a755302685f5d81bc cabal-plan.xz" | sha256sum -c -)|| exit 1 mkdir -p $CABAL_REPOCACHE/downloads xz -d < /tmp/cabal-plan.xz > $CABAL_REPOCACHE/downloads/cabal-plan || exit 1 chmod a+x $CABAL_REPOCACHE/downloads/cabal-plan || exit 1 fi mkdir -p $CABAL_DIR/bin || exit 1 ln -s $CABAL_REPOCACHE/downloads/cabal-plan $CABAL_DIR/bin/cabal-plan || exit 1 } # Help ############################################################################## show_usage() { cat < $BUILDDIR/cabal/config <= 80200)) cabal.project "package servant" echo_if_to $((HCNUMVER >= 80200)) cabal.project " ghc-options: -Werror=missing-methods" echo_if_to $((HCNUMVER >= 80200)) cabal.project "package servant-client" echo_if_to $((HCNUMVER >= 80200)) cabal.project " ghc-options: -Werror=missing-methods" echo_if_to $((HCNUMVER >= 80200)) cabal.project "package servant-docs" echo_if_to $((HCNUMVER >= 80200)) cabal.project " ghc-options: -Werror=missing-methods" echo_if_to $((HCNUMVER >= 80200)) cabal.project "package servant-server" echo_if_to $((HCNUMVER >= 80200)) cabal.project " ghc-options: -Werror=missing-methods" cat >> cabal.project <> cabal.project.local <