mirror of
https://github.com/koalaman/shellcheck.git
synced 2024-11-20 20:40:34 -08:00
86 lines
2.4 KiB
Bash
Executable File
86 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# This script runs 'buildtest' on each of several distros
|
|
# via Docker.
|
|
set -o pipefail
|
|
|
|
exec 3>&1 4>&2
|
|
die() { echo "$*" >&4; exit 1; }
|
|
|
|
[ -e "ShellCheck.cabal" ] || die "ShellCheck.cabal not in this dir"
|
|
|
|
[ "$1" = "--run" ] || {
|
|
cat << EOF
|
|
This script pulls multiple distros via Docker and compiles
|
|
ShellCheck and dependencies for each one. It takes hours,
|
|
and is still highly experimental.
|
|
|
|
Make sure you're plugged in and have screen/tmux in place,
|
|
then re-run with $0 --run to continue.
|
|
|
|
Also note that dist* will be deleted.
|
|
EOF
|
|
exit 0
|
|
}
|
|
|
|
echo "Deleting 'dist' and 'dist-newstyle'..."
|
|
rm -rf dist dist-newstyle
|
|
|
|
execs=$(find . -name shellcheck)
|
|
|
|
if [ -n "$execs" ]
|
|
then
|
|
die "Found unexpected executables. Remove and try again: $execs"
|
|
fi
|
|
|
|
log=$(mktemp) || die "Can't create temp file"
|
|
date >> "$log" || die "Can't write to log"
|
|
|
|
echo "Logging to $log" >&3
|
|
exec >> "$log" 2>&1
|
|
|
|
final=0
|
|
while read -r distro setup
|
|
do
|
|
[[ "$distro" = "#"* || -z "$distro" ]] && continue
|
|
printf '%s ' "$distro" >&3
|
|
docker pull "$distro" || die "Can't pull $distro"
|
|
printf 'pulled. ' >&3
|
|
|
|
tmp=$(mktemp -d) || die "Can't make temp dir"
|
|
cp -r . "$tmp/" || die "Can't populate test dir"
|
|
printf 'Result: ' >&3
|
|
< /dev/null docker run -v "$tmp:/mnt" "$distro" sh -c "
|
|
$setup
|
|
cd /mnt || exit 1
|
|
test/buildtest
|
|
"
|
|
ret=$?
|
|
if [ "$ret" = 0 ]
|
|
then
|
|
echo "OK" >&3
|
|
else
|
|
echo "FAIL with $ret. See $log" >&3
|
|
final=1
|
|
fi
|
|
rm -rf "$tmp"
|
|
done << EOF
|
|
# Docker tag Setup command
|
|
debian:stable apt-get update && apt-get install -y cabal-install
|
|
debian:testing apt-get update && apt-get install -y cabal-install
|
|
ubuntu:latest apt-get update && apt-get install -y cabal-install
|
|
haskell:latest true
|
|
opensuse/leap:latest zypper install -y cabal-install ghc
|
|
fedora:latest dnf install -y cabal-install ghc-template-haskell-devel findutils libstdc++-static gcc-c++
|
|
archlinux:latest pacman -S -y --noconfirm cabal-install ghc-static base-devel
|
|
|
|
# Ubuntu LTS
|
|
ubuntu:24.04 apt-get update && apt-get install -y cabal-install
|
|
ubuntu:22.04 apt-get update && apt-get install -y cabal-install
|
|
ubuntu:20.04 apt-get update && apt-get install -y cabal-install
|
|
|
|
# Stack on Ubuntu LTS
|
|
ubuntu:24.04 set -e; apt-get update && apt-get install -y curl && curl -sSL https://get.haskellstack.org/ | sh -s - -f && cd /mnt && exec test/stacktest
|
|
EOF
|
|
|
|
exit "$final"
|